hci: COMMAND_COMPLETE_EVENT->HCI_EVENT_IS_COMMAND_COMPLETE. COMMAND_STATUS_EVENT->HCI_EVENT_IS_COMMAND_STATUS

This commit is contained in:
Matthias Ringwald 2016-02-11 16:12:55 +01:00
parent a51cb0dfd4
commit 073bd0fad0
19 changed files with 58 additions and 47 deletions

View File

@ -128,13 +128,13 @@ static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packe
case W4_INQUIRY_MODE_COMPLETE: case W4_INQUIRY_MODE_COMPLETE:
switch(event){ switch(event){
case HCI_EVENT_COMMAND_COMPLETE: case HCI_EVENT_COMMAND_COMPLETE:
if ( COMMAND_COMPLETE_EVENT(packet, hci_write_inquiry_mode) ) { if (HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_write_inquiry_mode)) {
start_scan(); start_scan();
state = ACTIVE; state = ACTIVE;
} }
break; break;
case HCI_EVENT_COMMAND_STATUS: case HCI_EVENT_COMMAND_STATUS:
if ( COMMAND_STATUS_EVENT(packet, hci_write_inquiry_mode) ) { if (HCI_EVENT_IS_COMMAND_STATUS(packet, hci_write_inquiry_mode)) {
printf("Ignoring error (0x%x) from hci_write_inquiry_mode.\n", packet[2]); printf("Ignoring error (0x%x) from hci_write_inquiry_mode.\n", packet[2]);
start_scan(); start_scan();
state = ACTIVE; state = ACTIVE;

View File

@ -185,7 +185,7 @@ void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint
break; break;
case HCI_EVENT_COMMAND_COMPLETE: case HCI_EVENT_COMMAND_COMPLETE:
if ( COMMAND_COMPLETE_EVENT(packet, hci_write_class_of_device) ) { if (HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_write_class_of_device)) {
printf("Ready\n"); printf("Ready\n");
} }
default: default:

View File

@ -117,7 +117,7 @@ void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint
case HCI_EVENT_COMMAND_COMPLETE: case HCI_EVENT_COMMAND_COMPLETE:
// use pairing yes/no // use pairing yes/no
if ( COMMAND_COMPLETE_EVENT(packet, hci_write_class_of_device) ) { if (HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_write_class_of_device)) {
bt_send_cmd(&l2cap_create_channel_mtu_cmd, addr, PSM_TEST, PACKET_SIZE); bt_send_cmd(&l2cap_create_channel_mtu_cmd, addr, PSM_TEST, PACKET_SIZE);
} }
break; break;

View File

@ -146,7 +146,7 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack
break; break;
case W4_INQUIRY_MODE_COMPLETE: case W4_INQUIRY_MODE_COMPLETE:
if ( COMMAND_COMPLETE_EVENT(packet, hci_write_inquiry_mode) ) { if (HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_write_inquiry_mode)) {
start_scan(); start_scan();
state = ACTIVE; state = ACTIVE;
} }

View File

@ -154,7 +154,7 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack
break; break;
case HCI_EVENT_COMMAND_COMPLETE: case HCI_EVENT_COMMAND_COMPLETE:
if (COMMAND_COMPLETE_EVENT(packet, hci_read_bd_addr)){ if (HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_read_bd_addr)){
reverse_bd_addr(&packet[6], event_addr); reverse_bd_addr(&packet[6], event_addr);
printf("BD-ADDR: %s\n\r", bd_addr_to_str(event_addr)); printf("BD-ADDR: %s\n\r", bd_addr_to_str(event_addr));
break; break;

View File

@ -2005,11 +2005,11 @@ static void sm_event_packet_handler (uint8_t packet_type, uint16_t channel, uint
break; break;
case HCI_EVENT_COMMAND_COMPLETE: case HCI_EVENT_COMMAND_COMPLETE:
if (COMMAND_COMPLETE_EVENT(packet, hci_le_encrypt)){ if (HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_le_encrypt)){
sm_handle_encryption_result(&packet[6]); sm_handle_encryption_result(&packet[6]);
break; break;
} }
if (COMMAND_COMPLETE_EVENT(packet, hci_le_rand)){ if (HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_le_rand)){
sm_handle_random_result(&packet[6]); sm_handle_random_result(&packet[6]);
break; break;
} }

View File

