event: introduce hci_event_packet_get_type

This commit is contained in:
Matthias Ringwald 2016-02-19 14:52:36 +01:00
parent 591e55515a
commit 0e2df43f5c
56 changed files with 503 additions and 492 deletions

View File

@ -87,9 +87,9 @@ static btstack_packet_callback_registration_t sm_event_callback_registration;
static void app_packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
switch (packet_type) {
case HCI_EVENT_PACKET:
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case BTSTACK_EVENT_STATE:
if (packet[2] == HCI_STATE_WORKING) {
if (btstack_event_state_get_state(packet) == HCI_STATE_WORKING) {
printf("ANCS Client Demo ready.\n");
}
break;
@ -107,8 +107,8 @@ static void app_packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *
static void ancs_callback(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
const char * attribute_name;
if (packet[0] != HCI_EVENT_ANCS_META) return;
switch (packet[2]){
if (hci_event_packet_get_type(packet) != HCI_EVENT_ANCS_META) return;
switch (hci_event_ancs_meta_get_subevent_code(packet)){
case ANCS_SUBEVENT_CLIENT_CONNECTED:
printf("ANCS Client: Connected\n");
break;

View File

@ -36,21 +36,13 @@
*/
#include "btstack_config.h"
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "hci_cmd.h"
#include "btstack_run_loop.h"
#include "hci.h"
#include "gap.h"
#include "btstack_memory.h"
#include "hci_dump.h"
#include "btstack.h"
static bd_addr_t remote = {0x84, 0x38, 0x35, 0x65, 0xD1, 0x15};
@ -59,7 +51,7 @@ static btstack_packet_callback_registration_t hci_event_callback_registration;
static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
if (packet_type != HCI_EVENT_PACKET) return;
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case BTSTACK_EVENT_STATE:
// bt stack activated, get started
if (packet[2] == HCI_STATE_WORKING){

View File

@ -53,17 +53,8 @@
#include <stdlib.h>
#include <string.h>
#include "btstack_config.h"
#include "btstack_run_loop.h"
#include "btstack_debug.h"
#include "btstack_memory.h"
#include "hci.h"
#include "hci_dump.h"
#include "classic/sdp_util.h"
#include "btstack.h"
#define MAX_DEVICES 10
enum DEVICE_STATE { REMOTE_NAME_REQUEST, REMOTE_NAME_INQUIRED, REMOTE_NAME_FETCHED };
struct device {
@ -143,10 +134,9 @@ static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packe
int numResponses;
int index;
// printf("packet_handler: pt: 0x%02x, packet[0]: 0x%02x\n", packet_type, packet[0]);
if (packet_type != HCI_EVENT_PACKET) return;
uint8_t event = packet[0];
uint8_t event = hci_event_packet_get_type(packet);
switch(state){
/* @text In INIT, an inquiry scan is started, and the application transits to

View File

@ -46,17 +46,7 @@
#include <stdlib.h>
#include <string.h>
#include "btstack_config.h"
#include "btstack_run_loop.h"
#include "btstack_debug.h"
#include "btstack_memory.h"
#include "hci.h"
#include "hci_dump.h"
#include "gap.h"
#include "classic/sdp_util.h"
#include "btstack.h"
#define MAX_DEVICES 10
enum DEVICE_STATE { BONDING_REQUEST, BONDING_REQUESTED, BONDING_COMPLETED };
@ -131,10 +121,9 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack
int i;
int numResponses;
// printf("packet_handler: pt: 0x%02x, packet[0]: 0x%02x\n", packet_type, packet[0]);
if (packet_type != HCI_EVENT_PACKET) return;
uint8_t event = packet[0];
uint8_t event = hci_event_packet_get_type(packet);
switch(state){

View File

@ -50,11 +50,7 @@
#include <stdlib.h>
#include <string.h>
#include "hci_cmd.h"
#include "btstack_memory.h"
#include "hci.h"
#include "ble/ad_parser.h"
#include "btstack.h"
static btstack_packet_callback_registration_t hci_event_callback_registration;
@ -235,7 +231,7 @@ static void dump_advertisement_data(uint8_t * adv_data, uint8_t adv_size){
static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
if (packet_type != HCI_EVENT_PACKET) return;
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case BTSTACK_EVENT_STATE:
// BTstack activated, get started
if (packet[2] == HCI_STATE_WORKING) {

View File

@ -131,7 +131,7 @@ static void handle_gatt_client_event(uint8_t packet_type, uint16_t channel, uint
switch(state){
case TC_W4_SERVICE_RESULT:
switch(packet[0]){
switch(hci_event_packet_get_type(packet)){
case GATT_EVENT_SERVICE_QUERY_RESULT:
gatt_event_service_query_result_get_service(packet, &battery_service);
printf("Battery service found:\n");
@ -154,7 +154,7 @@ static void handle_gatt_client_event(uint8_t packet_type, uint16_t channel, uint
break;
case TC_W4_CHARACTERISTIC_RESULT:
switch(packet[0]){
switch(hci_event_packet_get_type(packet)){
case GATT_EVENT_CHARACTERISTIC_QUERY_RESULT:
printf("Battery level characteristic found:\n");
gatt_event_characteristic_query_result_get_characteristic(packet, &config_characteristic);
@ -170,14 +170,14 @@ static void handle_gatt_client_event(uint8_t packet_type, uint16_t channel, uint
}
break;
case TC_W4_BATTERY_DATA:
if (packet[0] == GATT_EVENT_QUERY_COMPLETE){
if (hci_event_packet_get_type(packet) == GATT_EVENT_QUERY_COMPLETE){
if (packet[4] != 0){
printf("\nNotification is not possible: ");
error_code(packet[4]);
}
break;
}
if (packet[0] != GATT_EVENT_NOTIFICATION) break;
if (hci_event_packet_get_type(packet) != GATT_EVENT_NOTIFICATION) break;
printf("\nBattery Data:\n");
dump_characteristic_value(&packet[8], little_endian_read_16(packet, 6));
break;
@ -205,7 +205,7 @@ static void fill_advertising_report_from_packet(advertising_report_t * report, u
static void hci_event_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
if (packet_type != HCI_EVENT_PACKET) return;
advertising_report_t report;
uint8_t event = packet[0];
uint8_t event = hci_event_packet_get_type(packet);
switch (event) {
case BTSTACK_EVENT_STATE:
// BTstack activated, get started

View File

@ -172,7 +172,7 @@ static void handle_hci_event(uint8_t packet_type, uint16_t channel, uint8_t *pac
if (packet_type != HCI_EVENT_PACKET) return;
advertising_report_t report;
uint8_t event = packet[0];
uint8_t event = hci_event_packet_get_type(packet);
switch (event) {
case BTSTACK_EVENT_STATE:
// BTstack activated, get started
@ -226,7 +226,7 @@ static int search_services = 1;
static void handle_gatt_client_event(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
gatt_client_service_t service;
gatt_client_characteristic_t characteristic;
switch(packet[0]){
switch(hci_event_packet_get_type(packet)){
case GATT_EVENT_SERVICE_QUERY_RESULT:\
gatt_event_service_query_result_get_service(packet, &service);
dump_service(&service);

View File

@ -50,25 +50,8 @@
#include <stdlib.h>
#include <string.h>
#include "btstack_config.h"
#include "btstack_run_loop.h"
#include "classic/sdp_util.h"
#include "btstack_debug.h"
#include "btstack_memory.h"
#include "gap.h"
#include "hci.h"
#include "hci_dump.h"
#include "l2cap.h"
#include "le_counter.h"
#include "ble/att_db.h"
#include "ble/att_server.h"
#include "ble/le_device_db.h"
#include "ble/sm.h"
#include "btstack.h"
#define HEARTBEAT_PERIOD_MS 1000
@ -145,7 +128,7 @@ static void le_counter_setup(void){
static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
switch (packet_type) {
case HCI_EVENT_PACKET:
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case BTSTACK_EVENT_STATE:
if (packet[2] == HCI_STATE_WORKING) {
printf("LE Counter Demo ready.\n");

View File

@ -54,24 +54,9 @@
#include <stdlib.h>
#include <string.h>
#include "btstack_config.h"
#include "btstack_run_loop.h"
#include "classic/sdp_util.h"
#include "btstack_debug.h"
#include "btstack_memory.h"
#include "hci.h"
#include "hci_dump.h"
#include "l2cap.h"
#include "btstack.h"
#include "le_streamer.h"
#include "ble/att_db.h"
#include "ble/att_server.h"
#include "ble/le_device_db.h"
#include "ble/sm.h"
static int le_notification_enabled;
static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size);
static int att_write_callback(hci_con_handle_t con_handle, uint16_t att_handle, uint16_t transaction_mode, uint16_t offset, uint8_t *buffer, uint16_t buffer_size);
@ -178,7 +163,7 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack
int mtu;
switch (packet_type) {
case HCI_EVENT_PACKET:
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case HCI_EVENT_DISCONNECTION_COMPLETE:
le_notification_enabled = 0;
break;

View File

@ -322,7 +322,7 @@ static void handle_sdp_client_query_result(uint8_t packet_type, uint8_t *packet,
des_iterator_t prot_it;
char *str;
switch (packet[0]){
switch (hci_event_packet_get_type(packet)){
case SDP_EVENT_QUERY_ATTRIBUTE_VALUE:
// Handle new SDP record
if (sdp_event_query_attribute_byte_get_record_id(packet) != record_id) {
@ -436,7 +436,7 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack
/* LISTING_RESUME */
switch (packet_type) {
case HCI_EVENT_PACKET:
event = packet[0];
event = hci_event_packet_get_type(packet);
switch (event) {
/* @text When BTSTACK_EVENT_STATE with state HCI_STATE_WORKING
* is received and the example is started in client mode, the remote SDP BNEP query is started.

View File

@ -113,7 +113,7 @@ static void sdp_client_init(void){
/* LISTING_START(SDPQueryUUID): Querying the a list of service records on a remote device. */
static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
if (packet_type != HCI_EVENT_PACKET) return;
uint8_t event = packet[0];
uint8_t event = hci_event_packet_get_type(packet);
switch (event) {
case BTSTACK_EVENT_STATE:
@ -166,7 +166,7 @@ static void handle_sdp_client_query_result(uint8_t packet_type, uint16_t channel
des_iterator_t prot_it;
char *str;
switch (packet[0]){
switch (hci_event_packet_get_type(packet)){
case SDP_EVENT_QUERY_ATTRIBUTE_VALUE:
// handle new record
if (sdp_event_query_attribute_byte_get_record_id(packet) != record_id){

View File

@ -107,10 +107,8 @@ static bd_addr_t remote = {0x04,0x0C,0xCE,0xE4,0x85,0xD3};
/* LISTING_START(SDPQueryUUID): Querying a list of service records on a remote device. */
static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
// printf("packet_handler type %u, packet[0] %x\n", packet_type, packet[0]);
if (packet_type != HCI_EVENT_PACKET) return;
uint8_t event = packet[0];
uint8_t event = hci_event_packet_get_type(packet);
switch (event) {
case BTSTACK_EVENT_STATE:

View File

@ -71,10 +71,8 @@ static btstack_packet_callback_registration_t hci_event_callback_registration;
static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
// printf("packet_handler type %u, packet[0] %x\n", packet_type, packet[0]);
if (packet_type != HCI_EVENT_PACKET) return;
uint8_t event = packet[0];
uint8_t event = hci_event_packet_get_type(packet);
switch (event) {
case BTSTACK_EVENT_STATE:

View File

@ -52,28 +52,9 @@
#include <string.h>
#include <inttypes.h>
#include "btstack_config.h"
#include "btstack_run_loop.h"
#include "classic/sdp_util.h"
#include "btstack_debug.h"
#include "btstack_memory.h"
#include "hci.h"
#include "hci_dump.h"
#include "l2cap.h"
#include "classic/rfcomm.h"
#include "classic/sdp_server.h"
#include "btstack.h"
#include "spp_and_le_counter.h"
#include "ble/att_db.h"
#include "ble/att_server.h"
#include "ble/le_device_db.h"
#include "ble/sm.h"
#define RFCOMM_SERVER_CHANNEL 1
#define HEARTBEAT_PERIOD_MS 1000
@ -120,7 +101,7 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack
switch (packet_type) {
case HCI_EVENT_PACKET:
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case HCI_EVENT_PIN_CODE_REQUEST:
// inform about pin code request
printf("Pin code request - using '0000'\n");

View File

@ -50,21 +50,7 @@
#include <stdlib.h>
#include <string.h>
#include "btstack_config.h"
#include "btstack_run_loop.h"
#include "classic/sdp_util.h"
#include "btstack_debug.h"
#include "btstack_memory.h"
#include "hci.h"
#include "hci_dump.h"
#include "l2cap.h"
#include "classic/rfcomm.h"
#include "classic/sdp_server.h"
#include "btstack.h"
#define RFCOMM_SERVER_CHANNEL 1
#define HEARTBEAT_PERIOD_MS 1000
@ -191,7 +177,7 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack
switch (packet_type) {
case HCI_EVENT_PACKET:
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case BTSTACK_EVENT_STATE:
// BTstack activated, get started

View File

@ -145,7 +145,7 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack
switch (packet_type) {
case HCI_EVENT_PACKET:
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case BTSTACK_EVENT_STATE:
if (packet[2] == HCI_STATE_WORKING) {

View File

@ -117,10 +117,8 @@ static void send_packet(void){
}
static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
// printf("packet_handler type %u, packet[0] %x\n", packet_type, packet[0]);
if (packet_type != HCI_EVENT_PACKET) return;
uint8_t event = packet[0];
uint8_t event = hci_event_packet_get_type(packet);
switch (event) {
case BTSTACK_EVENT_STATE:

View File

@ -114,7 +114,7 @@ static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packe
// printf("packet_handler: pt: 0x%02x, packet[0]: 0x%02x\n", packet_type, packet[0]);
if (packet_type != HCI_EVENT_PACKET) return;
uint8_t event = packet[0];
uint8_t event = hci_event_packet_get_type(packet);
switch(state){

View File

@ -69,7 +69,6 @@ void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint
int i;
uint8_t status;
//printf("packet_handler: pt: 0x%02x, packet[0]: 0x%02x\n", packet_type, packet[0]);
switch (packet_type) {
case L2CAP_DATA_PACKET:
@ -80,7 +79,7 @@ void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint
case HCI_EVENT_PACKET:
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case BTSTACK_EVENT_POWERON_FAILED:
printf("HCI Init failed - make sure you have turned off Bluetooth in the System Settings\n");

View File

@ -94,7 +94,7 @@ void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint
case HCI_EVENT_PACKET:
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case BTSTACK_EVENT_POWERON_FAILED:
printf("HCI Init failed - make sure you have turned off Bluetooth in the System Settings\n");

View File

@ -49,10 +49,9 @@
static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
// printf("- packet_handler: pt: 0x%02x, packet[0]: 0x%02x\n", packet_type, packet[0]);
if (packet_type != HCI_EVENT_PACKET) return;
uint8_t event = packet[0];
uint8_t event = hci_event_packet_get_type(packet);
switch (event){
case BTSTACK_EVENT_STATE:

View File

@ -76,7 +76,7 @@ void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint
break;
case HCI_EVENT_PACKET:
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case BTSTACK_EVENT_POWERON_FAILED:
// handle HCI init failure

View File

@ -76,7 +76,7 @@ void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint
break;
case HCI_EVENT_PACKET:
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case BTSTACK_EVENT_POWERON_FAILED:
// handle HCI init failure

View File

@ -91,7 +91,7 @@ void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint
break;
case HCI_EVENT_PACKET:
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case BTSTACK_EVENT_POWERON_FAILED:
// handle HCI init failure

View File

@ -62,7 +62,7 @@ void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint
case HCI_EVENT_PACKET:
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case BTSTACK_EVENT_POWERON_FAILED:
printf("HCI Init failed - make sure you have turned off Bluetooth in the System Settings\n");

View File

@ -1399,7 +1399,7 @@ static void deamon_status_event_handler(uint8_t *packet, uint16_t size){
uint8_t update_status = 0;
// handle state event
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case BTSTACK_EVENT_STATE:
hci_state = packet[2];
log_info("New state: %u\n", hci_state);
@ -1502,7 +1502,7 @@ static void daemon_packet_handler(void * connection, uint8_t packet_type, uint16
switch (packet_type) {
case HCI_EVENT_PACKET:
deamon_status_event_handler(packet, size);
switch (packet[0]){
switch (hci_event_packet_get_type(packet)){
case HCI_EVENT_NUMBER_OF_COMPLETED_PACKETS:
// ACL buffer freed...
@ -1628,7 +1628,7 @@ static void rfcomm_packet_handler(uint8_t packet_type, uint16_t channel, uint8_t
}
static void handle_sdp_rfcomm_service_result(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
switch (packet[0]){
switch (hci_event_packet_get_type(packet)){
case SDP_EVENT_QUERY_RFCOMM_SERVICE:
case SDP_EVENT_QUERY_COMPLETE:
// already HCI Events, just forward them
@ -1650,7 +1650,7 @@ static void sdp_client_assert_buffer(int size){
static void handle_sdp_client_query_result(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
int event_len;
switch (packet[0]){
switch (hci_event_packet_get_type(packet)){
case SDP_EVENT_QUERY_ATTRIBUTE_BYTE:
sdp_client_assert_buffer(sdp_event_query_attribute_byte_get_attribute_length(packet));
attribute_value[sdp_event_query_attribute_byte_get_data_offset(packet)] = sdp_event_query_attribute_byte_get_data(packet);
@ -1804,7 +1804,7 @@ static void handle_gatt_client_event(uint8_t packet_type, uint16_t channel, uint
// hack: handle disconnection_complete_here instead of main hci event packet handler
// we receive a HCI event packet in disguise
if (packet[0] == HCI_EVENT_DISCONNECTION_COMPLETE){
if (hci_event_packet_get_type(packet) == HCI_EVENT_DISCONNECTION_COMPLETE){
log_info("daemon hack: handle disconnection_complete in handle_gatt_client_event instead of main hci event packet handler");
hci_con_handle_t con_handle = little_endian_read_16(packet, 3);
daemon_remove_gatt_client_helper(con_handle);
@ -1812,7 +1812,7 @@ static void handle_gatt_client_event(uint8_t packet_type, uint16_t channel, uint
}
// only handle GATT Events
switch(packet[0]){
switch(hci_event_packet_get_type(packet)){
case GATT_EVENT_SERVICE_QUERY_RESULT:
case GATT_EVENT_INCLUDED_SERVICE_QUERY_RESULT:
case GATT_EVENT_NOTIFICATION:
@ -1839,7 +1839,7 @@ static void handle_gatt_client_event(uint8_t packet_type, uint16_t channel, uint
connection_t *connection = NULL;
// daemon doesn't track which connection subscribed to this particular handle, so we just notify all connections
switch(packet[0]){
switch(hci_event_packet_get_type(packet)){
case GATT_EVENT_NOTIFICATION:
case GATT_EVENT_INDICATION:{
hci_dump_packet(HCI_EVENT_PACKET, 0, packet, size);
@ -1862,7 +1862,7 @@ static void handle_gatt_client_event(uint8_t packet_type, uint16_t channel, uint
if (!connection) return;
switch(packet[0]){
switch(hci_event_packet_get_type(packet)){
case GATT_EVENT_SERVICE_QUERY_RESULT:
case GATT_EVENT_INCLUDED_SERVICE_QUERY_RESULT:
@ -1878,7 +1878,7 @@ static void handle_gatt_client_event(uint8_t packet_type, uint16_t channel, uint
case GATT_EVENT_LONG_CHARACTERISTIC_DESCRIPTOR_QUERY_RESULT:
offset = little_endian_read_16(packet, 6);
length = little_endian_read_16(packet, 8);
gatt_client_helper->characteristic_buffer[0] = packet[0]; // store type (characteristic/descriptor)
gatt_client_helper->characteristic_buffer[0] = hci_event_packet_get_type(packet); // store type (characteristic/descriptor)
gatt_client_helper->characteristic_handle = little_endian_read_16(packet, 4); // store attribute handle
gatt_client_helper->characteristic_length = offset + length; // update length
memcpy(&gatt_client_helper->characteristic_buffer[10 + offset], &packet[10], length);

View File

@ -229,7 +229,7 @@ static void gatt_client_callback(uint8_t packet_type, uint8_t * packet, uint16_t
uint16_t value_length;
BLEDevice device(con_handle);
switch(packet[0]){
switch(hci_event_packet_get_type(packet)){
case GATT_EVENT_SERVICE_QUERY_RESULT:
if (gattServiceDiscoveredCallback) {
gatt_client_service_t service;

View File

@ -74,8 +74,8 @@ void loop(void){
/* LISTING_START(ANCSCallback): ANCS Callback */
void ancs_callback(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
const char * attribute_name;
if (packet[0] != HCI_EVENT_ANCS_META) return;
switch (packet[0]){
if (hci_event_packet_get_type(packet) != HCI_EVENT_ANCS_META) return;
switch (hci_event_ancs_meta_get_subevent_code()]){
case ANCS_SUBEVENT_CLIENT_CONNECTED:
Serial.println("ANCS Client: Connected");
break;

View File

@ -65,6 +65,7 @@
#include "hci.h"
#include "l2cap.h"
#include "btstack_memory.h"
#include "btstack_event.h"
#include "classic/btstack_link_key_db.h"
#include "classic/rfcomm.h"
#include "classic/sdp_server.h"
@ -90,7 +91,7 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack
switch (packet_type) {
case HCI_EVENT_PACKET:
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case BTSTACK_EVENT_STATE:
if (packet[2] == HCI_STATE_WORKING) {

View File

@ -130,7 +130,7 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack
switch (packet_type) {
case HCI_EVENT_PACKET:
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case BTSTACK_EVENT_STATE:
if (packet[2] == HCI_STATE_WORKING) {

View File

@ -127,7 +127,7 @@ static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packe
case HCI_EVENT_PACKET:
switch (packet[0]){
switch (hci_event_packet_get_type(packet)){
case BTSTACK_EVENT_STATE:
// bt stack activated
@ -172,7 +172,7 @@ static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packe
[dev setAddress:addr];
[dev setPageScanRepetitionMode:packet[offset]];
offset += 1;
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case HCI_EVENT_INQUIRY_RESULT:
offset += 2; // Reserved + Reserved
[dev setClassOfDevice:little_endian_read_24(packet, 3 + numResponses*(6+1+1+1) + i*3)];

View File

@ -264,7 +264,7 @@ static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packe
case kW4SysBTDisabled:
// DAEMON_EVENT_SYSTEM_BLUETOOTH_ENABLED
if ( packet[0] == DAEMON_EVENT_SYSTEM_BLUETOOTH_ENABLED){
if ( hci_event_packet_get_type(packet) == DAEMON_EVENT_SYSTEM_BLUETOOTH_ENABLED){
if (packet[2]){
// system bt on - first time try to disable it
if ( state == kW4SysBTState) {
@ -289,7 +289,7 @@ static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packe
break;
case kW4Activated:
switch (packet[0]){
switch (hci_event_packet_get_type(packet)){
case BTSTACK_EVENT_STATE:
if (packet[2] == HCI_STATE_WORKING) {
state = kActivated;
@ -307,21 +307,21 @@ static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packe
break;
case kW4Deactivated:
if (packet[0] != BTSTACK_EVENT_STATE && packet[2] == HCI_STATE_OFF){
if (hci_event_packet_get_type(packet) != BTSTACK_EVENT_STATE && packet[2] == HCI_STATE_OFF){
state = kDeactivated;
[self sendDeactivated];
}
break;
case kActivated:
if (packet[0] != BTSTACK_EVENT_STATE && packet[2] == HCI_STATE_FALLING_ASLEEP){
if (hci_event_packet_get_type(packet) != BTSTACK_EVENT_STATE && packet[2] == HCI_STATE_FALLING_ASLEEP){
state = kSleeping;
[self sendSleepEnter];
}
break;
case kSleeping:
if (packet[0] != BTSTACK_EVENT_STATE && packet[2] == HCI_STATE_WORKING){
if (hci_event_packet_get_type(packet) != BTSTACK_EVENT_STATE && packet[2] == HCI_STATE_WORKING){
state = kActivated;
[self sendSleepExit];
}
@ -403,7 +403,7 @@ static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packe
break;
case kW4InquiryMode:
if (packet[0] == HCI_EVENT_COMMAND_COMPLETE && COMMAND_COMPLETE_EVENT(packet, hci_write_inquiry_mode) ) {
if (hci_event_packet_get_type(packet) == HCI_EVENT_COMMAND_COMPLETE && COMMAND_COMPLETE_EVENT(packet, hci_write_inquiry_mode) ) {
discoveryState = kInquiry;
bt_send_cmd(&hci_inquiry, HCI_INQUIRY_LAP, INQUIRY_INTERVAL, 0);
[self sendDiscoveryInquiry];
@ -412,7 +412,7 @@ static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packe
case kInquiry:
switch (packet[0]){
switch (hci_event_packet_get_type(packet)){
case HCI_EVENT_INQUIRY_RESULT:
numResponses = packet[2];
for (i=0; i<numResponses ; i++){
@ -472,20 +472,20 @@ static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packe
break;
case kRemoteName:
if (packet[0] == HCI_EVENT_REMOTE_NAME_REQUEST_COMPLETE){
if (hci_event_packet_get_type(packet) == HCI_EVENT_REMOTE_NAME_REQUEST_COMPLETE){
[self handleRemoteName:packet];
}
break;
case kW4InquiryModeBeforeStop:
if (packet[0] == HCI_EVENT_COMMAND_COMPLETE && COMMAND_COMPLETE_EVENT(packet, hci_write_inquiry_mode) ) {
if (hci_event_packet_get_type(packet) == HCI_EVENT_COMMAND_COMPLETE && COMMAND_COMPLETE_EVENT(packet, hci_write_inquiry_mode) ) {
discoveryState = kInactive;
[self sendDiscoveryStoppedEvent];
}
break;
case kW4InquiryStop:
if (packet[0] == HCI_EVENT_INQUIRY_COMPLETE
if (hci_event_packet_get_type(packet) == HCI_EVENT_INQUIRY_COMPLETE
|| COMMAND_COMPLETE_EVENT(packet, hci_inquiry_cancel)) {
discoveryState = kInactive;
[self sendDiscoveryStoppedEvent];
@ -493,7 +493,7 @@ static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packe
break;
case kW4RemoteNameBeforeStop:
if (packet[0] == HCI_EVENT_REMOTE_NAME_REQUEST_COMPLETE
if (hci_event_packet_get_type(packet) == HCI_EVENT_REMOTE_NAME_REQUEST_COMPLETE
|| COMMAND_COMPLETE_EVENT(packet, hci_remote_name_request_cancel)){
discoveryState = kInactive;
[self sendDiscoveryStoppedEvent];

View File

@ -32,6 +32,7 @@
#import "BluetoothController.h"
#include "btstack_run_loop.h"
#include "btstack_run_loop_cocoa.h"
#include "btstack_event.h"
#pragma mark callback handler
static void btstackStoppedCallback(CFNotificationCenterRef center,
@ -179,7 +180,7 @@ static BluetoothController* sharedInstance = nil;
// NSLog(@"bt_packet_handler event: %u, state %u", packet[0], state);
// update state
switch(packet[0]){
switch(hci_event_packet_get_type(packet)){
case BTSTACK_EVENT_STATE:
hci_state = packet[2];
// NSLog(@"new BTSTACK_EVENT_STATE %u", hci_state);
@ -195,7 +196,7 @@ static BluetoothController* sharedInstance = nil;
switch(state){
case kIdle:
if (packet[0] == BTSTACK_EVENT_STATE) {
if (hci_event_packet_get_type(packet) == BTSTACK_EVENT_STATE) {
if (hci_state == HCI_STATE_OFF) {
bt_send_cmd(&btstack_get_system_bluetooth_enabled);
} else {
@ -205,7 +206,7 @@ static BluetoothController* sharedInstance = nil;
break;
case kW4SystemOffToEnableBTstack:
if (packet[0] == DAEMON_EVENT_SYSTEM_BLUETOOTH_ENABLED) {
if (hci_event_packet_get_type(packet) == DAEMON_EVENT_SYSTEM_BLUETOOTH_ENABLED) {
if (system_bluetooth == 0){
bt_send_cmd(&btstack_set_power_mode, HCI_POWER_ON);
state = kIdle;
@ -214,13 +215,13 @@ static BluetoothController* sharedInstance = nil;
break;
case kW4BTstackOffToEnableSystem:
if (packet[0] == BTSTACK_EVENT_STATE) {
if (hci_event_packet_get_type(packet) == BTSTACK_EVENT_STATE) {
if (hci_state == HCI_STATE_OFF) {
// NSLog(@"Sending set system bluetooth enable A");
bt_send_cmd(&btstack_set_system_bluetooth_enabled, 1);
}
}
if (packet[0] == DAEMON_EVENT_SYSTEM_BLUETOOTH_ENABLED) {
if (hci_event_packet_get_type(packet) == DAEMON_EVENT_SYSTEM_BLUETOOTH_ENABLED) {
if (system_bluetooth == 0){
// NSLog(@"Sending set system bluetooth enable B");
bt_send_cmd(&btstack_set_system_bluetooth_enabled, 1);

View File

@ -157,7 +157,7 @@ static float addToHistory(int history[histSize], int value){
case HCI_EVENT_PACKET:
switch (packet[0]){
switch (hci_event_packet_get_type(packet)){
case HCI_EVENT_COMMAND_COMPLETE:
if ( COMMAND_COMPLETE_EVENT(packet, hci_write_authentication_enable) ) {

View File

@ -90,7 +90,7 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack
switch (packet_type) {
case HCI_EVENT_PACKET:
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case BTSTACK_EVENT_STATE:
if (packet[2] == HCI_STATE_WORKING) {

View File

@ -116,7 +116,7 @@ static void app_packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *
bd_addr_t addr;
uint8_t adv_data[] = { 02, 01, 05, 03, 02, 0xf0, 0xff };
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case BTSTACK_EVENT_STATE:
// bt stack activated, get started - set local name
if (packet[2] == HCI_STATE_WORKING) {

View File

@ -229,7 +229,7 @@ unsigned char hid_process_packet(unsigned char *hid_report, uint16_t *buffer, ui
static void l2cap_packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
if (packet_type == HCI_EVENT_PACKET && packet[0] == L2CAP_EVENT_CHANNEL_OPENED){
if (packet_type == HCI_EVENT_PACKET && hci_event_packet_get_type(packet) == L2CAP_EVENT_CHANNEL_OPENED){
if (packet[2]) {
printf("Connection failed\n\r");
return;
@ -277,7 +277,7 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack
int i,j;
switch (packet_type) {
case HCI_EVENT_PACKET:
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case BTSTACK_EVENT_STATE:
// bt stack activated, get started - set local name

View File

@ -131,7 +131,7 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack
switch (packet_type) {
case HCI_EVENT_PACKET:
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case BTSTACK_EVENT_STATE:
if (packet[2] == HCI_STATE_WORKING) {

View File

@ -91,7 +91,7 @@ static void app_packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *
bd_addr_t addr;
uint8_t adv_data[] = { 02, 01, 05, 03, 02, 0xf0, 0xff };
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case BTSTACK_EVENT_STATE:
// bt stack activated, get started - set local name
if (packet[2] == HCI_STATE_WORKING) {

View File

@ -182,7 +182,7 @@ static void handle_hci_event(uint8_t packet_type, uint16_t channel, uint8_t *pac
int connection_encrypted;
// handle connect / disconncet events first
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case HCI_EVENT_LE_META:
switch (packet[2]) {
case HCI_SUBEVENT_LE_CONNECTION_COMPLETE:
@ -226,7 +226,7 @@ static void handle_hci_event(uint8_t packet_type, uint16_t channel, uint8_t *pac
switch(tc_state){
case TC_W4_SERVICE_RESULT:
switch(packet[0]){
switch(hci_event_packet_get_type(packet)){
case GATT_EVENT_SERVICE_QUERY_RESULT:
gatt_event_service_query_result_get_service(packet, &ancs_service);
ancs_service_found = 1;
@ -247,7 +247,7 @@ static void handle_hci_event(uint8_t packet_type, uint16_t channel, uint8_t *pac
break;
case TC_W4_CHARACTERISTIC_RESULT:
switch(packet[0]){
switch(hci_event_packet_get_type(packet)){
case GATT_EVENT_CHARACTERISTIC_QUERY_RESULT:
gatt_event_characteristic_query_result_get_characteristic(packet, &characteristic);
if (memcmp(characteristic.uuid128, ancs_notification_source_uuid, 16) == 0){
@ -280,7 +280,7 @@ static void handle_hci_event(uint8_t packet_type, uint16_t channel, uint8_t *pac
}
break;
case TC_W4_NOTIFICATION_SOURCE_SUBSCRIBED:
switch(packet[0]){
switch(hci_event_packet_get_type(packet)){
case GATT_EVENT_QUERY_COMPLETE:
log_info("ANCS Notification Source subscribed");
tc_state = TC_W4_DATA_SOURCE_SUBSCRIBED;
@ -293,7 +293,7 @@ static void handle_hci_event(uint8_t packet_type, uint16_t channel, uint8_t *pac
}
break;
case TC_W4_DATA_SOURCE_SUBSCRIBED:
switch(packet[0]){
switch(hci_event_packet_get_type(packet)){
case GATT_EVENT_QUERY_COMPLETE:
log_info("ANCS Data Source subscribed");
tc_state = TC_SUBSCRIBED;
@ -304,7 +304,7 @@ static void handle_hci_event(uint8_t packet_type, uint16_t channel, uint8_t *pac
}
break;
case TC_SUBSCRIBED:
if (packet[0] != GATT_EVENT_NOTIFICATION && packet[0] != GATT_EVENT_INDICATION ) break;
if (hci_event_packet_get_type(packet) != GATT_EVENT_NOTIFICATION && hci_event_packet_get_type(packet) != GATT_EVENT_INDICATION ) break;
value_handle = little_endian_read_16(packet, 4);
value_length = little_endian_read_16(packet, 6);

View File

@ -48,12 +48,12 @@
#include "btstack_config.h"
#include "btstack_run_loop.h"
#include "btstack_debug.h"
#include "btstack_event.h"
#include "btstack_memory.h"
#include "btstack_run_loop.h"
#include "hci.h"
#include "hci_dump.h"
#include "l2cap.h"
#include "ble/sm.h"
@ -137,7 +137,7 @@ static void att_event_packet_handler (uint8_t packet_type, uint16_t channel, uin
switch (packet_type) {
case HCI_EVENT_PACKET:
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case L2CAP_EVENT_CAN_SEND_NOW:
att_run();

View File

@ -39,25 +39,25 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "btstack_run_loop.h"
#include "hci_cmd.h"
#include "btstack_util.h"
#include "classic/sdp_util.h"
#include "btstack_config.h"
#include "ble/gatt_client.h"
#include "att_dispatch.h"
#include "ble/ad_parser.h"
#include "ble/att_db.h"
#include "ble/gatt_client.h"
#include "ble/le_device_db.h"
#include "ble/sm.h"
#include "btstack_debug.h"
#include "btstack_event.h"
#include "btstack_memory.h"
#include "btstack_run_loop.h"
#include "btstack_util.h"
#include "classic/sdp_util.h"
#include "hci.h"
#include "hci_cmd.h"
#include "hci_dump.h"
#include "l2cap.h"
#include "ble/att_db.h"
#include "att_dispatch.h"
#include "ble/sm.h"
#include "ble/le_device_db.h"
static btstack_linked_list_t gatt_client_connections;
static btstack_linked_list_t gatt_client_value_listeners;
@ -998,7 +998,7 @@ static void gatt_client_report_error_if_pending(gatt_client_t *peripheral, uint8
static void gatt_client_hci_event_packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
if (packet_type != HCI_EVENT_PACKET) return;
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case HCI_EVENT_DISCONNECTION_COMPLETE:
{
log_info("GATT Client: HCI_EVENT_DISCONNECTION_COMPLETE");

View File

@ -39,15 +39,15 @@
#include <string.h>
#include <inttypes.h>
#include "btstack_linked_list.h"
#include "btstack_memory.h"
#include "btstack_debug.h"
#include "hci.h"
#include "l2cap.h"
#include "ble/le_device_db.h"
#include "ble/sm.h"
#include "btstack_debug.h"
#include "btstack_event.h"
#include "btstack_linked_list.h"
#include "btstack_memory.h"
#include "gap.h"
#include "hci.h"
#include "l2cap.h"
//
// SM internal types and globals
@ -1834,7 +1834,7 @@ static void sm_event_packet_handler (uint8_t packet_type, uint16_t channel, uint
switch (packet_type) {
case HCI_EVENT_PACKET:
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case BTSTACK_EVENT_STATE:
// bt stack activated, get started

File diff suppressed because it is too large Load Diff

View File

@ -46,16 +46,15 @@
#include <string.h> // memcpy
#include <stdint.h>
#include "hci_cmd.h"
#include "bnep.h"
#include "btstack_debug.h"
#include "btstack_event.h"
#include "btstack_memory.h"
#include "btstack_util.h"
#include "classic/sdp_util.h"
#include "btstack_memory.h"
#include "hci.h"
#include "hci_cmd.h"
#include "hci_dump.h"
#include "btstack_debug.h"
#include "bnep.h"
#include "l2cap.h"
#define BNEP_CONNECTION_TIMEOUT_MS 10000
@ -1157,7 +1156,7 @@ static int bnep_hci_event_handler(uint8_t *packet, uint16_t size)
bnep_channel_t *channel = NULL;
uint8_t status;
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
/* Accept an incoming L2CAP connection on PSM_BNEP */
case L2CAP_EVENT_INCOMING_CONNECTION:

View File

@ -45,7 +45,9 @@
#define __BNEP_H
#include "btstack_util.h"
#include "btstack_run_loop.h"
#include "gap.h"
#include <stdint.h>
#if defined __cplusplus

View File

@ -430,7 +430,7 @@ static void handle_query_rfcomm_event(uint8_t packet_type, uint16_t channel, uin
if ( connection->state != HFP_W4_SDP_EVENT_QUERY_COMPLETE) return;
switch (packet[0]){
switch (hci_event_packet_get_type(packet)){
case SDP_EVENT_QUERY_RFCOMM_SERVICE:
if (!connection) {
log_error("handle_query_rfcomm_event alloc connection for RFCOMM port %u failed", sdp_event_query_rfcomm_service_get_rfcomm_channel(packet));
@ -458,9 +458,9 @@ void hfp_handle_hci_event(uint8_t packet_type, uint8_t *packet, uint16_t size){
uint16_t rfcomm_cid, handle;
hfp_connection_t * context = NULL;
// printf("AG packet_handler type %u, packet[0] %x, size %u\n", packet_type, packet[0], size);
// printf("AG packet_handler type %u, event type %x, size %u\n", packet_type, hci_event_packet_get_type(packet), size);
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case RFCOMM_EVENT_INCOMING_CONNECTION:
// data: event (8), len(8), address(48), channel (8), rfcomm_cid (16)
@ -477,7 +477,7 @@ void hfp_handle_hci_event(uint8_t packet_type, uint8_t *packet, uint16_t size){
case RFCOMM_EVENT_OPEN_CHANNEL_COMPLETE:
// data: event(8), len(8), status (8), address (48), handle(16), server channel(8), rfcomm_cid(16), max frame size(16)
printf("RFCOMM_EVENT_OPEN_CHANNEL_COMPLETE packet_handler type %u, packet[0] %x, size %u\n", packet_type, packet[0], size);
printf("RFCOMM_EVENT_OPEN_CHANNEL_COMPLETE packet_handler type %u, size %u\n", packet_type, size);
reverse_bd_addr(&packet[3], event_addr);
context = get_hfp_connection_context_for_bd_addr(event_addr);

View File

@ -443,7 +443,6 @@ static void hsp_run(void){
static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
// log_info("packet_handler type %u, packet[0] %x", packet_type, packet[0]);
if (packet_type == RFCOMM_DATA_PACKET){
while (size > 0 && (packet[0] == '\n' || packet[0] == '\r')){
size--;
@ -485,7 +484,7 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack
}
if (packet_type != HCI_EVENT_PACKET) return;
uint8_t event = packet[0];
uint8_t event = hci_event_packet_get_type(packet);
bd_addr_t event_addr;
uint16_t handle;

View File

@ -432,7 +432,7 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack
}
if (packet_type != HCI_EVENT_PACKET) return;
uint8_t event = packet[0];
uint8_t event = hci_event_packet_get_type(packet);
bd_addr_t event_addr;
uint16_t handle;
@ -518,7 +518,7 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack
break;
case RFCOMM_EVENT_OPEN_CHANNEL_COMPLETE:
printf("RFCOMM_EVENT_OPEN_CHANNEL_COMPLETE packet_handler type %u, packet[0] %x\n", packet_type, packet[0]);
printf("RFCOMM_EVENT_OPEN_CHANNEL_COMPLETE packet_handler type %u\n", packet_type);
// data: event(8), len(8), status (8), address (48), handle(16), server channel(8), rfcomm_cid(16), max frame size(16)
if (packet[2]) {
printf("RFCOMM channel open failed, status %u\n", packet[2]);
@ -575,7 +575,7 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack
}
static void handle_query_rfcomm_event(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
switch (packet[0]){
switch (hci_event_packet_get_type(packet)){
case SDP_EVENT_QUERY_RFCOMM_SERVICE:
channel_nr = sdp_event_query_rfcomm_service_get_rfcomm_channel(packet);
printf("** Service name: '%s', RFCOMM port %u\n", sdp_event_query_rfcomm_service_get_name(packet), channel_nr);

View File

@ -45,6 +45,7 @@
#include <stdint.h>
#include "btstack_debug.h"
#include "btstack_event.h"
#include "btstack_memory.h"
#include "btstack_util.h"
#include "classic/rfcomm.h"
@ -841,7 +842,7 @@ static int rfcomm_multiplexer_hci_event_handler(uint8_t *packet, uint16_t size){
rfcomm_multiplexer_t *multiplexer = NULL;
uint8_t status;
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
// accept incoming PSM_RFCOMM connection if no multiplexer exists yet
case L2CAP_EVENT_INCOMING_CONNECTION:

View File

@ -44,6 +44,7 @@
#include "hci_cmd.h"
#include "btstack_event.h"
#include "l2cap.h"
#include "classic/sdp_server.h"
#include "classic/sdp_util.h"
@ -459,10 +460,7 @@ void sdp_client_packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *p
if (packet_type != HCI_EVENT_PACKET) return;
switch(packet[0]){
case L2CAP_EVENT_TIMEOUT_CHECK:
log_info("sdp client: L2CAP_EVENT_TIMEOUT_CHECK");
break;
switch(hci_event_packet_get_type(packet)){
case L2CAP_EVENT_CHANNEL_OPENED:
if (sdp_client_state != W4_CONNECT) break;
// data: event (8), len(8), status (8), address(48), handle (16), psm (16), local_cid(16), remote_cid (16), local_mtu(16), remote_mtu(16)

View File

@ -246,7 +246,7 @@ static void handleServiceNameData(uint32_t attribute_value_length, uint32_t data
}
static void handle_sdp_parser_event(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
switch (packet[0]){
switch (hci_event_packet_get_type(packet)){
case SDP_EVENT_QUERY_SERVICE_RECORD_HANDLE:
// handle service without a name
if (sdp_rfcomm_channel_nr){

View File

@ -44,6 +44,7 @@
#include "btstack_memory.h"
#include "btstack_debug.h"
#include "btstack_event.h"
#include "hci_dump.h"
#include "l2cap.h"
@ -491,7 +492,7 @@ static void sdp_packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *p
case HCI_EVENT_PACKET:
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case L2CAP_EVENT_INCOMING_CONNECTION:
if (l2cap_cid) {

View File

@ -63,6 +63,7 @@
#include <inttypes.h>
#include "btstack_debug.h"
#include "btstack_event.h"
#include "btstack_linked_list.h"
#include "btstack_memory.h"
#include "gap.h"
@ -1106,7 +1107,7 @@ static void hci_init_done(void){
static void hci_initializing_event_handler(uint8_t * packet, uint16_t size){
uint8_t command_completed = 0;
if (packet[0] == HCI_EVENT_COMMAND_COMPLETE){
if (hci_event_packet_get_type(packet) == HCI_EVENT_COMMAND_COMPLETE){
uint16_t opcode = little_endian_read_16(packet,3);
if (opcode == hci_stack->last_cmd_opcode){
command_completed = 1;
@ -1116,7 +1117,7 @@ static void hci_initializing_event_handler(uint8_t * packet, uint16_t size){
}
}
if (packet[0] == HCI_EVENT_COMMAND_STATUS){
if (hci_event_packet_get_type(packet) == HCI_EVENT_COMMAND_STATUS){
uint8_t status = packet[2];
uint16_t opcode = little_endian_read_16(packet,4);
if (opcode == hci_stack->last_cmd_opcode){
@ -1132,13 +1133,13 @@ static void hci_initializing_event_handler(uint8_t * packet, uint16_t size){
}
// Vendor == CSR
if (hci_stack->substate == HCI_INIT_W4_CUSTOM_INIT && packet[0] == HCI_EVENT_VENDOR_SPECIFIC){
if (hci_stack->substate == HCI_INIT_W4_CUSTOM_INIT && hci_event_packet_get_type(packet) == HCI_EVENT_VENDOR_SPECIFIC){
// TODO: track actual command
command_completed = 1;
}
// Vendor == Toshiba
if (hci_stack->substate == HCI_INIT_W4_SEND_BAUD_CHANGE && packet[0] == HCI_EVENT_VENDOR_SPECIFIC){
if (hci_stack->substate == HCI_INIT_W4_SEND_BAUD_CHANGE && hci_event_packet_get_type(packet) == HCI_EVENT_VENDOR_SPECIFIC){
// TODO: track actual command
command_completed = 1;
}
@ -1156,7 +1157,7 @@ static void hci_initializing_event_handler(uint8_t * packet, uint16_t size){
//
// Fix: Command Complete for HCI Reset in HCI_INIT_W4_SEND_READ_LOCAL_VERSION_INFORMATION trigger resend
if (!command_completed
&& packet[0] == HCI_EVENT_COMMAND_COMPLETE
&& hci_event_packet_get_type(packet) == HCI_EVENT_COMMAND_COMPLETE
&& hci_stack->substate == HCI_INIT_W4_SEND_READ_LOCAL_VERSION_INFORMATION){
uint16_t opcode = little_endian_read_16(packet,3);
@ -1327,9 +1328,9 @@ static void event_handler(uint8_t *packet, int size){
hci_connection_t * conn;
int i;
// log_info("HCI:EVENT:%02x", packet[0]);
// log_info("HCI:EVENT:%02x", hci_event_packet_get_type(packet));
switch (packet[0]) {
switch (hci_event_packet_get_type(packet)) {
case HCI_EVENT_COMMAND_COMPLETE:
// get num cmd packets
@ -1791,7 +1792,7 @@ static void event_handler(uint8_t *packet, int size){
hci_emit_event(packet, size, 0); // don't dump, already happened in packet handler
// moved here to give upper stack a chance to close down everything with hci_connection_t intact
if (packet[0] == HCI_EVENT_DISCONNECTION_COMPLETE){
if (hci_event_packet_get_type(packet) == HCI_EVENT_DISCONNECTION_COMPLETE){
if (!packet[2]){
handle = little_endian_read_16(packet, 3);
hci_connection_t * aConn = hci_connection_for_handle(handle);

View File

@ -47,6 +47,7 @@
#include "hci.h"
#include "hci_dump.h"
#include "btstack_debug.h"
#include "btstack_event.h"
#include "btstack_memory.h"
#include <stdarg.h>
@ -919,7 +920,7 @@ static void l2cap_hci_event_handler(uint8_t packet_type, uint16_t cid, uint8_t *
btstack_linked_list_iterator_t it;
int hci_con_used;
switch(packet[0]){
switch(hci_event_packet_get_type(packet)){
// handle connection complete events
case HCI_EVENT_CONNECTION_COMPLETE:

View File

@ -77,6 +77,15 @@ extern "C" {
/* API_START */
/**
* @brief Get event type
* @param event
* @return type of event
*/
static inline uint8_t hci_event_packet_get_type(const uint8_t * event){
return event[0];
}
"""
hfile_header_end = """
@ -92,7 +101,7 @@ hfile_header_end = """
c_prototoype_simple_return = '''/**
* @brief {description}
* @param Event packet
* @param event packet
* @return {result_name}
* @note: btstack_type {format}
*/
@ -103,7 +112,7 @@ static inline {result_type} {fn_name}(const uint8_t * event){{
c_prototoype_struct_return = '''/**
* @brief {description}
* @param Event packet
* @param event packet
* @param Pointer to storage for {result_name}
* @note: btstack_type {format}
*/
@ -114,7 +123,7 @@ static inline void {fn_name}(const uint8_t * event, {result_type} {result_name})
c_prototoype_unsupported = '''/**
* @brief {description}
* @param Event packet
* @param event packet
* @return {result_name}
* @note: btstack_type {format}
*/
@ -123,6 +132,16 @@ c_prototoype_unsupported = '''/**
// }}
'''
meta_event_template = '''/***
* @brief Get subevent code for {meta_event} event
* @param event packet
* @return subevent_code
*/
static inline uint8_t hci_event_{meta_event}_meta_get_subevent_code(const uint8_t * event){{
return event[2];
}}
'''
# global variables/defines
gen_path = '../src/btstack_event.h'
@ -205,10 +224,16 @@ def create_events(events):
global copyright
global hfile_header_begin
global hfile_header_end
global meta_event_template
with open(gen_path, 'wt') as fout:
fout.write(copyright)
fout.write(hfile_header_begin)
meta_events = ['HSP', 'HFP', 'ANCS'];
for meta_event in meta_events:
fout.write(meta_event_template.format(meta_event=meta_event.lower()))
for event_type, event_name, format, args in events:
parts = event_name.split("_")
event_group = parts[0]