Loading system/stack/btm/btm_ble_batchscan.cc +2 −0 Original line number Diff line number Diff line Loading @@ -63,6 +63,7 @@ void btm_ble_batchscan_filter_track_adv_vse_cback(uint8_t len, uint8_t* p) { uint8_t sub_event = 0; tBTM_BLE_VSC_CB cmn_ble_vsc_cb; if (len == 0) return; STREAM_TO_UINT8(sub_event, p); BTM_TRACE_EVENT( Loading Loading @@ -90,6 +91,7 @@ void btm_ble_batchscan_filter_track_adv_vse_cback(uint8_t len, uint8_t* p) { /* Extract the adv info details */ if (ADV_INFO_PRESENT == adv_data.advertiser_info_present) { if (len < 15) return; STREAM_TO_UINT8(adv_data.tx_power, p); STREAM_TO_UINT8(adv_data.rssi_value, p); STREAM_TO_UINT16(adv_data.time_stamp, p); Loading system/stack/btm/btm_inq.cc +26 −5 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ * ******************************************************************************/ #include <log/log.h> #include <stddef.h> #include <stdio.h> #include <stdlib.h> Loading Loading @@ -1506,7 +1507,8 @@ static void btm_initiate_inquiry(tBTM_INQUIRY_VAR_ST* p_inq) { * Returns void * ******************************************************************************/ void btm_process_inq_results(uint8_t* p, uint8_t inq_res_mode) { void btm_process_inq_results(uint8_t* p, uint8_t hci_evt_len, uint8_t inq_res_mode) { uint8_t num_resp, xx; RawAddress bda; tINQ_DB_ENT* p_i; Loading Loading @@ -1535,12 +1537,31 @@ void btm_process_inq_results(uint8_t* p, uint8_t inq_res_mode) { STREAM_TO_UINT8(num_resp, p); if (inq_res_mode == BTM_INQ_RESULT_EXTENDED && (num_resp > 1)) { if (inq_res_mode == BTM_INQ_RESULT_EXTENDED) { if (num_resp > 1) { BTM_TRACE_ERROR("btm_process_inq_results() extended results (%d) > 1", num_resp); return; } constexpr uint16_t extended_inquiry_result_size = 254; if (hci_evt_len - 1 != extended_inquiry_result_size) { android_errorWriteLog(0x534e4554, "141620271"); BTM_TRACE_ERROR("%s: can't fit %d results in %d bytes", __func__, num_resp, hci_evt_len); return; } } else if (inq_res_mode == BTM_INQ_RESULT_STANDARD || inq_res_mode == BTM_INQ_RESULT_WITH_RSSI) { constexpr uint16_t inquiry_result_size = 14; if (hci_evt_len < num_resp * inquiry_result_size) { android_errorWriteLog(0x534e4554, "141620271"); BTM_TRACE_ERROR("%s: can't fit %d results in %d bytes", __func__, num_resp, hci_evt_len); return; } } for (xx = 0; xx < num_resp; xx++) { update = false; /* Extract inquiry results */ Loading system/stack/btm/btm_int.h +2 −1 Original line number Diff line number Diff line Loading @@ -65,7 +65,8 @@ extern void btm_inq_remote_name_timer_timeout(void* data); /* Inquiry related functions */ extern void btm_clr_inq_db(const RawAddress* p_bda); extern void btm_inq_db_init(void); extern void btm_process_inq_results(uint8_t* p, uint8_t inq_res_mode); extern void btm_process_inq_results(uint8_t* p, uint8_t hci_evt_len, uint8_t inq_res_mode); extern void btm_process_inq_complete(uint8_t status, uint8_t mode); extern void btm_process_cancel_complete(uint8_t status, uint8_t mode); extern void btm_event_filter_complete(uint8_t* p); Loading system/stack/btu/btu_hcif.cc +27 −19 Original line number Diff line number Diff line Loading @@ -65,11 +65,12 @@ extern void smp_cancel_start_encryption_attempt(); /* L O C A L F U N C T I O N P R O T O T Y P E S */ /******************************************************************************/ static void btu_hcif_inquiry_comp_evt(uint8_t* p); static void btu_hcif_inquiry_result_evt(uint8_t* p); static void btu_hcif_inquiry_rssi_result_evt(uint8_t* p); static void btu_hcif_extended_inquiry_result_evt(uint8_t* p); static void btu_hcif_inquiry_result_evt(uint8_t* p, uint8_t hci_evt_len); static void btu_hcif_inquiry_rssi_result_evt(uint8_t* p, uint8_t hci_evt_len); static void btu_hcif_extended_inquiry_result_evt(uint8_t* p, uint8_t hci_evt_len); static void btu_hcif_connection_comp_evt(uint8_t* p); static void btu_hcif_connection_comp_evt(uint8_t* p, uint8_t evt_len); static void btu_hcif_connection_request_evt(uint8_t* p); static void btu_hcif_disconnection_comp_evt(uint8_t* p); static void btu_hcif_authentication_comp_evt(uint8_t* p); Loading @@ -86,7 +87,7 @@ static void btu_hcif_command_status_evt(uint8_t status, BT_HDR* command, static void btu_hcif_hardware_error_evt(uint8_t* p); static void btu_hcif_flush_occured_evt(void); static void btu_hcif_role_change_evt(uint8_t* p); static void btu_hcif_num_compl_data_pkts_evt(uint8_t* p); static void btu_hcif_num_compl_data_pkts_evt(uint8_t* p, uint8_t evt_len); static void btu_hcif_mode_change_evt(uint8_t* p); static void btu_hcif_pin_code_request_evt(uint8_t* p); static void btu_hcif_link_key_request_evt(uint8_t* p); Loading Loading @@ -264,16 +265,16 @@ void btu_hcif_process_event(UNUSED_ATTR uint8_t controller_id, BT_HDR* p_msg) { btu_hcif_inquiry_comp_evt(p); break; case HCI_INQUIRY_RESULT_EVT: btu_hcif_inquiry_result_evt(p); btu_hcif_inquiry_result_evt(p, hci_evt_len); break; case HCI_INQUIRY_RSSI_RESULT_EVT: btu_hcif_inquiry_rssi_result_evt(p); btu_hcif_inquiry_rssi_result_evt(p, hci_evt_len); break; case HCI_EXTENDED_INQUIRY_RESULT_EVT: btu_hcif_extended_inquiry_result_evt(p); btu_hcif_extended_inquiry_result_evt(p, hci_evt_len); break; case HCI_CONNECTION_COMP_EVT: btu_hcif_connection_comp_evt(p); btu_hcif_connection_comp_evt(p, hci_evt_len); break; case HCI_CONNECTION_REQUEST_EVT: btu_hcif_connection_request_evt(p); Loading Loading @@ -327,7 +328,7 @@ void btu_hcif_process_event(UNUSED_ATTR uint8_t controller_id, BT_HDR* p_msg) { btu_hcif_role_change_evt(p); break; case HCI_NUM_COMPL_DATA_PKTS_EVT: btu_hcif_num_compl_data_pkts_evt(p); btu_hcif_num_compl_data_pkts_evt(p, hci_evt_len); break; case HCI_MODE_CHANGE_EVT: btu_hcif_mode_change_evt(p); Loading Loading @@ -949,9 +950,9 @@ static void btu_hcif_inquiry_comp_evt(uint8_t* p) { * Returns void * ******************************************************************************/ static void btu_hcif_inquiry_result_evt(uint8_t* p) { static void btu_hcif_inquiry_result_evt(uint8_t* p, uint8_t hci_evt_len) { /* Store results in the cache */ btm_process_inq_results(p, BTM_INQ_RESULT_STANDARD); btm_process_inq_results(p, hci_evt_len, BTM_INQ_RESULT_STANDARD); } /******************************************************************************* Loading @@ -963,9 +964,9 @@ static void btu_hcif_inquiry_result_evt(uint8_t* p) { * Returns void * ******************************************************************************/ static void btu_hcif_inquiry_rssi_result_evt(uint8_t* p) { static void btu_hcif_inquiry_rssi_result_evt(uint8_t* p, uint8_t hci_evt_len) { /* Store results in the cache */ btm_process_inq_results(p, BTM_INQ_RESULT_WITH_RSSI); btm_process_inq_results(p, hci_evt_len, BTM_INQ_RESULT_WITH_RSSI); } /******************************************************************************* Loading @@ -977,9 +978,10 @@ static void btu_hcif_inquiry_rssi_result_evt(uint8_t* p) { * Returns void * ******************************************************************************/ static void btu_hcif_extended_inquiry_result_evt(uint8_t* p) { static void btu_hcif_extended_inquiry_result_evt(uint8_t* p, uint8_t hci_evt_len) { /* Store results in the cache */ btm_process_inq_results(p, BTM_INQ_RESULT_EXTENDED); btm_process_inq_results(p, hci_evt_len, BTM_INQ_RESULT_EXTENDED); } /******************************************************************************* Loading @@ -991,7 +993,7 @@ static void btu_hcif_extended_inquiry_result_evt(uint8_t* p) { * Returns void * ******************************************************************************/ static void btu_hcif_connection_comp_evt(uint8_t* p) { static void btu_hcif_connection_comp_evt(uint8_t* p, uint8_t evt_len) { uint8_t status; uint16_t handle; RawAddress bda; Loading @@ -999,6 +1001,12 @@ static void btu_hcif_connection_comp_evt(uint8_t* p) { uint8_t enc_mode; tBTM_ESCO_DATA esco_data; if (evt_len < 11) { android_errorWriteLog(0x534e4554, "141619686"); HCI_TRACE_WARNING("%s: malformed event of size %hhd", __func__, evt_len); return; } STREAM_TO_UINT8(status, p); STREAM_TO_UINT16(handle, p); STREAM_TO_BDADDR(bda, p); Loading Loading @@ -1706,9 +1714,9 @@ static void btu_hcif_role_change_evt(uint8_t* p) { * Returns void * ******************************************************************************/ static void btu_hcif_num_compl_data_pkts_evt(uint8_t* p) { static void btu_hcif_num_compl_data_pkts_evt(uint8_t* p, uint8_t evt_len) { /* Process for L2CAP and SCO */ l2c_link_process_num_completed_pkts(p); l2c_link_process_num_completed_pkts(p, evt_len); /* Send on to SCO */ /*?? No SCO for now */ Loading system/stack/l2cap/l2c_int.h +1 −1 Original line number Diff line number Diff line Loading @@ -713,7 +713,7 @@ extern void l2c_info_resp_timer_timeout(void* data); extern void l2c_link_check_send_pkts(tL2C_LCB* p_lcb, tL2C_CCB* p_ccb, BT_HDR* p_buf); extern void l2c_link_adjust_allocation(void); extern void l2c_link_process_num_completed_pkts(uint8_t* p); extern void l2c_link_process_num_completed_pkts(uint8_t* p, uint8_t evt_len); extern void l2c_link_process_num_completed_blocks(uint8_t controller_id, uint8_t* p, uint16_t evt_len); extern void l2c_link_processs_num_bufs(uint16_t num_lm_acl_bufs); Loading Loading
system/stack/btm/btm_ble_batchscan.cc +2 −0 Original line number Diff line number Diff line Loading @@ -63,6 +63,7 @@ void btm_ble_batchscan_filter_track_adv_vse_cback(uint8_t len, uint8_t* p) { uint8_t sub_event = 0; tBTM_BLE_VSC_CB cmn_ble_vsc_cb; if (len == 0) return; STREAM_TO_UINT8(sub_event, p); BTM_TRACE_EVENT( Loading Loading @@ -90,6 +91,7 @@ void btm_ble_batchscan_filter_track_adv_vse_cback(uint8_t len, uint8_t* p) { /* Extract the adv info details */ if (ADV_INFO_PRESENT == adv_data.advertiser_info_present) { if (len < 15) return; STREAM_TO_UINT8(adv_data.tx_power, p); STREAM_TO_UINT8(adv_data.rssi_value, p); STREAM_TO_UINT16(adv_data.time_stamp, p); Loading
system/stack/btm/btm_inq.cc +26 −5 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ * ******************************************************************************/ #include <log/log.h> #include <stddef.h> #include <stdio.h> #include <stdlib.h> Loading Loading @@ -1506,7 +1507,8 @@ static void btm_initiate_inquiry(tBTM_INQUIRY_VAR_ST* p_inq) { * Returns void * ******************************************************************************/ void btm_process_inq_results(uint8_t* p, uint8_t inq_res_mode) { void btm_process_inq_results(uint8_t* p, uint8_t hci_evt_len, uint8_t inq_res_mode) { uint8_t num_resp, xx; RawAddress bda; tINQ_DB_ENT* p_i; Loading Loading @@ -1535,12 +1537,31 @@ void btm_process_inq_results(uint8_t* p, uint8_t inq_res_mode) { STREAM_TO_UINT8(num_resp, p); if (inq_res_mode == BTM_INQ_RESULT_EXTENDED && (num_resp > 1)) { if (inq_res_mode == BTM_INQ_RESULT_EXTENDED) { if (num_resp > 1) { BTM_TRACE_ERROR("btm_process_inq_results() extended results (%d) > 1", num_resp); return; } constexpr uint16_t extended_inquiry_result_size = 254; if (hci_evt_len - 1 != extended_inquiry_result_size) { android_errorWriteLog(0x534e4554, "141620271"); BTM_TRACE_ERROR("%s: can't fit %d results in %d bytes", __func__, num_resp, hci_evt_len); return; } } else if (inq_res_mode == BTM_INQ_RESULT_STANDARD || inq_res_mode == BTM_INQ_RESULT_WITH_RSSI) { constexpr uint16_t inquiry_result_size = 14; if (hci_evt_len < num_resp * inquiry_result_size) { android_errorWriteLog(0x534e4554, "141620271"); BTM_TRACE_ERROR("%s: can't fit %d results in %d bytes", __func__, num_resp, hci_evt_len); return; } } for (xx = 0; xx < num_resp; xx++) { update = false; /* Extract inquiry results */ Loading
system/stack/btm/btm_int.h +2 −1 Original line number Diff line number Diff line Loading @@ -65,7 +65,8 @@ extern void btm_inq_remote_name_timer_timeout(void* data); /* Inquiry related functions */ extern void btm_clr_inq_db(const RawAddress* p_bda); extern void btm_inq_db_init(void); extern void btm_process_inq_results(uint8_t* p, uint8_t inq_res_mode); extern void btm_process_inq_results(uint8_t* p, uint8_t hci_evt_len, uint8_t inq_res_mode); extern void btm_process_inq_complete(uint8_t status, uint8_t mode); extern void btm_process_cancel_complete(uint8_t status, uint8_t mode); extern void btm_event_filter_complete(uint8_t* p); Loading
system/stack/btu/btu_hcif.cc +27 −19 Original line number Diff line number Diff line Loading @@ -65,11 +65,12 @@ extern void smp_cancel_start_encryption_attempt(); /* L O C A L F U N C T I O N P R O T O T Y P E S */ /******************************************************************************/ static void btu_hcif_inquiry_comp_evt(uint8_t* p); static void btu_hcif_inquiry_result_evt(uint8_t* p); static void btu_hcif_inquiry_rssi_result_evt(uint8_t* p); static void btu_hcif_extended_inquiry_result_evt(uint8_t* p); static void btu_hcif_inquiry_result_evt(uint8_t* p, uint8_t hci_evt_len); static void btu_hcif_inquiry_rssi_result_evt(uint8_t* p, uint8_t hci_evt_len); static void btu_hcif_extended_inquiry_result_evt(uint8_t* p, uint8_t hci_evt_len); static void btu_hcif_connection_comp_evt(uint8_t* p); static void btu_hcif_connection_comp_evt(uint8_t* p, uint8_t evt_len); static void btu_hcif_connection_request_evt(uint8_t* p); static void btu_hcif_disconnection_comp_evt(uint8_t* p); static void btu_hcif_authentication_comp_evt(uint8_t* p); Loading @@ -86,7 +87,7 @@ static void btu_hcif_command_status_evt(uint8_t status, BT_HDR* command, static void btu_hcif_hardware_error_evt(uint8_t* p); static void btu_hcif_flush_occured_evt(void); static void btu_hcif_role_change_evt(uint8_t* p); static void btu_hcif_num_compl_data_pkts_evt(uint8_t* p); static void btu_hcif_num_compl_data_pkts_evt(uint8_t* p, uint8_t evt_len); static void btu_hcif_mode_change_evt(uint8_t* p); static void btu_hcif_pin_code_request_evt(uint8_t* p); static void btu_hcif_link_key_request_evt(uint8_t* p); Loading Loading @@ -264,16 +265,16 @@ void btu_hcif_process_event(UNUSED_ATTR uint8_t controller_id, BT_HDR* p_msg) { btu_hcif_inquiry_comp_evt(p); break; case HCI_INQUIRY_RESULT_EVT: btu_hcif_inquiry_result_evt(p); btu_hcif_inquiry_result_evt(p, hci_evt_len); break; case HCI_INQUIRY_RSSI_RESULT_EVT: btu_hcif_inquiry_rssi_result_evt(p); btu_hcif_inquiry_rssi_result_evt(p, hci_evt_len); break; case HCI_EXTENDED_INQUIRY_RESULT_EVT: btu_hcif_extended_inquiry_result_evt(p); btu_hcif_extended_inquiry_result_evt(p, hci_evt_len); break; case HCI_CONNECTION_COMP_EVT: btu_hcif_connection_comp_evt(p); btu_hcif_connection_comp_evt(p, hci_evt_len); break; case HCI_CONNECTION_REQUEST_EVT: btu_hcif_connection_request_evt(p); Loading Loading @@ -327,7 +328,7 @@ void btu_hcif_process_event(UNUSED_ATTR uint8_t controller_id, BT_HDR* p_msg) { btu_hcif_role_change_evt(p); break; case HCI_NUM_COMPL_DATA_PKTS_EVT: btu_hcif_num_compl_data_pkts_evt(p); btu_hcif_num_compl_data_pkts_evt(p, hci_evt_len); break; case HCI_MODE_CHANGE_EVT: btu_hcif_mode_change_evt(p); Loading Loading @@ -949,9 +950,9 @@ static void btu_hcif_inquiry_comp_evt(uint8_t* p) { * Returns void * ******************************************************************************/ static void btu_hcif_inquiry_result_evt(uint8_t* p) { static void btu_hcif_inquiry_result_evt(uint8_t* p, uint8_t hci_evt_len) { /* Store results in the cache */ btm_process_inq_results(p, BTM_INQ_RESULT_STANDARD); btm_process_inq_results(p, hci_evt_len, BTM_INQ_RESULT_STANDARD); } /******************************************************************************* Loading @@ -963,9 +964,9 @@ static void btu_hcif_inquiry_result_evt(uint8_t* p) { * Returns void * ******************************************************************************/ static void btu_hcif_inquiry_rssi_result_evt(uint8_t* p) { static void btu_hcif_inquiry_rssi_result_evt(uint8_t* p, uint8_t hci_evt_len) { /* Store results in the cache */ btm_process_inq_results(p, BTM_INQ_RESULT_WITH_RSSI); btm_process_inq_results(p, hci_evt_len, BTM_INQ_RESULT_WITH_RSSI); } /******************************************************************************* Loading @@ -977,9 +978,10 @@ static void btu_hcif_inquiry_rssi_result_evt(uint8_t* p) { * Returns void * ******************************************************************************/ static void btu_hcif_extended_inquiry_result_evt(uint8_t* p) { static void btu_hcif_extended_inquiry_result_evt(uint8_t* p, uint8_t hci_evt_len) { /* Store results in the cache */ btm_process_inq_results(p, BTM_INQ_RESULT_EXTENDED); btm_process_inq_results(p, hci_evt_len, BTM_INQ_RESULT_EXTENDED); } /******************************************************************************* Loading @@ -991,7 +993,7 @@ static void btu_hcif_extended_inquiry_result_evt(uint8_t* p) { * Returns void * ******************************************************************************/ static void btu_hcif_connection_comp_evt(uint8_t* p) { static void btu_hcif_connection_comp_evt(uint8_t* p, uint8_t evt_len) { uint8_t status; uint16_t handle; RawAddress bda; Loading @@ -999,6 +1001,12 @@ static void btu_hcif_connection_comp_evt(uint8_t* p) { uint8_t enc_mode; tBTM_ESCO_DATA esco_data; if (evt_len < 11) { android_errorWriteLog(0x534e4554, "141619686"); HCI_TRACE_WARNING("%s: malformed event of size %hhd", __func__, evt_len); return; } STREAM_TO_UINT8(status, p); STREAM_TO_UINT16(handle, p); STREAM_TO_BDADDR(bda, p); Loading Loading @@ -1706,9 +1714,9 @@ static void btu_hcif_role_change_evt(uint8_t* p) { * Returns void * ******************************************************************************/ static void btu_hcif_num_compl_data_pkts_evt(uint8_t* p) { static void btu_hcif_num_compl_data_pkts_evt(uint8_t* p, uint8_t evt_len) { /* Process for L2CAP and SCO */ l2c_link_process_num_completed_pkts(p); l2c_link_process_num_completed_pkts(p, evt_len); /* Send on to SCO */ /*?? No SCO for now */ Loading
system/stack/l2cap/l2c_int.h +1 −1 Original line number Diff line number Diff line Loading @@ -713,7 +713,7 @@ extern void l2c_info_resp_timer_timeout(void* data); extern void l2c_link_check_send_pkts(tL2C_LCB* p_lcb, tL2C_CCB* p_ccb, BT_HDR* p_buf); extern void l2c_link_adjust_allocation(void); extern void l2c_link_process_num_completed_pkts(uint8_t* p); extern void l2c_link_process_num_completed_pkts(uint8_t* p, uint8_t evt_len); extern void l2c_link_process_num_completed_blocks(uint8_t controller_id, uint8_t* p, uint16_t evt_len); extern void l2c_link_processs_num_bufs(uint16_t num_lm_acl_bufs); Loading