@ -1344,7 +1344,7 @@ static void event_handler(uint8_t *packet, int size){
// log_info("HCI_EVENT_COMMAND_COMPLETE cmds old %u - new %u", hci_stack->num_cmd_packets, packet[2]); // log_info("HCI_EVENT_COMMAND_COMPLETE cmds old %u - new %u", hci_stack->num_cmd_packets, packet[2]);
hci_stack->num_cmd_packets = packet[2]; hci_stack->num_cmd_packets = packet[2];
if (COMMAND_COMPLETE_EVENT(packet, hci_read_buffer_size)){ if (HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_read_buffer_size)){
// from offset 5 // from offset 5
// status // status
// "The HC_ACL_Data_Packet_Length return parameter will be used to determine the size of the L2CAP segments contained in ACL Data Packets" // "The HC_ACL_Data_Packet_Length return parameter will be used to determine the size of the L2CAP segments contained in ACL Data Packets"
@ -1364,7 +1364,7 @@ static void event_handler(uint8_t *packet, int size){
} }
} }
#ifdef ENABLE_BLE #ifdef ENABLE_BLE
if (COMMAND_COMPLETE_EVENT(packet, hci_le_read_buffer_size)){ if (HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_le_read_buffer_size)){
hci_stack->le_data_packets_length = little_endian_read_16(packet, 6); hci_stack->le_data_packets_length = little_endian_read_16(packet, 6);
hci_stack->le_acl_packets_total_num = packet[8]; hci_stack->le_acl_packets_total_num = packet[8];
// determine usable ACL payload size // determine usable ACL payload size
@ -1373,23 +1373,23 @@ static void event_handler(uint8_t *packet, int size){
} }
log_info("hci_le_read_buffer_size: size %u, count %u", hci_stack->le_data_packets_length, hci_stack->le_acl_packets_total_num); log_info("hci_le_read_buffer_size: size %u, count %u", hci_stack->le_data_packets_length, hci_stack->le_acl_packets_total_num);
} }
if (COMMAND_COMPLETE_EVENT(packet, hci_le_read_white_list_size)){ if (HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_le_read_white_list_size)){
hci_stack->le_whitelist_capacity = little_endian_read_16(packet, 6); hci_stack->le_whitelist_capacity = little_endian_read_16(packet, 6);
log_info("hci_le_read_white_list_size: size %u", hci_stack->le_whitelist_capacity); log_info("hci_le_read_white_list_size: size %u", hci_stack->le_whitelist_capacity);
} }
#endif #endif
// Dump local address // Dump local address
if (COMMAND_COMPLETE_EVENT(packet, hci_read_bd_addr)) { if (HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_read_bd_addr)) {
reverse_bd_addr(&packet[OFFSET_OF_DATA_IN_COMMAND_COMPLETE + 1], reverse_bd_addr(&packet[OFFSET_OF_DATA_IN_COMMAND_COMPLETE + 1],
hci_stack->local_bd_addr); hci_stack->local_bd_addr);
log_info("Local Address, Status: 0x%02x: Addr: %s", log_info("Local Address, Status: 0x%02x: Addr: %s",
packet[OFFSET_OF_DATA_IN_COMMAND_COMPLETE], bd_addr_to_str(hci_stack->local_bd_addr)); packet[OFFSET_OF_DATA_IN_COMMAND_COMPLETE], bd_addr_to_str(hci_stack->local_bd_addr));
} }
if (COMMAND_COMPLETE_EVENT(packet, hci_write_scan_enable)){ if (HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_write_scan_enable)){
hci_emit_discoverable_enabled(hci_stack->discoverable); hci_emit_discoverable_enabled(hci_stack->discoverable);
} }
// Note: HCI init checks // Note: HCI init checks
if (COMMAND_COMPLETE_EVENT(packet, hci_read_local_supported_features)){ if (HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_read_local_supported_features)){
memcpy(hci_stack->local_supported_features, &packet[OFFSET_OF_DATA_IN_COMMAND_COMPLETE+1], 8); memcpy(hci_stack->local_supported_features, &packet[OFFSET_OF_DATA_IN_COMMAND_COMPLETE+1], 8);
// determine usable ACL packet types based on host buffer size and supported features // determine usable ACL packet types based on host buffer size and supported features
@ -1399,7 +1399,7 @@ static void event_handler(uint8_t *packet, int size){
// Classic/LE // Classic/LE
log_info("BR/EDR support %u, LE support %u", hci_classic_supported(), hci_le_supported()); log_info("BR/EDR support %u, LE support %u", hci_classic_supported(), hci_le_supported());
} }
if (COMMAND_COMPLETE_EVENT(packet, hci_read_local_version_information)){ if (HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_read_local_version_information)){
// hci_stack->hci_version = little_endian_read_16(packet, 4); // hci_stack->hci_version = little_endian_read_16(packet, 4);
// hci_stack->hci_revision = little_endian_read_16(packet, 6); // hci_stack->hci_revision = little_endian_read_16(packet, 6);
// hci_stack->lmp_version = little_endian_read_16(packet, 8); // hci_stack->lmp_version = little_endian_read_16(packet, 8);
@ -1407,12 +1407,12 @@ static void event_handler(uint8_t *packet, int size){
// hci_stack->lmp_subversion = little_endian_read_16(packet, 12); // hci_stack->lmp_subversion = little_endian_read_16(packet, 12);
log_info("Manufacturer: 0x%04x", hci_stack->manufacturer); log_info("Manufacturer: 0x%04x", hci_stack->manufacturer);
} }
if (COMMAND_COMPLETE_EVENT(packet, hci_read_local_supported_commands)){ if (HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_read_local_supported_commands)){
hci_stack->local_supported_commands[0] = hci_stack->local_supported_commands[0] =
(packet[OFFSET_OF_DATA_IN_COMMAND_COMPLETE+1+14] & 0X80) >> 7 | // Octet 14, bit 7 (packet[OFFSET_OF_DATA_IN_COMMAND_COMPLETE+1+14] & 0X80) >> 7 | // Octet 14, bit 7
(packet[OFFSET_OF_DATA_IN_COMMAND_COMPLETE+1+24] & 0x40) >> 5; // Octet 24, bit 6 (packet[OFFSET_OF_DATA_IN_COMMAND_COMPLETE+1+24] & 0x40) >> 5; // Octet 24, bit 6
} }
if (COMMAND_COMPLETE_EVENT(packet, hci_write_synchronous_flow_control_enable)){ if (HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_write_synchronous_flow_control_enable)){
if (packet[5] == 0){ if (packet[5] == 0){
hci_stack->synchronous_flow_control_enabled = 1; hci_stack->synchronous_flow_control_enabled = 1;
} }
@ -1785,7 +1785,7 @@ static void event_handler(uint8_t *packet, int size){
// help with BT sleep // help with BT sleep
if (hci_stack->state == HCI_STATE_FALLING_ASLEEP if (hci_stack->state == HCI_STATE_FALLING_ASLEEP
&& hci_stack->substate == HCI_FALLING_ASLEEP_W4_WRITE_SCAN_ENABLE && hci_stack->substate == HCI_FALLING_ASLEEP_W4_WRITE_SCAN_ENABLE
&& COMMAND_COMPLETE_EVENT(packet, hci_write_scan_enable)){ && HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_write_scan_enable)){
hci_initializing_next_state(); hci_initializing_next_state();
} }
@ -3046,7 +3046,7 @@ static void hci_emit_dedicated_bonding_result(bd_addr_t address, uint8_t status)
} }
// query if remote side supports eSCO // query if remote side supports eSCO
int hci_remote_eSCO_supported(hci_con_handle_t con_handle){ int hci_remote_esco_supported(hci_con_handle_t con_handle){
hci_connection_t * connection = hci_connection_for_handle(con_handle); hci_connection_t * connection = hci_connection_for_handle(con_handle);
if (!connection) return 0; if (!connection) return 0;
return connection->remote_supported_feature_eSCO; return connection->remote_supported_feature_eSCO;

View File

@ -103,8 +103,8 @@ extern "C" {
#define IS_COMMAND(packet, command) (little_endian_read_16(packet,0) == command.opcode) #define IS_COMMAND(packet, command) (little_endian_read_16(packet,0) == command.opcode)
// check if command complete event for given command // check if command complete event for given command
#define COMMAND_COMPLETE_EVENT(event,cmd) ( event[0] == HCI_EVENT_COMMAND_COMPLETE && little_endian_read_16(event,3) == cmd.opcode) #define HCI_EVENT_IS_COMMAND_COMPLETE(event,cmd) ( event[0] == HCI_EVENT_COMMAND_COMPLETE && little_endian_read_16(event,3) == cmd.opcode)
#define COMMAND_STATUS_EVENT(event,cmd) ( event[0] == HCI_EVENT_COMMAND_STATUS && little_endian_read_16(event,4) == cmd.opcode) #define HCI_EVENT_IS_COMMAND_STATUS(event,cmd) ( event[0] == HCI_EVENT_COMMAND_STATUS && little_endian_read_16(event,4) == cmd.opcode)
// Code+Len=2, Pkts+Opcode=3; total=5 // Code+Len=2, Pkts+Opcode=3; total=5
#define OFFSET_OF_DATA_IN_COMMAND_COMPLETE 5 #define OFFSET_OF_DATA_IN_COMMAND_COMPLETE 5

View File

@ -934,7 +934,7 @@ static void l2cap_hci_event_handler(uint8_t packet_type, uint16_t cid, uint8_t *
// handle successful create connection cancel command // handle successful create connection cancel command
case HCI_EVENT_COMMAND_COMPLETE: case HCI_EVENT_COMMAND_COMPLETE:
if ( COMMAND_COMPLETE_EVENT(packet, hci_create_connection_cancel) ) { if (HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_create_connection_cancel)) {
if (packet[5] == 0){ if (packet[5] == 0){
reverse_bd_addr(&packet[6], address); reverse_bd_addr(&packet[6], address);
// CONNECTION TERMINATED BY LOCAL HOST (0X16) // CONNECTION TERMINATED BY LOCAL HOST (0X16)

View File

@ -56,7 +56,7 @@ static void handle_hci_event(uint8_t packet_type, uint16_t channel, uint8_t *pac
advertisement_received = 1; advertisement_received = 1;
memcpy(advertisement_packet, packet, size); memcpy(advertisement_packet, packet, size);
bt_flip_addr(address, &packet[4]); reverse_bd_addr(&packet[4], address);
le_central_connect(address, (bd_addr_type_t)packet[3]); le_central_connect(address, (bd_addr_type_t)packet[3]);
break; break;
} }

View File

@ -177,7 +177,7 @@ static void hci_event_sco_complete(){
event[pos++] = 0; //status event[pos++] = 0; //status
little_endian_store_16(event, pos, sco_handle); pos += 2; // sco handle little_endian_store_16(event, pos, sco_handle); pos += 2; // sco handle
bt_flip_addr(&event[pos], dev_addr); pos += 6; reverse_bd_addr(dev_addr, &event[pos]); pos += 6;
event[pos++] = 0; // link_type event[pos++] = 0; // link_type
event[pos++] = 0; // transmission_interval event[pos++] = 0; // transmission_interval
@ -237,7 +237,7 @@ uint8_t rfcomm_create_channel(bd_addr_t addr, uint8_t channel, uint16_t * out_ci
event[pos++] = sizeof(event) - 2; event[pos++] = sizeof(event) - 2;
event[pos++] = 0; event[pos++] = 0;
bt_flip_addr(&event[pos], addr); reverse_bd_addr(addr, &event[pos]);
memcpy(dev_addr, addr, 6); memcpy(dev_addr, addr, 6);
pos += 6; pos += 6;

View File

@ -257,7 +257,7 @@ const char * ad_event_types[] = {
static void handle_advertising_event(uint8_t * packet, int size){ static void handle_advertising_event(uint8_t * packet, int size){
// filter PTS // filter PTS
bd_addr_t addr; bd_addr_t addr;
bt_flip_addr(addr, &packet[4]); reverse_bd_addr(&packet[4], addr);
// always request address resolution // always request address resolution
sm_address_resolution_lookup(packet[3], addr); sm_address_resolution_lookup(packet[3], addr);
@ -388,7 +388,7 @@ static void app_packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *
break; break;
case SM_EVENT_IDENTITY_RESOLVING_SUCCEEDED: case SM_EVENT_IDENTITY_RESOLVING_SUCCEEDED:
bt_flip_addr(event_address, &packet[5]); reverse_bd_addr(&packet[5], event_address);
// skip already detected pts // skip already detected pts
if (memcmp(event_address, current_pts_address, 6) == 0) break; if (memcmp(event_address, current_pts_address, 6) == 0) break;
memcpy(current_pts_address, event_address, 6); memcpy(current_pts_address, event_address, 6);
@ -679,7 +679,7 @@ static void handle_gatt_client_event(uint8_t packet_type, uint8_t *packet, uint1
central_state = CENTRAL_IDLE; central_state = CENTRAL_IDLE;
hci_le_advertisement_address(&address_type, our_private_address); hci_le_advertisement_address(&address_type, our_private_address);
printf("Our private address: %s\n", bd_addr_to_str(our_private_address)); printf("Our private address: %s\n", bd_addr_to_str(our_private_address));
bt_flip_addr(flipped_address, our_private_address); reverse_bd_addr(our_private_address, flipped_address);
gatt_client_write_value_of_characteristic(gc_id, handle, gap_reconnection_address_characteristic.value_handle, 6, flipped_address); gatt_client_write_value_of_characteristic(gc_id, handle, gap_reconnection_address_characteristic.value_handle, 6, flipped_address);
reconnection_address_set = 1; reconnection_address_set = 1;
#ifdef PTS_USES_RECONNECTION_ADDRESS_FOR_ITSELF #ifdef PTS_USES_RECONNECTION_ADDRESS_FOR_ITSELF

View File

@ -324,7 +324,7 @@ static uint16_t att_read_callback(uint16_t con_handle, uint16_t attribute_handle
return 1; return 1;
case ATT_CHARACTERISTIC_GAP_RECONNECTION_ADDRESS_01_VALUE_HANDLE: case ATT_CHARACTERISTIC_GAP_RECONNECTION_ADDRESS_01_VALUE_HANDLE:
if (buffer) { if (buffer) {
bt_flip_addr(buffer, gap_reconnection_address); reverse_bd_addr(gap_reconnection_address, buffer);
} }
return 6; return 6;
@ -399,7 +399,7 @@ static int att_write_callback(uint16_t con_handle, uint16_t attribute_handle, ui
update_advertisements(); update_advertisements();
return 0; return 0;
case ATT_CHARACTERISTIC_GAP_RECONNECTION_ADDRESS_01_VALUE_HANDLE: case ATT_CHARACTERISTIC_GAP_RECONNECTION_ADDRESS_01_VALUE_HANDLE:
bt_flip_addr(gap_reconnection_address, buffer); reverse_bd_addr(buffer, gap_reconnection_address);
printf("Setting Reconnection Address to %s\n", bd_addr_to_str(gap_reconnection_address)); printf("Setting Reconnection Address to %s\n", bd_addr_to_str(gap_reconnection_address));
return 0; return 0;
default: default:
@ -588,7 +588,7 @@ static void app_packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *
case SM_EVENT_PASSKEY_INPUT_NUMBER: case SM_EVENT_PASSKEY_INPUT_NUMBER:
// display number // display number
master_addr_type = packet[4]; master_addr_type = packet[4];
bt_flip_addr(event_address, &packet[5]); reverse_bd_addr(&packet[5], event_address);
printf("\nGAP Bonding %s (%u): Enter 6 digit passkey: '", bd_addr_to_str(master_address), master_addr_type); printf("\nGAP Bonding %s (%u): Enter 6 digit passkey: '", bd_addr_to_str(master_address), master_addr_type);
fflush(stdout); fflush(stdout);
ui_passkey = 0; ui_passkey = 0;

View File

@ -689,8 +689,8 @@ static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packe
break; break;
case HCI_EVENT_COMMAND_COMPLETE: case HCI_EVENT_COMMAND_COMPLETE:
if (COMMAND_COMPLETE_EVENT(packet, hci_read_bd_addr)){ if (HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_read_bd_addr)){
bt_flip_addr(local_addr, &packet[6]); reverse_bd_addr(&packet[6], local_addr);
printf("BD-ADDR: %s\n", bd_addr_to_str(local_addr)); printf("BD-ADDR: %s\n", bd_addr_to_str(local_addr));
break; break;
} }

View File

@ -194,7 +194,7 @@ static void inquiry_packet_handler (uint8_t packet_type, uint8_t *packet, uint16
numResponses = packet[2]; numResponses = packet[2];
int offset = 3; int offset = 3;
for (i=0; i<numResponses && deviceCount < MAX_DEVICES;i++){ for (i=0; i<numResponses && deviceCount < MAX_DEVICES;i++){
bt_flip_addr(addr, &packet[offset]); reverse_bd_addr(&packet[offset], addr);
offset += 6; offset += 6;
index = getDeviceIndexForAddress(addr); index = getDeviceIndexForAddress(addr);
if (index >= 0) continue; // already in our list if (index >= 0) continue; // already in our list
@ -238,12 +238,12 @@ static void inquiry_packet_handler (uint8_t packet_type, uint8_t *packet, uint16
break; break;
case BTSTACK_EVENT_REMOTE_NAME_CACHED: case BTSTACK_EVENT_REMOTE_NAME_CACHED:
bt_flip_addr(addr, &packet[3]); reverse_bd_addr(&packet[3], addr);
printf("Cached remote name for %s: '%s'\n", bd_addr_to_str(addr), &packet[9]); printf("Cached remote name for %s: '%s'\n", bd_addr_to_str(addr), &packet[9]);
break; break;
case HCI_EVENT_REMOTE_NAME_REQUEST_COMPLETE: case HCI_EVENT_REMOTE_NAME_REQUEST_COMPLETE:
bt_flip_addr(addr, &packet[3]); reverse_bd_addr(&packet[3], addr);
index = getDeviceIndexForAddress(addr); index = getDeviceIndexForAddress(addr);
if (index >= 0) { if (index >= 0) {
if (packet[2] == 0) { if (packet[2] == 0) {
@ -297,26 +297,26 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack
case HCI_EVENT_CONNECTION_COMPLETE: case HCI_EVENT_CONNECTION_COMPLETE:
if (!packet[2]){ if (!packet[2]){
handle = little_endian_read_16(packet, 3); handle = little_endian_read_16(packet, 3);
bt_flip_addr(remote, &packet[5]); reverse_bd_addr(&packet[5], remote);
printf("HCI_EVENT_CONNECTION_COMPLETE: handle 0x%04x\n", handle); printf("HCI_EVENT_CONNECTION_COMPLETE: handle 0x%04x\n", handle);
} }
break; break;
case HCI_EVENT_USER_PASSKEY_REQUEST: case HCI_EVENT_USER_PASSKEY_REQUEST:
bt_flip_addr(remote, &packet[2]); reverse_bd_addr(&packet[2], remote);
printf("GAP User Passkey Request for %s\nPasskey:", bd_addr_to_str(remote)); printf("GAP User Passkey Request for %s\nPasskey:", bd_addr_to_str(remote));
fflush(stdout); fflush(stdout);
ui_digits_for_passkey = 6; ui_digits_for_passkey = 6;
break; break;
case HCI_EVENT_USER_CONFIRMATION_REQUEST: case HCI_EVENT_USER_CONFIRMATION_REQUEST:
bt_flip_addr(remote, &packet[2]); reverse_bd_addr(&packet[2], remote);
passkey = little_endian_read_32(packet, 8); passkey = little_endian_read_32(packet, 8);
printf("GAP User Confirmation Request for %s, number '%06u'\n", bd_addr_to_str(remote),passkey); printf("GAP User Confirmation Request for %s, number '%06u'\n", bd_addr_to_str(remote),passkey);
break; break;
case HCI_EVENT_PIN_CODE_REQUEST: case HCI_EVENT_PIN_CODE_REQUEST:
bt_flip_addr(remote, &packet[2]); reverse_bd_addr(&packet[2], remote);
printf("GAP Legacy PIN Request for %s (press ENTER to send)\nPasskey:", bd_addr_to_str(remote)); printf("GAP Legacy PIN Request for %s (press ENTER to send)\nPasskey:", bd_addr_to_str(remote));
fflush(stdout); fflush(stdout);
ui_chars_for_pin = 1; ui_chars_for_pin = 1;
@ -324,7 +324,7 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack
case L2CAP_EVENT_CHANNEL_OPENED: case L2CAP_EVENT_CHANNEL_OPENED:
// inform about new l2cap connection // inform about new l2cap connection
bt_flip_addr(remote, &packet[3]); reverse_bd_addr(&packet[3], remote);
psm = little_endian_read_16(packet, 11); psm = little_endian_read_16(packet, 11);
local_cid = little_endian_read_16(packet, 13); local_cid = little_endian_read_16(packet, 13);
handle = little_endian_read_16(packet, 9); handle = little_endian_read_16(packet, 9);
@ -347,7 +347,7 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack
case RFCOMM_EVENT_INCOMING_CONNECTION: case RFCOMM_EVENT_INCOMING_CONNECTION:
// data: event (8), len(8), address(48), channel (8), rfcomm_cid (16) // data: event (8), len(8), address(48), channel (8), rfcomm_cid (16)
bt_flip_addr(remote, &packet[2]); reverse_bd_addr(&packet[2], remote);
rfcomm_channel_nr = packet[8]; rfcomm_channel_nr = packet[8];
rfcomm_channel_id = little_endian_read_16(packet, 9); rfcomm_channel_id = little_endian_read_16(packet, 9);
printf("RFCOMM channel %u requested for %s\n\r", rfcomm_channel_nr, bd_addr_to_str(remote)); printf("RFCOMM channel %u requested for %s\n\r", rfcomm_channel_nr, bd_addr_to_str(remote));

View File

@ -197,7 +197,7 @@ static void inquiry_packet_handler (uint8_t packet_type, uint8_t *packet, uint16
numResponses = packet[2]; numResponses = packet[2];
int offset = 3; int offset = 3;
for (i=0; i<numResponses && deviceCount < MAX_DEVICES;i++){ for (i=0; i<numResponses && deviceCount < MAX_DEVICES;i++){
bt_flip_addr(addr, &packet[offset]); reverse_bd_addr(&packet[offset], addr);
offset += 6; offset += 6;
index = getDeviceIndexForAddress(addr); index = getDeviceIndexForAddress(addr);
if (index >= 0) continue; // already in our list if (index >= 0) continue; // already in our list
@ -242,12 +242,12 @@ static void inquiry_packet_handler (uint8_t packet_type, uint8_t *packet, uint16
break; break;
case BTSTACK_EVENT_REMOTE_NAME_CACHED: case BTSTACK_EVENT_REMOTE_NAME_CACHED:
bt_flip_addr(addr, &packet[3]); reverse_bd_addr(&packet[3], addr);
printf("Cached remote name for %s: '%s'\n", bd_addr_to_str(addr), &packet[9]); printf("Cached remote name for %s: '%s'\n", bd_addr_to_str(addr), &packet[9]);
break; break;
case HCI_EVENT_REMOTE_NAME_REQUEST_COMPLETE: case HCI_EVENT_REMOTE_NAME_REQUEST_COMPLETE:
bt_flip_addr(addr, &packet[3]); reverse_bd_addr(&packet[3], addr);
index = getDeviceIndexForAddress(addr); index = getDeviceIndexForAddress(addr);
if (index >= 0) { if (index >= 0) {
if (packet[2] == 0) { if (packet[2] == 0) {

View File

@ -114,7 +114,7 @@ static void packet_handler(void * connection, uint8_t packet_type, uint16_t chan
case HCI_EVENT_PIN_CODE_REQUEST: case HCI_EVENT_PIN_CODE_REQUEST:
// inform about pin code request // inform about pin code request
printf("Pin code request - using '0000'\n\r"); printf("Pin code request - using '0000'\n\r");
bt_flip_addr(event_addr, &packet[2]); reverse_bd_addr(&packet[2], event_addr);
hci_send_cmd(&hci_pin_code_request_reply, &event_addr, 4, "0000"); hci_send_cmd(&hci_pin_code_request_reply, &event_addr, 4, "0000");
break; break;

View File

@ -86,7 +86,7 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack
break; break;
case L2CAP_EVENT_CHANNEL_OPENED: case L2CAP_EVENT_CHANNEL_OPENED:
// inform about new l2cap connection // inform about new l2cap connection
bt_flip_addr(event_addr, &packet[3]); reverse_bd_addr(&packet[3], event_addr);
psm = little_endian_read_16(packet, 11); psm = little_endian_read_16(packet, 11);
local_cid = little_endian_read_16(packet, 13); local_cid = little_endian_read_16(packet, 13);
handle = little_endian_read_16(packet, 9); handle = little_endian_read_16(packet, 9);

View File

@ -10,3 +10,14 @@ expression handle;
- hci_remote_eSCO_supported(handle) - hci_remote_eSCO_supported(handle)
+ hci_remote_esco_supported(handle) + hci_remote_esco_supported(handle)
@@
expression event, cmd;
@@
- COMMAND_COMPLETE_EVENT(event,cmd)
+ HCI_EVENT_IS_COMMAND_COMPLETE(event,cmd)
@@
expression event, cmd;
@@
- COMMAND_STATUS_EVENT(event,cmd)
+ HCI_EVENT_IS_COMMAND_STATUS(event,cmd)