diff --git a/components/bt/bluedroid/api/esp_app_sec.c b/components/bt/bluedroid/api/esp_app_sec.c index 60d48bf046..e1ec079b4a 100644 --- a/components/bt/bluedroid/api/esp_app_sec.c +++ b/components/bt/bluedroid/api/esp_app_sec.c @@ -29,7 +29,7 @@ tAPP_SEC_ENV app_sec_env; ** ** Function app_ble_sec_gen_tk ** -** Description This function is called to generate the ble tk +** Description This function is called to generate the ble tk ** ** Returns the generate tk value ** @@ -37,14 +37,14 @@ tAPP_SEC_ENV app_sec_env; UINT32 app_ble_sec_gen_tk(void) { // Generate a PIN Code (Between 100000 and 999999) - return (100000 + (random()%900000)); + return (100000 + (random() % 900000)); } /******************************************************************************* ** ** Function app_ble_sec_gen_ltk ** -** Description This function is called to generate the ble ltk +** Description This function is called to generate the ble ltk ** ** Returns NULL ** @@ -56,19 +56,17 @@ void app_ble_sec_gen_ltk(UINT8 key_size) app_sec_env.key_size = key_size; // Randomly generate the LTK and the Random Number - for (i = 0; i < RAND_NB_LEN; i++) - { - app_sec_env.rand_nb.nb[i] = random()%256; + for (i = 0; i < RAND_NB_LEN; i++) { + app_sec_env.rand_nb.nb[i] = random() % 256; } // Randomly generate the end of the LTK - for (i = 0; i < SEC_KEY_LEN; i++) - { - app_sec_env.ltk.key[i] = (((key_size) < (16 - i)) ? 0 : random()%256); + for (i = 0; i < SEC_KEY_LEN; i++) { + app_sec_env.ltk.key[i] = (((key_size) < (16 - i)) ? 0 : random() % 256); } // Randomly generate the EDIV - app_sec_env.ediv = random()%65536; + app_sec_env.ediv = random() % 65536; } @@ -92,14 +90,14 @@ void app_ble_sec_init() ** ** Function app_ble_security_start ** -** Description This function is called by the slave when the seurity start +** Description This function is called by the slave when the seurity start ** ** Returns NULL ** *******************************************************************************/ void app_ble_security_start(void) { - + } diff --git a/components/bt/bluedroid/api/esp_blufi_api.c b/components/bt/bluedroid/api/esp_blufi_api.c index e00ab290aa..a74c9d04b5 100644 --- a/components/bt/bluedroid/api/esp_blufi_api.c +++ b/components/bt/bluedroid/api/esp_blufi_api.c @@ -24,43 +24,43 @@ esp_err_t esp_blufi_register_callback(esp_profile_cb_t callback) { - return (btc_profile_cb_set(BTC_PID_BLUFI, callback) == 0 ? ESP_OK : ESP_FAIL); + return (btc_profile_cb_set(BTC_PID_BLUFI, callback) == 0 ? ESP_OK : ESP_FAIL); } esp_err_t esp_blufi_send_config_state(esp_blufi_config_state_t state) { - btc_msg_t msg; - btc_blufi_args_t arg; + btc_msg_t msg; + btc_blufi_args_t arg; - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_BLUFI; - msg.act = BTC_BLUFI_ACT_SEND_CFG_STATE; - arg.cfg_state.state = state; + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_BLUFI; + msg.act = BTC_BLUFI_ACT_SEND_CFG_STATE; + arg.cfg_state.state = state; - return (btc_transfer_context(&msg, &arg, sizeof(btc_blufi_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); + return (btc_transfer_context(&msg, &arg, sizeof(btc_blufi_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } esp_err_t esp_blufi_profile_init(void) { - btc_msg_t msg; + btc_msg_t msg; - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_BLUFI; - msg.act = BTC_BLUFI_ACT_INIT; + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_BLUFI; + msg.act = BTC_BLUFI_ACT_INIT; - return (btc_transfer_context(&msg, NULL, 0, NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); + return (btc_transfer_context(&msg, NULL, 0, NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } esp_err_t esp_blufi_profile_deinit(void) { - btc_msg_t msg; + btc_msg_t msg; - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_BLUFI; - msg.act = BTC_BLUFI_ACT_DEINIT; + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_BLUFI; + msg.act = BTC_BLUFI_ACT_DEINIT; - return (btc_transfer_context(&msg, NULL, 0, NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); + return (btc_transfer_context(&msg, NULL, 0, NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } diff --git a/components/bt/bluedroid/api/esp_bt_main.c b/components/bt/bluedroid/api/esp_bt_main.c index d7096bd0f0..f185999287 100644 --- a/components/bt/bluedroid/api/esp_bt_main.c +++ b/components/bt/bluedroid/api/esp_bt_main.c @@ -23,135 +23,135 @@ static bool esp_already_init = false; esp_err_t esp_enable_bluetooth(void) { - btc_msg_t msg; - future_t **future_p; + btc_msg_t msg; + future_t **future_p; - if (esp_already_enable) { - LOG_ERROR("%s already enable\n", __func__); - return ESP_ERR_INVALID_STATE; - } + if (esp_already_enable) { + LOG_ERROR("%s already enable\n", __func__); + return ESP_ERR_INVALID_STATE; + } - future_p = btc_main_get_future_p(BTC_MAIN_ENABLE_FUTURE); - *future_p = future_new(); - if (*future_p == NULL) { - LOG_ERROR("%s failed\n", __func__); - return ESP_ERR_NO_MEM; - } + future_p = btc_main_get_future_p(BTC_MAIN_ENABLE_FUTURE); + *future_p = future_new(); + if (*future_p == NULL) { + LOG_ERROR("%s failed\n", __func__); + return ESP_ERR_NO_MEM; + } - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_MAIN_INIT; - msg.act = BTC_MAIN_ACT_ENABLE; - btc_transfer_context(&msg, NULL, 0, NULL); + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_MAIN_INIT; + msg.act = BTC_MAIN_ACT_ENABLE; + btc_transfer_context(&msg, NULL, 0, NULL); - if (future_await(*future_p) == FUTURE_FAIL) { - LOG_ERROR("%s failed\n", __func__); - return ESP_FAIL; - } + if (future_await(*future_p) == FUTURE_FAIL) { + LOG_ERROR("%s failed\n", __func__); + return ESP_FAIL; + } - esp_already_enable = true; + esp_already_enable = true; - return ESP_OK; + return ESP_OK; } esp_err_t esp_disable_bluetooth(void) { - btc_msg_t msg; - future_t **future_p; + btc_msg_t msg; + future_t **future_p; - if (!esp_already_enable) { - LOG_ERROR("%s already disable\n", __func__); - return ESP_ERR_INVALID_STATE; - } + if (!esp_already_enable) { + LOG_ERROR("%s already disable\n", __func__); + return ESP_ERR_INVALID_STATE; + } - future_p = btc_main_get_future_p(BTC_MAIN_DISABLE_FUTURE); - *future_p = future_new(); - if (*future_p == NULL) { - LOG_ERROR("%s failed\n", __func__); - return ESP_ERR_NO_MEM; - } + future_p = btc_main_get_future_p(BTC_MAIN_DISABLE_FUTURE); + *future_p = future_new(); + if (*future_p == NULL) { + LOG_ERROR("%s failed\n", __func__); + return ESP_ERR_NO_MEM; + } - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_MAIN_INIT; - msg.act = BTC_MAIN_ACT_DISABLE; - btc_transfer_context(&msg, NULL, 0, NULL); + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_MAIN_INIT; + msg.act = BTC_MAIN_ACT_DISABLE; + btc_transfer_context(&msg, NULL, 0, NULL); - if (future_await(*future_p) == FUTURE_FAIL) { - LOG_ERROR("%s failed\n", __func__); - return ESP_FAIL; - } + if (future_await(*future_p) == FUTURE_FAIL) { + LOG_ERROR("%s failed\n", __func__); + return ESP_FAIL; + } - esp_already_enable = false; + esp_already_enable = false; - return ESP_OK; + return ESP_OK; } esp_err_t esp_init_bluetooth(void) { - btc_msg_t msg; - future_t **future_p; + btc_msg_t msg; + future_t **future_p; - if (esp_already_init) { - LOG_ERROR("%s already init\n", __func__); - return ESP_ERR_INVALID_STATE; - } + if (esp_already_init) { + LOG_ERROR("%s already init\n", __func__); + return ESP_ERR_INVALID_STATE; + } - future_p = btc_main_get_future_p(BTC_MAIN_INIT_FUTURE); - *future_p = future_new(); - if (*future_p == NULL) { - LOG_ERROR("%s failed\n", __func__); - return ESP_ERR_NO_MEM; - } + future_p = btc_main_get_future_p(BTC_MAIN_INIT_FUTURE); + *future_p = future_new(); + if (*future_p == NULL) { + LOG_ERROR("%s failed\n", __func__); + return ESP_ERR_NO_MEM; + } - btc_init(); + btc_init(); - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_MAIN_INIT; - msg.act = BTC_MAIN_ACT_INIT; - btc_transfer_context(&msg, NULL, 0, NULL); + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_MAIN_INIT; + msg.act = BTC_MAIN_ACT_INIT; + btc_transfer_context(&msg, NULL, 0, NULL); - if (future_await(*future_p) == FUTURE_FAIL) { - LOG_ERROR("%s failed\n", __func__); - return ESP_FAIL; - } + if (future_await(*future_p) == FUTURE_FAIL) { + LOG_ERROR("%s failed\n", __func__); + return ESP_FAIL; + } - esp_already_init = true;; + esp_already_init = true;; - return ESP_OK; + return ESP_OK; } esp_err_t esp_deinit_bluetooth(void) { - btc_msg_t msg; - future_t **future_p; + btc_msg_t msg; + future_t **future_p; - if (!esp_already_init) { - LOG_ERROR("%s already deinit\n", __func__); - return ESP_ERR_INVALID_STATE; - } + if (!esp_already_init) { + LOG_ERROR("%s already deinit\n", __func__); + return ESP_ERR_INVALID_STATE; + } - future_p = btc_main_get_future_p(BTC_MAIN_DEINIT_FUTURE); - *future_p = future_new(); - if (*future_p == NULL) { - LOG_ERROR("%s failed\n", __func__); - return ESP_ERR_NO_MEM; - } + future_p = btc_main_get_future_p(BTC_MAIN_DEINIT_FUTURE); + *future_p = future_new(); + if (*future_p == NULL) { + LOG_ERROR("%s failed\n", __func__); + return ESP_ERR_NO_MEM; + } - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_MAIN_INIT; - msg.act = BTC_MAIN_ACT_DEINIT; - btc_transfer_context(&msg, NULL, 0, NULL); + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_MAIN_INIT; + msg.act = BTC_MAIN_ACT_DEINIT; + btc_transfer_context(&msg, NULL, 0, NULL); - if (future_await(*future_p) == FUTURE_FAIL) { - LOG_ERROR("%s failed\n", __func__); - return ESP_FAIL; - } + if (future_await(*future_p) == FUTURE_FAIL) { + LOG_ERROR("%s failed\n", __func__); + return ESP_FAIL; + } - btc_deinit(); + btc_deinit(); - esp_already_init = false; + esp_already_init = false; - return ESP_OK; + return ESP_OK; } diff --git a/components/bt/bluedroid/api/esp_gap_ble_api.c b/components/bt/bluedroid/api/esp_gap_ble_api.c index e14cf78421..7f4950a9f2 100644 --- a/components/bt/bluedroid/api/esp_gap_ble_api.c +++ b/components/bt/bluedroid/api/esp_gap_ble_api.c @@ -23,170 +23,170 @@ esp_err_t esp_ble_gap_register_callback(esp_profile_cb_t callback) { - return (btc_profile_cb_set(BTC_PID_GAP_BLE, callback) == 0 ? ESP_OK : ESP_FAIL); + return (btc_profile_cb_set(BTC_PID_GAP_BLE, callback) == 0 ? ESP_OK : ESP_FAIL); } esp_err_t esp_ble_gap_config_adv_data(esp_ble_adv_data_t *adv_data) { - btc_msg_t msg; - btc_ble_gap_args_t arg; + btc_msg_t msg; + btc_ble_gap_args_t arg; - if (adv_data == NULL) { - return ESP_ERR_INVALID_ARG; - } + if (adv_data == NULL) { + return ESP_ERR_INVALID_ARG; + } - if (adv_data->service_uuid_len & 0xf) { //not 16*n - return ESP_ERR_INVALID_ARG; - } + if (adv_data->service_uuid_len & 0xf) { //not 16*n + return ESP_ERR_INVALID_ARG; + } - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_GAP_BLE; - msg.act = BTC_GAP_BLE_ACT_CFG_ADV_DATA; - memcpy(&arg.cfg_adv_data.adv_data, adv_data, sizeof(esp_ble_adv_data_t)); + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_GAP_BLE; + msg.act = BTC_GAP_BLE_ACT_CFG_ADV_DATA; + memcpy(&arg.cfg_adv_data.adv_data, adv_data, sizeof(esp_ble_adv_data_t)); - return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gap_args_t), btc_gap_ble_arg_deep_copy) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gap_args_t), btc_gap_ble_arg_deep_copy) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } esp_err_t esp_ble_gap_set_scan_params(esp_ble_scan_params_t *scan_params) { - btc_msg_t msg; - btc_ble_gap_args_t arg; + btc_msg_t msg; + btc_ble_gap_args_t arg; - if (scan_params == NULL) { - return ESP_ERR_INVALID_ARG; - } + if (scan_params == NULL) { + return ESP_ERR_INVALID_ARG; + } - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_GAP_BLE; - msg.act = BTC_GAP_BLE_ACT_SET_SCAN_PARAM; - memcpy(&arg.set_scan_param.scan_params, scan_params, sizeof(esp_ble_scan_params_t)); + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_GAP_BLE; + msg.act = BTC_GAP_BLE_ACT_SET_SCAN_PARAM; + memcpy(&arg.set_scan_param.scan_params, scan_params, sizeof(esp_ble_scan_params_t)); - return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gap_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gap_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } esp_err_t esp_ble_gap_start_scanning(uint32_t duration) { - btc_msg_t msg; - btc_ble_gap_args_t arg; + btc_msg_t msg; + btc_ble_gap_args_t arg; - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_GAP_BLE; - msg.act = BTC_GAP_BLE_ACT_START_SCAN; - arg.start_scan.duration = duration; + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_GAP_BLE; + msg.act = BTC_GAP_BLE_ACT_START_SCAN; + arg.start_scan.duration = duration; - return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gap_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gap_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } esp_err_t esp_ble_gap_stop_scanning(void) { - btc_msg_t msg; - btc_ble_gap_args_t arg; + btc_msg_t msg; + btc_ble_gap_args_t arg; - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_GAP_BLE; - msg.act = BTC_GAP_BLE_ACT_STOP_SCAN; - return (btc_transfer_context(&msg, NULL, 0, NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_GAP_BLE; + msg.act = BTC_GAP_BLE_ACT_STOP_SCAN; + return (btc_transfer_context(&msg, NULL, 0, NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } esp_err_t esp_ble_gap_start_advertising(esp_ble_adv_params_t *adv_params) { - btc_msg_t msg; - btc_ble_gap_args_t arg; + btc_msg_t msg; + btc_ble_gap_args_t arg; - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_GAP_BLE; - msg.act = BTC_GAP_BLE_ACT_START_ADV; - memcpy(&arg.start_adv.adv_params, adv_params, sizeof(esp_ble_adv_params_t)); + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_GAP_BLE; + msg.act = BTC_GAP_BLE_ACT_START_ADV; + memcpy(&arg.start_adv.adv_params, adv_params, sizeof(esp_ble_adv_params_t)); - return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gap_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gap_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } esp_err_t esp_ble_gap_stop_advertising(void) { - btc_msg_t msg; + btc_msg_t msg; - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_GAP_BLE; - msg.act = BTC_GAP_BLE_ACT_STOP_ADV; + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_GAP_BLE; + msg.act = BTC_GAP_BLE_ACT_STOP_ADV; - return (btc_transfer_context(&msg, NULL, 0, NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); + return (btc_transfer_context(&msg, NULL, 0, NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } esp_err_t esp_ble_gap_update_conn_params(esp_ble_conn_update_params_t *params) { - btc_msg_t msg; - btc_ble_gap_args_t arg; + btc_msg_t msg; + btc_ble_gap_args_t arg; - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_GAP_BLE; - msg.act = BTC_GAP_BLE_ACT_UPDATE_CONN_PARAM; - memcpy(&arg.conn_update_params.conn_params, params, sizeof(esp_ble_conn_update_params_t)); + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_GAP_BLE; + msg.act = BTC_GAP_BLE_ACT_UPDATE_CONN_PARAM; + memcpy(&arg.conn_update_params.conn_params, params, sizeof(esp_ble_conn_update_params_t)); - return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gap_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gap_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } esp_err_t esp_ble_gap_set_pkt_data_len(esp_bd_addr_t remote_device, uint16_t tx_data_length) { - btc_msg_t msg; - btc_ble_gap_args_t arg; + btc_msg_t msg; + btc_ble_gap_args_t arg; - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_GAP_BLE; - msg.act = BTC_GAP_BLE_ACT_SET_PKT_DATA_LEN; - arg.set_pkt_data_len.tx_data_length = tx_data_length; - memcpy(arg.set_pkt_data_len.remote_device, remote_device, ESP_BD_ADDR_LEN); + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_GAP_BLE; + msg.act = BTC_GAP_BLE_ACT_SET_PKT_DATA_LEN; + arg.set_pkt_data_len.tx_data_length = tx_data_length; + memcpy(arg.set_pkt_data_len.remote_device, remote_device, ESP_BD_ADDR_LEN); - return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gap_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gap_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } esp_err_t esp_ble_gap_set_rand_addr(esp_bd_addr_t rand_addr) { - btc_msg_t msg; - btc_ble_gap_args_t arg; + btc_msg_t msg; + btc_ble_gap_args_t arg; - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_GAP_BLE; - msg.act = BTC_GAP_BLE_ACT_SET_RAND_ADDRESS; - memcpy(arg.set_rand_addr.rand_addr, rand_addr, ESP_BD_ADDR_LEN); + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_GAP_BLE; + msg.act = BTC_GAP_BLE_ACT_SET_RAND_ADDRESS; + memcpy(arg.set_rand_addr.rand_addr, rand_addr, ESP_BD_ADDR_LEN); - return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gap_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gap_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } esp_err_t esp_ble_gap_config_local_privacy (bool privacy_enable) { - btc_msg_t msg; - btc_ble_gap_args_t arg; + btc_msg_t msg; + btc_ble_gap_args_t arg; - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_GAP_BLE; - msg.act = BTC_GAP_BLE_ACT_CONFIG_LOCAL_PRIVACY; - arg.cfg_local_privacy.privacy_enable = privacy_enable; + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_GAP_BLE; + msg.act = BTC_GAP_BLE_ACT_CONFIG_LOCAL_PRIVACY; + arg.cfg_local_privacy.privacy_enable = privacy_enable; - return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gap_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gap_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } esp_err_t esp_ble_gap_set_device_name(char *name) { - btc_msg_t msg; - btc_ble_gap_args_t arg; + btc_msg_t msg; + btc_ble_gap_args_t arg; - if (strlen(name) > ESP_GAP_DEVICE_NAME_MAX) { - return ESP_ERR_INVALID_ARG; - } + if (strlen(name) > ESP_GAP_DEVICE_NAME_MAX) { + return ESP_ERR_INVALID_ARG; + } - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_GAP_BLE; - msg.act = BTC_GAP_BLE_ACT_SET_DEV_NAME; - strcpy(arg.set_dev_name.device_name, name); + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_GAP_BLE; + msg.act = BTC_GAP_BLE_ACT_SET_DEV_NAME; + strcpy(arg.set_dev_name.device_name, name); - return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gap_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gap_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } @@ -197,27 +197,25 @@ esp_err_t esp_ble_gap_set_device_name(char *name) ** Description This function is called to get ADV data for a specific type. ** ** Parameters p_adv - pointer of ADV data -** type - finding ADV data type -** p_length - return the length of ADV data not including type +** type - finding ADV data type +** p_length - return the length of ADV data not including type ** -** Returns pointer of ADV data +** Returns pointer of ADV data ** *******************************************************************************/ uint8_t *esp_ble_resolve_adv_data( uint8_t *p_adv, uint8_t type, uint8_t *p_length) { if (((type < ESP_BLE_AD_TYPE_FLAG) || (type > ESP_BLE_AD_TYPE_128SERVICE_DATA)) && - (type != ESP_BLE_AD_MANUFACTURER_SPECIFIC_TYPE)) - { - LOG_ERROR("the eir type not define, type = %x\n", type); - return NULL; + (type != ESP_BLE_AD_MANUFACTURER_SPECIFIC_TYPE)) { + LOG_ERROR("the eir type not define, type = %x\n", type); + return NULL; } - if (p_adv == NULL) - { - LOG_ERROR("Invalid p_eir data.\n"); - return NULL; - } + if (p_adv == NULL) { + LOG_ERROR("Invalid p_eir data.\n"); + return NULL; + } - return (BTM_CheckAdvData( p_adv, type, p_length)); + return (BTM_CheckAdvData( p_adv, type, p_length)); } diff --git a/components/bt/bluedroid/api/esp_gattc_api.c b/components/bt/bluedroid/api/esp_gattc_api.c index d3b08a9944..c59e94ad92 100644 --- a/components/bt/bluedroid/api/esp_gattc_api.c +++ b/components/bt/bluedroid/api/esp_gattc_api.c @@ -22,7 +22,7 @@ ** ** @function esp_ble_gattc_app_register_callback ** -** @brief This function is called to register application callbacks +** @brief This function is called to register application callbacks ** with GATTC module. ** ** @param[in] callback - pointer to the application callback function. @@ -44,7 +44,7 @@ esp_err_t esp_ble_gattc_register_callback(esp_profile_cb_t callback) ** ** @function esp_ble_gattc_app_register ** -** @brief This function is called to register application +** @brief This function is called to register application ** with GATTC module. ** ** @param[in] app_id : Application Identitfy (UUID), for different application @@ -56,7 +56,7 @@ esp_err_t esp_ble_gattc_app_register(uint16_t app_id) { btc_msg_t msg; btc_ble_gattc_args_t arg; - + msg.sig = BTC_SIG_API_CALL; msg.pid = BTC_PID_GATTC; msg.act = BTC_GATTC_ACT_APP_REGISTER; @@ -69,7 +69,7 @@ esp_err_t esp_ble_gattc_app_register(uint16_t app_id) ** ** @function esp_ble_gattc_app_unregister ** -** @brief This function is called to unregister an application +** @brief This function is called to unregister an application ** from GATTC module. ** ** @param[in] client_if - client interface identifier. @@ -81,7 +81,7 @@ esp_err_t esp_ble_gattc_app_unregister(esp_gatt_if_t gatt_if) { btc_msg_t msg; btc_ble_gattc_args_t arg; - + msg.sig = BTC_SIG_API_CALL; msg.pid = BTC_PID_GATTC; msg.act = BTC_GATTC_ACT_APP_UNREGISTER; @@ -94,13 +94,13 @@ esp_err_t esp_ble_gattc_app_unregister(esp_gatt_if_t gatt_if) ** ** @function esp_ble_gattc_conn ** -** @brief Open a direct connection or add a background auto connection +** @brief Open a direct connection or add a background auto connection ** bd address ** ** @param[in] gatt_if: application identity. ** @param[in] remote_bda: remote device BD address. ** @param[in] is_direct: direct connection or background auto connection -** +** ** @return ESP_OK - success, other - failed ** *******************************************************************************/ @@ -108,14 +108,14 @@ esp_err_t esp_ble_gattc_open(esp_gatt_if_t gatt_if, esp_bd_addr_t remote_bda, bo { btc_msg_t msg; btc_ble_gattc_args_t arg; - + msg.sig = BTC_SIG_API_CALL; msg.pid = BTC_PID_GATTC; msg.act = BTC_GATTC_ACT_OPEN; arg.open.gatt_if = gatt_if; memcpy(arg.open.remote_bda, remote_bda, ESP_BD_ADDR_LEN); arg.open.is_direct = is_direct; - + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gattc_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } @@ -123,7 +123,7 @@ esp_err_t esp_ble_gattc_open(esp_gatt_if_t gatt_if, esp_bd_addr_t remote_bda, bo ** ** @function esp_ble_gattc_close ** -** @brief Close a connection to a GATT server. +** @brief Close a connection to a GATT server. ** ** @param[in] conn_id: connectino ID to be closed. ** @@ -134,12 +134,12 @@ esp_err_t esp_ble_gattc_close (uint16_t conn_id) { btc_msg_t msg; btc_ble_gattc_args_t arg; - + msg.sig = BTC_SIG_API_CALL; msg.pid = BTC_PID_GATTC; msg.act = BTC_GATTC_ACT_CLOSE; arg.close.conn_id = conn_id; - + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gattc_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } @@ -148,7 +148,7 @@ esp_err_t esp_ble_gattc_close (uint16_t conn_id) ** ** @function esp_ble_gattc_config_mtu ** -** @brief Configure the MTU size in the GATT channel. This can be done +** @brief Configure the MTU size in the GATT channel. This can be done ** only once per connection. ** ** @param[in] conn_id: connection ID. @@ -165,13 +165,13 @@ esp_err_t esp_ble_gattc_config_mtu (uint16_t conn_id, uint16_t mtu) if ((mtu < ESP_GATT_DEF_BLE_MTU_SIZE) || (mtu > ESP_GATT_MAX_MTU_SIZE)) { return ESP_GATT_ILLEGAL_PARAMETER; } - + msg.sig = BTC_SIG_API_CALL; msg.pid = BTC_PID_GATTC; msg.act = BTC_GATTC_ACT_CFG_MTU; arg.cfg_mtu.conn_id = conn_id; arg.cfg_mtu.mtu = mtu; - + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gattc_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } @@ -179,7 +179,7 @@ esp_err_t esp_ble_gattc_config_mtu (uint16_t conn_id, uint16_t mtu) ** ** @function esp_ble_gattc_search_service ** -** @brief This function is called to request a GATT service discovery +** @brief This function is called to request a GATT service discovery ** on a GATT server. This function report service search result ** by a callback event, and followed by a service search complete ** event. @@ -200,13 +200,13 @@ esp_err_t esp_ble_gattc_search_service(uint16_t conn_id, esp_bt_uuid_t *filter_u msg.pid = BTC_PID_GATTC; msg.act = BTC_GATTC_ACT_SEARCH_SERVICE; arg.search_srvc.conn_id = conn_id; - if (filter_uuid) { - arg.search_srvc.filter_uuid_enable = true; - memcpy(&arg.search_srvc.filter_uuid, filter_uuid, sizeof(esp_bt_uuid_t)); - } else { - arg.search_srvc.filter_uuid_enable = false; - } - + if (filter_uuid) { + arg.search_srvc.filter_uuid_enable = true; + memcpy(&arg.search_srvc.filter_uuid, filter_uuid, sizeof(esp_bt_uuid_t)); + } else { + arg.search_srvc.filter_uuid_enable = false; + } + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gattc_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } @@ -215,22 +215,22 @@ esp_err_t esp_ble_gattc_search_service(uint16_t conn_id, esp_bt_uuid_t *filter_u ** ** @function esp_ble_gattc_get_characteristic ** -** @brief This function is called to find the first characteristic of the +** @brief This function is called to find the first characteristic of the ** service on the given server. ** ** @param[in] conn_id: connection ID which identify the server. -** +** ** @param[in] srvc_id: serivce ID -** -** @param[in] start_char_id: the start characteristic ID +** +** @param[in] start_char_id: the start characteristic ID ** ** @return ESP_OK - success, other - failed ** *****************************************************************************************************/ esp_err_t esp_ble_gattc_get_characteristic(uint16_t conn_id, - esp_gatt_srvc_id_t *srvc_id, - esp_gatt_id_t *start_char_id) + esp_gatt_srvc_id_t *srvc_id, + esp_gatt_id_t *start_char_id) { btc_msg_t msg; btc_ble_gattc_args_t arg; @@ -238,16 +238,16 @@ esp_err_t esp_ble_gattc_get_characteristic(uint16_t conn_id, msg.sig = BTC_SIG_API_CALL; msg.pid = BTC_PID_GATTC; if (start_char_id) { - arg.get_next_char.conn_id = conn_id; - memcpy(&arg.get_next_char.service_id, srvc_id, sizeof(esp_gatt_srvc_id_t)); - memcpy(&arg.get_next_char.char_id, start_char_id, sizeof(esp_gatt_id_t)); - msg.act = BTC_GATTC_ACT_GET_NEXT_CHAR; - } else { - arg.get_first_char.conn_id = conn_id; - memcpy(&arg.get_first_char.service_id, srvc_id, sizeof(esp_gatt_srvc_id_t)); - msg.act = BTC_GATTC_ACT_GET_FIRST_CHAR; + arg.get_next_char.conn_id = conn_id; + memcpy(&arg.get_next_char.service_id, srvc_id, sizeof(esp_gatt_srvc_id_t)); + memcpy(&arg.get_next_char.char_id, start_char_id, sizeof(esp_gatt_id_t)); + msg.act = BTC_GATTC_ACT_GET_NEXT_CHAR; + } else { + arg.get_first_char.conn_id = conn_id; + memcpy(&arg.get_first_char.service_id, srvc_id, sizeof(esp_gatt_srvc_id_t)); + msg.act = BTC_GATTC_ACT_GET_FIRST_CHAR; } - + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gattc_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } @@ -256,7 +256,7 @@ esp_err_t esp_ble_gattc_get_characteristic(uint16_t conn_id, ** ** @function esp_ble_gattc_get_descriptor ** -** @brief This function is called to find the descriptor of the +** @brief This function is called to find the descriptor of the ** service on the given server. ** ** @param[in] conn_id: connection ID which identify the server. @@ -268,7 +268,7 @@ esp_err_t esp_ble_gattc_get_characteristic(uint16_t conn_id, ** @return ESP_OK - success, other - failed ** *****************************************************************************************************/ -esp_err_t esp_ble_gattc_get_descriptor(uint16_t conn_id, +esp_err_t esp_ble_gattc_get_descriptor(uint16_t conn_id, esp_gatt_srvc_id_t *srvc_id, esp_gatt_id_t *char_id, esp_gatt_id_t *start_descr_id) @@ -280,18 +280,18 @@ esp_err_t esp_ble_gattc_get_descriptor(uint16_t conn_id, msg.pid = BTC_PID_GATTC; if (start_descr_id) { - arg.get_next_descr.conn_id = conn_id; - memcpy(&arg.get_next_descr.service_id, srvc_id, sizeof(esp_gatt_srvc_id_t)); - memcpy(&arg.get_next_descr.char_id, char_id, sizeof(esp_gatt_id_t)); - memcpy(&arg.get_next_descr.descr_id, start_descr_id, sizeof(esp_gatt_id_t)); - msg.act = BTC_GATTC_ACT_GET_NEXT_DESCR; - } else { - arg.get_first_descr.conn_id = conn_id; - memcpy(&arg.get_first_descr.service_id, srvc_id, sizeof(esp_gatt_srvc_id_t)); - memcpy(&arg.get_first_descr.char_id, char_id, sizeof(esp_gatt_id_t)); - msg.act = BTC_GATTC_ACT_GET_FIRST_DESCR; - } - + arg.get_next_descr.conn_id = conn_id; + memcpy(&arg.get_next_descr.service_id, srvc_id, sizeof(esp_gatt_srvc_id_t)); + memcpy(&arg.get_next_descr.char_id, char_id, sizeof(esp_gatt_id_t)); + memcpy(&arg.get_next_descr.descr_id, start_descr_id, sizeof(esp_gatt_id_t)); + msg.act = BTC_GATTC_ACT_GET_NEXT_DESCR; + } else { + arg.get_first_descr.conn_id = conn_id; + memcpy(&arg.get_first_descr.service_id, srvc_id, sizeof(esp_gatt_srvc_id_t)); + memcpy(&arg.get_first_descr.char_id, char_id, sizeof(esp_gatt_id_t)); + msg.act = BTC_GATTC_ACT_GET_FIRST_DESCR; + } + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gattc_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } @@ -300,7 +300,7 @@ esp_err_t esp_ble_gattc_get_descriptor(uint16_t conn_id, ** ** @function esp_ble_gattc_get_include_service ** -** @brief This function is called to find the first characteristic of the +** @brief This function is called to find the first characteristic of the ** service on the given server. ** ** @param[in] conn_id: connection ID which identify the server. @@ -313,8 +313,8 @@ esp_err_t esp_ble_gattc_get_descriptor(uint16_t conn_id, esp_err_t esp_ble_gattc_get_included_service(uint16_t conn_id, - esp_gatt_srvc_id_t *srvc_id, - esp_gatt_srvc_id_t *start_incl_srvc_id) + esp_gatt_srvc_id_t *srvc_id, + esp_gatt_srvc_id_t *start_incl_srvc_id) { btc_msg_t msg; btc_ble_gattc_args_t arg; @@ -323,16 +323,16 @@ esp_err_t esp_ble_gattc_get_included_service(uint16_t conn_id, msg.pid = BTC_PID_GATTC; if (start_incl_srvc_id) { - arg.get_next_incl_srvc.conn_id = conn_id; - memcpy(&arg.get_next_incl_srvc.service_id, srvc_id, sizeof(esp_gatt_srvc_id_t)); + arg.get_next_incl_srvc.conn_id = conn_id; + memcpy(&arg.get_next_incl_srvc.service_id, srvc_id, sizeof(esp_gatt_srvc_id_t)); memcpy(&arg.get_next_incl_srvc.start_service_id, start_incl_srvc_id, sizeof(esp_gatt_srvc_id_t)); msg.act = BTC_GATTC_ACT_GET_NEXT_INCL_SERVICE; } else { - arg.get_first_incl_srvc.conn_id = conn_id; - memcpy(&arg.get_first_incl_srvc.service_id, srvc_id, sizeof(esp_gatt_srvc_id_t)); + arg.get_first_incl_srvc.conn_id = conn_id; + memcpy(&arg.get_first_incl_srvc.service_id, srvc_id, sizeof(esp_gatt_srvc_id_t)); msg.act = BTC_GATTC_ACT_GET_FIRST_INCL_SERVICE; } - + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gattc_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } @@ -340,7 +340,7 @@ esp_err_t esp_ble_gattc_get_included_service(uint16_t conn_id, ** ** @function esp_ble_gattc_read_char ** -** @brief This function is called to read a service's characteristics of +** @brief This function is called to read a service's characteristics of ** the given characteritisc ID.UTH_REQ_NO_SCATTERNET ** ** @param[in] conn_id - connectino ID. @@ -372,7 +372,7 @@ esp_err_t esp_ble_gattc_read_char (uint16_t conn_id, esp_gatt_srvc_id_t *srvc_id ** ** @function esp_ble_gattc_read_char_descr ** -** @brief This function is called to read a characteristics descriptor. +** @brief This function is called to read a characteristics descriptor. ** ** @param[in] conn_id - connection ID. ** @param[in] srvc_id - serivcie ID. @@ -383,10 +383,10 @@ esp_err_t esp_ble_gattc_read_char (uint16_t conn_id, esp_gatt_srvc_id_t *srvc_id ** *******************************************************************************/ esp_err_t esp_ble_gattc_read_char_descr (uint16_t conn_id, - esp_gatt_srvc_id_t *srvc_id, - esp_gatt_id_t *char_id, - esp_gatt_id_t *descr_id, - esp_gatt_auth_req_t auth_req) + esp_gatt_srvc_id_t *srvc_id, + esp_gatt_id_t *char_id, + esp_gatt_id_t *descr_id, + esp_gatt_auth_req_t auth_req) { btc_msg_t msg; btc_ble_gattc_args_t arg; @@ -407,7 +407,7 @@ esp_err_t esp_ble_gattc_read_char_descr (uint16_t conn_id, ** ** @function esp_ble_gattc_write_char ** -** @brief This function is called to write characteristic value. +** @brief This function is called to write characteristic value. ** ** @param[in] conn_id - connection ID. ** @param[in] srvc_id - serivcie ID. @@ -445,7 +445,7 @@ esp_err_t esp_ble_gattc_write_char( uint16_t conn_id, ** ** @function esp_ble_gattc_write_char_descr ** -** @brief This function is called to write characteristic descriptor value. +** @brief This function is called to write characteristic descriptor value. ** ** @param[in] conn_id - connection ID ** @param[in] srvc_id - serivcie ID. @@ -458,12 +458,12 @@ esp_err_t esp_ble_gattc_write_char( uint16_t conn_id, ** *******************************************************************************/ esp_err_t esp_ble_gattc_write_char_descr (uint16_t conn_id, - esp_gatt_srvc_id_t *srvc_id, - esp_gatt_id_t *char_id, - esp_gatt_id_t *descr_id, - uint16_t value_len, - uint8_t *value, - esp_gatt_auth_req_t auth_req) + esp_gatt_srvc_id_t *srvc_id, + esp_gatt_id_t *char_id, + esp_gatt_id_t *descr_id, + uint16_t value_len, + uint8_t *value, + esp_gatt_auth_req_t auth_req) { btc_msg_t msg; btc_ble_gattc_args_t arg; @@ -486,7 +486,7 @@ esp_err_t esp_ble_gattc_write_char_descr (uint16_t conn_id, ** ** @function esp_ble_gattc_prepare_write ** -** @brief This function is called to prepare write a characteristic value. +** @brief This function is called to prepare write a characteristic value. ** ** @param[in] conn_id - connection ID. ** @param[in] char_id - GATT characteritic ID of the service. @@ -498,12 +498,12 @@ esp_err_t esp_ble_gattc_write_char_descr (uint16_t conn_id, ** *******************************************************************************/ esp_err_t esp_ble_gattc_prepare_write(uint16_t conn_id, - esp_gatt_srvc_id_t *srvc_id, - esp_gatt_id_t *char_id, - uint16_t offset, - uint16_t value_len, - uint8_t *value, - esp_gatt_auth_req_t auth_req) + esp_gatt_srvc_id_t *srvc_id, + esp_gatt_id_t *char_id, + uint16_t offset, + uint16_t value_len, + uint8_t *value, + esp_gatt_auth_req_t auth_req) { //TODO: Review this function btc_msg_t msg; @@ -568,9 +568,9 @@ esp_err_t esp_ble_gattc_execute_write (uint16_t conn_id, bool is_execute) ** *******************************************************************************/ esp_gatt_status_t esp_ble_gattc_register_for_notify (esp_gatt_if_t gatt_if, - esp_bd_addr_t server_bda, - esp_gatt_srvc_id_t *srvc_id, - esp_gatt_id_t *char_id) + esp_bd_addr_t server_bda, + esp_gatt_srvc_id_t *srvc_id, + esp_gatt_id_t *char_id) { btc_msg_t msg; btc_ble_gattc_args_t arg; @@ -603,9 +603,9 @@ esp_gatt_status_t esp_ble_gattc_register_for_notify (esp_gatt_if_t gatt_if, ** *******************************************************************************/ esp_gatt_status_t esp_ble_gattc_unregister_for_notify (esp_gatt_if_t gatt_if, - esp_bd_addr_t server_bda, - esp_gatt_srvc_id_t *srvc_id, - esp_gatt_id_t *char_id) + esp_bd_addr_t server_bda, + esp_gatt_srvc_id_t *srvc_id, + esp_gatt_id_t *char_id) { btc_msg_t msg; btc_ble_gattc_args_t arg; diff --git a/components/bt/bluedroid/api/esp_gatts_api.c b/components/bt/bluedroid/api/esp_gatts_api.c index fe9ead0c47..3004ee8beb 100644 --- a/components/bt/bluedroid/api/esp_gatts_api.c +++ b/components/bt/bluedroid/api/esp_gatts_api.c @@ -18,209 +18,210 @@ #include "btc_manage.h" #include "btc_gatts.h" -#define COPY_TO_GATTS_ARGS(_gatt_args, _arg, _arg_type) memcpy(_gatt_args, _arg, sizeof(_arg_type)) +#define COPY_TO_GATTS_ARGS(_gatt_args, _arg, _arg_type) memcpy(_gatt_args, _arg, sizeof(_arg_type)) esp_err_t esp_ble_gatts_register_callback(esp_profile_cb_t callback) { - return (btc_profile_cb_set(BTC_PID_GATTS, callback) == 0 ? ESP_OK : ESP_FAIL); + return (btc_profile_cb_set(BTC_PID_GATTS, callback) == 0 ? ESP_OK : ESP_FAIL); } esp_err_t esp_ble_gatts_app_register(uint16_t app_id) { - btc_msg_t msg; - btc_ble_gatts_args_t arg; + btc_msg_t msg; + btc_ble_gatts_args_t arg; - if (app_id < APP_ID_MIN || app_id > APP_ID_MAX) - return ESP_ERR_INVALID_ARG; + if (app_id < APP_ID_MIN || app_id > APP_ID_MAX) { + return ESP_ERR_INVALID_ARG; + } - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_GATTS; - msg.act = BTC_GATTS_ACT_APP_REGISTER; - arg.app_reg.app_id = app_id; + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_GATTS; + msg.act = BTC_GATTS_ACT_APP_REGISTER; + arg.app_reg.app_id = app_id; - return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gatts_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gatts_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } esp_err_t esp_ble_gatts_app_unregister(esp_gatt_if_t gatt_if) { - btc_msg_t msg; - btc_ble_gatts_args_t arg; + btc_msg_t msg; + btc_ble_gatts_args_t arg; - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_GATTS; - msg.act = BTC_GATTS_ACT_APP_UNREGISTER; - arg.app_unreg.gatt_if = gatt_if; + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_GATTS; + msg.act = BTC_GATTS_ACT_APP_UNREGISTER; + arg.app_unreg.gatt_if = gatt_if; - return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gatts_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gatts_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } esp_err_t esp_ble_gatts_create_service(esp_gatt_if_t gatt_if, - esp_gatt_srvc_id_t *service_id, uint16_t num_handle) + esp_gatt_srvc_id_t *service_id, uint16_t num_handle) { - btc_msg_t msg; - btc_ble_gatts_args_t arg; + btc_msg_t msg; + btc_ble_gatts_args_t arg; - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_GATTS; - msg.act = BTC_GATTS_ACT_CREATE_SERVICE; - arg.create_srvc.gatt_if = gatt_if; - arg.create_srvc.num_handle = num_handle; - memcpy(&arg.create_srvc.service_id, service_id, sizeof(esp_gatt_srvc_id_t)); + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_GATTS; + msg.act = BTC_GATTS_ACT_CREATE_SERVICE; + arg.create_srvc.gatt_if = gatt_if; + arg.create_srvc.num_handle = num_handle; + memcpy(&arg.create_srvc.service_id, service_id, sizeof(esp_gatt_srvc_id_t)); - return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gatts_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gatts_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } esp_err_t esp_ble_gatts_add_include_service(uint16_t service_handle, uint16_t included_service_handle) { - btc_msg_t msg; - btc_ble_gatts_args_t arg; + btc_msg_t msg; + btc_ble_gatts_args_t arg; - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_GATTS; - msg.act = BTC_GATTS_ACT_ADD_INCLUDE_SERVICE; - arg.add_incl_srvc.service_handle = service_handle; - arg.add_incl_srvc.included_service_handle = included_service_handle; + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_GATTS; + msg.act = BTC_GATTS_ACT_ADD_INCLUDE_SERVICE; + arg.add_incl_srvc.service_handle = service_handle; + arg.add_incl_srvc.included_service_handle = included_service_handle; - return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gatts_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gatts_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } esp_err_t esp_ble_gatts_add_char(uint16_t service_handle, esp_bt_uuid_t *char_uuid, - esp_gatt_perm_t perm, esp_gatt_char_prop_t property) + esp_gatt_perm_t perm, esp_gatt_char_prop_t property) { - btc_msg_t msg; - btc_ble_gatts_args_t arg; + btc_msg_t msg; + btc_ble_gatts_args_t arg; - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_GATTS; - msg.act = BTC_GATTS_ACT_ADD_CHAR; - arg.add_char.service_handle = service_handle; - arg.add_char.perm = perm; - arg.add_char.property = property; - memcpy(&arg.add_char.char_uuid, char_uuid, sizeof(esp_bt_uuid_t)); + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_GATTS; + msg.act = BTC_GATTS_ACT_ADD_CHAR; + arg.add_char.service_handle = service_handle; + arg.add_char.perm = perm; + arg.add_char.property = property; + memcpy(&arg.add_char.char_uuid, char_uuid, sizeof(esp_bt_uuid_t)); - return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gatts_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gatts_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } esp_err_t esp_ble_gatts_add_char_descr (uint16_t service_handle, - esp_bt_uuid_t * descr_uuid, - esp_gatt_perm_t perm) + esp_bt_uuid_t *descr_uuid, + esp_gatt_perm_t perm) { - btc_msg_t msg; - btc_ble_gatts_args_t arg; + btc_msg_t msg; + btc_ble_gatts_args_t arg; - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_GATTS; - msg.act = BTC_GATTS_ACT_ADD_CHAR_DESCR; - arg.add_descr.service_handle = service_handle; - arg.add_descr.perm = perm; - memcpy(&arg.add_descr.descr_uuid, descr_uuid, sizeof(esp_bt_uuid_t)); + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_GATTS; + msg.act = BTC_GATTS_ACT_ADD_CHAR_DESCR; + arg.add_descr.service_handle = service_handle; + arg.add_descr.perm = perm; + memcpy(&arg.add_descr.descr_uuid, descr_uuid, sizeof(esp_bt_uuid_t)); - return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gatts_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gatts_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } esp_err_t esp_ble_gatts_delete_service(uint16_t service_handle) { - btc_msg_t msg; - btc_ble_gatts_args_t arg; + btc_msg_t msg; + btc_ble_gatts_args_t arg; - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_GATTS; - msg.act = BTC_GATTS_ACT_DELETE_SERVICE; - arg.delete_srvc.service_handle = service_handle; + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_GATTS; + msg.act = BTC_GATTS_ACT_DELETE_SERVICE; + arg.delete_srvc.service_handle = service_handle; - return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gatts_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gatts_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } esp_err_t esp_ble_gatts_start_service(uint16_t service_handle) { - btc_msg_t msg; - btc_ble_gatts_args_t arg; + btc_msg_t msg; + btc_ble_gatts_args_t arg; - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_GATTS; - msg.act = BTC_GATTS_ACT_START_SERVICE; - arg.start_srvc.service_handle = service_handle; + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_GATTS; + msg.act = BTC_GATTS_ACT_START_SERVICE; + arg.start_srvc.service_handle = service_handle; - return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gatts_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gatts_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } esp_err_t esp_ble_gatts_stop_service(uint16_t service_handle) { - btc_msg_t msg; - btc_ble_gatts_args_t arg; + btc_msg_t msg; + btc_ble_gatts_args_t arg; - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_GATTS; - msg.act = BTC_GATTS_ACT_STOP_SERVICE; - arg.stop_srvc.service_handle = service_handle; + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_GATTS; + msg.act = BTC_GATTS_ACT_STOP_SERVICE; + arg.stop_srvc.service_handle = service_handle; - return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gatts_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gatts_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } esp_err_t esp_ble_gatts_send_indicate(uint16_t conn_id, uint16_t attr_handle, - uint16_t value_len, uint8_t *value, bool need_confirm) + uint16_t value_len, uint8_t *value, bool need_confirm) { - btc_msg_t msg; - btc_ble_gatts_args_t arg; + btc_msg_t msg; + btc_ble_gatts_args_t arg; - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_GATTS; - msg.act = BTC_GATTS_ACT_SEND_INDICATE; - arg.send_ind.conn_id = conn_id; - arg.send_ind.attr_handle = attr_handle; - arg.send_ind.need_confirm = need_confirm; - arg.send_ind.value_len = value_len; - arg.send_ind.value = value; + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_GATTS; + msg.act = BTC_GATTS_ACT_SEND_INDICATE; + arg.send_ind.conn_id = conn_id; + arg.send_ind.attr_handle = attr_handle; + arg.send_ind.need_confirm = need_confirm; + arg.send_ind.value_len = value_len; + arg.send_ind.value = value; - return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gatts_args_t), btc_gatts_arg_deep_copy) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gatts_args_t), btc_gatts_arg_deep_copy) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } esp_err_t esp_ble_gatts_send_response(uint16_t conn_id, uint32_t trans_id, - esp_gatt_status_t status, esp_gatt_rsp_t *rsp) + esp_gatt_status_t status, esp_gatt_rsp_t *rsp) { - btc_msg_t msg; - btc_ble_gatts_args_t arg; + btc_msg_t msg; + btc_ble_gatts_args_t arg; - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_GATTS; - msg.act = BTC_GATTS_ACT_SEND_RESPONSE; - arg.send_rsp.conn_id = conn_id; - arg.send_rsp.trans_id = trans_id; - arg.send_rsp.status = status; - arg.send_rsp.rsp = rsp; + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_GATTS; + msg.act = BTC_GATTS_ACT_SEND_RESPONSE; + arg.send_rsp.conn_id = conn_id; + arg.send_rsp.trans_id = trans_id; + arg.send_rsp.status = status; + arg.send_rsp.rsp = rsp; - return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gatts_args_t), btc_gatts_arg_deep_copy) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gatts_args_t), btc_gatts_arg_deep_copy) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } esp_err_t esp_ble_gatts_open(esp_gatt_if_t gatt_if, esp_bd_addr_t remote_bda, bool is_direct) { - btc_msg_t msg; - btc_ble_gatts_args_t arg; + btc_msg_t msg; + btc_ble_gatts_args_t arg; - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_GATTS; - msg.act = BTC_GATTS_ACT_OPEN; - arg.open.gatt_if = gatt_if; - arg.open.is_direct = is_direct; - memcpy(&arg.open.remote_bda, remote_bda, sizeof(esp_bd_addr_t)); + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_GATTS; + msg.act = BTC_GATTS_ACT_OPEN; + arg.open.gatt_if = gatt_if; + arg.open.is_direct = is_direct; + memcpy(&arg.open.remote_bda, remote_bda, sizeof(esp_bd_addr_t)); - return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gatts_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gatts_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } esp_err_t esp_ble_gatts_close(uint16_t conn_id) { - btc_msg_t msg; - btc_ble_gatts_args_t arg; + btc_msg_t msg; + btc_ble_gatts_args_t arg; - msg.sig = BTC_SIG_API_CALL; - msg.pid = BTC_PID_GATTS; - msg.act = BTC_GATTS_ACT_CLOSE; - arg.close.conn_id = conn_id; + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_GATTS; + msg.act = BTC_GATTS_ACT_CLOSE; + arg.close.conn_id = conn_id; - return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gatts_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gatts_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } diff --git a/components/bt/bluedroid/api/esp_sdp_api.c b/components/bt/bluedroid/api/esp_sdp_api.c index a649882263..382f6dc021 100644 --- a/components/bt/bluedroid/api/esp_sdp_api.c +++ b/components/bt/bluedroid/api/esp_sdp_api.c @@ -22,7 +22,7 @@ esp_err_t esp_bt_sdp_enable(bt_sdp_cb_t *cback) return (status == BTA_SDP_SUCCESS) ? ESP_OK : ESP_FAIL; } -esp_err_t esp_bt_sdp_search(esp_bd_addr_t bd_addr, esp_bt_uuid_t* uuid) +esp_err_t esp_bt_sdp_search(esp_bd_addr_t bd_addr, esp_bt_uuid_t *uuid) { tBTA_SDP_STATUS status = BTA_SdpSearch(bd_addr, (tSDP_UUID *)uuid); return (status == BTA_SDP_SUCCESS) ? ESP_OK : ESP_FAIL; @@ -90,9 +90,9 @@ bool esp_bt_sdp_add_protocol_list (uint32_t handle, uint16_t num_elem, } bool esp_bt_sdp_add_addition_protocol_lists(uint32_t handle, uint16_t num_elem, - sdp_proto_list_elem_t *p_proto_list) + sdp_proto_list_elem_t *p_proto_list) { - return SDP_AddAdditionProtoLists(handle, num_elem, (tSDP_PROTO_LIST_ELEM *)p_proto_list); + return SDP_AddAdditionProtoLists(handle, num_elem, (tSDP_PROTO_LIST_ELEM *)p_proto_list); } bool esp_bt_sdp_add_profile_dscp_list (uint32_t handle, @@ -103,15 +103,15 @@ bool esp_bt_sdp_add_profile_dscp_list (uint32_t handle, } bool esp_bt_sdp_add_lang_base_attr_id_list(uint32_t handle, - uint16_t lang, uint16_t char_enc, - uint16_t base_id) + uint16_t lang, uint16_t char_enc, + uint16_t base_id) { return SDP_AddLanguageBaseAttrIDList(handle, lang, char_enc, base_id); } bool esp_bt_sdp_add_service_class_id_list(uint32_t handle, - uint16_t num_services, - uint16_t *p_service_uuids) + uint16_t num_services, + uint16_t *p_service_uuids) { return SDP_AddServiceClassIdList(handle, num_services, p_service_uuids); } diff --git a/components/bt/bluedroid/api/include/esp_blufi_api.h b/components/bt/bluedroid/api/include/esp_blufi_api.h index 31cd4e9faf..45790f8e84 100644 --- a/components/bt/bluedroid/api/include/esp_blufi_api.h +++ b/components/bt/bluedroid/api/include/esp_blufi_api.h @@ -21,41 +21,41 @@ #include "bta_gatt_api.h" #include "esp_err.h" -#define ESP_BLUFI_RECV_DATA_LEN_MAX 128 +#define ESP_BLUFI_RECV_DATA_LEN_MAX 128 -#define ESP_BLUFI_EVENT_INIT_FINISH 0 -#define ESP_BLUFI_EVENT_DEINIT_FINISH 1 -#define ESP_BLUFI_EVENT_RECV_DATA 2 +#define ESP_BLUFI_EVENT_INIT_FINISH 0 +#define ESP_BLUFI_EVENT_DEINIT_FINISH 1 +#define ESP_BLUFI_EVENT_RECV_DATA 2 typedef enum { - ESP_BLUFI_CONFIG_OK = 0, - ESP_BLUFI_CONFIG_FAILED, + ESP_BLUFI_CONFIG_OK = 0, + ESP_BLUFI_CONFIG_FAILED, } esp_blufi_config_state_t; typedef enum { - ESP_BLUFI_INIT_OK = 0, - ESP_BLUFI_INIT_FAILED = 0, + ESP_BLUFI_INIT_OK = 0, + ESP_BLUFI_INIT_FAILED = 0, } esp_blufi_init_state_t; typedef enum { - ESP_BLUFI_DEINIT_OK = 0, - ESP_BLUFI_DEINIT_FAILED = 0, + ESP_BLUFI_DEINIT_OK = 0, + ESP_BLUFI_DEINIT_FAILED = 0, } esp_blufi_deinit_state_t; typedef union { - //ESP_BLUFI_EVENT_INIT_FINISH - struct blufi_init_finish_evt_param { - esp_blufi_init_state_t state; - } init_finish; - //ESP_BLUFI_EVENT_DEINIT_FINISH - struct blufi_deinit_finish_evt_param { - esp_blufi_deinit_state_t state; - } deinit_finish; - //ESP_BLUFI_EVENT_RECV_DATA - struct blufi_recv_evt_param { - uint8_t data[ESP_BLUFI_RECV_DATA_LEN_MAX]; - uint8_t data_len; - } recv_data; + //ESP_BLUFI_EVENT_INIT_FINISH + struct blufi_init_finish_evt_param { + esp_blufi_init_state_t state; + } init_finish; + //ESP_BLUFI_EVENT_DEINIT_FINISH + struct blufi_deinit_finish_evt_param { + esp_blufi_deinit_state_t state; + } deinit_finish; + //ESP_BLUFI_EVENT_RECV_DATA + struct blufi_recv_evt_param { + uint8_t data[ESP_BLUFI_RECV_DATA_LEN_MAX]; + uint8_t data_len; + } recv_data; } esp_blufi_cb_param_t; /******************************************************************************* diff --git a/components/bt/bluedroid/api/include/esp_bt_defs.h b/components/bt/bluedroid/api/include/esp_bt_defs.h index 45eb61c501..f968669ce3 100644 --- a/components/bt/bluedroid/api/include/esp_bt_defs.h +++ b/components/bt/bluedroid/api/include/esp_bt_defs.h @@ -13,76 +13,76 @@ // limitations under the License. #ifndef __ESP_BT_DEFS_H__ -#define __ESP_BT_DEFS_H__ +#define __ESP_BT_DEFS_H__ #include #include /* Status Return Value */ typedef enum { - ESP_BT_STATUS_SUCCESS = 0, /* Successful operation. */ - ESP_BT_STATUS_FAILURE = 1, /* Generic failure. */ - ESP_BT_STATUS_PENDING = 2, /* API cannot be completed right now */ - ESP_BT_STATUS_BUSY = 3, - ESP_BT_STATUS_NO_RESOURCES = 4, - ESP_BT_STATUS_WRONG_MODE = 5, + ESP_BT_STATUS_SUCCESS = 0, /* Successful operation. */ + ESP_BT_STATUS_FAILURE = 1, /* Generic failure. */ + ESP_BT_STATUS_PENDING = 2, /* API cannot be completed right now */ + ESP_BT_STATUS_BUSY = 3, + ESP_BT_STATUS_NO_RESOURCES = 4, + ESP_BT_STATUS_WRONG_MODE = 5, } esp_bt_status_t; -#define ESP_DEFAULT_GATT_IF 0xff +#define ESP_DEFAULT_GATT_IF 0xff #define ESP_BLE_CONN_PARAM_UNDEF 0xffff /* use this value when a specific value not to be overwritten */ #define ESP_BLE_IS_VALID_PARAM(x, min, max) (((x) >= (min) && (x) <= (max)) || ((x) == ESP_BLE_CONN_PARAM_UNDEF)) typedef struct { -#define ESP_UUID_LEN_16 2 -#define ESP_UUID_LEN_32 4 -#define ESP_UUID_LEN_128 16 - uint16_t len; - union { - uint16_t uuid16; - uint32_t uuid32; - uint8_t uuid128[ESP_UUID_LEN_128]; - } uuid; +#define ESP_UUID_LEN_16 2 +#define ESP_UUID_LEN_32 4 +#define ESP_UUID_LEN_128 16 + uint16_t len; + union { + uint16_t uuid16; + uint32_t uuid32; + uint8_t uuid128[ESP_UUID_LEN_128]; + } uuid; } __attribute__((packed)) esp_bt_uuid_t; /* tBT_UUID in "bt_types.h" */ typedef enum { - ESP_BT_DEVICE_TYPE_BREDR = 0x01, - ESP_BT_DEVICE_TYPE_BLE = 0x02, - ESP_BT_DEVICE_TYPE_DUMO = 0x03, + ESP_BT_DEVICE_TYPE_BREDR = 0x01, + ESP_BT_DEVICE_TYPE_BLE = 0x02, + ESP_BT_DEVICE_TYPE_DUMO = 0x03, } esp_bt_dev_type_t; -#define ESP_BD_ADDR_LEN 6 +#define ESP_BD_ADDR_LEN 6 typedef uint8_t esp_bd_addr_t[ESP_BD_ADDR_LEN]; /* BD_ADDR in bt_types.h */ /// Own BD address source of the device typedef enum { - /// Public Address - BD_ADDR_PUBLIC, - /// Provided random address - BD_ADDR_PROVIDED_RND, - /// Provided static random address - BD_ADDR_GEN_STATIC_RND, - /// Generated resolvable private random address - BD_ADDR_GEN_RSLV, - /// Generated non-resolvable private random address - BD_ADDR_GEN_NON_RSLV, - /// Provided Reconnection address - BD_ADDR_PROVIDED_RECON, + /// Public Address + BD_ADDR_PUBLIC, + /// Provided random address + BD_ADDR_PROVIDED_RND, + /// Provided static random address + BD_ADDR_GEN_STATIC_RND, + /// Generated resolvable private random address + BD_ADDR_GEN_RSLV, + /// Generated non-resolvable private random address + BD_ADDR_GEN_NON_RSLV, + /// Provided Reconnection address + BD_ADDR_PROVIDED_RECON, } esp_bd_addr_type_t; typedef enum { - BLE_ADDR_TYPE_PUBLIC = 0x00, - BLE_ADDR_TYPE_RANDOM = 0x01, - BLE_ADDR_TYPE_RPA_PUBLIC = 0x02, - BLE_ADDR_TYPE_RPA_RANDOM = 0x03, + BLE_ADDR_TYPE_PUBLIC = 0x00, + BLE_ADDR_TYPE_RANDOM = 0x01, + BLE_ADDR_TYPE_RPA_PUBLIC = 0x02, + BLE_ADDR_TYPE_RPA_RANDOM = 0x03, } esp_ble_addr_type_t; -#define APP_ID_MIN 0x0000 -#define APP_ID_MAX 0x7fff +#define APP_ID_MIN 0x0000 +#define APP_ID_MAX 0x7fff typedef void (* esp_profile_cb_t)(uint32_t event, void *param); #define API_BLE_ISVALID_PARAM(x, min, max) (((x) >= (min) && (x) <= (max)) || ((x) == ESP_BLE_CONN_PARAM_UNDEF)) -#endif ///__ESP_BT_DEFS_H__ +#endif ///__ESP_BT_DEFS_H__ diff --git a/components/bt/bluedroid/api/include/esp_gap_ble_api.h b/components/bt/bluedroid/api/include/esp_gap_ble_api.h index edd3858dc2..08190eec82 100644 --- a/components/bt/bluedroid/api/include/esp_gap_ble_api.h +++ b/components/bt/bluedroid/api/include/esp_gap_ble_api.h @@ -21,61 +21,61 @@ #include "esp_err.h" #include "esp_bt_defs.h" -#define ESP_GAP_BLE_ADV_DATA_SET_COMPLETE_EVT 0 -#define ESP_GAP_BLE_SCAN_RSP_DATA_SET_COMPLETE_EVT 1 -#define ESP_GAP_BLE_SCAN_PARAM_SET_COMPLETE_EVT 2 -#define ESP_GAP_BLE_SCAN_RESULT_EVT 3 +#define ESP_GAP_BLE_ADV_DATA_SET_COMPLETE_EVT 0 +#define ESP_GAP_BLE_SCAN_RSP_DATA_SET_COMPLETE_EVT 1 +#define ESP_GAP_BLE_SCAN_PARAM_SET_COMPLETE_EVT 2 +#define ESP_GAP_BLE_SCAN_RESULT_EVT 3 #define ESP_BLE_ADV_DATA_LEN_MAX 31 /****************** define the adv type macro***************************************/ -#define ESP_BLE_AD_TYPE_FLAG 0x01 -#define ESP_BLE_AD_TYPE_16SRV_PART 0x02 -#define ESP_BLE_AD_TYPE_16SRV_CMPL 0x03 -#define ESP_BLE_AD_TYPE_32SRV_PART 0x04 -#define ESP_BLE_AD_TYPE_32SRV_CMPL 0x05 -#define ESP_BLE_AD_TYPE_128SRV_PART 0x06 -#define ESP_BLE_AD_TYPE_128SRV_CMPL 0x07 -#define ESP_BLE_AD_TYPE_NAME_SHORT 0x08 -#define ESP_BLE_AD_TYPE_NAME_CMPL 0x09 -#define ESP_BLE_AD_TYPE_TX_PWR 0x0A -#define ESP_BLE_AD_TYPE_DEV_CLASS 0x0D -#define ESP_BLE_AD_TYPE_SM_TK 0x10 -#define ESP_BLE_AD_TYPE_SM_OOB_FLAG 0x11 -#define ESP_BLE_AD_TYPE_INT_RANGE 0x12 -#define ESP_BLE_AD_TYPE_SOL_SRV_UUID 0x14 -#define ESP_BLE_AD_TYPE_128SOL_SRV_UUID 0x15 -#define ESP_BLE_AD_TYPE_SERVICE_DATA 0x16 -#define ESP_BLE_AD_TYPE_PUBLIC_TARGET 0x17 -#define ESP_BLE_AD_TYPE_RANDOM_TARGET 0x18 -#define ESP_BLE_AD_TYPE_APPEARANCE 0x19 -#define ESP_BLE_AD_TYPE_ADV_INT 0x1A -#define ESP_BLE_AD_TYPE_32SOL_SRV_UUID 0x1B -#define ESP_BLE_AD_TYPE_32SERVICE_DATA 0x1C -#define ESP_BLE_AD_TYPE_128SERVICE_DATA 0x1D -#define ESP_BLE_AD_MANUFACTURER_SPECIFIC_TYPE 0xFF +#define ESP_BLE_AD_TYPE_FLAG 0x01 +#define ESP_BLE_AD_TYPE_16SRV_PART 0x02 +#define ESP_BLE_AD_TYPE_16SRV_CMPL 0x03 +#define ESP_BLE_AD_TYPE_32SRV_PART 0x04 +#define ESP_BLE_AD_TYPE_32SRV_CMPL 0x05 +#define ESP_BLE_AD_TYPE_128SRV_PART 0x06 +#define ESP_BLE_AD_TYPE_128SRV_CMPL 0x07 +#define ESP_BLE_AD_TYPE_NAME_SHORT 0x08 +#define ESP_BLE_AD_TYPE_NAME_CMPL 0x09 +#define ESP_BLE_AD_TYPE_TX_PWR 0x0A +#define ESP_BLE_AD_TYPE_DEV_CLASS 0x0D +#define ESP_BLE_AD_TYPE_SM_TK 0x10 +#define ESP_BLE_AD_TYPE_SM_OOB_FLAG 0x11 +#define ESP_BLE_AD_TYPE_INT_RANGE 0x12 +#define ESP_BLE_AD_TYPE_SOL_SRV_UUID 0x14 +#define ESP_BLE_AD_TYPE_128SOL_SRV_UUID 0x15 +#define ESP_BLE_AD_TYPE_SERVICE_DATA 0x16 +#define ESP_BLE_AD_TYPE_PUBLIC_TARGET 0x17 +#define ESP_BLE_AD_TYPE_RANDOM_TARGET 0x18 +#define ESP_BLE_AD_TYPE_APPEARANCE 0x19 +#define ESP_BLE_AD_TYPE_ADV_INT 0x1A +#define ESP_BLE_AD_TYPE_32SOL_SRV_UUID 0x1B +#define ESP_BLE_AD_TYPE_32SERVICE_DATA 0x1C +#define ESP_BLE_AD_TYPE_128SERVICE_DATA 0x1D +#define ESP_BLE_AD_MANUFACTURER_SPECIFIC_TYPE 0xFF typedef uint32_t esp_gap_ble_event_t; /// Advertising mode typedef enum { - ADV_TYPE_IND = 0x00, - ADV_TYPE_DIRECT_IND_HIGH = 0x01, - ADV_TYPE_SCAN_IND = 0x02, - ADV_TYPE_NONCONN_IND = 0x03, - ADV_TYPE_DIRECT_IND_LOW = 0x04, + ADV_TYPE_IND = 0x00, + ADV_TYPE_DIRECT_IND_HIGH = 0x01, + ADV_TYPE_SCAN_IND = 0x02, + ADV_TYPE_NONCONN_IND = 0x03, + ADV_TYPE_DIRECT_IND_LOW = 0x04, } esp_ble_adv_type_t; typedef enum { - ADV_CHNL_37 = 0x01, - ADV_CHNL_38 = 0x02, - ADV_CHNL_39 = 0x03, - ADV_CHNL_ALL = 0x07, + ADV_CHNL_37 = 0x01, + ADV_CHNL_38 = 0x02, + ADV_CHNL_39 = 0x03, + ADV_CHNL_ALL = 0x07, } esp_ble_adv_channel_t; typedef enum { - ///Allow both scan and connection requests from anyone + ///Allow both scan and connection requests from anyone ADV_FILTER_ALLOW_SCAN_ANY_CON_ANY = 0x00, ///Allow both scan req from White List devices only and connection req from anyone ADV_FILTER_ALLOW_SCAN_WLST_CON_ANY, @@ -88,116 +88,114 @@ typedef enum { typedef struct { - uint16_t adv_int_min; - uint16_t adv_int_max; - esp_ble_adv_type_t adv_type; - esp_ble_addr_type_t own_addr_type; - esp_bd_addr_t peer_addr; - esp_ble_addr_type_t peer_addr_type; - esp_ble_adv_channel_t channel_map; - esp_ble_adv_filter_t adv_filter_policy; + uint16_t adv_int_min; + uint16_t adv_int_max; + esp_ble_adv_type_t adv_type; + esp_ble_addr_type_t own_addr_type; + esp_bd_addr_t peer_addr; + esp_ble_addr_type_t peer_addr_type; + esp_ble_adv_channel_t channel_map; + esp_ble_adv_filter_t adv_filter_policy; } esp_ble_adv_params_t; typedef struct { - bool set_scan_rsp; - bool include_name; - bool include_txpower; - int min_interval; - int max_interval; - int appearance; - uint16_t manufacturer_len; - uint8_t *p_manufacturer_data; - uint16_t service_data_len; - uint8_t *p_service_data; - uint16_t service_uuid_len; - uint8_t *p_service_uuid; - uint8_t flag; + bool set_scan_rsp; + bool include_name; + bool include_txpower; + int min_interval; + int max_interval; + int appearance; + uint16_t manufacturer_len; + uint8_t *p_manufacturer_data; + uint16_t service_data_len; + uint8_t *p_service_data; + uint16_t service_uuid_len; + uint8_t *p_service_uuid; + uint8_t flag; } esp_ble_adv_data_t; /// Own BD address source of the device -typedef enum -{ - /// Public Address - ESP_PUBLIC_ADDR, - /// Provided random address - ESP_PROVIDED_RND_ADDR, - /// Provided static random address - ESP_GEN_STATIC_RND_ADDR, - /// Generated resolvable private random address - ESP_GEN_RSLV_ADDR, - /// Generated non-resolvable private random address - ESP_GEN_NON_RSLV_ADDR, - /// Provided Reconnection address - ESP_PROVIDED_RECON_ADDR, -}esp_ble_own_addr_src_t; +typedef enum { + /// Public Address + ESP_PUBLIC_ADDR, + /// Provided random address + ESP_PROVIDED_RND_ADDR, + /// Provided static random address + ESP_GEN_STATIC_RND_ADDR, + /// Generated resolvable private random address + ESP_GEN_RSLV_ADDR, + /// Generated non-resolvable private random address + ESP_GEN_NON_RSLV_ADDR, + /// Provided Reconnection address + ESP_PROVIDED_RECON_ADDR, +} esp_ble_own_addr_src_t; typedef enum { - BLE_SCAN_TYPE_PASSIVE = 0x0, - BLE_SCAN_TYPE_ACTIVE = 0x1, + BLE_SCAN_TYPE_PASSIVE = 0x0, + BLE_SCAN_TYPE_ACTIVE = 0x1, } esp_ble_scan_type_t; typedef enum { - BLE_SCAN_FILTER_ALLOW_ALL = 0x0, - BLE_SCAN_FILTER_ALLOW_ONLY_WLST = 0x1, - BLE_SCAN_FILTER_ALLOW_UND_RPA_DIR = 0x2, - BLE_SCAN_FILTER_ALLOW_WLIST_PRA_DIR = 0x3, + BLE_SCAN_FILTER_ALLOW_ALL = 0x0, + BLE_SCAN_FILTER_ALLOW_ONLY_WLST = 0x1, + BLE_SCAN_FILTER_ALLOW_UND_RPA_DIR = 0x2, + BLE_SCAN_FILTER_ALLOW_WLIST_PRA_DIR = 0x3, } esp_ble_scan_filter_t; -typedef struct -{ - esp_ble_scan_type_t scan_type; - esp_ble_addr_type_t own_addr_type; - esp_ble_scan_filter_t scan_filter_policy; - uint16_t scan_interval; - uint16_t scan_window; +typedef struct { + esp_ble_scan_type_t scan_type; + esp_ble_addr_type_t own_addr_type; + esp_ble_scan_filter_t scan_filter_policy; + uint16_t scan_interval; + uint16_t scan_window; } esp_ble_scan_params_t; typedef struct { - esp_bd_addr_t bda; - uint16_t min_int; - uint16_t max_int; - uint16_t latency; - uint16_t timeout; + esp_bd_addr_t bda; + uint16_t min_int; + uint16_t max_int; + uint16_t latency; + uint16_t timeout; } esp_ble_conn_update_params_t; typedef void (*esp_gap_ble_cb_t)(esp_gap_ble_event_t event, void *param); typedef enum { - /* Search callback events */ - ESP_GAP_SEARCH_INQ_RES_EVT = 0, /* Inquiry result for a peer device. */ - ESP_GAP_SEARCH_INQ_CMPL_EVT = 1, /* Inquiry complete. */ - ESP_GAP_SEARCH_DISC_RES_EVT = 2, /* Discovery result for a peer device. */ - ESP_GAP_SEARCH_DISC_BLE_RES_EVT = 3, /* Discovery result for BLE GATT based servoce on a peer device. */ - ESP_GAP_SEARCH_DISC_CMPL_EVT = 4, /* Discovery complete. */ - ESP_GAP_SEARCH_DI_DISC_CMPL_EVT = 5, /* Discovery complete. */ - ESP_GAP_SEARCH_SEARCH_CANCEL_CMPL_EVT = 6, /* Search cancelled */ + /* Search callback events */ + ESP_GAP_SEARCH_INQ_RES_EVT = 0, /* Inquiry result for a peer device. */ + ESP_GAP_SEARCH_INQ_CMPL_EVT = 1, /* Inquiry complete. */ + ESP_GAP_SEARCH_DISC_RES_EVT = 2, /* Discovery result for a peer device. */ + ESP_GAP_SEARCH_DISC_BLE_RES_EVT = 3, /* Discovery result for BLE GATT based servoce on a peer device. */ + ESP_GAP_SEARCH_DISC_CMPL_EVT = 4, /* Discovery complete. */ + ESP_GAP_SEARCH_DI_DISC_CMPL_EVT = 5, /* Discovery complete. */ + ESP_GAP_SEARCH_SEARCH_CANCEL_CMPL_EVT = 6, /* Search cancelled */ } esp_gap_search_evt_t; typedef union { - //ESP_GAP_BLE_ADV_DATA_SET_COMPLETE_EVT 0 - struct ble_adv_data_cmpl_evt_param { - esp_bt_status_t status; - } adv_data_cmpl; - //ESP_GAP_BLE_SCAN_RSP_DATA_SET_COMPLETE_EVT 1 - struct ble_scan_rsp_data_cmpl_evt_param { - esp_bt_status_t status; - } scan_rsp_data_cmpl; - //ESP_GAP_BLE_SCAN_PARAM_SET_COMPLETE_EVT 2 - struct ble_scan_param_cmpl_evt_param { - esp_bt_status_t status; - } scan_param_cmpl; - //ESP_GAP_BLE_SCAN_RESULT_EVT 3 - struct ble_scan_result_evt_param { - esp_gap_search_evt_t search_evt; - esp_bd_addr_t bda; - esp_bt_dev_type_t dev_type; - esp_ble_addr_type_t ble_addr_type; - int rssi; - uint8_t ble_adv[ESP_BLE_ADV_DATA_LEN_MAX]; /* received EIR */ - int flag; - int num_resps; - } scan_rst; + //ESP_GAP_BLE_ADV_DATA_SET_COMPLETE_EVT 0 + struct ble_adv_data_cmpl_evt_param { + esp_bt_status_t status; + } adv_data_cmpl; + //ESP_GAP_BLE_SCAN_RSP_DATA_SET_COMPLETE_EVT 1 + struct ble_scan_rsp_data_cmpl_evt_param { + esp_bt_status_t status; + } scan_rsp_data_cmpl; + //ESP_GAP_BLE_SCAN_PARAM_SET_COMPLETE_EVT 2 + struct ble_scan_param_cmpl_evt_param { + esp_bt_status_t status; + } scan_param_cmpl; + //ESP_GAP_BLE_SCAN_RESULT_EVT 3 + struct ble_scan_result_evt_param { + esp_gap_search_evt_t search_evt; + esp_bd_addr_t bda; + esp_bt_dev_type_t dev_type; + esp_ble_addr_type_t ble_addr_type; + int rssi; + uint8_t ble_adv[ESP_BLE_ADV_DATA_LEN_MAX]; /* received EIR */ + int flag; + int num_resps; + } scan_rst; } esp_ble_gap_cb_param_t; /******************************************************************************* @@ -214,7 +212,7 @@ typedef union { esp_err_t esp_ble_gap_register_callback(esp_profile_cb_t callback); - + /******************************************************************************* ** ** @function esp_ble_gap_config_adv_data @@ -252,7 +250,7 @@ esp_err_t esp_ble_gap_set_scan_params(esp_ble_scan_params_t *scan_params); ** ** @function esp_ble_gap_start_scanning ** -** @brief This procedure keep the device scanning the peer device whith advertising on the air +** @brief This procedure keep the device scanning the peer device whith advertising on the air ** ** @param[in] duration: Keeping the scaning time, the unit is second. ** @@ -266,8 +264,8 @@ esp_err_t esp_ble_gap_start_scanning(uint32_t duration); ** ** @function esp_ble_gap_stop_scanning ** -** @brief This function call to stop the device scanning the peer device whith advertising on the air -** @param void +** @brief This function call to stop the device scanning the peer device whith advertising on the air +** @param void ** @return ESP_OK - success, other - failed ** *******************************************************************************/ @@ -294,7 +292,7 @@ esp_err_t esp_ble_gap_start_advertising (esp_ble_adv_params_t *adv_params); ** ** @brief This function is called to stop advertising. ** -** @param None +** @param None ** ** @return ESP_OK - success, other - failed ** @@ -337,7 +335,7 @@ esp_err_t esp_ble_gap_set_pkt_data_len(esp_bd_addr_t remote_device, uint16_t tx_ ** @brief This function set the random address for the appliction ** ** @param[in] rand_addr: the random address whith should be setting -** +** ** @return ESP_OK - success, other - failed ** ** @@ -357,7 +355,7 @@ esp_err_t esp_ble_gap_set_rand_addr(esp_bd_addr_t rand_addr); ** @return ESP_OK - success, other - failed ** *******************************************************************************/ -esp_err_t esp_ble_gap_config_local_privacy (bool privacy_enable); +esp_err_t esp_ble_gap_config_local_privacy (bool privacy_enable); /******************************************************************************* @@ -384,7 +382,7 @@ esp_err_t esp_ble_gap_set_device_name(char *name); ** @param[in] type - finding ADV data type ** @param[out] p_length - return the length of ADV data not including type ** -** @return pointer of ADV data +** @return pointer of ADV data ** *******************************************************************************/ uint8_t *esp_ble_resolve_adv_data( uint8_t *p_adv, uint8_t type, uint8_t *p_length ); diff --git a/components/bt/bluedroid/api/include/esp_gatt_defs.h b/components/bt/bluedroid/api/include/esp_gatt_defs.h index 10f9f5c389..05cf6de7dc 100644 --- a/components/bt/bluedroid/api/include/esp_gatt_defs.h +++ b/components/bt/bluedroid/api/include/esp_gatt_defs.h @@ -23,50 +23,50 @@ /* Success code and error codes */ typedef enum { - ESP_GATT_OK = 0x0, - ESP_GATT_INVALID_HANDLE = 0x01, /* 0x0001 */ - ESP_GATT_READ_NOT_PERMIT = 0x02, /* 0x0002 */ - ESP_GATT_WRITE_NOT_PERMIT = 0x03, /* 0x0003 */ - ESP_GATT_INVALID_PDU = 0x04, /* 0x0004 */ - ESP_GATT_INSUF_AUTHENTICATION = 0x05, /* 0x0005 */ - ESP_GATT_REQ_NOT_SUPPORTED = 0x06, /* 0x0006 */ - ESP_GATT_INVALID_OFFSET = 0x07, /* 0x0007 */ - ESP_GATT_INSUF_AUTHORIZATION = 0x08, /* 0x0008 */ - ESP_GATT_PREPARE_Q_FULL = 0x09, /* 0x0009 */ - ESP_GATT_NOT_FOUND = 0x0a, /* 0x000a */ - ESP_GATT_NOT_LONG = 0x0b, /* 0x000b */ - ESP_GATT_INSUF_KEY_SIZE = 0x0c, /* 0x000c */ - ESP_GATT_INVALID_ATTR_LEN = 0x0d, /* 0x000d */ - ESP_GATT_ERR_UNLIKELY = 0x0e, /* 0x000e */ - ESP_GATT_INSUF_ENCRYPTION = 0x0f, /* 0x000f */ - ESP_GATT_UNSUPPORT_GRP_TYPE = 0x10, /* 0x0010 */ - ESP_GATT_INSUF_RESOURCE = 0x11, /* 0x0011 */ - - ESP_GATT_NO_RESOURCES = 0x80, /* 0x80 */ - ESP_GATT_INTERNAL_ERROR = 0x81, /* 0x81 */ - ESP_GATT_WRONG_STATE = 0x82, /* 0x82 */ - ESP_GATT_DB_FULL = 0x83, /* 0x83 */ - ESP_GATT_BUSY = 0x84, /* 0x84 */ - ESP_GATT_ERROR = 0x85, /* 0x85 */ - ESP_GATT_CMD_STARTED = 0x86, /* 0x86 */ - ESP_GATT_ILLEGAL_PARAMETER = 0x87, /* 0x87 */ - ESP_GATT_PENDING = 0x88, /* 0x88 */ - ESP_GATT_AUTH_FAIL = 0x89, /* 0x89 */ - ESP_GATT_MORE = 0x8a, /* 0x8a */ - ESP_GATT_INVALID_CFG = 0x8b, /* 0x8b */ - ESP_GATT_SERVICE_STARTED = 0x8c, /* 0x8c */ - ESP_GATT_ENCRYPED_MITM = ESP_GATT_OK, - ESP_GATT_ENCRYPED_NO_MITM = 0x8d, /* 0x8d */ - ESP_GATT_NOT_ENCRYPTED = 0x8e, /* 0x8e */ - ESP_GATT_CONGESTED = 0x8f, /* 0x8f */ - ESP_GATT_DUP_REG = 0x90, /* 0x90 */ - ESP_GATT_ALREADY_OPEN = 0x91, /* 0x91 */ - ESP_GATT_CANCEL = 0x92, /* 0x92 */ - - /* 0xE0 ~ 0xFC reserved for future use */ - ESP_GATT_CCC_CFG_ERR = 0xfd, /* 0xFD Client Characteristic Configuration Descriptor Improperly Configured */ - ESP_GATT_PRC_IN_PROGRESS = 0xfe, /* 0xFE Procedure Already in progress */ - ESP_GATT_OUT_OF_RANGE = 0xff, /* 0xFFAttribute value out of range */ + ESP_GATT_OK = 0x0, + ESP_GATT_INVALID_HANDLE = 0x01, /* 0x0001 */ + ESP_GATT_READ_NOT_PERMIT = 0x02, /* 0x0002 */ + ESP_GATT_WRITE_NOT_PERMIT = 0x03, /* 0x0003 */ + ESP_GATT_INVALID_PDU = 0x04, /* 0x0004 */ + ESP_GATT_INSUF_AUTHENTICATION = 0x05, /* 0x0005 */ + ESP_GATT_REQ_NOT_SUPPORTED = 0x06, /* 0x0006 */ + ESP_GATT_INVALID_OFFSET = 0x07, /* 0x0007 */ + ESP_GATT_INSUF_AUTHORIZATION = 0x08, /* 0x0008 */ + ESP_GATT_PREPARE_Q_FULL = 0x09, /* 0x0009 */ + ESP_GATT_NOT_FOUND = 0x0a, /* 0x000a */ + ESP_GATT_NOT_LONG = 0x0b, /* 0x000b */ + ESP_GATT_INSUF_KEY_SIZE = 0x0c, /* 0x000c */ + ESP_GATT_INVALID_ATTR_LEN = 0x0d, /* 0x000d */ + ESP_GATT_ERR_UNLIKELY = 0x0e, /* 0x000e */ + ESP_GATT_INSUF_ENCRYPTION = 0x0f, /* 0x000f */ + ESP_GATT_UNSUPPORT_GRP_TYPE = 0x10, /* 0x0010 */ + ESP_GATT_INSUF_RESOURCE = 0x11, /* 0x0011 */ + + ESP_GATT_NO_RESOURCES = 0x80, /* 0x80 */ + ESP_GATT_INTERNAL_ERROR = 0x81, /* 0x81 */ + ESP_GATT_WRONG_STATE = 0x82, /* 0x82 */ + ESP_GATT_DB_FULL = 0x83, /* 0x83 */ + ESP_GATT_BUSY = 0x84, /* 0x84 */ + ESP_GATT_ERROR = 0x85, /* 0x85 */ + ESP_GATT_CMD_STARTED = 0x86, /* 0x86 */ + ESP_GATT_ILLEGAL_PARAMETER = 0x87, /* 0x87 */ + ESP_GATT_PENDING = 0x88, /* 0x88 */ + ESP_GATT_AUTH_FAIL = 0x89, /* 0x89 */ + ESP_GATT_MORE = 0x8a, /* 0x8a */ + ESP_GATT_INVALID_CFG = 0x8b, /* 0x8b */ + ESP_GATT_SERVICE_STARTED = 0x8c, /* 0x8c */ + ESP_GATT_ENCRYPED_MITM = ESP_GATT_OK, + ESP_GATT_ENCRYPED_NO_MITM = 0x8d, /* 0x8d */ + ESP_GATT_NOT_ENCRYPTED = 0x8e, /* 0x8e */ + ESP_GATT_CONGESTED = 0x8f, /* 0x8f */ + ESP_GATT_DUP_REG = 0x90, /* 0x90 */ + ESP_GATT_ALREADY_OPEN = 0x91, /* 0x91 */ + ESP_GATT_CANCEL = 0x92, /* 0x92 */ + + /* 0xE0 ~ 0xFC reserved for future use */ + ESP_GATT_CCC_CFG_ERR = 0xfd, /* 0xFD Client Characteristic Configuration Descriptor Improperly Configured */ + ESP_GATT_PRC_IN_PROGRESS = 0xfe, /* 0xFE Procedure Already in progress */ + ESP_GATT_OUT_OF_RANGE = 0xff, /* 0xFFAttribute value out of range */ } esp_gatt_status_t; typedef enum { @@ -82,53 +82,53 @@ typedef enum { } esp_gatt_reason_t; typedef struct { - esp_bt_uuid_t uuid; - uint8_t inst_id; + esp_bt_uuid_t uuid; + uint8_t inst_id; } __attribute__((packed)) esp_gatt_id_t; typedef struct { - esp_gatt_id_t id; - bool is_primary; + esp_gatt_id_t id; + bool is_primary; } __attribute__((packed)) esp_gatt_srvc_id_t; typedef enum { - AUTH_REQ_NO_SCATTERNET, /* Device doesn't support scatternet, it might - support "role switch during connection" for - an incoming connection, when it already has - another connection in master role */ - AUTH_REQ_PARTIAL_SCATTERNET, /* Device supports partial scatternet. It can have - simulateous connection in Master and Slave roles - for short period of time */ - AUTH_REQ_FULL_SCATTERNET /* Device can have simultaneous connection in master - and slave roles */ + AUTH_REQ_NO_SCATTERNET, /* Device doesn't support scatternet, it might + support "role switch during connection" for + an incoming connection, when it already has + another connection in master role */ + AUTH_REQ_PARTIAL_SCATTERNET, /* Device supports partial scatternet. It can have + simulateous connection in Master and Slave roles + for short period of time */ + AUTH_REQ_FULL_SCATTERNET /* Device can have simultaneous connection in master + and slave roles */ } esp_gatt_auth_req_t; /* Attribute permissions */ typedef enum { - ESP_GATT_PERM_READ = (1 << 0), /* bit 0 - 0x0001 */ - ESP_GATT_PERM_READ_ENCRYPTED = (1 << 1), /* bit 1 - 0x0002 */ - ESP_GATT_PERM_READ_ENC_MITM = (1 << 2), /* bit 2 - 0x0004 */ - ESP_GATT_PERM_WRITE = (1 << 4), /* bit 4 - 0x0010 */ - ESP_GATT_PERM_WRITE_ENCRYPTED = (1 << 5), /* bit 5 - 0x0020 */ - ESP_GATT_PERM_WRITE_ENC_MITM = (1 << 6), /* bit 6 - 0x0040 */ - ESP_GATT_PERM_WRITE_SIGNED = (1 << 7), /* bit 7 - 0x0080 */ - ESP_GATT_PERM_WRITE_SIGNED_MITM = (1 << 8), /* bit 8 - 0x0100 */ + ESP_GATT_PERM_READ = (1 << 0), /* bit 0 - 0x0001 */ + ESP_GATT_PERM_READ_ENCRYPTED = (1 << 1), /* bit 1 - 0x0002 */ + ESP_GATT_PERM_READ_ENC_MITM = (1 << 2), /* bit 2 - 0x0004 */ + ESP_GATT_PERM_WRITE = (1 << 4), /* bit 4 - 0x0010 */ + ESP_GATT_PERM_WRITE_ENCRYPTED = (1 << 5), /* bit 5 - 0x0020 */ + ESP_GATT_PERM_WRITE_ENC_MITM = (1 << 6), /* bit 6 - 0x0040 */ + ESP_GATT_PERM_WRITE_SIGNED = (1 << 7), /* bit 7 - 0x0080 */ + ESP_GATT_PERM_WRITE_SIGNED_MITM = (1 << 8), /* bit 8 - 0x0100 */ } esp_gatt_perm_t; /* definition of characteristic properties */ typedef enum { - ESP_GATT_CHAR_PROP_BIT_BROADCAST = (1 << 0), /* 0x01 */ - ESP_GATT_CHAR_PROP_BIT_READ = (1 << 1), /* 0x02 */ - ESP_GATT_CHAR_PROP_BIT_WRITE_NR = (1 << 2), /* 0x04 */ - ESP_GATT_CHAR_PROP_BIT_WRITE = (1 << 3), /* 0x08 */ - ESP_GATT_CHAR_PROP_BIT_NOTIFY = (1 << 4), /* 0x10 */ - ESP_GATT_CHAR_PROP_BIT_INDICATE = (1 << 5), /* 0x20 */ - ESP_GATT_CHAR_PROP_BIT_AUTH = (1 << 6), /* 0x40 */ - ESP_GATT_CHAR_PROP_BIT_EXT_PROP = (1 << 7), /* 0x80 */ + ESP_GATT_CHAR_PROP_BIT_BROADCAST = (1 << 0), /* 0x01 */ + ESP_GATT_CHAR_PROP_BIT_READ = (1 << 1), /* 0x02 */ + ESP_GATT_CHAR_PROP_BIT_WRITE_NR = (1 << 2), /* 0x04 */ + ESP_GATT_CHAR_PROP_BIT_WRITE = (1 << 3), /* 0x08 */ + ESP_GATT_CHAR_PROP_BIT_NOTIFY = (1 << 4), /* 0x10 */ + ESP_GATT_CHAR_PROP_BIT_INDICATE = (1 << 5), /* 0x20 */ + ESP_GATT_CHAR_PROP_BIT_AUTH = (1 << 6), /* 0x40 */ + ESP_GATT_CHAR_PROP_BIT_EXT_PROP = (1 << 7), /* 0x80 */ } esp_gatt_char_prop_t; -#define ESP_GATT_MAX_ATTR_LEN 600 //as same as GATT_MAX_ATTR_LEN +#define ESP_GATT_MAX_ATTR_LEN 600 //as same as GATT_MAX_ATTR_LEN typedef struct { uint8_t value[ESP_GATT_MAX_ATTR_LEN]; @@ -140,10 +140,10 @@ typedef struct { /** GATT remote read request response type */ typedef union { - esp_gatt_value_t attr_value; + esp_gatt_value_t attr_value; uint16_t handle; } esp_gatt_rsp_t; -typedef uint32_t esp_gatt_if_t; +typedef uint32_t esp_gatt_if_t; #endif /* __ESP_GATT_DEFS_H__ */ diff --git a/components/bt/bluedroid/api/include/esp_gattc_api.h b/components/bt/bluedroid/api/include/esp_gattc_api.h index 54cd7a87b4..5b5fff5fb7 100644 --- a/components/bt/bluedroid/api/include/esp_gattc_api.h +++ b/components/bt/bluedroid/api/include/esp_gattc_api.h @@ -21,40 +21,40 @@ #include "esp_err.h" /* Client callback function events */ -#define ESP_GATTC_REG_EVT 0 /* GATT client is registered. */ -#define ESP_GATTC_UNREG_EVT 1 /* GATT client unregistered event */ -#define ESP_GATTC_OPEN_EVT 2 /* GATTC open request status event */ -#define ESP_GATTC_READ_CHAR_EVT 3 /* GATT read characteristic event */ -#define ESP_GATTC_WRITE_CHAR_EVT 4 /* GATT write characteristic or char descriptor event */ -#define ESP_GATTC_CLOSE_EVT 5 /* GATTC close request status event */ -#define ESP_GATTC_SEARCH_CMPL_EVT 6 /* GATT discovery complete event */ -#define ESP_GATTC_SEARCH_RES_EVT 7 /* GATT discovery result event */ -#define ESP_GATTC_READ_DESCR_EVT 8 /* GATT read characterisitc descriptor event */ -#define ESP_GATTC_WRITE_DESCR_EVT 9 /* GATT write characteristic descriptor event */ -#define ESP_GATTC_NOTIFY_EVT 10 /* GATT attribute notification event */ -#define ESP_GATTC_PREP_WRITE_EVT 11 /* GATT prepare write event */ -#define ESP_GATTC_EXEC_EVT 12 /* execute write complete event */ -#define ESP_GATTC_ACL_EVT 13 /* ACL up event */ -#define ESP_GATTC_CANCEL_OPEN_EVT 14 /* cancel open event */ -#define ESP_GATTC_SRVC_CHG_EVT 15 /* service change event */ -#define ESP_GATTC_ENC_CMPL_CB_EVT 17 /* encryption complete callback event */ -#define ESP_GATTC_CFG_MTU_EVT 18 /* configure MTU complete event */ -#define ESP_GATTC_ADV_DATA_EVT 19 /* ADV data event */ -#define ESP_GATTC_MULT_ADV_ENB_EVT 20 /* Enable Multi ADV event */ -#define ESP_GATTC_MULT_ADV_UPD_EVT 21 /* Update parameter event */ -#define ESP_GATTC_MULT_ADV_DATA_EVT 22 /* Multi ADV data event */ -#define ESP_GATTC_MULT_ADV_DIS_EVT 23 /* Disable Multi ADV event */ -#define ESP_GATTC_CONGEST_EVT 24 /* Congestion event */ -#define ESP_GATTC_BTH_SCAN_ENB_EVT 25 /* Enable batch scan event */ -#define ESP_GATTC_BTH_SCAN_CFG_EVT 26 /* Config storage event */ -#define ESP_GATTC_BTH_SCAN_RD_EVT 27 /* Batch scan reports read event */ -#define ESP_GATTC_BTH_SCAN_THR_EVT 28 /* Batch scan threshold event */ -#define ESP_GATTC_BTH_SCAN_PARAM_EVT 29 /* Batch scan param event */ -#define ESP_GATTC_BTH_SCAN_DIS_EVT 30 /* Disable batch scan event */ -#define ESP_GATTC_SCAN_FLT_CFG_EVT 31 /* Scan filter config event */ -#define ESP_GATTC_SCAN_FLT_PARAM_EVT 32 /* Param filter event */ -#define ESP_GATTC_SCAN_FLT_STATUS_EVT 33 /* Filter status event */ -#define ESP_GATTC_ADV_VSC_EVT 34 /* ADV VSC event */ +#define ESP_GATTC_REG_EVT 0 /* GATT client is registered. */ +#define ESP_GATTC_UNREG_EVT 1 /* GATT client unregistered event */ +#define ESP_GATTC_OPEN_EVT 2 /* GATTC open request status event */ +#define ESP_GATTC_READ_CHAR_EVT 3 /* GATT read characteristic event */ +#define ESP_GATTC_WRITE_CHAR_EVT 4 /* GATT write characteristic or char descriptor event */ +#define ESP_GATTC_CLOSE_EVT 5 /* GATTC close request status event */ +#define ESP_GATTC_SEARCH_CMPL_EVT 6 /* GATT discovery complete event */ +#define ESP_GATTC_SEARCH_RES_EVT 7 /* GATT discovery result event */ +#define ESP_GATTC_READ_DESCR_EVT 8 /* GATT read characterisitc descriptor event */ +#define ESP_GATTC_WRITE_DESCR_EVT 9 /* GATT write characteristic descriptor event */ +#define ESP_GATTC_NOTIFY_EVT 10 /* GATT attribute notification event */ +#define ESP_GATTC_PREP_WRITE_EVT 11 /* GATT prepare write event */ +#define ESP_GATTC_EXEC_EVT 12 /* execute write complete event */ +#define ESP_GATTC_ACL_EVT 13 /* ACL up event */ +#define ESP_GATTC_CANCEL_OPEN_EVT 14 /* cancel open event */ +#define ESP_GATTC_SRVC_CHG_EVT 15 /* service change event */ +#define ESP_GATTC_ENC_CMPL_CB_EVT 17 /* encryption complete callback event */ +#define ESP_GATTC_CFG_MTU_EVT 18 /* configure MTU complete event */ +#define ESP_GATTC_ADV_DATA_EVT 19 /* ADV data event */ +#define ESP_GATTC_MULT_ADV_ENB_EVT 20 /* Enable Multi ADV event */ +#define ESP_GATTC_MULT_ADV_UPD_EVT 21 /* Update parameter event */ +#define ESP_GATTC_MULT_ADV_DATA_EVT 22 /* Multi ADV data event */ +#define ESP_GATTC_MULT_ADV_DIS_EVT 23 /* Disable Multi ADV event */ +#define ESP_GATTC_CONGEST_EVT 24 /* Congestion event */ +#define ESP_GATTC_BTH_SCAN_ENB_EVT 25 /* Enable batch scan event */ +#define ESP_GATTC_BTH_SCAN_CFG_EVT 26 /* Config storage event */ +#define ESP_GATTC_BTH_SCAN_RD_EVT 27 /* Batch scan reports read event */ +#define ESP_GATTC_BTH_SCAN_THR_EVT 28 /* Batch scan threshold event */ +#define ESP_GATTC_BTH_SCAN_PARAM_EVT 29 /* Batch scan param event */ +#define ESP_GATTC_BTH_SCAN_DIS_EVT 30 /* Disable batch scan event */ +#define ESP_GATTC_SCAN_FLT_CFG_EVT 31 /* Scan filter config event */ +#define ESP_GATTC_SCAN_FLT_PARAM_EVT 32 /* Param filter event */ +#define ESP_GATTC_SCAN_FLT_STATUS_EVT 33 /* Filter status event */ +#define ESP_GATTC_ADV_VSC_EVT 34 /* ADV VSC event */ #define ESP_GATTC_GET_CHAR_EVT 35 /* get characteristic event */ #define ESP_GATTC_GET_DESCR_EVT 36 /* get characteristic descriptor event */ @@ -63,12 +63,12 @@ #define ESP_GATTC_UNREG_FOR_NOTIFY_EVT 39 /* unregister for notification event */ -#define ESP_GATT_DEF_BLE_MTU_SIZE 23 -#define ESP_GATT_MAX_MTU_SIZE 517 +#define ESP_GATT_DEF_BLE_MTU_SIZE 23 +#define ESP_GATT_MAX_MTU_SIZE 517 /* esp_ble_gattc_cb_param_t */ typedef union { - /*registration data for ESP_GATTC_REG_EVT */ + /*registration data for ESP_GATTC_REG_EVT */ struct gattc_reg_evt_param { esp_gatt_status_t status; esp_gatt_if_t gatt_if; @@ -100,7 +100,7 @@ typedef union { esp_gatt_status_t status; uint16_t mtu; } cfg_mtu; - + /* ESP_GATTC_SEARCH_CMPL_EVT */ struct gattc_search_cmpl_evt_param { uint16_t conn_id; @@ -112,18 +112,18 @@ typedef union { uint16_t conn_id; esp_gatt_srvc_id_t service_id; } search_res; - + /* ESP_GATTC_READ_CHAR_EVT, ESP_GATTC_READ_DESCR_EVT */ - struct gattc_read_char_evt_param { - uint16_t conn_id; - esp_gatt_status_t status; - esp_gatt_srvc_id_t srvc_id; - esp_gatt_id_t char_id; - esp_gatt_id_t descr_id; - uint8_t *value; - uint16_t value_type; - uint16_t value_len; - } read; /* ESP_GATTC_READ_CHAR_EVT */ + struct gattc_read_char_evt_param { + uint16_t conn_id; + esp_gatt_status_t status; + esp_gatt_srvc_id_t srvc_id; + esp_gatt_id_t char_id; + esp_gatt_id_t descr_id; + uint8_t *value; + uint16_t value_type; + uint16_t value_len; + } read; /* ESP_GATTC_READ_CHAR_EVT */ /* ESP_GATTC_WRITE_CHAR_EVT, ESP_GATTC_PREP_WRITE_EVT, ESP_GATTC_WRITE_DESCR_EVT */ struct gattc_write_evt_param { @@ -156,7 +156,7 @@ typedef union { struct gattc_srvc_chg_evt_param { esp_bd_addr_t remote_bda; } srvc_chg; - + /* ESP_GATTC_CONGEST_EVT */ struct gattc_congest_evt_param { uint16_t conn_id; @@ -189,18 +189,18 @@ typedef union { esp_gatt_srvc_id_t incl_srvc_id; } get_incl_srvc; - /* ESP_GATTC_REG_FOR_NOTIF_EVT, ESP_GATTC_UNREG_FOR_NOTIF_EVT */ - struct gattc_reg_for_notify_evt_param { - esp_gatt_status_t status; - esp_gatt_srvc_id_t srvc_id; - esp_gatt_id_t char_id; - } reg_for_notify; + /* ESP_GATTC_REG_FOR_NOTIF_EVT, ESP_GATTC_UNREG_FOR_NOTIF_EVT */ + struct gattc_reg_for_notify_evt_param { + esp_gatt_status_t status; + esp_gatt_srvc_id_t srvc_id; + esp_gatt_id_t char_id; + } reg_for_notify; - struct gattc_unreg_for_notify_evt_param { - esp_gatt_status_t status; - esp_gatt_srvc_id_t srvc_id; - esp_gatt_id_t char_id; - } unreg_for_notify; + struct gattc_unreg_for_notify_evt_param { + esp_gatt_status_t status; + esp_gatt_srvc_id_t srvc_id; + esp_gatt_id_t char_id; + } unreg_for_notify; } esp_ble_gattc_cb_param_t; @@ -210,7 +210,7 @@ typedef union { ** ** @function esp_ble_gattc_app_register_callback ** -** @brief This function is called to register application callbacks +** @brief This function is called to register application callbacks ** with GATTC module. ** ** @param[in] callback - pointer to the application callback function. @@ -226,7 +226,7 @@ esp_err_t esp_ble_gattc_register_callback(esp_profile_cb_t callback); ** ** @function esp_ble_gattc_app_register ** -** @brief This function is called to register application callbacks +** @brief This function is called to register application callbacks ** with GATTC module. ** ** @param[in] app_id : Application Identitfy (UUID), for different application @@ -241,7 +241,7 @@ esp_err_t esp_ble_gattc_app_register(uint16_t app_id); ** ** @function esp_ble_gattc_app_unregister ** -** @brief This function is called to unregister an application +** @brief This function is called to unregister an application ** from GATTC module. ** ** @param[in] gatt_if - app identifier. @@ -256,13 +256,13 @@ esp_err_t esp_ble_gattc_app_unregister(esp_gatt_if_t gatt_if); ** ** @function esp_ble_gattc_conn ** -** @brief Open a direct connection or add a background auto connection +** @brief Open a direct connection or add a background auto connection ** bd address ** ** @param[in] gatt_if: application identity. ** @param[in] remote_bda: remote device BD address. ** @param[in] is_direct: direct connection or background auto connection -** +** ** @return ESP_OK - success, other - failed ** *******************************************************************************/ @@ -272,7 +272,7 @@ esp_err_t esp_ble_gattc_open(esp_gatt_if_t gatt_if, esp_bd_addr_t remote_bda, bo ** ** @function esp_ble_gattc_close ** -** @brief Close a connection to a GATT server. +** @brief Close a connection to a GATT server. ** ** @param[in] conn_id: connectino ID to be closed. ** @@ -287,7 +287,7 @@ esp_err_t esp_ble_gattc_close (uint16_t conn_id); ** ** @function esp_ble_gattc_config_mtu ** -** @brief Configure the MTU size in the GATT channel. This can be done +** @brief Configure the MTU size in the GATT channel. This can be done ** only once per connection. ** ** @param[in] conn_id: connection ID. @@ -303,7 +303,7 @@ esp_err_t esp_ble_gattc_config_mtu (uint16_t conn_id, uint16_t mtu); ** ** @function esp_ble_gattc_search_service ** -** @brief This function is called to request a GATT service discovery +** @brief This function is called to request a GATT service discovery ** on a GATT server. This function report service search result ** by a callback event, and followed by a service search complete ** event. @@ -322,27 +322,27 @@ esp_err_t esp_ble_gattc_search_service(uint16_t conn_id, esp_bt_uuid_t *filter_u ** ** @function esp_ble_gattc_get_characteristic ** -** @brief This function is called to find the first characteristic of the +** @brief This function is called to find the first characteristic of the ** service on the given server. ** ** @param[in] conn_id: connection ID which identify the server. -** +** ** @param[in] srvc_id: serivce ID -** -** @param[in] start_char_id: the start characteristic ID +** +** @param[in] start_char_id: the start characteristic ID ** ** @return ESP_OK - success, other - failed ** *****************************************************************************************************/ esp_err_t esp_ble_gattc_get_characteristic(uint16_t conn_id, - esp_gatt_srvc_id_t *srvc_id, esp_gatt_id_t *start_char_id); + esp_gatt_srvc_id_t *srvc_id, esp_gatt_id_t *start_char_id); /**************************************************************************************************** ** ** @function esp_ble_gattc_get_descriptor ** -** @brief This function is called to find the descriptor of the +** @brief This function is called to find the descriptor of the ** service on the given server. ** ** @param[in] conn_id: connection ID which identify the server. @@ -354,16 +354,16 @@ esp_err_t esp_ble_gattc_get_characteristic(uint16_t conn_id, ** @return ESP_OK - success, other - failed ** *****************************************************************************************************/ -esp_err_t esp_ble_gattc_get_descriptor(uint16_t conn_id, - esp_gatt_srvc_id_t *srvc_id, esp_gatt_id_t *char_id, - esp_gatt_id_t *start_descr_id); +esp_err_t esp_ble_gattc_get_descriptor(uint16_t conn_id, + esp_gatt_srvc_id_t *srvc_id, esp_gatt_id_t *char_id, + esp_gatt_id_t *start_descr_id); /**************************************************************************************************** ** ** @function esp_ble_gattc_get_include_service ** -** @brief This function is called to find the first characteristic of the +** @brief This function is called to find the first characteristic of the ** service on the given server. ** ** @param[in] conn_id: connection ID which identify the server. @@ -376,7 +376,7 @@ esp_err_t esp_ble_gattc_get_descriptor(uint16_t conn_id, esp_err_t esp_ble_gattc_get_included_service(uint16_t conn_id, - esp_gatt_srvc_id_t *srvc_id, esp_gatt_srvc_id_t *start_incl_srvc_id); + esp_gatt_srvc_id_t *srvc_id, esp_gatt_srvc_id_t *start_incl_srvc_id); @@ -384,7 +384,7 @@ esp_err_t esp_ble_gattc_get_included_service(uint16_t conn_id, ** ** @function esp_ble_gattc_read_char ** -** @brief This function is called to read a service's characteristics of +** @brief This function is called to read a service's characteristics of ** the given characteritisc ID.UTH_REQ_NO_SCATTERNET ** ** @param[in] conn_id - connectino ID. @@ -396,9 +396,9 @@ esp_err_t esp_ble_gattc_get_included_service(uint16_t conn_id, ** *******************************************************************************/ esp_err_t esp_ble_gattc_read_char (uint16_t conn_id, - esp_gatt_srvc_id_t *srvc_id, - esp_gatt_id_t *char_id, - esp_gatt_auth_req_t auth_req); + esp_gatt_srvc_id_t *srvc_id, + esp_gatt_id_t *char_id, + esp_gatt_auth_req_t auth_req); @@ -406,7 +406,7 @@ esp_err_t esp_ble_gattc_read_char (uint16_t conn_id, ** ** @function esp_ble_gattc_read_char_descr ** -** @brief This function is called to read a characteristics descriptor. +** @brief This function is called to read a characteristics descriptor. ** ** @param[in] conn_id - connection ID. ** @param[in] srvc_id - serivcie ID. @@ -417,17 +417,17 @@ esp_err_t esp_ble_gattc_read_char (uint16_t conn_id, ** *******************************************************************************/ esp_err_t esp_ble_gattc_read_char_descr (uint16_t conn_id, - esp_gatt_srvc_id_t *srvc_id, - esp_gatt_id_t *char_id, - esp_gatt_id_t *descr_id, - esp_gatt_auth_req_t auth_req); + esp_gatt_srvc_id_t *srvc_id, + esp_gatt_id_t *char_id, + esp_gatt_id_t *descr_id, + esp_gatt_auth_req_t auth_req); /******************************************************************************* ** ** @function esp_ble_gattc_write_char ** -** @brief This function is called to write characteristic value. +** @brief This function is called to write characteristic value. ** ** @param[in] conn_id - connection ID. ** @param[in] srvc_id - serivcie ID. @@ -439,18 +439,18 @@ esp_err_t esp_ble_gattc_read_char_descr (uint16_t conn_id, ** *******************************************************************************/ esp_err_t esp_ble_gattc_write_char( uint16_t conn_id, - esp_gatt_srvc_id_t *srvc_id, - esp_gatt_id_t *char_id, - uint16_t value_len, - uint8_t *value, - esp_gatt_auth_req_t auth_req); + esp_gatt_srvc_id_t *srvc_id, + esp_gatt_id_t *char_id, + uint16_t value_len, + uint8_t *value, + esp_gatt_auth_req_t auth_req); /******************************************************************************* ** ** @function esp_ble_gattc_write_char_descr ** -** @brief This function is called to write characteristic descriptor value. +** @brief This function is called to write characteristic descriptor value. ** ** @param[in] conn_id - connection ID ** @param[in] srvc_id - serivcie ID. @@ -463,12 +463,12 @@ esp_err_t esp_ble_gattc_write_char( uint16_t conn_id, ** *******************************************************************************/ esp_err_t esp_ble_gattc_write_char_descr (uint16_t conn_id, - esp_gatt_srvc_id_t *srvc_id, - esp_gatt_id_t *char_id, - esp_gatt_id_t *descr_id, - uint16_t value_len, - uint8_t *value, - esp_gatt_auth_req_t auth_req); + esp_gatt_srvc_id_t *srvc_id, + esp_gatt_id_t *char_id, + esp_gatt_id_t *descr_id, + uint16_t value_len, + uint8_t *value, + esp_gatt_auth_req_t auth_req); @@ -476,7 +476,7 @@ esp_err_t esp_ble_gattc_write_char_descr (uint16_t conn_id, ** ** @function esp_ble_gattc_prepare_write ** -** @brief This function is called to prepare write a characteristic value. +** @brief This function is called to prepare write a characteristic value. ** ** @param[in] conn_id - connection ID. ** @param[in] char_id - GATT characteritic ID of the service. @@ -488,12 +488,12 @@ esp_err_t esp_ble_gattc_write_char_descr (uint16_t conn_id, ** *******************************************************************************/ esp_err_t esp_ble_gattc_prepare_write(uint16_t conn_id, - esp_gatt_srvc_id_t *srvc_id, - esp_gatt_id_t *char_id, - uint16_t offset, - uint16_t value_len, - uint8_t *value, - esp_gatt_auth_req_t auth_req); + esp_gatt_srvc_id_t *srvc_id, + esp_gatt_id_t *char_id, + uint16_t offset, + uint16_t value_len, + uint8_t *value, + esp_gatt_auth_req_t auth_req); /******************************************************************************* ** @@ -525,9 +525,9 @@ esp_err_t esp_ble_gattc_execute_write (uint16_t conn_id, bool is_execute); ** *******************************************************************************/ esp_gatt_status_t esp_ble_gattc_register_for_notify (esp_gatt_if_t gatt_if, - esp_bd_addr_t server_bda, - esp_gatt_srvc_id_t *srvc_id, - esp_gatt_id_t *char_id); + esp_bd_addr_t server_bda, + esp_gatt_srvc_id_t *srvc_id, + esp_gatt_id_t *char_id); @@ -546,9 +546,9 @@ esp_gatt_status_t esp_ble_gattc_register_for_notify (esp_gatt_if_t gatt_if, ** *******************************************************************************/ esp_gatt_status_t esp_ble_gattc_unregister_for_notify (esp_gatt_if_t gatt_if, - esp_bd_addr_t server_bda, - esp_gatt_srvc_id_t *srvc_id, - esp_gatt_id_t *char_id); + esp_bd_addr_t server_bda, + esp_gatt_srvc_id_t *srvc_id, + esp_gatt_id_t *char_id); #endif /* __ESP_GATTC_API_H__ */ diff --git a/components/bt/bluedroid/api/include/esp_gatts_api.h b/components/bt/bluedroid/api/include/esp_gatts_api.h index c3adb33822..c2420379d3 100644 --- a/components/bt/bluedroid/api/include/esp_gatts_api.h +++ b/components/bt/bluedroid/api/include/esp_gatts_api.h @@ -24,11 +24,11 @@ /* GATT Server Data Structure */ /* Server callback function events */ #define ESP_GATTS_REG_EVT 0 -#define ESP_GATTS_READ_EVT 1 -#define ESP_GATTS_WRITE_EVT 2 -#define ESP_GATTS_EXEC_WRITE_EVT 3 -#define ESP_GATTS_MTU_EVT 4 -#define ESP_GATTS_CONF_EVT 5 +#define ESP_GATTS_READ_EVT 1 +#define ESP_GATTS_WRITE_EVT 2 +#define ESP_GATTS_EXEC_WRITE_EVT 3 +#define ESP_GATTS_MTU_EVT 4 +#define ESP_GATTS_CONF_EVT 5 #define ESP_GATTS_UNREG_EVT 6 #define ESP_GATTS_CREATE_EVT 7 #define ESP_GATTS_ADD_INCL_SRVC_EVT 8 @@ -49,129 +49,129 @@ /* esp_ble_gatts_cb_param_t */ typedef union { - //ESP_GATTS_REG_EVT - struct gatts_reg_evt_param { - int status; - uint16_t gatt_if; - uint16_t app_id; - } reg; - // param for ESP_GATTS_READ_EVT - struct gatts_read_evt_param { - uint16_t conn_id; - uint32_t trans_id; - esp_bd_addr_t bda; - uint16_t handle; - uint16_t offset; - bool is_long; - } read; - // param for ESP_GATTS_WRITE_EVT - struct gatts_write_evt_param { - uint16_t conn_id; - uint32_t trans_id; - esp_bd_addr_t bda; - uint16_t handle; - uint16_t offset; - bool need_rsp; - bool is_prep; - uint16_t len; - uint8_t *value; - } write; - // param for ESP_GATTS_EXEC_WRITE_EVT - struct gatts_exec_write_evt_param { - uint16_t conn_id; - uint32_t trans_id; - esp_bd_addr_t bda; + //ESP_GATTS_REG_EVT + struct gatts_reg_evt_param { + int status; + uint16_t gatt_if; + uint16_t app_id; + } reg; + // param for ESP_GATTS_READ_EVT + struct gatts_read_evt_param { + uint16_t conn_id; + uint32_t trans_id; + esp_bd_addr_t bda; + uint16_t handle; + uint16_t offset; + bool is_long; + } read; + // param for ESP_GATTS_WRITE_EVT + struct gatts_write_evt_param { + uint16_t conn_id; + uint32_t trans_id; + esp_bd_addr_t bda; + uint16_t handle; + uint16_t offset; + bool need_rsp; + bool is_prep; + uint16_t len; + uint8_t *value; + } write; + // param for ESP_GATTS_EXEC_WRITE_EVT + struct gatts_exec_write_evt_param { + uint16_t conn_id; + uint32_t trans_id; + esp_bd_addr_t bda; #define ESP_GATT_PREP_WRITE_CANCEL 0x00 #define ESP_GATT_PREP_WRITE_EXEC 0x01 - uint8_t exec_write_flag; - } exec_write; - // param for ESP_GATTS_MTU_EVT - struct gatts_mtu_evt_param { - uint16_t conn_id; - uint16_t mtu; - } mtu; - // param for ESP_GATTS_CONF_EVT - struct gatts_conf_evt_param { - uint16_t conn_id; - int status; - } conf; - // param for ESP_GATTS_DEREG_EVT, NONE - // param for ESP_GATTS_CREATE_EVT - struct gatts_create_evt_param { - int status; - uint16_t gatt_if; - uint16_t service_handle; //handle - esp_gatt_srvc_id_t service_id; //id - } create; - // param for ESP_GATTS_ADD_INCL_SRVC_EVT - struct gatts_add_incl_srvc_evt_param { - int status; - uint16_t gatt_if; - uint16_t attr_handle; //handle - uint16_t service_handle; //handle - } add_incl_srvc; - // param for ESP_GATTS_ADD_CHAR_EVT - struct gatts_add_char_evt_param { - int status; - uint16_t gatt_if; - uint16_t attr_handle; //handle - uint16_t service_handle; //handle - esp_bt_uuid_t char_uuid; - } add_char; - // param for ESP_GATTS_ADD_CHAR_DESCR_EVT - struct gatts_add_char_descr_evt_param { - int status; - uint16_t gatt_if; - uint16_t attr_handle; //handle - uint16_t service_handle; //handle - esp_bt_uuid_t char_uuid; - } add_char_descr; - // param for ESP_GATTS_DELELTE_EVT - struct gatts_delete_evt_param { - int status; - uint16_t gatt_if; - uint16_t service_handle; //handle - } del; - // param for ESP_GATTS_START_EVT - struct gatts_start_evt_param { - int status; - uint16_t gatt_if; - uint16_t service_handle; //handle - } start; - // param for ESP_GATTS_STOP_EVT - struct gatts_stop_evt_param { - int status; - uint16_t gatt_if; - uint16_t service_handle; //handle - } stop; - // param for ESP_GATTS_CONNECT_EVT - struct gatts_connect_evt_param { - uint16_t conn_id; - uint16_t gatt_if; - esp_bd_addr_t remote_bda; - bool is_connected; - } connect; - // param for ESP_GATTS_DISCONNECT_EVT - struct gatts_disconnect_evt_param { - uint16_t conn_id; - uint16_t gatt_if; - esp_bd_addr_t remote_bda; - bool is_connected; - } disconnect; - // param for ESP_GATTS_OPEN_EVT none - // param for ESP_GATTS_CANCEL_OPEN_EVT none - // param for ESP_GATTS_CLOSE_EVT none - // param for ESP_GATTS_LISTEN_EVT none - // param for ESP_GATTS_CONGEST_EVT - struct gatts_congest_evt_param { - uint16_t conn_id; - bool congested; - } congest; - // param for ESP_GATTS_RESPONSE_EVT - struct gatts_rsp_evt_param { - int status; //response status, 0 is success - uint16_t handle; //attribute handle which send response - } rsp; + uint8_t exec_write_flag; + } exec_write; + // param for ESP_GATTS_MTU_EVT + struct gatts_mtu_evt_param { + uint16_t conn_id; + uint16_t mtu; + } mtu; + // param for ESP_GATTS_CONF_EVT + struct gatts_conf_evt_param { + uint16_t conn_id; + int status; + } conf; + // param for ESP_GATTS_DEREG_EVT, NONE + // param for ESP_GATTS_CREATE_EVT + struct gatts_create_evt_param { + int status; + uint16_t gatt_if; + uint16_t service_handle; //handle + esp_gatt_srvc_id_t service_id; //id + } create; + // param for ESP_GATTS_ADD_INCL_SRVC_EVT + struct gatts_add_incl_srvc_evt_param { + int status; + uint16_t gatt_if; + uint16_t attr_handle; //handle + uint16_t service_handle; //handle + } add_incl_srvc; + // param for ESP_GATTS_ADD_CHAR_EVT + struct gatts_add_char_evt_param { + int status; + uint16_t gatt_if; + uint16_t attr_handle; //handle + uint16_t service_handle; //handle + esp_bt_uuid_t char_uuid; + } add_char; + // param for ESP_GATTS_ADD_CHAR_DESCR_EVT + struct gatts_add_char_descr_evt_param { + int status; + uint16_t gatt_if; + uint16_t attr_handle; //handle + uint16_t service_handle; //handle + esp_bt_uuid_t char_uuid; + } add_char_descr; + // param for ESP_GATTS_DELELTE_EVT + struct gatts_delete_evt_param { + int status; + uint16_t gatt_if; + uint16_t service_handle; //handle + } del; + // param for ESP_GATTS_START_EVT + struct gatts_start_evt_param { + int status; + uint16_t gatt_if; + uint16_t service_handle; //handle + } start; + // param for ESP_GATTS_STOP_EVT + struct gatts_stop_evt_param { + int status; + uint16_t gatt_if; + uint16_t service_handle; //handle + } stop; + // param for ESP_GATTS_CONNECT_EVT + struct gatts_connect_evt_param { + uint16_t conn_id; + uint16_t gatt_if; + esp_bd_addr_t remote_bda; + bool is_connected; + } connect; + // param for ESP_GATTS_DISCONNECT_EVT + struct gatts_disconnect_evt_param { + uint16_t conn_id; + uint16_t gatt_if; + esp_bd_addr_t remote_bda; + bool is_connected; + } disconnect; + // param for ESP_GATTS_OPEN_EVT none + // param for ESP_GATTS_CANCEL_OPEN_EVT none + // param for ESP_GATTS_CLOSE_EVT none + // param for ESP_GATTS_LISTEN_EVT none + // param for ESP_GATTS_CONGEST_EVT + struct gatts_congest_evt_param { + uint16_t conn_id; + bool congested; + } congest; + // param for ESP_GATTS_RESPONSE_EVT + struct gatts_rsp_evt_param { + int status; //response status, 0 is success + uint16_t handle; //attribute handle which send response + } rsp; } esp_ble_gatts_cb_param_t; /******************************************************************************* @@ -221,7 +221,7 @@ esp_err_t esp_ble_gatts_app_unregister(esp_gatt_if_t gatt_if); ** ** @function esp_ble_gatts_create_service ** -** @brief Create a service. When service creation is done, a callback +** @brief Create a service. When service creation is done, a callback ** event BTA_GATTS_CREATE_SRVC_EVT is called to report status ** and service ID to the profile. The service ID obtained in ** the callback function needs to be used when adding included @@ -235,7 +235,7 @@ esp_err_t esp_ble_gatts_app_unregister(esp_gatt_if_t gatt_if); ** *******************************************************************************/ esp_err_t esp_ble_gatts_create_service(esp_gatt_if_t gatt_if, - esp_gatt_srvc_id_t *service_id, uint16_t num_handle); + esp_gatt_srvc_id_t *service_id, uint16_t num_handle); @@ -243,7 +243,7 @@ esp_err_t esp_ble_gatts_create_service(esp_gatt_if_t gatt_if, ** ** @function esp_ble_gatts_add_include_service ** -** @brief This function is called to add an included service. After included +** @brief This function is called to add an included service. After included ** service is included, a callback event BTA_GATTS_ADD_INCL_SRVC_EVT ** is reported the included service ID. ** @@ -274,7 +274,7 @@ esp_err_t esp_ble_gatts_add_include_service(uint16_t service_handle, uint16_t in ** *******************************************************************************/ esp_err_t esp_ble_gatts_add_char(uint16_t service_handle, esp_bt_uuid_t *char_uuid, - esp_gatt_perm_t perm, esp_gatt_char_prop_t property); + esp_gatt_perm_t perm, esp_gatt_char_prop_t property); @@ -296,8 +296,8 @@ esp_err_t esp_ble_gatts_add_char(uint16_t service_handle, esp_bt_uuid_t *char_ ** *******************************************************************************/ esp_err_t esp_ble_gatts_add_char_descr (uint16_t service_handle, - esp_bt_uuid_t *descr_uuid, - esp_gatt_perm_t perm); + esp_bt_uuid_t *descr_uuid, + esp_gatt_perm_t perm); @@ -355,7 +355,7 @@ esp_err_t esp_ble_gatts_stop_service(uint16_t service_handle); ** @brief This function is called to read a characteristics descriptor. ** ** @param[in] conn_id - connection id to indicate. -** @param[in] attribute_handle - attribute handle to indicate. +** @param[in] attribute_handle - attribute handle to indicate. ** @param[in] value_len - indicate value length. ** @param[in] value: value to indicate. ** @param[in] need_confirm - if this indication expects a confirmation or not. @@ -364,7 +364,7 @@ esp_err_t esp_ble_gatts_stop_service(uint16_t service_handle); ** *******************************************************************************/ esp_err_t esp_ble_gatts_send_indicate(uint16_t conn_id, uint16_t attr_handle, - uint16_t value_len, uint8_t *value, bool need_confirm); + uint16_t value_len, uint8_t *value, bool need_confirm); /******************************************************************************* @@ -382,7 +382,7 @@ esp_err_t esp_ble_gatts_send_indicate(uint16_t conn_id, uint16_t attr_handle, ** *******************************************************************************/ esp_err_t esp_ble_gatts_send_response(uint16_t conn_id, uint32_t trans_id, - esp_gatt_status_t status, esp_gatt_rsp_t *rsp); + esp_gatt_status_t status, esp_gatt_rsp_t *rsp); /******************************************************************************* diff --git a/components/bt/bluedroid/api/include/esp_sdp_api.h b/components/bt/bluedroid/api/include/esp_sdp_api.h index 313e28c2b5..81add1e206 100644 --- a/components/bt/bluedroid/api/include/esp_sdp_api.h +++ b/components/bt/bluedroid/api/include/esp_sdp_api.h @@ -47,20 +47,19 @@ typedef struct { esp_bt_uuid_t uuid; int record_count; bt_sdp_record_t records[BT_SDP_MAX_RECORDS]; -} bt_sdp_search_comp_t; +} bt_sdp_search_comp_t; /* tBTA_SDP, bta_sdp_api.h */ -typedef union -{ +typedef union { bt_sdp_status_t status; bt_sdp_search_comp_t sdp_search_comp; } bt_sdp_t; -typedef void (bt_sdp_cb_t)(bt_sdp_evt_t event, bt_sdp_t *p_data, void * user_data); +typedef void (bt_sdp_cb_t)(bt_sdp_evt_t event, bt_sdp_t *p_data, void *user_data); esp_err_t esp_bt_sdp_enable(bt_sdp_cb_t *cback); -esp_err_t esp_bt_sdp_search(esp_bd_addr_t bd_addr, esp_bt_uuid_t* uuid); +esp_err_t esp_bt_sdp_search(esp_bd_addr_t bd_addr, esp_bt_uuid_t *uuid); esp_err_t esp_bt_sdp_create_record_by_user(void *user_data); @@ -83,8 +82,7 @@ typedef struct { } sdp_proto_elem_t; // tSDP_PROTOCOL_ELEM, sdp_api.h #define ESP_BT_SDP_MAX_LIST_ELEMS SDP_MAX_LIST_ELEMS // sdp_api.h -typedef struct -{ +typedef struct { uint16_t num_elems; sdp_proto_elem_t list_elem[ESP_BT_SDP_MAX_LIST_ELEMS]; } sdp_proto_list_elem_t; // tSDP_PROTO_LIST_ELEM, sdp_api.h @@ -112,19 +110,19 @@ bool esp_bt_sdp_add_protocol_list (uint32_t handle, uint16_t num_elem, sdp_proto_elem_t *p_elem_list); bool esp_bt_sdp_add_addition_protocol_lists(uint32_t handle, uint16_t num_elem, - sdp_proto_list_elem_t *p_proto_list); + sdp_proto_list_elem_t *p_proto_list); bool esp_bt_sdp_add_profile_dscp_list (uint32_t handle, uint16_t profile_uuid, uint16_t version); bool esp_bt_sdp_add_lang_base_attr_id_list(uint32_t handle, - uint16_t lang, uint16_t char_enc, - uint16_t base_id); + uint16_t lang, uint16_t char_enc, + uint16_t base_id); bool esp_bt_sdp_add_service_class_id_list(uint32_t handle, - uint16_t num_services, - uint16_t *p_service_uuids); + uint16_t num_services, + uint16_t *p_service_uuids); bool esp_bt_sdp_delete_attribute(uint32_t handle, uint16_t attr_id); diff --git a/components/bt/bluedroid/api/include/esp_sec_api.h b/components/bt/bluedroid/api/include/esp_sec_api.h index 9c07b635a5..f9b0f9ec14 100644 --- a/components/bt/bluedroid/api/include/esp_sec_api.h +++ b/components/bt/bluedroid/api/include/esp_sec_api.h @@ -19,56 +19,53 @@ #define APP_SEC_IRK_FLAG (0) #define RAND_NB_LEN 0x08 -#define SEC_KEY_LEN 0x10 - - /* - * STRUCTURES DEFINITIONS - **************************************************************************************** - */ +#define SEC_KEY_LEN 0x10 - - /// Generic Security key structure -typedef struct - { - /// Key value MSB -> LSB - UINT8 key[SEC_KEY_LEN]; - }smp_sec_key; - - ///Random number structure -typedef struct -{ - ///8-byte array for random number - UINT8 nb[RAND_NB_LEN]; -}rand_nb; - - typedef struct - { - // LTK - smp_sec_key ltk; - // Random Number - rand_nb rand_nb; - // EDIV - UINT16 ediv; - // LTK key size - UINT8 key_size; - - // Last paired peer address type - UINT8 peer_addr_type; - // Last paired peer address - BD_ADDR peer_addr; - - // authentication level - UINT8 auth; - - }tAPP_SEC_ENV; - - extern tAPP_SEC_ENV app_sec_env; - - /* - * GLOBAL FUNCTIONS DECLARATIONS +/* + * STRUCTURES DEFINITIONS **************************************************************************************** */ + +/// Generic Security key structure +typedef struct { + /// Key value MSB -> LSB + UINT8 key[SEC_KEY_LEN]; +} smp_sec_key; + +///Random number structure +typedef struct { + ///8-byte array for random number + UINT8 nb[RAND_NB_LEN]; +} rand_nb; + +typedef struct { + // LTK + smp_sec_key ltk; + // Random Number + rand_nb rand_nb; + // EDIV + UINT16 ediv; + // LTK key size + UINT8 key_size; + + // Last paired peer address type + UINT8 peer_addr_type; + // Last paired peer address + BD_ADDR peer_addr; + + // authentication level + UINT8 auth; + +} tAPP_SEC_ENV; + +extern tAPP_SEC_ENV app_sec_env; + +/* +* GLOBAL FUNCTIONS DECLARATIONS +**************************************************************************************** +*/ + void app_ble_sec_init(void); void app_ble_sec_pairing_cmp_evt_send(UINT8); diff --git a/components/bt/bluedroid/bta/dm/bta_dm_act.c b/components/bt/bluedroid/bta/dm/bta_dm_act.c old mode 100755 new mode 100644 index d3459216dd..7b60655691 --- a/components/bt/bluedroid/bta/dm/bta_dm_act.c +++ b/components/bt/bluedroid/bta/dm/bta_dm_act.c @@ -47,7 +47,7 @@ #endif static void bta_dm_inq_results_cb (tBTM_INQ_RESULTS *p_inq, UINT8 *p_eir); -static void bta_dm_inq_cmpl_cb (void * p_result); +static void bta_dm_inq_cmpl_cb (void *p_result); static void bta_dm_service_search_remname_cback (BD_ADDR bd_addr, DEV_CLASS dc, BD_NAME bd_name); static void bta_dm_remname_cback (tBTM_REMOTE_DEV_NAME *p_remote_name); static void bta_dm_find_services ( BD_ADDR bd_addr); @@ -56,7 +56,7 @@ static void bta_dm_sdp_callback (UINT16 sdp_status); static UINT8 bta_dm_authorize_cback (BD_ADDR bd_addr, DEV_CLASS dev_class, BD_NAME bd_name, UINT8 *service_name, UINT8 service_id, BOOLEAN is_originator); static UINT8 bta_dm_pin_cback (BD_ADDR bd_addr, DEV_CLASS dev_class, BD_NAME bd_name, BOOLEAN min_16_digit); static UINT8 bta_dm_new_link_key_cback(BD_ADDR bd_addr, DEV_CLASS dev_class, BD_NAME bd_name, LINK_KEY key, UINT8 key_type); -static UINT8 bta_dm_authentication_complete_cback(BD_ADDR bd_addr, DEV_CLASS dev_class,BD_NAME bd_name, int result); +static UINT8 bta_dm_authentication_complete_cback(BD_ADDR bd_addr, DEV_CLASS dev_class, BD_NAME bd_name, int result); static void bta_dm_local_name_cback(BD_ADDR bd_addr); static BOOLEAN bta_dm_check_av(UINT16 event); static void bta_dm_bl_change_cback (tBTM_BL_EVENT_DATA *p_data); @@ -92,24 +92,24 @@ static void bta_dm_adjust_roles(BOOLEAN delay_role_switch); static char *bta_dm_get_remname(void); static void bta_dm_bond_cancel_complete_cback(tBTM_STATUS result); -static BOOLEAN bta_dm_read_remote_device_name (BD_ADDR bd_addr,tBT_TRANSPORT transport); +static BOOLEAN bta_dm_read_remote_device_name (BD_ADDR bd_addr, tBT_TRANSPORT transport); static void bta_dm_discover_device(BD_ADDR remote_bd_addr); static void bta_dm_sys_hw_cback( tBTA_SYS_HW_EVT status ); static void bta_dm_disable_search_and_disc(void); #if ((defined BLE_INCLUDED) && (BLE_INCLUDED == TRUE)) - #if ((defined SMP_INCLUDED) && (SMP_INCLUDED == TRUE)) +#if ((defined SMP_INCLUDED) && (SMP_INCLUDED == TRUE)) static UINT8 bta_dm_ble_smp_cback (tBTM_LE_EVT event, BD_ADDR bda, tBTM_LE_EVT_DATA *p_data); - #endif +#endif static void bta_dm_ble_id_key_cback (UINT8 key_type, tBTM_BLE_LOCAL_KEYS *p_key); - #if ((defined BTA_GATT_INCLUDED) && (BTA_GATT_INCLUDED == TRUE)) +#if ((defined BTA_GATT_INCLUDED) && (BTA_GATT_INCLUDED == TRUE)) static void bta_dm_gattc_register(void); static void btm_dm_start_gatt_discovery(BD_ADDR bd_addr); static void bta_dm_cancel_gatt_discovery(BD_ADDR bd_addr); static void bta_dm_gattc_callback(tBTA_GATTC_EVT event, tBTA_GATTC *p_data); extern tBTA_DM_CONTRL_STATE bta_dm_pm_obtain_controller_state(void); - #endif +#endif #if BLE_VND_INCLUDED == TRUE static void bta_dm_ctrl_features_rd_cmpl_cback(tBTM_STATUS result); @@ -122,14 +122,13 @@ static void bta_dm_ctrl_features_rd_cmpl_cback(tBTM_STATUS result); static void bta_dm_remove_sec_dev_entry(BD_ADDR remote_bd_addr); static void bta_dm_observe_results_cb(tBTM_INQ_RESULTS *p_inq, UINT8 *p_eir); -static void bta_dm_observe_cmpl_cb(void * p_result); +static void bta_dm_observe_cmpl_cb(void *p_result); static void bta_dm_delay_role_switch_cback(TIMER_LIST_ENT *p_tle); -extern void sdpu_uuid16_to_uuid128(UINT16 uuid16, UINT8* p_uuid128); +extern void sdpu_uuid16_to_uuid128(UINT16 uuid16, UINT8 *p_uuid128); static void bta_dm_disable_timer_cback(TIMER_LIST_ENT *p_tle); -const UINT16 bta_service_id_to_uuid_lkup_tbl [BTA_MAX_SERVICE_ID] = -{ +const UINT16 bta_service_id_to_uuid_lkup_tbl [BTA_MAX_SERVICE_ID] = { UUID_SERVCLASS_PNP_INFORMATION, /* Reserved */ UUID_SERVCLASS_SERIAL_PORT, /* BTA_SPP_SERVICE_ID */ UUID_SERVCLASS_DIALUP_NETWORKING, /* BTA_DUN_SERVICE_ID */ @@ -160,7 +159,7 @@ const UINT16 bta_service_id_to_uuid_lkup_tbl [BTA_MAX_SERVICE_ID] = UUID_SERVCLASS_HDP_PROFILE, /* BTA_HDP_SERVICE_ID */ UUID_SERVCLASS_PBAP_PCE /* BTA_PCE_SERVICE_ID */ #if BLE_INCLUDED && BTA_GATT_INCLUDED - ,UUID_PROTOCOL_ATT /* BTA_GATT_SERVICE_ID */ + , UUID_PROTOCOL_ATT /* BTA_GATT_SERVICE_ID */ #endif }; @@ -171,8 +170,7 @@ const UINT16 bta_service_id_to_uuid_lkup_tbl [BTA_MAX_SERVICE_ID] = * i.e., If you add new Service ID for BTA, the correct security ID of the new service * from Security service definitions (btm_api.h) should be added to this lookup table. */ -const UINT32 bta_service_id_to_btm_srv_id_lkup_tbl [BTA_MAX_SERVICE_ID] = -{ +const UINT32 bta_service_id_to_btm_srv_id_lkup_tbl [BTA_MAX_SERVICE_ID] = { 0, /* Reserved */ BTM_SEC_SERVICE_SERIAL_PORT, /* BTA_SPP_SERVICE_ID */ BTM_SEC_SERVICE_DUN, /* BTA_DUN_SERVICE_ID */ @@ -203,14 +201,13 @@ const UINT32 bta_service_id_to_btm_srv_id_lkup_tbl [BTA_MAX_SERVICE_ID] = BTM_SEC_SERVICE_HDP_SNK, /* BTA_HDP_SERVICE_ID */ BTM_SEC_SERVICE_PBAP /* BTA_PCE_SERVICE_ID */ #if BLE_INCLUDED && BTA_GATT_INCLUDED - ,BTM_SEC_SERVICE_ATT /* BTA_GATT_SERVICE_ID */ + , BTM_SEC_SERVICE_ATT /* BTA_GATT_SERVICE_ID */ #endif }; /* bta security callback */ -const tBTM_APPL_INFO bta_security = -{ +const tBTM_APPL_INFO bta_security = { &bta_dm_authorize_cback, &bta_dm_pin_cback, &bta_dm_new_link_key_cback, @@ -223,9 +220,9 @@ const tBTM_APPL_INFO bta_security = #endif #if BLE_INCLUDED == TRUE #if SMP_INCLUDED == TRUE - ,&bta_dm_ble_smp_cback + , &bta_dm_ble_smp_cback #endif - ,&bta_dm_ble_id_key_cback + , &bta_dm_ble_id_key_cback #endif }; @@ -251,13 +248,13 @@ void bta_dm_enable(tBTA_DM_MSG *p_data) tBTA_DM_ENABLE enable_event; /* if already in use, return an error */ - if( bta_dm_cb.is_bta_dm_active == TRUE ) - { + if ( bta_dm_cb.is_bta_dm_active == TRUE ) { APPL_TRACE_WARNING("%s Device already started by another application", __func__); memset(&enable_event, 0, sizeof(tBTA_DM_ENABLE)); enable_event.status = BTA_FAILURE; - if (p_data->enable.p_sec_cback != NULL) + if (p_data->enable.p_sec_cback != NULL) { p_data->enable.p_sec_cback(BTA_DM_ENABLE_EVT, (tBTA_DM_SEC *)&enable_event); + } return; } @@ -266,14 +263,14 @@ void bta_dm_enable(tBTA_DM_MSG *p_data) /* make sure security callback is saved - if no callback, do not erase the previous one, it could be an error recovery mechanism */ - if( p_data->enable.p_sec_cback != NULL ) - bta_dm_cb.p_sec_cback = p_data->enable.p_sec_cback; + if ( p_data->enable.p_sec_cback != NULL ) { + bta_dm_cb.p_sec_cback = p_data->enable.p_sec_cback; + } /* notify BTA DM is now active */ bta_dm_cb.is_bta_dm_active = TRUE; /* send a message to BTA SYS */ - if ((sys_enable_event = (tBTA_SYS_HW_MSG *) GKI_getbuf(sizeof(tBTA_SYS_HW_MSG))) != NULL) - { + if ((sys_enable_event = (tBTA_SYS_HW_MSG *) GKI_getbuf(sizeof(tBTA_SYS_HW_MSG))) != NULL) { sys_enable_event->hdr.event = BTA_SYS_API_ENABLE_EVT; sys_enable_event->hw_module = BTA_SYS_HW_BLUETOOTH; @@ -305,15 +302,16 @@ static void bta_dm_sys_hw_cback( tBTA_SYS_HW_EVT status ) /* On H/W error evt, report to the registered DM application callback */ if (status == BTA_SYS_HW_ERROR_EVT) { - if( bta_dm_cb.p_sec_cback != NULL ) - bta_dm_cb.p_sec_cback(BTA_DM_HW_ERROR_EVT, NULL); - return; + if ( bta_dm_cb.p_sec_cback != NULL ) { + bta_dm_cb.p_sec_cback(BTA_DM_HW_ERROR_EVT, NULL); + } + return; } - if( status == BTA_SYS_HW_OFF_EVT ) - { - if( bta_dm_cb.p_sec_cback != NULL ) + if ( status == BTA_SYS_HW_OFF_EVT ) { + if ( bta_dm_cb.p_sec_cback != NULL ) { bta_dm_cb.p_sec_cback(BTA_DM_DISABLE_EVT, NULL); + } /* reinitialize the control block */ memset(&bta_dm_cb, 0, sizeof(bta_dm_cb)); @@ -322,10 +320,7 @@ static void bta_dm_sys_hw_cback( tBTA_SYS_HW_EVT status ) bta_sys_hw_unregister( BTA_SYS_HW_BLUETOOTH ); /* notify BTA DM is now unactive */ bta_dm_cb.is_bta_dm_active = FALSE; - } - else - if( status == BTA_SYS_HW_ON_EVT ) - { + } else if ( status == BTA_SYS_HW_ON_EVT ) { /* FIXME: We should not unregister as the SYS shall invoke this callback on a H/W error. * We need to revisit when this platform has more than one BLuetooth H/W chip */ //bta_sys_hw_unregister( BTA_SYS_HW_BLUETOOTH); @@ -335,7 +330,7 @@ static void bta_dm_sys_hw_cback( tBTA_SYS_HW_EVT status ) /* make sure the control block is properly initialized */ memset(&bta_dm_cb, 0, sizeof(bta_dm_cb)); /* and retrieve the callback */ - bta_dm_cb.p_sec_cback=temp_cback; + bta_dm_cb.p_sec_cback = temp_cback; bta_dm_cb.is_bta_dm_active = TRUE; /* hw is ready, go on with BTA DM initialization */ @@ -350,12 +345,10 @@ static void bta_dm_sys_hw_cback( tBTA_SYS_HW_EVT status ) /* load BLE local information: ID keys, ER if available */ bta_dm_co_ble_load_local_keys(&key_mask, er, &id_key); - if (key_mask & BTA_BLE_LOCAL_KEY_TYPE_ER) - { + if (key_mask & BTA_BLE_LOCAL_KEY_TYPE_ER) { BTM_BleLoadLocalKeys(BTA_BLE_LOCAL_KEY_TYPE_ER, (tBTM_BLE_LOCAL_KEYS *)&er); } - if (key_mask & BTA_BLE_LOCAL_KEY_TYPE_ID) - { + if (key_mask & BTA_BLE_LOCAL_KEY_TYPE_ID) { BTM_BleLoadLocalKeys(BTA_BLE_LOCAL_KEY_TYPE_ID, (tBTM_BLE_LOCAL_KEYS *)&id_key); } #if ((defined BTA_GATT_INCLUDED) && (BTA_GATT_INCLUDED == TRUE)) @@ -363,12 +356,12 @@ static void bta_dm_sys_hw_cback( tBTA_SYS_HW_EVT status ) #endif #endif - BTM_SecRegister((tBTM_APPL_INFO*)&bta_security); + BTM_SecRegister((tBTM_APPL_INFO *)&bta_security); BTM_SetDefaultLinkSuperTout(p_bta_dm_cfg->link_timeout); BTM_WritePageTimeout(p_bta_dm_cfg->page_timeout); bta_dm_cb.cur_policy = p_bta_dm_cfg->policy_settings; BTM_SetDefaultLinkPolicy(bta_dm_cb.cur_policy); - BTM_RegBusyLevelNotif (bta_dm_bl_change_cback, NULL, BTM_BL_UPDATE_MASK|BTM_BL_ROLE_CHG_MASK); + BTM_RegBusyLevelNotif (bta_dm_bl_change_cback, NULL, BTM_BL_UPDATE_MASK | BTM_BL_ROLE_CHG_MASK); #if BLE_VND_INCLUDED == TRUE BTM_BleReadControllerFeatures (bta_dm_ctrl_features_rd_cmpl_cback); @@ -381,20 +374,20 @@ static void bta_dm_sys_hw_cback( tBTA_SYS_HW_EVT status ) the DM_ENABLE_EVT to be sent only after all the init steps are complete */ BTM_ReadLocalDeviceNameFromController((tBTM_CMPL_CB *)bta_dm_local_name_cback); - bta_sys_rm_register((tBTA_SYS_CONN_CBACK*)bta_dm_rm_cback); + bta_sys_rm_register((tBTA_SYS_CONN_CBACK *)bta_dm_rm_cback); /* initialize bluetooth low power manager */ bta_dm_init_pm(); - bta_sys_policy_register((tBTA_SYS_CONN_CBACK*)bta_dm_policy_cback); + bta_sys_policy_register((tBTA_SYS_CONN_CBACK *)bta_dm_policy_cback); #if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE) bta_dm_gattc_register(); #endif - } - else + } else { APPL_TRACE_DEBUG(" --- ignored event"); + } } @@ -431,24 +424,21 @@ void bta_dm_disable (tBTA_DM_MSG *p_data) BTM_BleClearBgConnDev(); #endif - if(BTM_GetNumAclLinks()==0) - { + if (BTM_GetNumAclLinks() == 0) { #if (defined(BTA_DISABLE_DELAY) && BTA_DISABLE_DELAY > 0) /* If BTA_DISABLE_DELAY is defined and greater than zero, then delay the shutdown by * BTA_DISABLE_DELAY milliseconds */ APPL_TRACE_WARNING("%s BTA_DISABLE_DELAY set to %d ms", - __FUNCTION__, BTA_DISABLE_DELAY); + __FUNCTION__, BTA_DISABLE_DELAY); bta_sys_stop_timer(&bta_dm_cb.disable_timer); - bta_dm_cb.disable_timer.p_cback = (TIMER_CBACK*)&bta_dm_disable_conn_down_timer_cback; + bta_dm_cb.disable_timer.p_cback = (TIMER_CBACK *)&bta_dm_disable_conn_down_timer_cback; bta_sys_start_timer(&bta_dm_cb.disable_timer, 0, BTA_DISABLE_DELAY); #else bta_dm_disable_conn_down_timer_cback(NULL); #endif - } - else - { - bta_dm_cb.disable_timer.p_cback = (TIMER_CBACK*)&bta_dm_disable_timer_cback; + } else { + bta_dm_cb.disable_timer.p_cback = (TIMER_CBACK *)&bta_dm_disable_timer_cback; bta_dm_cb.disable_timer.param = 0; bta_sys_start_timer(&bta_dm_cb.disable_timer, 0, 5000); } @@ -477,10 +467,8 @@ static void bta_dm_disable_timer_cback (TIMER_LIST_ENT *p_tle) APPL_TRACE_EVENT(" bta_dm_disable_timer_cback trial %d ", p_tle->param); - if(BTM_GetNumAclLinks() && p_tle->param == 0) - { - for(i=0; iparam == 0) { + for (i = 0; i < bta_dm_cb.device_list.count; i++) { #if (BLE_INCLUDED == TRUE) transport = bta_dm_cb.device_list.peer_device[i].transport; #endif @@ -490,15 +478,12 @@ static void bta_dm_disable_timer_cback (TIMER_LIST_ENT *p_tle) /* Retrigger disable timer in case ACL disconnect failed, DISABLE_EVT still need to be sent out to avoid jave layer disable timeout */ - if (trigger_disc) - { - bta_dm_cb.disable_timer.p_cback = (TIMER_CBACK*)&bta_dm_disable_timer_cback; + if (trigger_disc) { + bta_dm_cb.disable_timer.p_cback = (TIMER_CBACK *)&bta_dm_disable_timer_cback; bta_dm_cb.disable_timer.param = 1; bta_sys_start_timer(&bta_dm_cb.disable_timer, 0, 1500); } - } - else - { + } else { bta_dm_cb.disabling = FALSE; bta_sys_remove_uuid(UUID_SERVCLASS_PNP_INFORMATION); @@ -522,8 +507,8 @@ static void bta_dm_disable_timer_cback (TIMER_LIST_ENT *p_tle) void bta_dm_set_dev_name (tBTA_DM_MSG *p_data) { - BTM_SetLocalDeviceName((char*)p_data->set_name.name); - bta_dm_set_eir ((char*)p_data->set_name.name); + BTM_SetLocalDeviceName((char *)p_data->set_name.name); + bta_dm_set_eir ((char *)p_data->set_name.name); } /******************************************************************************* @@ -545,8 +530,7 @@ void bta_dm_set_visibility(tBTA_DM_MSG *p_data) UINT16 conn_mode = BTM_ReadConnectability(&window, &interval); /* set modes for Discoverability and connectability if not ignore */ - if (p_data->set_visibility.disc_mode != (BTA_DM_IGNORE | BTA_DM_LE_IGNORE)) - { + if (p_data->set_visibility.disc_mode != (BTA_DM_IGNORE | BTA_DM_LE_IGNORE)) { if ((p_data->set_visibility.disc_mode & BTA_DM_LE_IGNORE) == BTA_DM_LE_IGNORE) p_data->set_visibility.disc_mode = ((p_data->set_visibility.disc_mode & ~BTA_DM_LE_IGNORE) | le_disc_mode); @@ -556,12 +540,11 @@ void bta_dm_set_visibility(tBTA_DM_MSG *p_data) ((p_data->set_visibility.disc_mode & ~BTA_DM_IGNORE) | disc_mode); BTM_SetDiscoverability(p_data->set_visibility.disc_mode, - bta_dm_cb.inquiry_scan_window, - bta_dm_cb.inquiry_scan_interval); + bta_dm_cb.inquiry_scan_window, + bta_dm_cb.inquiry_scan_interval); } - if (p_data->set_visibility.conn_mode != (BTA_DM_IGNORE | BTA_DM_LE_IGNORE)) - { + if (p_data->set_visibility.conn_mode != (BTA_DM_IGNORE | BTA_DM_LE_IGNORE)) { if ((p_data->set_visibility.conn_mode & BTA_DM_LE_IGNORE) == BTA_DM_LE_IGNORE) p_data->set_visibility.conn_mode = ((p_data->set_visibility.conn_mode & ~BTA_DM_LE_IGNORE) | le_conn_mode); @@ -571,35 +554,36 @@ void bta_dm_set_visibility(tBTA_DM_MSG *p_data) ((p_data->set_visibility.conn_mode & ~BTA_DM_IGNORE) | conn_mode); BTM_SetConnectability(p_data->set_visibility.conn_mode, - bta_dm_cb.page_scan_window, - bta_dm_cb.page_scan_interval); + bta_dm_cb.page_scan_window, + bta_dm_cb.page_scan_interval); } /* Send False or True if not ignore */ - if (p_data->set_visibility.pair_mode != BTA_DM_IGNORE ) - { + if (p_data->set_visibility.pair_mode != BTA_DM_IGNORE ) { - if (p_data->set_visibility.pair_mode == BTA_DM_NON_PAIRABLE) + if (p_data->set_visibility.pair_mode == BTA_DM_NON_PAIRABLE) { bta_dm_cb.disable_pair_mode = TRUE; - else + } else { bta_dm_cb.disable_pair_mode = FALSE; + } } /* Send False or True if not ignore */ - if (p_data->set_visibility.conn_paired_only != BTA_DM_IGNORE) - { + if (p_data->set_visibility.conn_paired_only != BTA_DM_IGNORE) { - if (p_data->set_visibility.conn_paired_only == BTA_DM_CONN_ALL) + if (p_data->set_visibility.conn_paired_only == BTA_DM_CONN_ALL) { bta_dm_cb.conn_paired_only = FALSE; - else + } else { bta_dm_cb.conn_paired_only = TRUE; + } } /* Change mode if either mode is not ignore */ - if (p_data->set_visibility.pair_mode != BTA_DM_IGNORE || p_data->set_visibility.conn_paired_only != BTA_DM_IGNORE) - BTM_SetPairableMode((BOOLEAN)(!(bta_dm_cb.disable_pair_mode)),bta_dm_cb.conn_paired_only); + if (p_data->set_visibility.pair_mode != BTA_DM_IGNORE || p_data->set_visibility.conn_paired_only != BTA_DM_IGNORE) { + BTM_SetPairableMode((BOOLEAN)(!(bta_dm_cb.disable_pair_mode)), bta_dm_cb.conn_paired_only); + } } @@ -613,25 +597,24 @@ void bta_dm_set_visibility(tBTA_DM_MSG *p_data) void bta_dm_process_remove_device(BD_ADDR bd_addr) { #if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE) - /* need to remove all pending background connection before unpair */ - BTA_GATTC_CancelOpen(0, bd_addr, FALSE); + /* need to remove all pending background connection before unpair */ + BTA_GATTC_CancelOpen(0, bd_addr, FALSE); #endif - BTM_SecDeleteDevice(bd_addr); + BTM_SecDeleteDevice(bd_addr); #if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE) - /* remove all cached GATT information */ - BTA_GATTC_Refresh(bd_addr); + /* remove all cached GATT information */ + BTA_GATTC_Refresh(bd_addr); #endif - if (bta_dm_cb.p_sec_cback) - { - tBTA_DM_SEC sec_event; - bdcpy(sec_event.link_down.bd_addr, bd_addr); - /* No connection, set status to success (acl disc code not valid) */ - sec_event.link_down.status = HCI_SUCCESS; - bta_dm_cb.p_sec_cback(BTA_DM_DEV_UNPAIRED_EVT, &sec_event); - } + if (bta_dm_cb.p_sec_cback) { + tBTA_DM_SEC sec_event; + bdcpy(sec_event.link_down.bd_addr, bd_addr); + /* No connection, set status to success (acl disc code not valid) */ + sec_event.link_down.status = HCI_SUCCESS; + bta_dm_cb.p_sec_cback(BTA_DM_DEV_UNPAIRED_EVT, &sec_event); + } } /******************************************************************************* @@ -644,8 +627,9 @@ void bta_dm_process_remove_device(BD_ADDR bd_addr) void bta_dm_remove_device(tBTA_DM_MSG *p_data) { tBTA_DM_API_REMOVE_DEVICE *p_dev = &p_data->remove_dev; - if (p_dev == NULL) + if (p_dev == NULL) { return; + } BD_ADDR other_address; bdcpy(other_address, p_dev->bd_addr); @@ -655,32 +639,28 @@ void bta_dm_remove_device(tBTA_DM_MSG *p_data) UINT8 other_transport = BT_TRANSPORT_INVALID; if (BTM_IsAclConnectionUp(p_dev->bd_addr, BT_TRANSPORT_LE) || - BTM_IsAclConnectionUp(p_dev->bd_addr, BT_TRANSPORT_BR_EDR)) - { + BTM_IsAclConnectionUp(p_dev->bd_addr, BT_TRANSPORT_BR_EDR)) { APPL_TRACE_DEBUG("%s: ACL Up count %d", __func__, bta_dm_cb.device_list.count); continue_delete_dev = FALSE; /* Take the link down first, and mark the device for removal when disconnected */ - for(int i=0; i < bta_dm_cb.device_list.count; i++) - { - if (!bdcmp(bta_dm_cb.device_list.peer_device[i].peer_bdaddr, p_dev->bd_addr)) - { + for (int i = 0; i < bta_dm_cb.device_list.count; i++) { + if (!bdcmp(bta_dm_cb.device_list.peer_device[i].peer_bdaddr, p_dev->bd_addr)) { bta_dm_cb.device_list.peer_device[i].conn_state = BTA_DM_UNPAIRING; btm_remove_acl( p_dev->bd_addr, bta_dm_cb.device_list.peer_device[i].transport); APPL_TRACE_DEBUG("%s:transport = %d", __func__, - bta_dm_cb.device_list.peer_device[i].transport); + bta_dm_cb.device_list.peer_device[i].transport); /* save the other transport to check if device is connected on other_transport */ - if(bta_dm_cb.device_list.peer_device[i].transport == BT_TRANSPORT_LE) - other_transport = BT_TRANSPORT_BR_EDR; - else - other_transport = BT_TRANSPORT_LE; + if (bta_dm_cb.device_list.peer_device[i].transport == BT_TRANSPORT_LE) { + other_transport = BT_TRANSPORT_BR_EDR; + } else { + other_transport = BT_TRANSPORT_LE; + } break; } } - } - else - { + } else { continue_delete_dev = TRUE; } @@ -688,35 +668,32 @@ void bta_dm_remove_device(tBTA_DM_MSG *p_data) // if different address BOOLEAN continue_delete_other_dev = FALSE; if ((other_transport && (BTM_ReadConnectedTransportAddress(other_address, other_transport))) || - (!other_transport && (BTM_ReadConnectedTransportAddress(other_address, BT_TRANSPORT_BR_EDR) || - BTM_ReadConnectedTransportAddress(other_address, BT_TRANSPORT_LE)))) - { + (!other_transport && (BTM_ReadConnectedTransportAddress(other_address, BT_TRANSPORT_BR_EDR) || + BTM_ReadConnectedTransportAddress(other_address, BT_TRANSPORT_LE)))) { continue_delete_other_dev = FALSE; /* Take the link down first, and mark the device for removal when disconnected */ - for(int i=0; i < bta_dm_cb.device_list.count; i++) - { - if (!bdcmp(bta_dm_cb.device_list.peer_device[i].peer_bdaddr, other_address)) - { + for (int i = 0; i < bta_dm_cb.device_list.count; i++) { + if (!bdcmp(bta_dm_cb.device_list.peer_device[i].peer_bdaddr, other_address)) { bta_dm_cb.device_list.peer_device[i].conn_state = BTA_DM_UNPAIRING; - btm_remove_acl(other_address,bta_dm_cb.device_list.peer_device[i].transport); + btm_remove_acl(other_address, bta_dm_cb.device_list.peer_device[i].transport); break; } } - } - else - { + } else { APPL_TRACE_DEBUG("%s: continue to delete the other dev ", __func__); continue_delete_other_dev = TRUE; } /* Delete the device mentioned in the msg */ - if (continue_delete_dev) + if (continue_delete_dev) { bta_dm_process_remove_device(p_dev->bd_addr); + } /* Delete the other paired device too */ BD_ADDR dummy_bda = {0}; - if (continue_delete_other_dev && (bdcmp(other_address, dummy_bda) != 0)) + if (continue_delete_other_dev && (bdcmp(other_address, dummy_bda) != 0)) { bta_dm_process_remove_device(other_address); + } } /******************************************************************************* @@ -740,24 +717,23 @@ void bta_dm_add_device (tBTA_DM_MSG *p_data) memset (trusted_services_mask, 0, sizeof(trusted_services_mask)); /* If not all zeros, the device class has been specified */ - if (p_dev->dc_known) + if (p_dev->dc_known) { p_dc = (UINT8 *)p_dev->dc; + } - if (p_dev->link_key_known) + if (p_dev->link_key_known) { p_lc = (UINT8 *)p_dev->link_key; + } - if (p_dev->is_trusted) - { + if (p_dev->is_trusted) { /* covert BTA service mask to BTM mask */ - while (p_dev->tm && (index < BTA_MAX_SERVICE_ID)) - { - if (p_dev->tm & (UINT32)(1<tm && (index < BTA_MAX_SERVICE_ID)) { + if (p_dev->tm & (UINT32)(1 << index)) { btm_mask_index = bta_service_id_to_btm_srv_id_lkup_tbl[index] / BTM_SEC_ARRAY_BITS; trusted_services_mask[btm_mask_index] |= (UINT32)(1 << (bta_service_id_to_btm_srv_id_lkup_tbl[index] - (UINT32)(btm_mask_index * 32))); - p_dev->tm &= (UINT32)(~(1<tm &= (UINT32)(~(1 << index)); } index++; @@ -766,11 +742,10 @@ void bta_dm_add_device (tBTA_DM_MSG *p_data) if (!BTM_SecAddDevice (p_dev->bd_addr, p_dc, p_dev->bd_name, p_dev->features, trusted_services_mask, p_lc, p_dev->key_type, p_dev->io_cap, - p_dev->pin_length)) - { + p_dev->pin_length)) { APPL_TRACE_ERROR ("BTA_DM: Error adding device %08x%04x", - (p_dev->bd_addr[0]<<24)+(p_dev->bd_addr[1]<<16)+(p_dev->bd_addr[2]<<8)+p_dev->bd_addr[3], - (p_dev->bd_addr[4]<<8)+p_dev->bd_addr[5]); + (p_dev->bd_addr[0] << 24) + (p_dev->bd_addr[1] << 16) + (p_dev->bd_addr[2] << 8) + p_dev->bd_addr[3], + (p_dev->bd_addr[4] << 8) + p_dev->bd_addr[5]); } } @@ -790,30 +765,25 @@ void bta_dm_close_acl(tBTA_DM_MSG *p_data) APPL_TRACE_DEBUG("bta_dm_close_acl"); - if (BTM_IsAclConnectionUp(p_remove_acl->bd_addr, p_remove_acl->transport)) - { - for (index = 0; index < bta_dm_cb.device_list.count; index ++) - { - if (!bdcmp( bta_dm_cb.device_list.peer_device[index].peer_bdaddr, p_remove_acl->bd_addr)) + if (BTM_IsAclConnectionUp(p_remove_acl->bd_addr, p_remove_acl->transport)) { + for (index = 0; index < bta_dm_cb.device_list.count; index ++) { + if (!bdcmp( bta_dm_cb.device_list.peer_device[index].peer_bdaddr, p_remove_acl->bd_addr)) { break; } - if (index != bta_dm_cb.device_list.count) - { - if (p_remove_acl->remove_dev) - bta_dm_cb.device_list.peer_device[index].remove_dev_pending = TRUE; } - else - { + if (index != bta_dm_cb.device_list.count) { + if (p_remove_acl->remove_dev) { + bta_dm_cb.device_list.peer_device[index].remove_dev_pending = TRUE; + } + } else { APPL_TRACE_ERROR("unknown device, remove ACL failed"); } /* Disconnect the ACL link */ btm_remove_acl(p_remove_acl->bd_addr, p_remove_acl->transport); } /* if to remove the device from security database ? do it now */ - else if (p_remove_acl->remove_dev) - { - if (!BTM_SecDeleteDevice(p_remove_acl->bd_addr)) - { + else if (p_remove_acl->remove_dev) { + if (!BTM_SecDeleteDevice(p_remove_acl->bd_addr)) { APPL_TRACE_ERROR("delete device from security database failed."); } #if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE) @@ -841,17 +811,15 @@ void bta_dm_remove_all_acl(tBTA_DM_MSG *p_data) APPL_TRACE_DEBUG("%s link type = %d", __func__, link_type); - for (UINT8 i=0; i < bta_dm_cb.device_list.count; i++) - { + for (UINT8 i = 0; i < bta_dm_cb.device_list.count; i++) { BD_ADDR addr = {0}; bdcpy(addr, bta_dm_cb.device_list.peer_device[i].peer_bdaddr); #if defined (BLE_INCLUDED) && (BLE_INCLUDED == TRUE) transport = bta_dm_cb.device_list.peer_device[i].transport; #endif if ((link_type == BTA_DM_LINK_TYPE_ALL) || - ((link_type == BTA_DM_LINK_TYPE_LE) && (transport == BT_TRANSPORT_LE)) || - ((link_type == BTA_DM_LINK_TYPE_BR_EDR) && (transport == BT_TRANSPORT_BR_EDR))) - { + ((link_type == BTA_DM_LINK_TYPE_LE) && (transport == BT_TRANSPORT_LE)) || + ((link_type == BTA_DM_LINK_TYPE_BR_EDR) && (transport == BT_TRANSPORT_BR_EDR))) { /* Disconnect the ACL link */ btm_remove_acl(addr, transport); } @@ -875,35 +843,31 @@ void bta_dm_bond (tBTA_DM_MSG *p_data) tBTA_DM_SEC sec_event; char *p_name; - if (p_data->bond.transport == BTA_TRANSPORT_UNKNOWN) + if (p_data->bond.transport == BTA_TRANSPORT_UNKNOWN) { status = BTM_SecBond ( p_data->bond.bd_addr, 0, NULL, 0 ); - else + } else { status = BTM_SecBondByTransport ( p_data->bond.bd_addr, p_data->bond.transport, 0, NULL, 0 ); + } - if (bta_dm_cb.p_sec_cback && (status != BTM_CMD_STARTED)) - { + if (bta_dm_cb.p_sec_cback && (status != BTM_CMD_STARTED)) { memset(&sec_event, 0, sizeof(tBTA_DM_SEC)); bdcpy(sec_event.auth_cmpl.bd_addr, p_data->bond.bd_addr); p_name = BTM_SecReadDevName(p_data->bond.bd_addr); - if (p_name != NULL) - { - memcpy(sec_event.auth_cmpl.bd_name, p_name, (BD_NAME_LEN-1)); - sec_event.auth_cmpl.bd_name[BD_NAME_LEN-1] = 0; + if (p_name != NULL) { + memcpy(sec_event.auth_cmpl.bd_name, p_name, (BD_NAME_LEN - 1)); + sec_event.auth_cmpl.bd_name[BD_NAME_LEN - 1] = 0; } -/* taken care of by memset [above] - sec_event.auth_cmpl.key_present = FALSE; - sec_event.auth_cmpl.success = FALSE; -*/ + /* taken care of by memset [above] + sec_event.auth_cmpl.key_present = FALSE; + sec_event.auth_cmpl.success = FALSE; + */ sec_event.auth_cmpl.fail_reason = HCI_ERR_ILLEGAL_COMMAND; - if (status == BTM_SUCCESS) - { + if (status == BTM_SUCCESS) { sec_event.auth_cmpl.success = TRUE; - } - else - { + } else { /* delete this device entry from Sec Dev DB */ bta_dm_remove_sec_dev_entry(p_data->bond.bd_addr); } @@ -930,8 +894,7 @@ void bta_dm_bond_cancel (tBTA_DM_MSG *p_data) APPL_TRACE_EVENT(" bta_dm_bond_cancel "); status = BTM_SecBondCancel ( p_data->bond_cancel.bd_addr ); - if (bta_dm_cb.p_sec_cback && (status != BTM_CMD_STARTED && status != BTM_SUCCESS)) - { + if (bta_dm_cb.p_sec_cback && (status != BTM_CMD_STARTED && status != BTM_SUCCESS)) { sec_event.bond_cancel_cmpl.result = BTA_FAILURE; bta_dm_cb.p_sec_cback(BTA_DM_BOND_CANCEL_CMPL_EVT, &sec_event); @@ -952,26 +915,20 @@ void bta_dm_bond_cancel (tBTA_DM_MSG *p_data) void bta_dm_pin_reply (tBTA_DM_MSG *p_data) { UINT32 trusted_mask[BTM_SEC_SERVICE_ARRAY_SIZE]; - UINT32 * current_trusted_mask; + UINT32 *current_trusted_mask; current_trusted_mask = BTM_ReadTrustedMask(p_data->pin_reply.bd_addr); - if(current_trusted_mask) - { + if (current_trusted_mask) { memcpy(trusted_mask, current_trusted_mask, sizeof(trusted_mask)); - } - else - { + } else { memset(trusted_mask, 0, sizeof(trusted_mask)); } - if(p_data->pin_reply.accept) - { + if (p_data->pin_reply.accept) { BTM_PINCodeReply(p_data->pin_reply.bd_addr, BTM_SUCCESS, p_data->pin_reply.pin_len, p_data->pin_reply.p_pin, trusted_mask ); - } - else - { + } else { BTM_PINCodeReply(p_data->pin_reply.bd_addr, BTM_NOT_AUTHORIZED, 0, NULL, trusted_mask ); } @@ -992,30 +949,31 @@ static void bta_dm_policy_cback(tBTA_SYS_CONN_STATUS status, UINT8 id, UINT8 app UINT16 policy = app_id; UINT32 mask = (UINT32)(1 << id); - if(peer_addr) + if (peer_addr) { p_dev = bta_dm_find_peer_device(peer_addr); + } APPL_TRACE_DEBUG(" bta_dm_policy_cback cmd:%d, policy:0x%x", - status, policy); - switch(status) - { + status, policy); + switch (status) { case BTA_SYS_PLCY_SET: - if(!p_dev) + if (!p_dev) { return; + } /* restore the default link policy */ p_dev->link_policy |= policy; BTM_SetLinkPolicy(p_dev->peer_bdaddr, &(p_dev->link_policy)); break; case BTA_SYS_PLCY_CLR: - if(!p_dev) + if (!p_dev) { return; + } /* clear the policy from the default link policy */ p_dev->link_policy &= (~policy); BTM_SetLinkPolicy(p_dev->peer_bdaddr, &(p_dev->link_policy)); - if(policy & (HCI_ENABLE_SNIFF_MODE | HCI_ENABLE_PARK_MODE)) - { + if (policy & (HCI_ENABLE_SNIFF_MODE | HCI_ENABLE_PARK_MODE)) { /* if clearing sniff/park, wake the link */ bta_dm_pm_active(p_dev->peer_bdaddr); } @@ -1024,8 +982,7 @@ static void bta_dm_policy_cback(tBTA_SYS_CONN_STATUS status, UINT8 id, UINT8 app case BTA_SYS_PLCY_DEF_SET: /* want to restore/set the role switch policy */ bta_dm_cb.role_policy_mask &= ~mask; - if(0 == bta_dm_cb.role_policy_mask) - { + if (0 == bta_dm_cb.role_policy_mask) { /* if nobody wants to insist on the role */ bta_dm_cb.cur_policy |= HCI_ENABLE_MASTER_SLAVE_SWITCH; BTM_SetDefaultLinkPolicy(bta_dm_cb.cur_policy); @@ -1055,8 +1012,9 @@ void bta_dm_confirm(tBTA_DM_MSG *p_data) { tBTM_STATUS res = BTM_NOT_AUTHORIZED; - if(p_data->confirm.accept == TRUE) + if (p_data->confirm.accept == TRUE) { res = BTM_SUCCESS; + } BTM_ConfirmReqReply(res, p_data->confirm.bd_addr); } @@ -1088,10 +1046,11 @@ void bta_dm_loc_oob(tBTA_DM_MSG *p_data) void bta_dm_ci_io_req_act(tBTA_DM_MSG *p_data) { tBTM_AUTH_REQ auth_req = BTM_AUTH_AP_NO; - if(p_data->ci_io_req.auth_req) + if (p_data->ci_io_req.auth_req) { auth_req = BTM_AUTH_AP_YES; + } BTM_IoCapRsp(p_data->ci_io_req.bd_addr, p_data->ci_io_req.io_cap, - p_data->ci_io_req.oob_data, auth_req); + p_data->ci_io_req.oob_data, auth_req); } /******************************************************************************* @@ -1108,10 +1067,11 @@ void bta_dm_ci_rmt_oob_act(tBTA_DM_MSG *p_data) { tBTM_STATUS res = BTM_NOT_AUTHORIZED; - if(p_data->ci_rmt_oob.accept == TRUE) + if (p_data->ci_rmt_oob.accept == TRUE) { res = BTM_SUCCESS; + } BTM_RemoteOobDataReply(res, p_data->ci_rmt_oob.bd_addr, - p_data->ci_rmt_oob.c, p_data->ci_rmt_oob.r ); + p_data->ci_rmt_oob.c, p_data->ci_rmt_oob.r ); } #endif /* BTM_OOB_INCLUDED */ @@ -1137,8 +1097,7 @@ void bta_dm_search_start (tBTA_DM_MSG *p_data) APPL_TRACE_DEBUG("%s avoid_scatter=%d", __func__, p_bta_dm_cfg->avoid_scatter); if (p_bta_dm_cfg->avoid_scatter && - (p_data->search.rs_res == BTA_DM_RS_NONE) && bta_dm_check_av(BTA_DM_API_SEARCH_EVT)) - { + (p_data->search.rs_res == BTA_DM_RS_NONE) && bta_dm_check_av(BTA_DM_API_SEARCH_EVT)) { memcpy(&bta_dm_cb.search_msg, &p_data->search, sizeof(tBTA_DM_API_SEARCH)); return; } @@ -1152,10 +1111,8 @@ void bta_dm_search_start (tBTA_DM_MSG *p_data) utl_freebuf((void **)&bta_dm_search_cb.p_srvc_uuid); if ((bta_dm_search_cb.num_uuid = p_data->search.num_uuid) != 0 && - p_data->search.p_uuid != NULL) - { - if ((bta_dm_search_cb.p_srvc_uuid = (tBT_UUID *)GKI_getbuf(len)) == NULL) - { + p_data->search.p_uuid != NULL) { + if ((bta_dm_search_cb.p_srvc_uuid = (tBT_UUID *)GKI_getbuf(len)) == NULL) { APPL_TRACE_ERROR("%s no resources", __func__); result.status = BTA_FAILURE; @@ -1167,13 +1124,12 @@ void bta_dm_search_start (tBTA_DM_MSG *p_data) memcpy(bta_dm_search_cb.p_srvc_uuid, p_data->search.p_uuid, len); } #endif - result.status = BTM_StartInquiry( (tBTM_INQ_PARMS*)&p_data->search.inq_params, - bta_dm_inq_results_cb, - (tBTM_CMPL_CB*) bta_dm_inq_cmpl_cb); + result.status = BTM_StartInquiry( (tBTM_INQ_PARMS *)&p_data->search.inq_params, + bta_dm_inq_results_cb, + (tBTM_CMPL_CB *) bta_dm_inq_cmpl_cb); APPL_TRACE_EVENT("%s status=%d", __func__, result.status); - if (result.status != BTM_CMD_STARTED) - { + if (result.status != BTM_CMD_STARTED) { result.num_resp = 0; bta_dm_inq_cmpl_cb ((void *)&result); } @@ -1192,16 +1148,13 @@ void bta_dm_search_start (tBTA_DM_MSG *p_data) void bta_dm_search_cancel (tBTA_DM_MSG *p_data) { UNUSED(p_data); - tBTA_DM_MSG * p_msg; + tBTA_DM_MSG *p_msg; - if (BTM_IsInquiryActive()) - { - if (BTM_CancelInquiry() != BTM_CMD_STARTED) - { + if (BTM_IsInquiryActive()) { + if (BTM_CancelInquiry() != BTM_CMD_STARTED) { bta_dm_search_cancel_notify(NULL); p_msg = (tBTA_DM_MSG *) GKI_getbuf(sizeof(tBTA_DM_MSG)); - if (p_msg != NULL) - { + if (p_msg != NULL) { p_msg->hdr.event = BTA_DM_SEARCH_CMPL_EVT; p_msg->hdr.layer_specific = BTA_DM_API_DISCOVER_EVT; bta_sys_sendmsg(p_msg); @@ -1212,21 +1165,17 @@ void bta_dm_search_cancel (tBTA_DM_MSG *p_data) } } /* If no Service Search going on then issue cancel remote name in case it is active */ - else if (!bta_dm_search_cb.name_discover_done) - { + else if (!bta_dm_search_cb.name_discover_done) { BTM_CancelRemoteDeviceName(); - if ((p_msg = (tBTA_DM_MSG *) GKI_getbuf(sizeof(tBTA_DM_MSG))) != NULL) - { + if ((p_msg = (tBTA_DM_MSG *) GKI_getbuf(sizeof(tBTA_DM_MSG))) != NULL) { p_msg->hdr.event = BTA_DM_SEARCH_CMPL_EVT; p_msg->hdr.layer_specific = BTA_DM_API_DISCOVER_EVT; bta_sys_sendmsg(p_msg); } - } - else { - if ((p_msg = (tBTA_DM_MSG *) GKI_getbuf(sizeof(tBTA_DM_MSG))) != NULL) - { + } else { + if ((p_msg = (tBTA_DM_MSG *) GKI_getbuf(sizeof(tBTA_DM_MSG))) != NULL) { p_msg->hdr.event = BTA_DM_INQUIRY_CMPL_EVT; p_msg->hdr.layer_specific = BTA_DM_API_DISCOVER_EVT; bta_sys_sendmsg(p_msg); @@ -1234,8 +1183,7 @@ void bta_dm_search_cancel (tBTA_DM_MSG *p_data) } #if BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE - if (bta_dm_search_cb.gatt_disc_active) - { + if (bta_dm_search_cb.gatt_disc_active) { bta_dm_cancel_gatt_discovery(bta_dm_search_cb.peer_bdaddr); } #endif @@ -1257,7 +1205,7 @@ void bta_dm_discover (tBTA_DM_MSG *p_data) UINT16 len = (UINT16)(sizeof(tBT_UUID) * p_data->discover.num_uuid); #endif APPL_TRACE_EVENT("%s services_to_search=0x%04X, sdp_search=%d", __func__, - p_data->discover.services, p_data->discover.sdp_search); + p_data->discover.services, p_data->discover.sdp_search); /* save the search condition */ bta_dm_search_cb.services = p_data->discover.services; @@ -1266,10 +1214,8 @@ void bta_dm_discover (tBTA_DM_MSG *p_data) bta_dm_gattc_register(); utl_freebuf((void **)&bta_dm_search_cb.p_srvc_uuid); if ((bta_dm_search_cb.num_uuid = p_data->discover.num_uuid) != 0 && - p_data->discover.p_uuid != NULL) - { - if ((bta_dm_search_cb.p_srvc_uuid = (tBT_UUID *)GKI_getbuf(len)) == NULL) - { + p_data->discover.p_uuid != NULL) { + if ((bta_dm_search_cb.p_srvc_uuid = (tBT_UUID *)GKI_getbuf(len)) == NULL) { p_data->discover.p_cback(BTA_DM_DISC_CMPL_EVT, NULL); return; } @@ -1309,13 +1255,12 @@ void bta_dm_di_disc_cmpl(tBTA_DM_MSG *p_data) memset(&di_disc, 0, sizeof(tBTA_DM_DI_DISC_CMPL)); bdcpy(di_disc.bd_addr, bta_dm_search_cb.peer_bdaddr); - if((p_data->hdr.offset == SDP_SUCCESS) - || (p_data->hdr.offset == SDP_DB_FULL)) - { + if ((p_data->hdr.offset == SDP_SUCCESS) + || (p_data->hdr.offset == SDP_DB_FULL)) { di_disc.num_record = SDP_GetNumDiRecords(bta_dm_di_cb.p_di_db); - } - else + } else { di_disc.result = BTA_FAILURE; + } bta_dm_di_cb.p_di_db = NULL; bta_dm_search_cb.p_search_cback(BTA_DM_DI_DISC_CMPL_EVT, (tBTA_DM_SEARCH *) &di_disc); @@ -1333,10 +1278,9 @@ void bta_dm_di_disc_cmpl(tBTA_DM_MSG *p_data) *******************************************************************************/ static void bta_dm_di_disc_callback(UINT16 result) { - tBTA_DM_MSG * p_msg; + tBTA_DM_MSG *p_msg; - if ((p_msg = (tBTA_DM_MSG *) GKI_getbuf(sizeof(tBTA_DM_MSG))) != NULL) - { + if ((p_msg = (tBTA_DM_MSG *) GKI_getbuf(sizeof(tBTA_DM_MSG))) != NULL) { p_msg->hdr.event = BTA_DM_SEARCH_CMPL_EVT; p_msg->hdr.layer_specific = BTA_DM_API_DI_DISCOVER_EVT; p_msg->hdr.offset = result; @@ -1359,11 +1303,11 @@ static void bta_dm_disable_search_and_disc (void) { tBTA_DM_DI_DISC_CMPL di_disc; - if (bta_dm_search_cb.state != BTA_DM_SEARCH_IDLE) + if (bta_dm_search_cb.state != BTA_DM_SEARCH_IDLE) { bta_dm_search_cancel(NULL); + } - if (bta_dm_di_cb.p_di_db != NULL) - { + if (bta_dm_di_cb.p_di_db != NULL) { memset(&di_disc, 0, sizeof(tBTA_DM_DI_DISC_CMPL)); bdcpy(di_disc.bd_addr, bta_dm_search_cb.peer_bdaddr); di_disc.result = BTA_FAILURE; @@ -1392,22 +1336,17 @@ void bta_dm_di_disc (tBTA_DM_MSG *p_data) bdcpy(bta_dm_search_cb.peer_bdaddr, p_data->di_disc.bd_addr); bta_dm_di_cb.p_di_db = p_data->di_disc.p_sdp_db; - if((bta_dm_search_cb.p_sdp_db = (tSDP_DISCOVERY_DB *)GKI_getbuf(BTA_DM_SDP_DB_SIZE)) != NULL) - { + if ((bta_dm_search_cb.p_sdp_db = (tSDP_DISCOVERY_DB *)GKI_getbuf(BTA_DM_SDP_DB_SIZE)) != NULL) { if ( SDP_DiDiscover(bta_dm_search_cb.peer_bdaddr, p_data->di_disc.p_sdp_db, - p_data->di_disc.len, bta_dm_di_disc_callback) == SDP_SUCCESS) - { + p_data->di_disc.len, bta_dm_di_disc_callback) == SDP_SUCCESS) { result = BTA_SUCCESS; } - } - else - { + } else { APPL_TRACE_ERROR("No buffer to start DI discovery"); } if ( result == BTA_FAILURE && - (p_msg = (tBTA_DM_MSG *) GKI_getbuf(sizeof(tBTA_DM_MSG))) != NULL) - { + (p_msg = (tBTA_DM_MSG *) GKI_getbuf(sizeof(tBTA_DM_MSG))) != NULL) { p_msg->hdr.event = BTA_DM_SEARCH_CMPL_EVT; p_msg->hdr.layer_specific = BTA_DM_API_DI_DISCOVER_EVT; p_data->hdr.offset = result; @@ -1424,7 +1363,7 @@ void bta_dm_di_disc (tBTA_DM_MSG *p_data) ** Returns TRUE if started to get remote name ** *******************************************************************************/ -static BOOLEAN bta_dm_read_remote_device_name (BD_ADDR bd_addr,tBT_TRANSPORT transport) +static BOOLEAN bta_dm_read_remote_device_name (BD_ADDR bd_addr, tBT_TRANSPORT transport) { tBTM_STATUS btm_status; @@ -1437,14 +1376,11 @@ static BOOLEAN bta_dm_read_remote_device_name (BD_ADDR bd_addr,tBT_TRANSPORT tra (tBTM_CMPL_CB *) bta_dm_remname_cback, transport); - if ( btm_status == BTM_CMD_STARTED ) - { + if ( btm_status == BTM_CMD_STARTED ) { APPL_TRACE_DEBUG("bta_dm_read_remote_device_name: BTM_ReadRemoteDeviceName is started"); return (TRUE); - } - else if ( btm_status == BTM_BUSY ) - { + } else if ( btm_status == BTM_BUSY ) { APPL_TRACE_DEBUG("bta_dm_read_remote_device_name: BTM_ReadRemoteDeviceName is busy"); /* Remote name discovery is on going now so BTM cannot notify through "bta_dm_remname_cback" */ @@ -1452,9 +1388,7 @@ static BOOLEAN bta_dm_read_remote_device_name (BD_ADDR bd_addr,tBT_TRANSPORT tra BTM_SecAddRmtNameNotifyCallback(&bta_dm_service_search_remname_cback); return (TRUE); - } - else - { + } else { APPL_TRACE_WARNING("bta_dm_read_remote_device_name: BTM_ReadRemoteDeviceName returns 0x%02X", btm_status); return (FALSE); @@ -1472,7 +1406,7 @@ static BOOLEAN bta_dm_read_remote_device_name (BD_ADDR bd_addr,tBT_TRANSPORT tra *******************************************************************************/ void bta_dm_inq_cmpl (tBTA_DM_MSG *p_data) { - tBTA_DM_MSG * p_msg; + tBTA_DM_MSG *p_msg; tBTA_DM_SEARCH data; APPL_TRACE_DEBUG("bta_dm_inq_cmpl"); @@ -1480,26 +1414,22 @@ void bta_dm_inq_cmpl (tBTA_DM_MSG *p_data) data.inq_cmpl.num_resps = p_data->inq_cmpl.num; bta_dm_search_cb.p_search_cback(BTA_DM_INQ_CMPL_EVT, &data); - if((bta_dm_search_cb.p_btm_inq_info = BTM_InqDbFirst()) != NULL) - { + if ((bta_dm_search_cb.p_btm_inq_info = BTM_InqDbFirst()) != NULL) { /* start name and service discovery from the first device on inquiry result */ bta_dm_search_cb.name_discover_done = FALSE; bta_dm_search_cb.peer_name[0] = 0; bta_dm_discover_device(bta_dm_search_cb.p_btm_inq_info->results.remote_bd_addr); - } - else - { + } else { /* no devices, search complete */ bta_dm_search_cb.services = 0; - if ((p_msg = (tBTA_DM_MSG *) GKI_getbuf(sizeof(tBTA_DM_MSG))) != NULL) - { + if ((p_msg = (tBTA_DM_MSG *) GKI_getbuf(sizeof(tBTA_DM_MSG))) != NULL) { p_msg->hdr.event = BTA_DM_SEARCH_CMPL_EVT; p_msg->hdr.layer_specific = BTA_DM_API_DISCOVER_EVT; bta_sys_sendmsg(p_msg); } - } } +} /******************************************************************************* ** @@ -1514,8 +1444,7 @@ void bta_dm_rmt_name (tBTA_DM_MSG *p_data) { APPL_TRACE_DEBUG("bta_dm_rmt_name"); - if( p_data->rem_name.result.disc_res.bd_name[0] && bta_dm_search_cb.p_btm_inq_info) - { + if ( p_data->rem_name.result.disc_res.bd_name[0] && bta_dm_search_cb.p_btm_inq_info) { bta_dm_search_cb.p_btm_inq_info->appl_knows_rem_name = TRUE; } @@ -1539,10 +1468,8 @@ void bta_dm_disc_rmt_name (tBTA_DM_MSG *p_data) APPL_TRACE_DEBUG("bta_dm_disc_rmt_name"); p_btm_inq_info = BTM_InqDbRead (p_data->rem_name.result.disc_res.bd_addr); - if( p_btm_inq_info ) - { - if( p_data->rem_name.result.disc_res.bd_name[0] ) - { + if ( p_btm_inq_info ) { + if ( p_data->rem_name.result.disc_res.bd_name[0] ) { p_btm_inq_info->appl_knows_rem_name = TRUE; } } @@ -1577,54 +1504,43 @@ void bta_dm_sdp_result (tBTA_DM_MSG *p_data) UINT32 num_uuids = 0; UINT8 uuid_list[32][MAX_UUID_SIZE]; // assuming a max of 32 services - if((p_data->sdp_event.sdp_result == SDP_SUCCESS) - || (p_data->sdp_event.sdp_result == SDP_NO_RECS_MATCH) - || (p_data->sdp_event.sdp_result == SDP_DB_FULL)) - { + if ((p_data->sdp_event.sdp_result == SDP_SUCCESS) + || (p_data->sdp_event.sdp_result == SDP_NO_RECS_MATCH) + || (p_data->sdp_event.sdp_result == SDP_DB_FULL)) { APPL_TRACE_DEBUG("sdp_result::0x%x", p_data->sdp_event.sdp_result); - do - { + do { p_sdp_rec = NULL; - if( bta_dm_search_cb.service_index == (BTA_USER_SERVICE_ID+1) ) - { + if ( bta_dm_search_cb.service_index == (BTA_USER_SERVICE_ID + 1) ) { p_sdp_rec = SDP_FindServiceUUIDInDb(bta_dm_search_cb.p_sdp_db, &bta_dm_search_cb.uuid, p_sdp_rec); - if (p_sdp_rec && SDP_FindProtocolListElemInRec(p_sdp_rec, UUID_PROTOCOL_RFCOMM, &pe)) - { + if (p_sdp_rec && SDP_FindProtocolListElemInRec(p_sdp_rec, UUID_PROTOCOL_RFCOMM, &pe)) { bta_dm_search_cb.peer_scn = (UINT8) pe.params[0]; scn_found = TRUE; } - } - else - { - service = bta_service_id_to_uuid_lkup_tbl[bta_dm_search_cb.service_index-1]; + } else { + service = bta_service_id_to_uuid_lkup_tbl[bta_dm_search_cb.service_index - 1]; p_sdp_rec = SDP_FindServiceInDb(bta_dm_search_cb.p_sdp_db, service, p_sdp_rec); } #if BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE /* finished with BR/EDR services, now we check the result for GATT based service UUID */ - if (bta_dm_search_cb.service_index == BTA_MAX_SERVICE_ID) - { - if (bta_dm_search_cb.uuid_to_search != 0 && p_uuid != NULL) - { + if (bta_dm_search_cb.service_index == BTA_MAX_SERVICE_ID) { + if (bta_dm_search_cb.uuid_to_search != 0 && p_uuid != NULL) { p_uuid += (bta_dm_search_cb.num_uuid - bta_dm_search_cb.uuid_to_search); /* only support 16 bits UUID for now */ service = p_uuid->uu.uuid16; } /* all GATT based services */ - do - { + do { /* find a service record, report it */ p_sdp_rec = SDP_FindServiceInDb(bta_dm_search_cb.p_sdp_db, - 0, p_sdp_rec); - if (p_sdp_rec) - { - if (SDP_FindServiceUUIDInRec(p_sdp_rec, &service_uuid)) - { + 0, p_sdp_rec); + if (p_sdp_rec) { + if (SDP_FindServiceUUIDInRec(p_sdp_rec, &service_uuid)) { /* send result back to app now, one by one */ bdcpy (result.disc_ble_res.bd_addr, bta_dm_search_cb.peer_bdaddr); - BCM_STRNCPY_S((char*)result.disc_ble_res.bd_name, sizeof(BD_NAME), bta_dm_get_remname(), (BD_NAME_LEN)); + BCM_STRNCPY_S((char *)result.disc_ble_res.bd_name, sizeof(BD_NAME), bta_dm_get_remname(), (BD_NAME_LEN)); result.disc_ble_res.bd_name[BD_NAME_LEN] = 0; result.disc_ble_res.service.len = service_uuid.len; result.disc_ble_res.service.uu.uuid16 = service_uuid.uu.uuid16; @@ -1633,26 +1549,24 @@ void bta_dm_sdp_result (tBTA_DM_MSG *p_data) } } - if (bta_dm_search_cb.uuid_to_search > 0) + if (bta_dm_search_cb.uuid_to_search > 0) { break; + } } while (p_sdp_rec); - } - else + } else #endif { /* SDP_DB_FULL means some records with the required attributes were received */ if (((p_data->sdp_event.sdp_result == SDP_DB_FULL) && bta_dm_search_cb.services != BTA_ALL_SERVICE_MASK) || - (p_sdp_rec != NULL)) - { - if (service != UUID_SERVCLASS_PNP_INFORMATION) - { + (p_sdp_rec != NULL)) { + if (service != UUID_SERVCLASS_PNP_INFORMATION) { UINT16 tmp_svc = 0xFFFF; bta_dm_search_cb.services_found |= - (tBTA_SERVICE_MASK)(BTA_SERVICE_ID_TO_SERVICE_MASK(bta_dm_search_cb.service_index-1)); - tmp_svc = bta_service_id_to_uuid_lkup_tbl[bta_dm_search_cb.service_index-1]; + (tBTA_SERVICE_MASK)(BTA_SERVICE_ID_TO_SERVICE_MASK(bta_dm_search_cb.service_index - 1)); + tmp_svc = bta_service_id_to_uuid_lkup_tbl[bta_dm_search_cb.service_index - 1]; /* Add to the list of UUIDs */ sdpu_uuid16_to_uuid128(tmp_svc, uuid_list[num_uuids]); num_uuids++; @@ -1660,24 +1574,23 @@ void bta_dm_sdp_result (tBTA_DM_MSG *p_data) } } - if(bta_dm_search_cb.services == BTA_ALL_SERVICE_MASK && - bta_dm_search_cb.services_to_search == 0) - { + if (bta_dm_search_cb.services == BTA_ALL_SERVICE_MASK && + bta_dm_search_cb.services_to_search == 0) { #if BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE if ( bta_dm_search_cb.service_index == BTA_BLE_SERVICE_ID && - bta_dm_search_cb.uuid_to_search > 0) + bta_dm_search_cb.uuid_to_search > 0) { bta_dm_search_cb.uuid_to_search --; + } if (bta_dm_search_cb.uuid_to_search == 0 || - bta_dm_search_cb.service_index != BTA_BLE_SERVICE_ID) + bta_dm_search_cb.service_index != BTA_BLE_SERVICE_ID) #endif bta_dm_search_cb.service_index++; - } - else /* regular one service per search or PNP search */ + } else { /* regular one service per search or PNP search */ break; + } - } - while(bta_dm_search_cb.service_index <= BTA_MAX_SERVICE_ID); + } while (bta_dm_search_cb.service_index <= BTA_MAX_SERVICE_ID); // GKI_freebuf(bta_dm_search_cb.p_sdp_db); // bta_dm_search_cb.p_sdp_db = NULL; @@ -1685,18 +1598,14 @@ void bta_dm_sdp_result (tBTA_DM_MSG *p_data) bta_dm_search_cb.services_found); /* Collect the 128-bit services here and put them into the list */ - if(bta_dm_search_cb.services == BTA_ALL_SERVICE_MASK) - { + if (bta_dm_search_cb.services == BTA_ALL_SERVICE_MASK) { p_sdp_rec = NULL; - do - { + do { tBT_UUID temp_uuid; /* find a service record, report it */ p_sdp_rec = SDP_FindServiceInDb_128bit(bta_dm_search_cb.p_sdp_db, p_sdp_rec); - if (p_sdp_rec) - { - if (SDP_FindServiceUUIDInRec_128bit(p_sdp_rec, &temp_uuid)) - { + if (p_sdp_rec) { + if (SDP_FindServiceUUIDInRec_128bit(p_sdp_rec, &temp_uuid)) { memcpy(uuid_list[num_uuids], temp_uuid.uu.uuid128, MAX_UUID_SIZE); num_uuids++; } @@ -1704,22 +1613,18 @@ void bta_dm_sdp_result (tBTA_DM_MSG *p_data) } while (p_sdp_rec); } /* if there are more services to search for */ - if(bta_dm_search_cb.services_to_search) - { + if (bta_dm_search_cb.services_to_search) { /* Free up the p_sdp_db before checking the next one */ bta_dm_free_sdp_db(NULL); bta_dm_find_services(bta_dm_search_cb.peer_bdaddr); - } - else - { + } else { /* callbacks */ /* start next bd_addr if necessary */ BTM_SecDeleteRmtNameNotifyCallback(&bta_dm_service_search_remname_cback); - if ((p_msg = (tBTA_DM_MSG *) GKI_getbuf(sizeof(tBTA_DM_MSG))) != NULL) - { + if ((p_msg = (tBTA_DM_MSG *) GKI_getbuf(sizeof(tBTA_DM_MSG))) != NULL) { p_msg->hdr.event = BTA_DM_DISCOVERY_RESULT_EVT; p_msg->disc_result.result.disc_res.result = BTA_SUCCESS; p_msg->disc_result.result.disc_res.p_raw_data = NULL; @@ -1727,20 +1632,20 @@ void bta_dm_sdp_result (tBTA_DM_MSG *p_data) p_msg->disc_result.result.disc_res.num_uuids = num_uuids; p_msg->disc_result.result.disc_res.p_uuid_list = NULL; if (num_uuids > 0) { - p_msg->disc_result.result.disc_res.p_uuid_list = (UINT8*)GKI_getbuf(num_uuids*MAX_UUID_SIZE); + p_msg->disc_result.result.disc_res.p_uuid_list = (UINT8 *)GKI_getbuf(num_uuids * MAX_UUID_SIZE); if (p_msg->disc_result.result.disc_res.p_uuid_list) { memcpy(p_msg->disc_result.result.disc_res.p_uuid_list, uuid_list, - num_uuids*MAX_UUID_SIZE); + num_uuids * MAX_UUID_SIZE); } else { - p_msg->disc_result.result.disc_res.num_uuids = 0; - APPL_TRACE_ERROR("%s: Unable to allocate memory for uuid_list", __func__); + p_msg->disc_result.result.disc_res.num_uuids = 0; + APPL_TRACE_ERROR("%s: Unable to allocate memory for uuid_list", __func__); } } //copy the raw_data to the discovery result structure // if ( bta_dm_search_cb.p_sdp_db != NULL && bta_dm_search_cb.p_sdp_db->raw_used != 0 && - bta_dm_search_cb.p_sdp_db->raw_data != NULL) { + bta_dm_search_cb.p_sdp_db->raw_data != NULL) { APPL_TRACE_DEBUG( "%s raw_data used = 0x%x raw_data_ptr = 0x%x", __func__, bta_dm_search_cb.p_sdp_db->raw_used, @@ -1757,14 +1662,13 @@ void bta_dm_sdp_result (tBTA_DM_MSG *p_data) } else { APPL_TRACE_DEBUG("%s GKI Alloc failed to allocate %d bytes !!", __func__, - bta_dm_search_cb.p_sdp_db->raw_used); + bta_dm_search_cb.p_sdp_db->raw_used); } bta_dm_search_cb.p_sdp_db->raw_data = NULL; //no need to free this - it is a global assigned. bta_dm_search_cb.p_sdp_db->raw_used = 0; bta_dm_search_cb.p_sdp_db->raw_size = 0; - } - else { + } else { APPL_TRACE_DEBUG("%s raw data size is 0 or raw_data is null!!", __func__); } /* Done with p_sdp_db. Free it */ @@ -1772,29 +1676,29 @@ void bta_dm_sdp_result (tBTA_DM_MSG *p_data) p_msg->disc_result.result.disc_res.services = bta_dm_search_cb.services_found; //Piggy back the SCN over result field - if( scn_found ) - { - p_msg->disc_result.result.disc_res.result = (3 + bta_dm_search_cb.peer_scn); - p_msg->disc_result.result.disc_res.services |= BTA_USER_SERVICE_MASK; + if ( scn_found ) { + p_msg->disc_result.result.disc_res.result = (3 + bta_dm_search_cb.peer_scn); + p_msg->disc_result.result.disc_res.services |= BTA_USER_SERVICE_MASK; - APPL_TRACE_EVENT(" Piggy back the SCN over result field SCN=%d", bta_dm_search_cb.peer_scn); + APPL_TRACE_EVENT(" Piggy back the SCN over result field SCN=%d", bta_dm_search_cb.peer_scn); } bdcpy (p_msg->disc_result.result.disc_res.bd_addr, bta_dm_search_cb.peer_bdaddr); - BCM_STRNCPY_S((char*)p_msg->disc_result.result.disc_res.bd_name, sizeof(BD_NAME), - bta_dm_get_remname(), (BD_NAME_LEN-1)); + BCM_STRNCPY_S((char *)p_msg->disc_result.result.disc_res.bd_name, sizeof(BD_NAME), + bta_dm_get_remname(), (BD_NAME_LEN - 1)); /* make sure the string is null terminated */ - p_msg->disc_result.result.disc_res.bd_name[BD_NAME_LEN-1] = 0; + p_msg->disc_result.result.disc_res.bd_name[BD_NAME_LEN - 1] = 0; bta_sys_sendmsg(p_msg); } } } else { /* conn failed. No need for timer */ - if(p_data->sdp_event.sdp_result == SDP_CONN_FAILED || p_data->sdp_event.sdp_result == SDP_CONN_REJECTED - || p_data->sdp_event.sdp_result == SDP_SECURITY_ERR) + if (p_data->sdp_event.sdp_result == SDP_CONN_FAILED || p_data->sdp_event.sdp_result == SDP_CONN_REJECTED + || p_data->sdp_event.sdp_result == SDP_SECURITY_ERR) { bta_dm_search_cb.wait_disc = FALSE; + } /* not able to connect go to next device */ GKI_freebuf(bta_dm_search_cb.p_sdp_db); @@ -1802,17 +1706,16 @@ void bta_dm_sdp_result (tBTA_DM_MSG *p_data) BTM_SecDeleteRmtNameNotifyCallback(&bta_dm_service_search_remname_cback); - if ((p_msg = (tBTA_DM_MSG *) GKI_getbuf(sizeof(tBTA_DM_MSG))) != NULL) - { + if ((p_msg = (tBTA_DM_MSG *) GKI_getbuf(sizeof(tBTA_DM_MSG))) != NULL) { p_msg->hdr.event = BTA_DM_DISCOVERY_RESULT_EVT; p_msg->disc_result.result.disc_res.result = BTA_FAILURE; p_msg->disc_result.result.disc_res.services = bta_dm_search_cb.services_found; bdcpy (p_msg->disc_result.result.disc_res.bd_addr, bta_dm_search_cb.peer_bdaddr); - BCM_STRNCPY_S((char*)p_msg->disc_result.result.disc_res.bd_name, sizeof(BD_NAME), - bta_dm_get_remname(), (BD_NAME_LEN-1)); + BCM_STRNCPY_S((char *)p_msg->disc_result.result.disc_res.bd_name, sizeof(BD_NAME), + bta_dm_get_remname(), (BD_NAME_LEN - 1)); /* make sure the string is null terminated */ - p_msg->disc_result.result.disc_res.bd_name[BD_NAME_LEN-1] = 0; + p_msg->disc_result.result.disc_res.bd_name[BD_NAME_LEN - 1] = 0; bta_sys_sendmsg(p_msg); } @@ -1836,10 +1739,11 @@ void bta_dm_search_cmpl (tBTA_DM_MSG *p_data) utl_freebuf((void **)&bta_dm_search_cb.p_srvc_uuid); #endif - if (p_data->hdr.layer_specific == BTA_DM_API_DI_DISCOVER_EVT) + if (p_data->hdr.layer_specific == BTA_DM_API_DI_DISCOVER_EVT) { bta_dm_di_disc_cmpl(p_data); - else + } else { bta_dm_search_cb.p_search_cback(BTA_DM_DISC_CMPL_EVT, NULL); + } } /******************************************************************************* @@ -1859,13 +1763,12 @@ void bta_dm_disc_result (tBTA_DM_MSG *p_data) /* if any BR/EDR service discovery has been done, report the event */ if ((bta_dm_search_cb.services & ((BTA_ALL_SERVICE_MASK | BTA_USER_SERVICE_MASK ) & ~BTA_BLE_SERVICE_MASK))) #endif - bta_dm_search_cb.p_search_cback(BTA_DM_DISC_RES_EVT, &p_data->disc_result.result); + bta_dm_search_cb.p_search_cback(BTA_DM_DISC_RES_EVT, &p_data->disc_result.result); tBTA_DM_MSG *p_msg = (tBTA_DM_MSG *) GKI_getbuf(sizeof(tBTA_DM_MSG)); /* send a message to change state */ - if (p_msg != NULL) - { + if (p_msg != NULL) { p_msg->hdr.event = BTA_DM_SEARCH_CMPL_EVT; p_msg->hdr.layer_specific = BTA_DM_API_DISCOVER_EVT; bta_sys_sendmsg(p_msg); @@ -1884,29 +1787,26 @@ void bta_dm_disc_result (tBTA_DM_MSG *p_data) void bta_dm_search_result (tBTA_DM_MSG *p_data) { APPL_TRACE_DEBUG("%s searching:0x%04x, result:0x%04x", __func__, - bta_dm_search_cb.services, - p_data->disc_result.result.disc_res.services); + bta_dm_search_cb.services, + p_data->disc_result.result.disc_res.services); /* call back if application wants name discovery or found services that application is searching */ if (( !bta_dm_search_cb.services ) - ||(( bta_dm_search_cb.services ) && ( p_data->disc_result.result.disc_res.services ))) - { + || (( bta_dm_search_cb.services ) && ( p_data->disc_result.result.disc_res.services ))) { bta_dm_search_cb.p_search_cback(BTA_DM_DISC_RES_EVT, &p_data->disc_result.result); } /* if searching did not initiate to create link */ - if(!bta_dm_search_cb.wait_disc ) - { + if (!bta_dm_search_cb.wait_disc ) { /* if service searching is done with EIR, don't search next device */ - if( bta_dm_search_cb.p_btm_inq_info ) - bta_dm_discover_next_device(); - } - else - { + if ( bta_dm_search_cb.p_btm_inq_info ) { + bta_dm_discover_next_device(); + } + } else { /* wait until link is disconnected or timeout */ bta_dm_search_cb.sdp_results = TRUE; - bta_dm_search_cb.search_timer.p_cback = (TIMER_CBACK*)&bta_dm_search_timer_cback; - bta_sys_start_timer(&bta_dm_search_cb.search_timer, 0, 1000*(L2CAP_LINK_INACTIVITY_TOUT+1) ); + bta_dm_search_cb.search_timer.p_cback = (TIMER_CBACK *)&bta_dm_search_timer_cback; + bta_sys_start_timer(&bta_dm_search_cb.search_timer, 0, 1000 * (L2CAP_LINK_INACTIVITY_TOUT + 1) ); } } @@ -1946,8 +1846,7 @@ static void bta_dm_search_timer_cback (TIMER_LIST_ENT *p_tle) void bta_dm_free_sdp_db (tBTA_DM_MSG *p_data) { UNUSED(p_data); - if(bta_dm_search_cb.p_sdp_db) - { + if (bta_dm_search_cb.p_sdp_db) { GKI_freebuf(bta_dm_search_cb.p_sdp_db); bta_dm_search_cb.p_sdp_db = NULL; } @@ -1965,8 +1864,7 @@ void bta_dm_free_sdp_db (tBTA_DM_MSG *p_data) *******************************************************************************/ void bta_dm_queue_search (tBTA_DM_MSG *p_data) { - if(bta_dm_search_cb.p_search_queue) - { + if (bta_dm_search_cb.p_search_queue) { GKI_freebuf(bta_dm_search_cb.p_search_queue); } @@ -1986,8 +1884,7 @@ void bta_dm_queue_search (tBTA_DM_MSG *p_data) *******************************************************************************/ void bta_dm_queue_disc (tBTA_DM_MSG *p_data) { - if(bta_dm_search_cb.p_search_queue) - { + if (bta_dm_search_cb.p_search_queue) { GKI_freebuf(bta_dm_search_cb.p_search_queue); } @@ -2008,8 +1905,7 @@ void bta_dm_queue_disc (tBTA_DM_MSG *p_data) void bta_dm_search_clear_queue (tBTA_DM_MSG *p_data) { UNUSED(p_data); - if(bta_dm_search_cb.p_search_queue) - { + if (bta_dm_search_cb.p_search_queue) { GKI_freebuf(bta_dm_search_cb.p_search_queue); bta_dm_search_cb.p_search_queue = NULL; } @@ -2027,8 +1923,7 @@ void bta_dm_search_clear_queue (tBTA_DM_MSG *p_data) void bta_dm_search_cancel_cmpl (tBTA_DM_MSG *p_data) { UNUSED(p_data); - if(bta_dm_search_cb.p_search_queue) - { + if (bta_dm_search_cb.p_search_queue) { bta_sys_sendmsg(bta_dm_search_cb.p_search_queue); bta_dm_search_cb.p_search_queue = NULL; } @@ -2048,8 +1943,7 @@ void bta_dm_search_cancel_cmpl (tBTA_DM_MSG *p_data) void bta_dm_search_cancel_transac_cmpl(tBTA_DM_MSG *p_data) { UNUSED(p_data); - if(bta_dm_search_cb.p_sdp_db) - { + if (bta_dm_search_cb.p_sdp_db) { GKI_freebuf(bta_dm_search_cb.p_sdp_db); bta_dm_search_cb.p_sdp_db = NULL; } @@ -2070,17 +1964,14 @@ void bta_dm_search_cancel_transac_cmpl(tBTA_DM_MSG *p_data) void bta_dm_search_cancel_notify (tBTA_DM_MSG *p_data) { UNUSED(p_data); - if (bta_dm_search_cb.p_search_cback) - { + if (bta_dm_search_cb.p_search_cback) { bta_dm_search_cb.p_search_cback(BTA_DM_SEARCH_CANCEL_CMPL_EVT, NULL); } - if (!bta_dm_search_cb.name_discover_done) - { + if (!bta_dm_search_cb.name_discover_done) { BTM_CancelRemoteDeviceName(); } #if (BLE_INCLUDED == TRUE) && (BTA_GATT_INCLUDED == TRUE) - if (bta_dm_search_cb.gatt_disc_active) - { + if (bta_dm_search_cb.gatt_disc_active) { bta_dm_cancel_gatt_discovery(bta_dm_search_cb.peer_bdaddr); } #endif @@ -2105,68 +1996,56 @@ static void bta_dm_find_services ( BD_ADDR bd_addr) memset (&uuid, 0, sizeof(tSDP_UUID)); - while(bta_dm_search_cb.service_index < BTA_MAX_SERVICE_ID) - { - if( bta_dm_search_cb.services_to_search - & (tBTA_SERVICE_MASK)(BTA_SERVICE_ID_TO_SERVICE_MASK(bta_dm_search_cb.service_index))) - { - if((bta_dm_search_cb.p_sdp_db = (tSDP_DISCOVERY_DB *)GKI_getbuf(BTA_DM_SDP_DB_SIZE)) != NULL) - { + while (bta_dm_search_cb.service_index < BTA_MAX_SERVICE_ID) { + if ( bta_dm_search_cb.services_to_search + & (tBTA_SERVICE_MASK)(BTA_SERVICE_ID_TO_SERVICE_MASK(bta_dm_search_cb.service_index))) { + if ((bta_dm_search_cb.p_sdp_db = (tSDP_DISCOVERY_DB *)GKI_getbuf(BTA_DM_SDP_DB_SIZE)) != NULL) { APPL_TRACE_DEBUG("bta_dm_search_cb.services = %04x***********", bta_dm_search_cb.services); /* try to search all services by search based on L2CAP UUID */ - if(bta_dm_search_cb.services == BTA_ALL_SERVICE_MASK ) - { + if (bta_dm_search_cb.services == BTA_ALL_SERVICE_MASK ) { LOG_INFO("%s services_to_search=%08x", __func__, bta_dm_search_cb.services_to_search); - if (bta_dm_search_cb.services_to_search & BTA_RES_SERVICE_MASK) - { + if (bta_dm_search_cb.services_to_search & BTA_RES_SERVICE_MASK) { uuid.uu.uuid16 = bta_service_id_to_uuid_lkup_tbl[0]; bta_dm_search_cb.services_to_search &= ~BTA_RES_SERVICE_MASK; - } - else - { + } else { uuid.uu.uuid16 = UUID_PROTOCOL_L2CAP; bta_dm_search_cb.services_to_search = 0; } - } - else - { + } else { #if BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE /* for LE only profile */ - if (bta_dm_search_cb.service_index == BTA_BLE_SERVICE_ID) - { - if (bta_dm_search_cb.uuid_to_search > 0 && bta_dm_search_cb.p_srvc_uuid) - { + if (bta_dm_search_cb.service_index == BTA_BLE_SERVICE_ID) { + if (bta_dm_search_cb.uuid_to_search > 0 && bta_dm_search_cb.p_srvc_uuid) { memcpy(&uuid, (const void *)(bta_dm_search_cb.p_srvc_uuid + \ bta_dm_search_cb.num_uuid - bta_dm_search_cb.uuid_to_search), sizeof(tBT_UUID)); bta_dm_search_cb.uuid_to_search -- ; - } - else + } else { uuid.uu.uuid16 = bta_service_id_to_uuid_lkup_tbl[bta_dm_search_cb.service_index]; + } /* last one? clear the BLE service bit if all discovery has been done */ if (bta_dm_search_cb.uuid_to_search == 0) bta_dm_search_cb.services_to_search &= - (tBTA_SERVICE_MASK)(~(BTA_SERVICE_ID_TO_SERVICE_MASK(bta_dm_search_cb.service_index))); + (tBTA_SERVICE_MASK)(~(BTA_SERVICE_ID_TO_SERVICE_MASK(bta_dm_search_cb.service_index))); - } - else + } else #endif { /* remove the service from services to be searched */ bta_dm_search_cb.services_to_search &= - (tBTA_SERVICE_MASK)(~(BTA_SERVICE_ID_TO_SERVICE_MASK(bta_dm_search_cb.service_index))); + (tBTA_SERVICE_MASK)(~(BTA_SERVICE_ID_TO_SERVICE_MASK(bta_dm_search_cb.service_index))); uuid.uu.uuid16 = bta_service_id_to_uuid_lkup_tbl[bta_dm_search_cb.service_index]; } } - if (uuid.len == 0) + if (uuid.len == 0) { uuid.len = LEN_UUID_16; + } - if (bta_dm_search_cb.service_index == BTA_USER_SERVICE_ID) - { + if (bta_dm_search_cb.service_index == BTA_USER_SERVICE_ID) { memcpy(&uuid, &bta_dm_search_cb.uuid, sizeof(tSDP_UUID)); } @@ -2178,28 +2057,23 @@ static void bta_dm_find_services ( BD_ADDR bd_addr) bta_dm_search_cb.p_sdp_db->raw_size = MAX_DISC_RAW_DATA_BUF; - if (!SDP_ServiceSearchAttributeRequest (bd_addr, bta_dm_search_cb.p_sdp_db, &bta_dm_sdp_callback)) - { + if (!SDP_ServiceSearchAttributeRequest (bd_addr, bta_dm_search_cb.p_sdp_db, &bta_dm_sdp_callback)) { /* if discovery not successful with this device proceed to next one */ GKI_freebuf(bta_dm_search_cb.p_sdp_db); bta_dm_search_cb.p_sdp_db = NULL; bta_dm_search_cb.service_index = BTA_MAX_SERVICE_ID; - } - else - { + } else { #if BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE if ((bta_dm_search_cb.service_index == BTA_BLE_SERVICE_ID && - bta_dm_search_cb.uuid_to_search == 0) || - bta_dm_search_cb.service_index != BTA_BLE_SERVICE_ID) + bta_dm_search_cb.uuid_to_search == 0) || + bta_dm_search_cb.service_index != BTA_BLE_SERVICE_ID) #endif - bta_dm_search_cb.service_index++; + bta_dm_search_cb.service_index++; return; } - } - else - { + } else { APPL_TRACE_ERROR("#### Failed to allocate SDP DB buffer! ####"); } } @@ -2208,18 +2082,16 @@ static void bta_dm_find_services ( BD_ADDR bd_addr) } /* no more services to be discovered */ - if(bta_dm_search_cb.service_index >= BTA_MAX_SERVICE_ID) - { - if ((p_msg = (tBTA_DM_MSG *) GKI_getbuf(sizeof(tBTA_DM_MSG))) != NULL) - { + if (bta_dm_search_cb.service_index >= BTA_MAX_SERVICE_ID) { + if ((p_msg = (tBTA_DM_MSG *) GKI_getbuf(sizeof(tBTA_DM_MSG))) != NULL) { p_msg->hdr.event = BTA_DM_DISCOVERY_RESULT_EVT; p_msg->disc_result.result.disc_res.services = bta_dm_search_cb.services_found; bdcpy (p_msg->disc_result.result.disc_res.bd_addr, bta_dm_search_cb.peer_bdaddr); - BCM_STRNCPY_S((char*)p_msg->disc_result.result.disc_res.bd_name, sizeof(BD_NAME), - bta_dm_get_remname(), (BD_NAME_LEN-1)); + BCM_STRNCPY_S((char *)p_msg->disc_result.result.disc_res.bd_name, sizeof(BD_NAME), + bta_dm_get_remname(), (BD_NAME_LEN - 1)); /* make sure the string is terminated */ - p_msg->disc_result.result.disc_res.bd_name[BD_NAME_LEN-1] = 0; + p_msg->disc_result.result.disc_res.bd_name[BD_NAME_LEN - 1] = 0; bta_sys_sendmsg(p_msg); } @@ -2238,24 +2110,20 @@ static void bta_dm_find_services ( BD_ADDR bd_addr) static void bta_dm_discover_next_device(void) { - tBTA_DM_MSG * p_msg; + tBTA_DM_MSG *p_msg; APPL_TRACE_DEBUG("bta_dm_discover_next_device"); /* searching next device on inquiry result */ - if((bta_dm_search_cb.p_btm_inq_info = BTM_InqDbNext(bta_dm_search_cb.p_btm_inq_info)) != NULL) - { + if ((bta_dm_search_cb.p_btm_inq_info = BTM_InqDbNext(bta_dm_search_cb.p_btm_inq_info)) != NULL) { bta_dm_search_cb.name_discover_done = FALSE; bta_dm_search_cb.peer_name[0] = 0; bta_dm_discover_device(bta_dm_search_cb.p_btm_inq_info->results.remote_bd_addr); - } - else - { + } else { /* no devices, search complete */ bta_dm_search_cb.services = 0; - if ((p_msg = (tBTA_DM_MSG *) GKI_getbuf(sizeof(tBTA_DM_MSG))) != NULL) - { + if ((p_msg = (tBTA_DM_MSG *) GKI_getbuf(sizeof(tBTA_DM_MSG))) != NULL) { p_msg->hdr.event = BTA_DM_SEARCH_CMPL_EVT; p_msg->hdr.layer_specific = BTA_DM_API_DISCOVER_EVT; bta_sys_sendmsg(p_msg); @@ -2274,18 +2142,18 @@ static void bta_dm_discover_next_device(void) *******************************************************************************/ static void bta_dm_discover_device(BD_ADDR remote_bd_addr) { - tBTA_DM_MSG * p_msg; + tBTA_DM_MSG *p_msg; tBT_TRANSPORT transport = BT_TRANSPORT_BR_EDR; #if BLE_INCLUDED == TRUE - if (bta_dm_search_cb.transport == BTA_TRANSPORT_UNKNOWN) - { + if (bta_dm_search_cb.transport == BTA_TRANSPORT_UNKNOWN) { tBT_DEVICE_TYPE dev_type; tBLE_ADDR_TYPE addr_type; BTM_ReadDevInfo(remote_bd_addr, &dev_type, &addr_type); - if (dev_type == BT_DEVICE_TYPE_BLE || addr_type == BLE_ADDR_RANDOM) + if (dev_type == BT_DEVICE_TYPE_BLE || addr_type == BLE_ADDR_RANDOM) { transport = BT_TRANSPORT_LE; + } } else { transport = bta_dm_search_cb.transport; } @@ -2295,48 +2163,45 @@ static void bta_dm_discover_device(BD_ADDR remote_bd_addr) bta_dm_search_cb.transport = BTA_TRANSPORT_UNKNOWN; APPL_TRACE_DEBUG("%s BDA:0x%02X%02X%02X%02X%02X%02X", __func__, - remote_bd_addr[0],remote_bd_addr[1], - remote_bd_addr[2],remote_bd_addr[3], - remote_bd_addr[4],remote_bd_addr[5]); + remote_bd_addr[0], remote_bd_addr[1], + remote_bd_addr[2], remote_bd_addr[3], + remote_bd_addr[4], remote_bd_addr[5]); bdcpy(bta_dm_search_cb.peer_bdaddr, remote_bd_addr); APPL_TRACE_DEBUG("%s name_discover_done = %d p_btm_inq_info 0x%x state = %d, transport=%d", - __func__, - bta_dm_search_cb.name_discover_done, - bta_dm_search_cb.p_btm_inq_info, - bta_dm_search_cb.state, - transport); + __func__, + bta_dm_search_cb.name_discover_done, + bta_dm_search_cb.p_btm_inq_info, + bta_dm_search_cb.state, + transport); - if (bta_dm_search_cb.p_btm_inq_info) - { + if (bta_dm_search_cb.p_btm_inq_info) { APPL_TRACE_DEBUG("%s appl_knows_rem_name %d", __func__, - bta_dm_search_cb.p_btm_inq_info->appl_knows_rem_name); + bta_dm_search_cb.p_btm_inq_info->appl_knows_rem_name); } - if((bta_dm_search_cb.p_btm_inq_info) - && (bta_dm_search_cb.p_btm_inq_info->results.device_type == BT_DEVICE_TYPE_BLE) - && (bta_dm_search_cb.state == BTA_DM_SEARCH_ACTIVE)) - { + if ((bta_dm_search_cb.p_btm_inq_info) + && (bta_dm_search_cb.p_btm_inq_info->results.device_type == BT_DEVICE_TYPE_BLE) + && (bta_dm_search_cb.state == BTA_DM_SEARCH_ACTIVE)) { /* Do not perform RNR for LE devices at inquiry complete*/ bta_dm_search_cb.name_discover_done = TRUE; } /* if name discovery is not done and application needs remote name */ if ((!bta_dm_search_cb.name_discover_done) - && (( bta_dm_search_cb.p_btm_inq_info == NULL ) - ||(bta_dm_search_cb.p_btm_inq_info && (!bta_dm_search_cb.p_btm_inq_info->appl_knows_rem_name)))) - { - if (bta_dm_read_remote_device_name(bta_dm_search_cb.peer_bdaddr, transport) == TRUE) + && (( bta_dm_search_cb.p_btm_inq_info == NULL ) + || (bta_dm_search_cb.p_btm_inq_info && (!bta_dm_search_cb.p_btm_inq_info->appl_knows_rem_name)))) { + if (bta_dm_read_remote_device_name(bta_dm_search_cb.peer_bdaddr, transport) == TRUE) { return; + } /* starting name discovery failed */ bta_dm_search_cb.name_discover_done = TRUE; } /* if application wants to discover service */ - if ( bta_dm_search_cb.services ) - { + if ( bta_dm_search_cb.services ) { /* initialize variables */ bta_dm_search_cb.service_index = 0; bta_dm_search_cb.services_found = 0; @@ -2345,9 +2210,8 @@ static void bta_dm_discover_device(BD_ADDR remote_bd_addr) bta_dm_search_cb.uuid_to_search = bta_dm_search_cb.num_uuid; #endif if ((bta_dm_search_cb.p_btm_inq_info != NULL) && - bta_dm_search_cb.services != BTA_USER_SERVICE_MASK - &&(bta_dm_search_cb.sdp_search == FALSE)) - { + bta_dm_search_cb.services != BTA_USER_SERVICE_MASK + && (bta_dm_search_cb.sdp_search == FALSE)) { /* check if EIR provides the information of supported services */ bta_dm_eir_search_services( &bta_dm_search_cb.p_btm_inq_info->results, &bta_dm_search_cb.services_to_search, @@ -2355,30 +2219,27 @@ static void bta_dm_discover_device(BD_ADDR remote_bd_addr) } /* if seaching with EIR is not completed */ - if(bta_dm_search_cb.services_to_search) - { + if (bta_dm_search_cb.services_to_search) { /* check whether connection already exists to the device if connection exists, we don't have to wait for ACL link to go down to start search on next device */ - if (BTM_IsAclConnectionUp(bta_dm_search_cb.peer_bdaddr, BT_TRANSPORT_BR_EDR)) + if (BTM_IsAclConnectionUp(bta_dm_search_cb.peer_bdaddr, BT_TRANSPORT_BR_EDR)) { bta_dm_search_cb.wait_disc = FALSE; - else + } else { bta_dm_search_cb.wait_disc = TRUE; - -#if (BLE_INCLUDED == TRUE && (defined BTA_GATT_INCLUDED) && (BTA_GATT_INCLUDED == TRUE)) - if ( bta_dm_search_cb.p_btm_inq_info ) - { - APPL_TRACE_DEBUG("%s p_btm_inq_info 0x%x results.device_type 0x%x services_to_search 0x%x", - __func__, - bta_dm_search_cb.p_btm_inq_info, - bta_dm_search_cb.p_btm_inq_info->results.device_type, - bta_dm_search_cb.services_to_search); } - if (transport == BT_TRANSPORT_LE) - { - if (bta_dm_search_cb.services_to_search & BTA_BLE_SERVICE_MASK) - { +#if (BLE_INCLUDED == TRUE && (defined BTA_GATT_INCLUDED) && (BTA_GATT_INCLUDED == TRUE)) + if ( bta_dm_search_cb.p_btm_inq_info ) { + APPL_TRACE_DEBUG("%s p_btm_inq_info 0x%x results.device_type 0x%x services_to_search 0x%x", + __func__, + bta_dm_search_cb.p_btm_inq_info, + bta_dm_search_cb.p_btm_inq_info->results.device_type, + bta_dm_search_cb.services_to_search); + } + + if (transport == BT_TRANSPORT_LE) { + if (bta_dm_search_cb.services_to_search & BTA_BLE_SERVICE_MASK) { //set the raw data buffer here memset(g_disc_raw_data_buf, 0, sizeof(g_disc_raw_data_buf)); bta_dm_search_cb.p_ble_rawdata = g_disc_raw_data_buf; @@ -2390,8 +2251,7 @@ static void bta_dm_discover_device(BD_ADDR remote_bd_addr) btm_dm_start_gatt_discovery(bta_dm_search_cb.peer_bdaddr); return; } - } - else + } else #endif { bta_dm_search_cb.sdp_results = FALSE; @@ -2402,19 +2262,18 @@ static void bta_dm_discover_device(BD_ADDR remote_bd_addr) } /* name discovery and service discovery are done for this device */ - if ((p_msg = (tBTA_DM_MSG *) GKI_getbuf(sizeof(tBTA_DM_MSG))) != NULL) - { + if ((p_msg = (tBTA_DM_MSG *) GKI_getbuf(sizeof(tBTA_DM_MSG))) != NULL) { p_msg->hdr.event = BTA_DM_DISCOVERY_RESULT_EVT; /* initialize the data structure - includes p_raw_data and raw_data_size */ memset(&(p_msg->disc_result.result), 0, sizeof(tBTA_DM_DISC_RES)); p_msg->disc_result.result.disc_res.result = BTA_SUCCESS; p_msg->disc_result.result.disc_res.services = bta_dm_search_cb.services_found; bdcpy (p_msg->disc_result.result.disc_res.bd_addr, bta_dm_search_cb.peer_bdaddr); - BCM_STRNCPY_S((char*)p_msg->disc_result.result.disc_res.bd_name, sizeof(BD_NAME), - (char*)bta_dm_search_cb.peer_name, (BD_NAME_LEN-1)); + BCM_STRNCPY_S((char *)p_msg->disc_result.result.disc_res.bd_name, sizeof(BD_NAME), + (char *)bta_dm_search_cb.peer_name, (BD_NAME_LEN - 1)); /* make sure the string is terminated */ - p_msg->disc_result.result.disc_res.bd_name[BD_NAME_LEN-1] = 0; + p_msg->disc_result.result.disc_res.bd_name[BD_NAME_LEN - 1] = 0; bta_sys_sendmsg(p_msg); } @@ -2432,10 +2291,9 @@ static void bta_dm_discover_device(BD_ADDR remote_bd_addr) static void bta_dm_sdp_callback (UINT16 sdp_status) { - tBTA_DM_SDP_RESULT * p_msg; + tBTA_DM_SDP_RESULT *p_msg; - if ((p_msg = (tBTA_DM_SDP_RESULT *) GKI_getbuf(sizeof(tBTA_DM_SDP_RESULT))) != NULL) - { + if ((p_msg = (tBTA_DM_SDP_RESULT *) GKI_getbuf(sizeof(tBTA_DM_SDP_RESULT))) != NULL) { p_msg->hdr.event = BTA_DM_SDP_RESULT_EVT; p_msg->sdp_result = sdp_status; bta_sys_sendmsg(p_msg); @@ -2462,7 +2320,7 @@ static void bta_dm_inq_results_cb (tBTM_INQ_RESULTS *p_inq, UINT8 *p_eir) bdcpy(result.inq_res.bd_addr, p_inq->remote_bd_addr); memcpy(result.inq_res.dev_class, p_inq->dev_class, DEV_CLASS_LEN); BTM_COD_SERVICE_CLASS(service_class, p_inq->dev_class); - result.inq_res.is_limited = (service_class & BTM_COD_SERVICE_LMTD_DISCOVER)?TRUE:FALSE; + result.inq_res.is_limited = (service_class & BTM_COD_SERVICE_LMTD_DISCOVER) ? TRUE : FALSE; result.inq_res.rssi = p_inq->rssi; #if (BLE_INCLUDED == TRUE) @@ -2475,22 +2333,22 @@ static void bta_dm_inq_results_cb (tBTM_INQ_RESULTS *p_inq, UINT8 *p_eir) /* application will parse EIR to find out remote device name */ result.inq_res.p_eir = p_eir; - if((p_inq_info = BTM_InqDbRead(p_inq->remote_bd_addr)) != NULL) - { + if ((p_inq_info = BTM_InqDbRead(p_inq->remote_bd_addr)) != NULL) { /* initialize remt_name_not_required to FALSE so that we get the name by default */ result.inq_res.remt_name_not_required = FALSE; } - if(bta_dm_search_cb.p_search_cback) + if (bta_dm_search_cb.p_search_cback) { bta_dm_search_cb.p_search_cback(BTA_DM_INQ_RES_EVT, &result); + } - if(p_inq_info) - { + if (p_inq_info) { /* application indicates if it knows the remote name, inside the callback copy that to the inquiry data base*/ - if(result.inq_res.remt_name_not_required) + if (result.inq_res.remt_name_not_required) { p_inq_info->appl_knows_rem_name = TRUE; + } } @@ -2507,12 +2365,11 @@ static void bta_dm_inq_results_cb (tBTM_INQ_RESULTS *p_inq, UINT8 *p_eir) ** Returns void ** *******************************************************************************/ -static void bta_dm_inq_cmpl_cb (void * p_result) +static void bta_dm_inq_cmpl_cb (void *p_result) { - tBTA_DM_MSG * p_msg; + tBTA_DM_MSG *p_msg; - if (bta_dm_search_cb.cancel_pending == FALSE) - { + if (bta_dm_search_cb.cancel_pending == FALSE) { APPL_TRACE_DEBUG("%s", __FUNCTION__); p_msg = (tBTA_DM_MSG *) GKI_getbuf(sizeof(tBTA_DM_MSG)); if (p_msg != NULL) { @@ -2520,9 +2377,7 @@ static void bta_dm_inq_cmpl_cb (void * p_result) p_msg->inq_cmpl.num = ((tBTM_INQUIRY_CMPL *)p_result)->num_resp; bta_sys_sendmsg(p_msg); } - } - else - { + } else { bta_dm_search_cb.cancel_pending = FALSE; bta_dm_search_cancel_notify(NULL); @@ -2553,32 +2408,25 @@ static void bta_dm_service_search_remname_cback (BD_ADDR bd_addr, DEV_CLASS dc, APPL_TRACE_DEBUG("bta_dm_service_search_remname_cback name=<%s>", bd_name); /* if this is what we are looking for */ - if (!bdcmp( bta_dm_search_cb.peer_bdaddr, bd_addr)) - { - rem_name.length = strlen((char*)bd_name); - if (rem_name.length > (BD_NAME_LEN-1)) - { - rem_name.length = (BD_NAME_LEN-1); - rem_name.remote_bd_name[(BD_NAME_LEN-1)] = 0; + if (!bdcmp( bta_dm_search_cb.peer_bdaddr, bd_addr)) { + rem_name.length = strlen((char *)bd_name); + if (rem_name.length > (BD_NAME_LEN - 1)) { + rem_name.length = (BD_NAME_LEN - 1); + rem_name.remote_bd_name[(BD_NAME_LEN - 1)] = 0; } - BCM_STRNCPY_S((char*)rem_name.remote_bd_name, sizeof(BD_NAME), (char*)bd_name, (BD_NAME_LEN-1)); + BCM_STRNCPY_S((char *)rem_name.remote_bd_name, sizeof(BD_NAME), (char *)bd_name, (BD_NAME_LEN - 1)); rem_name.status = BTM_SUCCESS; bta_dm_remname_cback(&rem_name); - } - else - { + } else { /* get name of device */ btm_status = BTM_ReadRemoteDeviceName (bta_dm_search_cb.peer_bdaddr, - (tBTM_CMPL_CB *) bta_dm_remname_cback, - BT_TRANSPORT_BR_EDR); - if ( btm_status == BTM_BUSY ) - { + (tBTM_CMPL_CB *) bta_dm_remname_cback, + BT_TRANSPORT_BR_EDR); + if ( btm_status == BTM_BUSY ) { /* wait for next chance(notification of remote name discovery done) */ APPL_TRACE_DEBUG("bta_dm_service_search_remname_cback: BTM_ReadRemoteDeviceName is busy"); - } - else if ( btm_status != BTM_CMD_STARTED ) - { + } else if ( btm_status != BTM_CMD_STARTED ) { /* if failed to start getting remote name then continue */ APPL_TRACE_WARNING("bta_dm_service_search_remname_cback: BTM_ReadRemoteDeviceName returns 0x%02X", btm_status); @@ -2602,29 +2450,27 @@ static void bta_dm_service_search_remname_cback (BD_ADDR bd_addr, DEV_CLASS dc, *******************************************************************************/ static void bta_dm_remname_cback (tBTM_REMOTE_DEV_NAME *p_remote_name) { - tBTA_DM_REM_NAME * p_msg; + tBTA_DM_REM_NAME *p_msg; APPL_TRACE_DEBUG("bta_dm_remname_cback len = %d name=<%s>", p_remote_name->length, - p_remote_name->remote_bd_name); + p_remote_name->remote_bd_name); /* remote name discovery is done but it could be failed */ bta_dm_search_cb.name_discover_done = TRUE; - BCM_STRNCPY_S((char*)bta_dm_search_cb.peer_name, sizeof(BD_NAME), (char*)p_remote_name->remote_bd_name, (BD_NAME_LEN)); - bta_dm_search_cb.peer_name[BD_NAME_LEN]=0; + BCM_STRNCPY_S((char *)bta_dm_search_cb.peer_name, sizeof(BD_NAME), (char *)p_remote_name->remote_bd_name, (BD_NAME_LEN)); + bta_dm_search_cb.peer_name[BD_NAME_LEN] = 0; BTM_SecDeleteRmtNameNotifyCallback(&bta_dm_service_search_remname_cback); #if BLE_INCLUDED == TRUE - if (bta_dm_search_cb.transport == BT_TRANSPORT_LE ) - { + if (bta_dm_search_cb.transport == BT_TRANSPORT_LE ) { GAP_BleReadPeerPrefConnParams (bta_dm_search_cb.peer_bdaddr); } #endif - if ((p_msg = (tBTA_DM_REM_NAME *) GKI_getbuf(sizeof(tBTA_DM_REM_NAME))) != NULL) - { + if ((p_msg = (tBTA_DM_REM_NAME *) GKI_getbuf(sizeof(tBTA_DM_REM_NAME))) != NULL) { bdcpy (p_msg->result.disc_res.bd_addr, bta_dm_search_cb.peer_bdaddr); - BCM_STRNCPY_S((char*)p_msg->result.disc_res.bd_name, sizeof(BD_NAME), (char*)p_remote_name->remote_bd_name, (BD_NAME_LEN)); + BCM_STRNCPY_S((char *)p_msg->result.disc_res.bd_name, sizeof(BD_NAME), (char *)p_remote_name->remote_bd_name, (BD_NAME_LEN)); /* make sure the string is null terminated */ p_msg->result.disc_res.bd_name[BD_NAME_LEN] = 0; @@ -2655,20 +2501,18 @@ static UINT8 bta_dm_authorize_cback (BD_ADDR bd_addr, DEV_CLASS dev_class, BD_NA bdcpy(sec_event.authorize.bd_addr, bd_addr); memcpy(sec_event.authorize.dev_class, dev_class, DEV_CLASS_LEN); - BCM_STRNCPY_S((char*)sec_event.authorize.bd_name, sizeof(BD_NAME), (char*)bd_name, (BD_NAME_LEN-1)); + BCM_STRNCPY_S((char *)sec_event.authorize.bd_name, sizeof(BD_NAME), (char *)bd_name, (BD_NAME_LEN - 1)); /* make sure the string is null terminated */ - sec_event.authorize.bd_name[BD_NAME_LEN-1] = 0; + sec_event.authorize.bd_name[BD_NAME_LEN - 1] = 0; #if ( defined(BTA_JV_INCLUDED) && BTA_JV_INCLUDED == TRUE ) sec_event.authorize.service = service_id; #endif - while(index < BTA_MAX_SERVICE_ID) - { + while (index < BTA_MAX_SERVICE_ID) { /* get the BTA service id corresponding to BTM id */ - if(bta_service_id_to_btm_srv_id_lkup_tbl[index] == service_id) - { + if (bta_service_id_to_btm_srv_id_lkup_tbl[index] == service_id) { sec_event.authorize.service = index; break; } @@ -2677,18 +2521,15 @@ static UINT8 bta_dm_authorize_cback (BD_ADDR bd_addr, DEV_CLASS dev_class, BD_NA /* if supported service callback otherwise not authorized */ - if(bta_dm_cb.p_sec_cback && (index < BTA_MAX_SERVICE_ID + if (bta_dm_cb.p_sec_cback && (index < BTA_MAX_SERVICE_ID #if ( defined(BTA_JV_INCLUDED) && BTA_JV_INCLUDED == TRUE ) - /* pass through JV service ID */ - || (service_id >= BTA_FIRST_JV_SERVICE_ID && service_id <= BTA_LAST_JV_SERVICE_ID) + /* pass through JV service ID */ + || (service_id >= BTA_FIRST_JV_SERVICE_ID && service_id <= BTA_LAST_JV_SERVICE_ID) #endif - )) - { + )) { bta_dm_cb.p_sec_cback(BTA_DM_AUTHORIZE_EVT, &sec_event); return BTM_CMD_STARTED; - } - else - { + } else { return BTM_NOT_AUTHORIZED; } } @@ -2713,49 +2554,45 @@ static void bta_dm_pinname_cback (void *p_data) UINT32 bytes_to_copy; tBTA_DM_SEC_EVT event = bta_dm_cb.pin_evt; - if (BTA_DM_SP_CFM_REQ_EVT == event) - { + if (BTA_DM_SP_CFM_REQ_EVT == event) { /* Retrieved saved device class and bd_addr */ bdcpy(sec_event.cfm_req.bd_addr, bta_dm_cb.pin_bd_addr); BTA_COPY_DEVICE_CLASS(sec_event.cfm_req.dev_class, bta_dm_cb.pin_dev_class); - if (p_result && p_result->status == BTM_SUCCESS) - { - bytes_to_copy = (p_result->length < (BD_NAME_LEN-1)) - ? p_result->length : (BD_NAME_LEN-1); + if (p_result && p_result->status == BTM_SUCCESS) { + bytes_to_copy = (p_result->length < (BD_NAME_LEN - 1)) + ? p_result->length : (BD_NAME_LEN - 1); memcpy(sec_event.cfm_req.bd_name, p_result->remote_bd_name, bytes_to_copy); - sec_event.pin_req.bd_name[BD_NAME_LEN-1] = 0; - } - else /* No name found */ + sec_event.pin_req.bd_name[BD_NAME_LEN - 1] = 0; + } else { /* No name found */ sec_event.cfm_req.bd_name[0] = 0; + } sec_event.key_notif.passkey = bta_dm_cb.num_val; /* get PIN code numeric number */ /* 1 additional event data fields for this event */ sec_event.cfm_req.just_works = bta_dm_cb.just_works; - } - else - { + } else { /* Retrieved saved device class and bd_addr */ bdcpy(sec_event.pin_req.bd_addr, bta_dm_cb.pin_bd_addr); BTA_COPY_DEVICE_CLASS(sec_event.pin_req.dev_class, bta_dm_cb.pin_dev_class); - if (p_result && p_result->status == BTM_SUCCESS) - { - bytes_to_copy = (p_result->length < (BD_NAME_LEN-1)) - ? p_result->length : (BD_NAME_LEN-1); + if (p_result && p_result->status == BTM_SUCCESS) { + bytes_to_copy = (p_result->length < (BD_NAME_LEN - 1)) + ? p_result->length : (BD_NAME_LEN - 1); memcpy(sec_event.pin_req.bd_name, p_result->remote_bd_name, bytes_to_copy); - sec_event.pin_req.bd_name[BD_NAME_LEN-1] = 0; - } - else /* No name found */ + sec_event.pin_req.bd_name[BD_NAME_LEN - 1] = 0; + } else { /* No name found */ sec_event.pin_req.bd_name[0] = 0; + } event = bta_dm_cb.pin_evt; sec_event.key_notif.passkey = bta_dm_cb.num_val; /* get PIN code numeric number */ } - if( bta_dm_cb.p_sec_cback ) + if ( bta_dm_cb.p_sec_cback ) { bta_dm_cb.p_sec_cback(event, &sec_event); + } } /******************************************************************************* @@ -2768,29 +2605,30 @@ static void bta_dm_pinname_cback (void *p_data) ** *******************************************************************************/ static UINT8 bta_dm_pin_cback (BD_ADDR bd_addr, DEV_CLASS dev_class, BD_NAME bd_name, - BOOLEAN min_16_digit) + BOOLEAN min_16_digit) { tBTA_DM_SEC sec_event; - if (!bta_dm_cb.p_sec_cback) + if (!bta_dm_cb.p_sec_cback) { return BTM_NOT_AUTHORIZED; + } /* If the device name is not known, save bdaddr and devclass and initiate a name request */ - if (bd_name[0] == 0) - { + if (bd_name[0] == 0) { bta_dm_cb.pin_evt = BTA_DM_PIN_REQ_EVT; bdcpy(bta_dm_cb.pin_bd_addr, bd_addr); BTA_COPY_DEVICE_CLASS(bta_dm_cb.pin_dev_class, dev_class); - if ((BTM_ReadRemoteDeviceName(bd_addr, bta_dm_pinname_cback, BT_TRANSPORT_BR_EDR)) == BTM_CMD_STARTED) + if ((BTM_ReadRemoteDeviceName(bd_addr, bta_dm_pinname_cback, BT_TRANSPORT_BR_EDR)) == BTM_CMD_STARTED) { return BTM_CMD_STARTED; + } APPL_TRACE_WARNING(" bta_dm_pin_cback() -> Failed to start Remote Name Request "); } bdcpy(sec_event.pin_req.bd_addr, bd_addr); BTA_COPY_DEVICE_CLASS(sec_event.pin_req.dev_class, dev_class); - BCM_STRNCPY_S((char*)sec_event.pin_req.bd_name, sizeof(BD_NAME), (char*)bd_name, (BD_NAME_LEN-1)); - sec_event.pin_req.bd_name[BD_NAME_LEN-1] = 0; + BCM_STRNCPY_S((char *)sec_event.pin_req.bd_name, sizeof(BD_NAME), (char *)bd_name, (BD_NAME_LEN - 1)); + sec_event.pin_req.bd_name[BD_NAME_LEN - 1] = 0; sec_event.pin_req.min_16_digit = min_16_digit; bta_dm_cb.p_sec_cback(BTA_DM_PIN_REQ_EVT, &sec_event); @@ -2817,15 +2655,14 @@ static UINT8 bta_dm_new_link_key_cback(BD_ADDR bd_addr, DEV_CLASS dev_class, memset (&sec_event, 0, sizeof(tBTA_DM_SEC)); /* Not AMP Key type */ - if (key_type != HCI_LKEY_TYPE_AMP_WIFI && key_type != HCI_LKEY_TYPE_AMP_UWB) - { + if (key_type != HCI_LKEY_TYPE_AMP_WIFI && key_type != HCI_LKEY_TYPE_AMP_UWB) { event = BTA_DM_AUTH_CMPL_EVT; p_auth_cmpl = &sec_event.auth_cmpl; bdcpy(p_auth_cmpl->bd_addr, bd_addr); - memcpy(p_auth_cmpl->bd_name, bd_name, (BD_NAME_LEN-1)); - p_auth_cmpl->bd_name[BD_NAME_LEN-1] = 0; + memcpy(p_auth_cmpl->bd_name, bd_name, (BD_NAME_LEN - 1)); + p_auth_cmpl->bd_name[BD_NAME_LEN - 1] = 0; p_auth_cmpl->key_present = TRUE; p_auth_cmpl->key_type = key_type; @@ -2838,11 +2675,10 @@ static UINT8 bta_dm_new_link_key_cback(BD_ADDR bd_addr, DEV_CLASS dev_class, // Report the BR link key based on the BR/EDR address and type BTM_ReadDevInfo(bd_addr, &sec_event.auth_cmpl.dev_type, &sec_event.auth_cmpl.addr_type); #endif - if(bta_dm_cb.p_sec_cback) + if (bta_dm_cb.p_sec_cback) { bta_dm_cb.p_sec_cback(event, &sec_event); - } - else - { + } + } else { APPL_TRACE_WARNING("%s() Received AMP Key", __func__); } @@ -2859,18 +2695,17 @@ static UINT8 bta_dm_new_link_key_cback(BD_ADDR bd_addr, DEV_CLASS dev_class, ** Returns void ** *******************************************************************************/ -static UINT8 bta_dm_authentication_complete_cback(BD_ADDR bd_addr, DEV_CLASS dev_class,BD_NAME bd_name, int result) +static UINT8 bta_dm_authentication_complete_cback(BD_ADDR bd_addr, DEV_CLASS dev_class, BD_NAME bd_name, int result) { tBTA_DM_SEC sec_event; UNUSED(dev_class); - if(result != BTM_SUCCESS) - { + if (result != BTM_SUCCESS) { memset(&sec_event, 0, sizeof(tBTA_DM_SEC)); bdcpy(sec_event.auth_cmpl.bd_addr, bd_addr); - memcpy(sec_event.auth_cmpl.bd_name, bd_name, (BD_NAME_LEN-1)); - sec_event.auth_cmpl.bd_name[BD_NAME_LEN-1] = 0; + memcpy(sec_event.auth_cmpl.bd_name, bd_name, (BD_NAME_LEN - 1)); + sec_event.auth_cmpl.bd_name[BD_NAME_LEN - 1] = 0; #if BLE_INCLUDED == TRUE // Report the BR link key based on the BR/EDR address and type @@ -2878,8 +2713,9 @@ static UINT8 bta_dm_authentication_complete_cback(BD_ADDR bd_addr, DEV_CLASS dev #endif sec_event.auth_cmpl.fail_reason = (UINT8)result; - if(bta_dm_cb.p_sec_cback) + if (bta_dm_cb.p_sec_cback) { bta_dm_cb.p_sec_cback(BTA_DM_AUTH_CMPL_EVT, &sec_event); + } bta_dm_remove_sec_dev_entry(bd_addr); } @@ -2903,17 +2739,17 @@ static UINT8 bta_dm_sp_cback (tBTM_SP_EVT event, tBTM_SP_EVT_DATA *p_data) tBTA_DM_SEC_EVT pin_evt = BTA_DM_SP_KEY_NOTIF_EVT; APPL_TRACE_EVENT("bta_dm_sp_cback: %d", event); - if (!bta_dm_cb.p_sec_cback) + if (!bta_dm_cb.p_sec_cback) { return BTM_NOT_AUTHORIZED; + } /* TODO_SP */ - switch(event) - { + switch (event) { case BTM_SP_IO_REQ_EVT: #if (BTM_LOCAL_IO_CAPS != BTM_IO_CAP_NONE) /* translate auth_req */ bta_dm_co_io_req(p_data->io_req.bd_addr, &p_data->io_req.io_cap, - &p_data->io_req.oob_data, &p_data->io_req.auth_req, p_data->io_req.is_orig); + &p_data->io_req.oob_data, &p_data->io_req.auth_req, p_data->io_req.is_orig); #endif #if BTM_OOB_INCLUDED == FALSE status = BTM_SUCCESS; @@ -2943,54 +2779,48 @@ static UINT8 bta_dm_sp_cback (tBTM_SP_EVT event, tBTM_SP_EVT_DATA *p_data) /*case BTM_SP_KEY_REQ_EVT: */ case BTM_SP_KEY_NOTIF_EVT: #endif - if(BTM_SP_CFM_REQ_EVT == event) - { - /* Due to the switch case falling through below to BTM_SP_KEY_NOTIF_EVT, - call remote name request using values from cfm_req */ - if(p_data->cfm_req.bd_name[0] == 0) - { - bta_dm_cb.pin_evt = pin_evt; - bdcpy(bta_dm_cb.pin_bd_addr, p_data->cfm_req.bd_addr); - BTA_COPY_DEVICE_CLASS(bta_dm_cb.pin_dev_class, p_data->cfm_req.dev_class); - if ((BTM_ReadRemoteDeviceName(p_data->cfm_req.bd_addr, bta_dm_pinname_cback, - BT_TRANSPORT_BR_EDR)) == BTM_CMD_STARTED) - return BTM_CMD_STARTED; - APPL_TRACE_WARNING(" bta_dm_sp_cback() -> Failed to start Remote Name Request "); - } - else - { - /* Due to the switch case falling through below to BTM_SP_KEY_NOTIF_EVT, - copy these values into key_notif from cfm_req */ - bdcpy(sec_event.key_notif.bd_addr, p_data->cfm_req.bd_addr); - BTA_COPY_DEVICE_CLASS(sec_event.key_notif.dev_class, p_data->cfm_req.dev_class); - BCM_STRNCPY_S((char*)sec_event.key_notif.bd_name, sizeof(BD_NAME), - (char*)p_data->cfm_req.bd_name, (BD_NAME_LEN-1)); - sec_event.key_notif.bd_name[BD_NAME_LEN-1] = 0; - } + if (BTM_SP_CFM_REQ_EVT == event) { + /* Due to the switch case falling through below to BTM_SP_KEY_NOTIF_EVT, + call remote name request using values from cfm_req */ + if (p_data->cfm_req.bd_name[0] == 0) { + bta_dm_cb.pin_evt = pin_evt; + bdcpy(bta_dm_cb.pin_bd_addr, p_data->cfm_req.bd_addr); + BTA_COPY_DEVICE_CLASS(bta_dm_cb.pin_dev_class, p_data->cfm_req.dev_class); + if ((BTM_ReadRemoteDeviceName(p_data->cfm_req.bd_addr, bta_dm_pinname_cback, + BT_TRANSPORT_BR_EDR)) == BTM_CMD_STARTED) { + return BTM_CMD_STARTED; + } + APPL_TRACE_WARNING(" bta_dm_sp_cback() -> Failed to start Remote Name Request "); + } else { + /* Due to the switch case falling through below to BTM_SP_KEY_NOTIF_EVT, + copy these values into key_notif from cfm_req */ + bdcpy(sec_event.key_notif.bd_addr, p_data->cfm_req.bd_addr); + BTA_COPY_DEVICE_CLASS(sec_event.key_notif.dev_class, p_data->cfm_req.dev_class); + BCM_STRNCPY_S((char *)sec_event.key_notif.bd_name, sizeof(BD_NAME), + (char *)p_data->cfm_req.bd_name, (BD_NAME_LEN - 1)); + sec_event.key_notif.bd_name[BD_NAME_LEN - 1] = 0; + } } bta_dm_cb.num_val = sec_event.key_notif.passkey = p_data->key_notif.passkey; - if (BTM_SP_KEY_NOTIF_EVT == event) - { + if (BTM_SP_KEY_NOTIF_EVT == event) { /* If the device name is not known, save bdaddr and devclass and initiate a name request with values from key_notif */ - if(p_data->key_notif.bd_name[0] == 0) - { + if (p_data->key_notif.bd_name[0] == 0) { bta_dm_cb.pin_evt = pin_evt; bdcpy(bta_dm_cb.pin_bd_addr, p_data->key_notif.bd_addr); BTA_COPY_DEVICE_CLASS(bta_dm_cb.pin_dev_class, p_data->key_notif.dev_class); if ((BTM_ReadRemoteDeviceName(p_data->key_notif.bd_addr, bta_dm_pinname_cback, - BT_TRANSPORT_BR_EDR)) == BTM_CMD_STARTED) - return BTM_CMD_STARTED; + BT_TRANSPORT_BR_EDR)) == BTM_CMD_STARTED) { + return BTM_CMD_STARTED; + } APPL_TRACE_WARNING(" bta_dm_sp_cback() -> Failed to start Remote Name Request "); - } - else - { + } else { bdcpy(sec_event.key_notif.bd_addr, p_data->key_notif.bd_addr); BTA_COPY_DEVICE_CLASS(sec_event.key_notif.dev_class, p_data->key_notif.dev_class); - BCM_STRNCPY_S((char*)sec_event.key_notif.bd_name, sizeof(BD_NAME), - (char*)p_data->key_notif.bd_name, (BD_NAME_LEN-1)); - sec_event.key_notif.bd_name[BD_NAME_LEN-1] = 0; + BCM_STRNCPY_S((char *)sec_event.key_notif.bd_name, sizeof(BD_NAME), + (char *)p_data->key_notif.bd_name, (BD_NAME_LEN - 1)); + sec_event.key_notif.bd_name[BD_NAME_LEN - 1] = 0; } } @@ -3001,26 +2831,26 @@ static UINT8 bta_dm_sp_cback (tBTM_SP_EVT event, tBTM_SP_EVT_DATA *p_data) #if BTM_OOB_INCLUDED == TRUE case BTM_SP_LOC_OOB_EVT: bta_dm_co_loc_oob((BOOLEAN)(p_data->loc_oob.status == BTM_SUCCESS), - p_data->loc_oob.c, p_data->loc_oob.r); + p_data->loc_oob.c, p_data->loc_oob.r); break; case BTM_SP_RMT_OOB_EVT: /* If the device name is not known, save bdaddr and devclass and initiate a name request */ - if (p_data->rmt_oob.bd_name[0] == 0) - { - bta_dm_cb.pin_evt = BTA_DM_SP_RMT_OOB_EVT; - bdcpy(bta_dm_cb.pin_bd_addr, p_data->rmt_oob.bd_addr); - BTA_COPY_DEVICE_CLASS(bta_dm_cb.pin_dev_class, p_data->rmt_oob.dev_class); - if ((BTM_ReadRemoteDeviceName(p_data->rmt_oob.bd_addr, bta_dm_pinname_cback, - BT_TRANSPORT_BR_EDR)) == BTM_CMD_STARTED) - return BTM_CMD_STARTED; - APPL_TRACE_WARNING(" bta_dm_sp_cback() -> Failed to start Remote Name Request "); - } + if (p_data->rmt_oob.bd_name[0] == 0) { + bta_dm_cb.pin_evt = BTA_DM_SP_RMT_OOB_EVT; + bdcpy(bta_dm_cb.pin_bd_addr, p_data->rmt_oob.bd_addr); + BTA_COPY_DEVICE_CLASS(bta_dm_cb.pin_dev_class, p_data->rmt_oob.dev_class); + if ((BTM_ReadRemoteDeviceName(p_data->rmt_oob.bd_addr, bta_dm_pinname_cback, + BT_TRANSPORT_BR_EDR)) == BTM_CMD_STARTED) { + return BTM_CMD_STARTED; + } + APPL_TRACE_WARNING(" bta_dm_sp_cback() -> Failed to start Remote Name Request "); + } - bdcpy(sec_event.rmt_oob.bd_addr, p_data->rmt_oob.bd_addr); - BTA_COPY_DEVICE_CLASS(sec_event.rmt_oob.dev_class, p_data->rmt_oob.dev_class); - BCM_STRNCPY_S((char*)sec_event.rmt_oob.bd_name, sizeof(BD_NAME), (char*)p_data->rmt_oob.bd_name, (BD_NAME_LEN-1)); - sec_event.rmt_oob.bd_name[BD_NAME_LEN-1] = 0; + bdcpy(sec_event.rmt_oob.bd_addr, p_data->rmt_oob.bd_addr); + BTA_COPY_DEVICE_CLASS(sec_event.rmt_oob.dev_class, p_data->rmt_oob.dev_class); + BCM_STRNCPY_S((char *)sec_event.rmt_oob.bd_name, sizeof(BD_NAME), (char *)p_data->rmt_oob.bd_name, (BD_NAME_LEN - 1)); + sec_event.rmt_oob.bd_name[BD_NAME_LEN - 1] = 0; bta_dm_cb.p_sec_cback(BTA_DM_SP_RMT_OOB_EVT, &sec_event); @@ -3065,8 +2895,9 @@ static void bta_dm_local_name_cback(UINT8 *p_name) sec_event.enable.status = BTA_SUCCESS; - if(bta_dm_cb.p_sec_cback) + if (bta_dm_cb.p_sec_cback) { bta_dm_cb.p_sec_cback(BTA_DM_ENABLE_EVT, &sec_event); + } } @@ -3082,15 +2913,13 @@ static void bta_dm_local_name_cback(UINT8 *p_name) *******************************************************************************/ static void bta_dm_bl_change_cback (tBTM_BL_EVENT_DATA *p_data) { - tBTA_DM_ACL_CHANGE * p_msg; + tBTA_DM_ACL_CHANGE *p_msg; - if ((p_msg = (tBTA_DM_ACL_CHANGE *) GKI_getbuf(sizeof(tBTA_DM_ACL_CHANGE))) != NULL) - { + if ((p_msg = (tBTA_DM_ACL_CHANGE *) GKI_getbuf(sizeof(tBTA_DM_ACL_CHANGE))) != NULL) { p_msg->event = p_data->event; p_msg->is_new = FALSE; - switch(p_msg->event) - { + switch (p_msg->event) { case BTM_BL_CONN_EVT: p_msg->is_new = TRUE; bdcpy(p_msg->bd_addr, p_data->conn.p_bda); @@ -3139,7 +2968,7 @@ static void bta_dm_bl_change_cback (tBTM_BL_EVENT_DATA *p_data) *******************************************************************************/ #if BLE_INCLUDED == TRUE static void bta_dm_acl_change_cback(BD_ADDR p_bda, DEV_CLASS p_dc, BD_NAME p_bdn, - UINT8 *features, BOOLEAN is_new,UINT16 handle, + UINT8 *features, BOOLEAN is_new, UINT16 handle, tBT_TRANSPORT transport) #else static void bta_dm_acl_change_cback(BD_ADDR p_bda, DEV_CLASS p_dc, BD_NAME p_bdn, @@ -3147,8 +2976,7 @@ static void bta_dm_acl_change_cback(BD_ADDR p_bda, DEV_CLASS p_dc, BD_NAME p_bdn #endif { tBTA_DM_ACL_CHANGE *p_msg = (tBTA_DM_ACL_CHANGE *) GKI_getbuf(sizeof(tBTA_DM_ACL_CHANGE)); - if (p_msg != NULL) - { + if (p_msg != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_ACL_CHANGE)); bdcpy(p_msg->bd_addr, p_bda); @@ -3158,10 +2986,10 @@ static void bta_dm_acl_change_cback(BD_ADDR p_bda, DEV_CLASS p_dc, BD_NAME p_bdn p_msg->transport = transport; #endif /* This is collision case */ - if (features != NULL) - { - if ((features[0] == 0xFF) && !is_new) + if (features != NULL) { + if ((features[0] == 0xFF) && !is_new) { p_msg->event = BTM_BL_COLLISION_EVT; + } } p_msg->hdr.event = BTA_DM_ACL_CHANGE_EVT; @@ -3183,8 +3011,7 @@ static void bta_dm_rs_cback (tBTM_ROLE_SWITCH_CMPL *p1) { UNUSED(p1); APPL_TRACE_WARNING("bta_dm_rs_cback:%d", bta_dm_cb.rs_event); - if(bta_dm_cb.rs_event == BTA_DM_API_SEARCH_EVT) - { + if (bta_dm_cb.rs_event == BTA_DM_API_SEARCH_EVT) { bta_dm_cb.search_msg.rs_res = BTA_DM_RS_OK; /* do not care about the result for now */ bta_dm_cb.rs_event = 0; bta_dm_search_start((tBTA_DM_MSG *)&bta_dm_cb.search_msg); @@ -3212,26 +3039,21 @@ static BOOLEAN bta_dm_check_av(UINT16 event) /* avoid role switch upon inquiry if a2dp is actively streaming as it introduces an audioglitch due to FW scheduling delays (unavoidable) */ - if (event == BTA_DM_API_SEARCH_EVT) - { + if (event == BTA_DM_API_SEARCH_EVT) { avoid_roleswitch = TRUE; } #endif APPL_TRACE_WARNING("bta_dm_check_av:%d", bta_dm_cb.cur_av_count); - if(bta_dm_cb.cur_av_count) - { - for(i=0; iconn_state, p_dev->info, avoid_roleswitch); - if((p_dev->conn_state == BTA_DM_CONNECTED) && (p_dev->info & BTA_DM_DI_AV_ACTIVE) && - (avoid_roleswitch == FALSE)) - { + i, p_dev->conn_state, p_dev->info, avoid_roleswitch); + if ((p_dev->conn_state == BTA_DM_CONNECTED) && (p_dev->info & BTA_DM_DI_AV_ACTIVE) && + (avoid_roleswitch == FALSE)) { /* make master and take away the role switch policy */ - if(BTM_CMD_STARTED == BTM_SwitchRole (p_dev->peer_bdaddr, HCI_ROLE_MASTER, (tBTM_CMPL_CB *)bta_dm_rs_cback)) - { + if (BTM_CMD_STARTED == BTM_SwitchRole (p_dev->peer_bdaddr, HCI_ROLE_MASTER, (tBTM_CMPL_CB *)bta_dm_rs_cback)) { /* the role switch command is actually sent */ bta_dm_cb.rs_event = event; switching = TRUE; @@ -3269,11 +3091,9 @@ void bta_dm_acl_change(tBTA_DM_MSG *p_data) tBTA_DM_PEER_DEVICE *p_dev; memset(&conn, 0, sizeof(tBTA_DM_SEC)); - switch(p_data->acl_change.event) - { + switch (p_data->acl_change.event) { case BTM_BL_UPDATE_EVT: /* busy level update */ - if( bta_dm_cb.p_sec_cback ) - { + if ( bta_dm_cb.p_sec_cback ) { conn.busy_level.level = p_data->acl_change.busy_level; conn.busy_level.level_flags = p_data->acl_change.busy_level_flags; bta_dm_cb.p_sec_cback(BTA_DM_BUSY_LEVEL_EVT, &conn); @@ -3282,34 +3102,26 @@ void bta_dm_acl_change(tBTA_DM_MSG *p_data) case BTM_BL_ROLE_CHG_EVT: /* role change event */ p_dev = bta_dm_find_peer_device(p_bda); - if(p_dev) - { + if (p_dev) { APPL_TRACE_DEBUG("bta_dm_acl_change role chg info:x%x new_role:%d dev count:%d", - p_dev->info, p_data->acl_change.new_role, bta_dm_cb.device_list.count); - if(p_dev->info & BTA_DM_DI_AV_ACTIVE) - { + p_dev->info, p_data->acl_change.new_role, bta_dm_cb.device_list.count); + if (p_dev->info & BTA_DM_DI_AV_ACTIVE) { /* there's AV activity on this link */ - if(p_data->acl_change.new_role == HCI_ROLE_SLAVE && bta_dm_cb.device_list.count > 1 - && p_data->acl_change.hci_status == HCI_SUCCESS) - { + if (p_data->acl_change.new_role == HCI_ROLE_SLAVE && bta_dm_cb.device_list.count > 1 + && p_data->acl_change.hci_status == HCI_SUCCESS) { /* more than one connections and the AV connection is role switched to slave * switch it back to master and remove the switch policy */ BTM_SwitchRole(p_bda, BTM_ROLE_MASTER, NULL); need_policy_change = TRUE; - } - else if (p_bta_dm_cfg->avoid_scatter && (p_data->acl_change.new_role == HCI_ROLE_MASTER)) - { + } else if (p_bta_dm_cfg->avoid_scatter && (p_data->acl_change.new_role == HCI_ROLE_MASTER)) { /* if the link updated to be master include AV activities, remove the switch policy */ need_policy_change = TRUE; } - if(need_policy_change) - { + if (need_policy_change) { bta_dm_policy_cback(BTA_SYS_PLCY_CLR, 0, HCI_ENABLE_MASTER_SLAVE_SWITCH, p_dev->peer_bdaddr); } - } - else - { + } else { /* there's AV no activity on this link and role switch happened * check if AV is active * if so, make sure the AV link is master */ @@ -3318,43 +3130,41 @@ void bta_dm_acl_change(tBTA_DM_MSG *p_data) bta_sys_notify_role_chg(p_data->acl_change.bd_addr, p_data->acl_change.new_role, p_data->acl_change.hci_status); bdcpy(conn.role_chg.bd_addr, p_bda); conn.role_chg.new_role = (UINT8) p_data->acl_change.new_role; - if( bta_dm_cb.p_sec_cback ) + if ( bta_dm_cb.p_sec_cback ) { bta_dm_cb.p_sec_cback(BTA_DM_ROLE_CHG_EVT, (tBTA_DM_SEC *)&conn); + } } return; } /* Collision report from Stack: Notify profiles */ - if (p_data->acl_change.event == BTM_BL_COLLISION_EVT) - { + if (p_data->acl_change.event == BTM_BL_COLLISION_EVT) { bta_sys_notify_collision (p_bda); return; } - if(is_new) - { - for(i=0; iacl_change.handle + && bta_dm_cb.device_list.peer_device[i].conn_handle == p_data->acl_change.handle #endif - ) + ) { break; + } } - if(i == bta_dm_cb.device_list.count) - { - if (bta_dm_cb.device_list.count < BTA_DM_NUM_PEER_DEVICE) - { + if (i == bta_dm_cb.device_list.count) { + if (bta_dm_cb.device_list.count < BTA_DM_NUM_PEER_DEVICE) { bdcpy(bta_dm_cb.device_list.peer_device[bta_dm_cb.device_list.count].peer_bdaddr, p_bda); bta_dm_cb.device_list.peer_device[bta_dm_cb.device_list.count].link_policy = bta_dm_cb.cur_policy; bta_dm_cb.device_list.count++; #if BLE_INCLUDED == TRUE bta_dm_cb.device_list.peer_device[i].conn_handle = p_data->acl_change.handle; - if (p_data->acl_change.transport == BT_TRANSPORT_LE) + if (p_data->acl_change.transport == BT_TRANSPORT_LE) { bta_dm_cb.device_list.le_count++; + } #endif } else { APPL_TRACE_ERROR("%s max active connection reached, no resources", __func__); @@ -3372,56 +3182,55 @@ void bta_dm_acl_change(tBTA_DM_MSG *p_data) #endif if (((NULL != (p = BTM_ReadLocalFeatures ())) && HCI_SNIFF_SUB_RATE_SUPPORTED(p)) && - ((NULL != (p = BTM_ReadRemoteFeatures (p_bda))) && HCI_SNIFF_SUB_RATE_SUPPORTED(p))) - { + ((NULL != (p = BTM_ReadRemoteFeatures (p_bda))) && HCI_SNIFF_SUB_RATE_SUPPORTED(p))) { /* both local and remote devices support SSR */ bta_dm_cb.device_list.peer_device[i].info = BTA_DM_DI_USE_SSR; } APPL_TRACE_DEBUG("%s info: 0x%x", __func__, bta_dm_cb.device_list.peer_device[i].info); - if (bta_dm_cb.p_sec_cback) + if (bta_dm_cb.p_sec_cback) { bta_dm_cb.p_sec_cback(BTA_DM_LINK_UP_EVT, (tBTA_DM_SEC *)&conn); + } } else { - for(i=0; iacl_change.transport + || bta_dm_cb.device_list.peer_device[i].transport != p_data->acl_change.transport #endif - ) + ) { continue; + } - if( bta_dm_cb.device_list.peer_device[i].conn_state == BTA_DM_UNPAIRING ) - { - if (BTM_SecDeleteDevice(bta_dm_cb.device_list.peer_device[i].peer_bdaddr)) + if ( bta_dm_cb.device_list.peer_device[i].conn_state == BTA_DM_UNPAIRING ) { + if (BTM_SecDeleteDevice(bta_dm_cb.device_list.peer_device[i].peer_bdaddr)) { issue_unpair_cb = TRUE; + } - APPL_TRACE_DEBUG("%s: Unpairing: issue unpair CB = %d ",__FUNCTION__, issue_unpair_cb); + APPL_TRACE_DEBUG("%s: Unpairing: issue unpair CB = %d ", __FUNCTION__, issue_unpair_cb); } conn.link_down.is_removed = bta_dm_cb.device_list.peer_device[i].remove_dev_pending; - for(; iacl_change.transport == BT_TRANSPORT_LE) && - (bta_dm_cb.device_list.le_count)) + (bta_dm_cb.device_list.le_count)) { bta_dm_cb.device_list.le_count--; + } conn.link_down.link_type = p_data->acl_change.transport; #endif - if(bta_dm_search_cb.wait_disc && !bdcmp(bta_dm_search_cb.peer_bdaddr, p_bda)) - { + if (bta_dm_search_cb.wait_disc && !bdcmp(bta_dm_search_cb.peer_bdaddr, p_bda)) { bta_dm_search_cb.wait_disc = FALSE; - if(bta_dm_search_cb.sdp_results) - { + if (bta_dm_search_cb.sdp_results) { APPL_TRACE_EVENT(" timer stopped "); bta_sys_stop_timer(&bta_dm_search_cb.search_timer); bta_dm_discover_next_device(); @@ -3429,12 +3238,10 @@ void bta_dm_acl_change(tBTA_DM_MSG *p_data) } - if(bta_dm_cb.disabling) - { - if(!BTM_GetNumAclLinks()) - { + if (bta_dm_cb.disabling) { + if (!BTM_GetNumAclLinks()) { bta_sys_stop_timer(&bta_dm_cb.disable_timer); - bta_dm_cb.disable_timer.p_cback = (TIMER_CBACK*)&bta_dm_disable_conn_down_timer_cback; + bta_dm_cb.disable_timer.p_cback = (TIMER_CBACK *)&bta_dm_disable_conn_down_timer_cback; /* * Start a timer to make sure that the profiles * get the disconnect event. @@ -3442,8 +3249,7 @@ void bta_dm_acl_change(tBTA_DM_MSG *p_data) bta_sys_start_timer(&bta_dm_cb.disable_timer, 0, 1000); } } - if (conn.link_down.is_removed) - { + if (conn.link_down.is_removed) { BTM_SecDeleteDevice(p_bda); #if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE) /* need to remove all pending background connection */ @@ -3451,15 +3257,15 @@ void bta_dm_acl_change(tBTA_DM_MSG *p_data) /* remove all cached GATT information */ BTA_GATTC_Refresh(p_bda); #endif - } + } bdcpy(conn.link_down.bd_addr, p_bda); conn.link_down.status = (UINT8) btm_get_acl_disc_reason_code(); - if( bta_dm_cb.p_sec_cback ) - { + if ( bta_dm_cb.p_sec_cback ) { bta_dm_cb.p_sec_cback(BTA_DM_LINK_DOWN_EVT, &conn); - if( issue_unpair_cb ) + if ( issue_unpair_cb ) { bta_dm_cb.p_sec_cback(BTA_DM_DEV_UNPAIRED_EVT, &conn); + } } } @@ -3488,8 +3294,7 @@ static void bta_dm_disable_conn_down_timer_cback (TIMER_LIST_ENT *p_tle) bta_sys_hw_register( BTA_SYS_HW_BLUETOOTH, bta_dm_sys_hw_cback ); /* send a message to BTA SYS */ - if ((sys_enable_event = (tBTA_SYS_HW_MSG *) GKI_getbuf(sizeof(tBTA_SYS_HW_MSG))) != NULL) - { + if ((sys_enable_event = (tBTA_SYS_HW_MSG *) GKI_getbuf(sizeof(tBTA_SYS_HW_MSG))) != NULL) { sys_enable_event->hdr.event = BTA_SYS_API_DISABLE_EVT; sys_enable_event->hw_module = BTA_SYS_HW_BLUETOOTH; bta_sys_sendmsg(sys_enable_event); @@ -3516,50 +3321,48 @@ static void bta_dm_rm_cback(tBTA_SYS_CONN_STATUS status, UINT8 id, UINT8 app_id, tBTA_DM_PEER_DEVICE *p_dev; p_dev = bta_dm_find_peer_device(peer_addr); - if( status == BTA_SYS_CONN_OPEN) - { - if(p_dev) - { + if ( status == BTA_SYS_CONN_OPEN) { + if (p_dev) { /* Do not set to connected if we are in the middle of unpairing. When AV stream is * started it fakes out a SYS_CONN_OPEN to potentially trigger a role switch command. * But this should not be done if we are in the middle of unpairing. */ - if (p_dev->conn_state != BTA_DM_UNPAIRING) + if (p_dev->conn_state != BTA_DM_UNPAIRING) { p_dev->conn_state = BTA_DM_CONNECTED; + } - for(j=1; j<= p_bta_dm_rm_cfg[0].app_id; j++) - { - if(((p_bta_dm_rm_cfg[j].app_id == app_id) || (p_bta_dm_rm_cfg[j].app_id == BTA_ALL_APP_ID)) - && (p_bta_dm_rm_cfg[j].id == id)) - { + for (j = 1; j <= p_bta_dm_rm_cfg[0].app_id; j++) { + if (((p_bta_dm_rm_cfg[j].app_id == app_id) || (p_bta_dm_rm_cfg[j].app_id == BTA_ALL_APP_ID)) + && (p_bta_dm_rm_cfg[j].id == id)) { role = p_bta_dm_rm_cfg[j].cfg; - if(role > p_dev->pref_role ) + if (role > p_dev->pref_role ) { p_dev->pref_role = role; + } break; } } } } - if((BTA_ID_AV == id)||(BTA_ID_AVK ==id)) - { - if( status == BTA_SYS_CONN_BUSY) - { - if(p_dev) + if ((BTA_ID_AV == id) || (BTA_ID_AVK == id)) { + if ( status == BTA_SYS_CONN_BUSY) { + if (p_dev) { p_dev->info |= BTA_DM_DI_AV_ACTIVE; + } /* AV calls bta_sys_conn_open with the A2DP stream count as app_id */ - if(BTA_ID_AV == id) + if (BTA_ID_AV == id) { bta_dm_cb.cur_av_count = bta_dm_get_av_count(); - } - else if( status == BTA_SYS_CONN_IDLE) - { - if(p_dev) + } + } else if ( status == BTA_SYS_CONN_IDLE) { + if (p_dev) { p_dev->info &= ~BTA_DM_DI_AV_ACTIVE; + } /* get cur_av_count from connected services */ - if(BTA_ID_AV == id) + if (BTA_ID_AV == id) { bta_dm_cb.cur_av_count = bta_dm_get_av_count(); + } } APPL_TRACE_WARNING("bta_dm_rm_cback:%d, status:%d", bta_dm_cb.cur_av_count, status); } @@ -3567,8 +3370,9 @@ static void bta_dm_rm_cback(tBTA_SYS_CONN_STATUS status, UINT8 id, UINT8 app_id, /* Don't adjust roles for each busy/idle state transition to avoid excessive switch requests when individual profile busy/idle status changes */ - if ((status != BTA_SYS_CONN_BUSY) && (status != BTA_SYS_CONN_IDLE)) + if ((status != BTA_SYS_CONN_BUSY) && (status != BTA_SYS_CONN_IDLE)) { bta_dm_adjust_roles(FALSE); + } } /******************************************************************************* @@ -3602,26 +3406,20 @@ static void bta_dm_remove_sec_dev_entry(BD_ADDR remote_bd_addr) { UINT16 index = 0; if ( BTM_IsAclConnectionUp(remote_bd_addr, BT_TRANSPORT_LE) || - BTM_IsAclConnectionUp(remote_bd_addr, BT_TRANSPORT_BR_EDR)) - { - APPL_TRACE_DEBUG("%s ACL is not down. Schedule for Dev Removal when ACL closes", - __FUNCTION__); - for (index = 0; index < bta_dm_cb.device_list.count; index ++) - { - if (!bdcmp( bta_dm_cb.device_list.peer_device[index].peer_bdaddr, remote_bd_addr)) + BTM_IsAclConnectionUp(remote_bd_addr, BT_TRANSPORT_BR_EDR)) { + APPL_TRACE_DEBUG("%s ACL is not down. Schedule for Dev Removal when ACL closes", + __FUNCTION__); + for (index = 0; index < bta_dm_cb.device_list.count; index ++) { + if (!bdcmp( bta_dm_cb.device_list.peer_device[index].peer_bdaddr, remote_bd_addr)) { break; + } } - if (index != bta_dm_cb.device_list.count) - { + if (index != bta_dm_cb.device_list.count) { bta_dm_cb.device_list.peer_device[index].remove_dev_pending = TRUE; - } - else - { + } else { APPL_TRACE_ERROR(" %s Device does not exist in DB", __FUNCTION__); } - } - else - { + } else { BTM_SecDeleteDevice (remote_bd_addr); #if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE) /* need to remove all pending background connection */ @@ -3653,55 +3451,46 @@ static void bta_dm_adjust_roles(BOOLEAN delay_role_switch) #else UINT8 br_count = bta_dm_cb.device_list.count; #endif - if (br_count) - { + if (br_count) { /* the configuration is no scatternet * or AV connection exists and there are more than one ACL link */ if ( (p_bta_dm_rm_cfg[0].cfg == BTA_DM_NO_SCATTERNET) || - (bta_dm_cb.cur_av_count && br_count > 1) ) - { + (bta_dm_cb.cur_av_count && br_count > 1) ) { L2CA_SetDesireRole (HCI_ROLE_MASTER); set_master_role = TRUE; } - for(i=0; i 1)) - { + if ((bta_dm_cb.device_list.peer_device[i].pref_role == BTA_MASTER_ROLE_ONLY) + || (br_count > 1)) { - /* Initiating immediate role switch with certain remote devices - has caused issues due to role switch colliding with link encryption setup and - causing encryption (and in turn the link) to fail . These device . Firmware - versions are stored in a blacklist and role switch with these devices are - delayed to avoid the collision with link encryption setup */ + /* Initiating immediate role switch with certain remote devices + has caused issues due to role switch colliding with link encryption setup and + causing encryption (and in turn the link) to fail . These device . Firmware + versions are stored in a blacklist and role switch with these devices are + delayed to avoid the collision with link encryption setup */ if (bta_dm_cb.device_list.peer_device[i].pref_role != BTA_SLAVE_ROLE_ONLY && - delay_role_switch == FALSE) - { + delay_role_switch == FALSE) { BTM_SwitchRole (bta_dm_cb.device_list.peer_device[i].peer_bdaddr, HCI_ROLE_MASTER, NULL); - } - else - { + } else { bta_dm_cb.switch_delay_timer.p_cback = - (TIMER_CBACK*)&bta_dm_delay_role_switch_cback; + (TIMER_CBACK *)&bta_dm_delay_role_switch_cback; bta_sys_start_timer(&bta_dm_cb.switch_delay_timer, 0, 500); } } @@ -3710,16 +3499,13 @@ static void bta_dm_adjust_roles(BOOLEAN delay_role_switch) } - if(!set_master_role) - { + if (!set_master_role) { L2CA_SetDesireRole (L2CAP_DESIRED_LINK_ROLE); } - } - else - { + } else { L2CA_SetDesireRole (L2CAP_DESIRED_LINK_ROLE); } @@ -3742,8 +3528,9 @@ static char *bta_dm_get_remname(void) /* If the name isn't already stored, try retrieving from BTM */ if (*p_name == '\0') - if ((p_temp = BTM_SecReadDevName(bta_dm_search_cb.peer_bdaddr)) != NULL) + if ((p_temp = BTM_SecReadDevName(bta_dm_search_cb.peer_bdaddr)) != NULL) { p_name = p_temp; + } return p_name; } @@ -3762,13 +3549,13 @@ static void bta_dm_bond_cancel_complete_cback(tBTM_STATUS result) tBTA_DM_SEC sec_event; - if (result == BTM_SUCCESS) + if (result == BTM_SUCCESS) { sec_event.bond_cancel_cmpl.result = BTA_SUCCESS; - else + } else { sec_event.bond_cancel_cmpl.result = BTA_FAILURE; + } - if(bta_dm_cb.p_sec_cback) - { + if (bta_dm_cb.p_sec_cback) { bta_dm_cb.p_sec_cback(BTA_DM_BOND_CANCEL_CMPL_EVT, &sec_event); } } @@ -3804,27 +3591,26 @@ static void bta_dm_set_eir (char *local_name) UINT8 local_name_len; /* wait until complete to disable */ - if (bta_dm_cb.disable_timer.in_use) + if (bta_dm_cb.disable_timer.in_use) { return; + } #if ( BTA_EIR_CANNED_UUID_LIST != TRUE ) /* wait until App is ready */ - if (bta_dm_cb.app_ready_timer.in_use) + if (bta_dm_cb.app_ready_timer.in_use) { return; + } /* if local name is not provided, get it from controller */ - if( local_name == NULL ) - { - if( BTM_ReadLocalDeviceName( &local_name ) != BTM_SUCCESS ) - { + if ( local_name == NULL ) { + if ( BTM_ReadLocalDeviceName( &local_name ) != BTM_SUCCESS ) { APPL_TRACE_ERROR("Fail to read local device name for EIR"); } } #endif // BTA_EIR_CANNED_UUID_LIST /* Allocate a buffer to hold HCI command */ - if ((p_buf = (BT_HDR *)GKI_getpoolbuf(BTM_CMD_POOL_ID)) == NULL) - { + if ((p_buf = (BT_HDR *)GKI_getpoolbuf(BTM_CMD_POOL_ID)) == NULL) { APPL_TRACE_ERROR("bta_dm_set_eir couldn't allocate buffer"); return; } @@ -3834,42 +3620,40 @@ static void bta_dm_set_eir (char *local_name) APPL_TRACE_DEBUG("BTA is generating EIR"); - if( local_name ) + if ( local_name ) { local_name_len = strlen( local_name ); - else + } else { local_name_len = 0; + } data_type = BTM_EIR_COMPLETE_LOCAL_NAME_TYPE; /* if local name is longer than minimum length of shortened name */ /* check whether it needs to be shortened or not */ - if( local_name_len > p_bta_dm_eir_cfg->bta_dm_eir_min_name_len ) - { + if ( local_name_len > p_bta_dm_eir_cfg->bta_dm_eir_min_name_len ) { /* get number of UUID 16-bit list */ #if (BTA_EIR_CANNED_UUID_LIST == TRUE) - num_uuid = p_bta_dm_eir_cfg->bta_dm_eir_uuid16_len/LEN_UUID_16; + num_uuid = p_bta_dm_eir_cfg->bta_dm_eir_uuid16_len / LEN_UUID_16; #else // BTA_EIR_CANNED_UUID_LIST - max_num_uuid = (free_eir_length - 2)/LEN_UUID_16; + max_num_uuid = (free_eir_length - 2) / LEN_UUID_16; data_type = BTM_GetEirSupportedServices( bta_dm_cb.eir_uuid, &p, - max_num_uuid, &num_uuid ); + max_num_uuid, &num_uuid ); p = (UINT8 *)p_buf + BTM_HCI_EIR_OFFSET; /* reset p */ #endif // BTA_EIR_CANNED_UUID_LIST /* if UUID doesn't fit remaing space, shorten local name */ - if ( local_name_len > (free_eir_length - 4 - num_uuid*LEN_UUID_16)) - { + if ( local_name_len > (free_eir_length - 4 - num_uuid * LEN_UUID_16)) { APPL_TRACE_WARNING("BTA EIR: local name is shortened"); local_name_len = p_bta_dm_eir_cfg->bta_dm_eir_min_name_len; data_type = BTM_EIR_SHORTENED_LOCAL_NAME_TYPE; - } - else + } else { data_type = BTM_EIR_COMPLETE_LOCAL_NAME_TYPE; + } } UINT8_TO_STREAM(p, local_name_len + 1); UINT8_TO_STREAM(p, data_type); - if (local_name != NULL) - { + if (local_name != NULL) { memcpy(p, local_name, local_name_len); p += local_name_len; } @@ -3877,20 +3661,15 @@ static void bta_dm_set_eir (char *local_name) #if (BTA_EIR_CANNED_UUID_LIST == TRUE) /* if UUID list is provided as static data in configuration */ - if(( p_bta_dm_eir_cfg->bta_dm_eir_uuid16_len > 0 ) - &&(p_bta_dm_eir_cfg->bta_dm_eir_uuid16)) - { - if( free_eir_length > LEN_UUID_16 + 2) - { + if (( p_bta_dm_eir_cfg->bta_dm_eir_uuid16_len > 0 ) + && (p_bta_dm_eir_cfg->bta_dm_eir_uuid16)) { + if ( free_eir_length > LEN_UUID_16 + 2) { free_eir_length -= 2; - if( free_eir_length >= p_bta_dm_eir_cfg->bta_dm_eir_uuid16_len) - { + if ( free_eir_length >= p_bta_dm_eir_cfg->bta_dm_eir_uuid16_len) { num_uuid = p_bta_dm_eir_cfg->bta_dm_eir_uuid16_len / LEN_UUID_16; data_type = BTM_EIR_COMPLETE_16BITS_UUID_TYPE; - } - else /* not enough room for all UUIDs */ - { + } else { /* not enough room for all UUIDs */ APPL_TRACE_WARNING("BTA EIR: UUID 16-bit list is truncated"); num_uuid = free_eir_length / LEN_UUID_16; data_type = BTM_EIR_MORE_16BITS_UUID_TYPE; @@ -3904,33 +3683,25 @@ static void bta_dm_set_eir (char *local_name) } #else /* (BTA_EIR_CANNED_UUID_LIST == TRUE) */ /* if UUID list is dynamic */ - if ( free_eir_length >= 2) - { + if ( free_eir_length >= 2) { p_length = p++; p_type = p++; num_uuid = 0; - max_num_uuid = (free_eir_length - 2)/LEN_UUID_16; + max_num_uuid = (free_eir_length - 2) / LEN_UUID_16; data_type = BTM_GetEirSupportedServices( bta_dm_cb.eir_uuid, &p, max_num_uuid, &num_uuid ); - if( data_type == BTM_EIR_MORE_16BITS_UUID_TYPE ) - { + if ( data_type == BTM_EIR_MORE_16BITS_UUID_TYPE ) { APPL_TRACE_WARNING("BTA EIR: UUID 16-bit list is truncated"); } #if (BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0) - else - { - for (custom_uuid_idx = 0; custom_uuid_idx < BTA_EIR_SERVER_NUM_CUSTOM_UUID; custom_uuid_idx++) - { - if (bta_dm_cb.custom_uuid[custom_uuid_idx].len == LEN_UUID_16) - { - if ( num_uuid < max_num_uuid ) - { + else { + for (custom_uuid_idx = 0; custom_uuid_idx < BTA_EIR_SERVER_NUM_CUSTOM_UUID; custom_uuid_idx++) { + if (bta_dm_cb.custom_uuid[custom_uuid_idx].len == LEN_UUID_16) { + if ( num_uuid < max_num_uuid ) { UINT16_TO_STREAM(p, bta_dm_cb.custom_uuid[custom_uuid_idx].uu.uuid16); num_uuid++; - } - else - { + } else { data_type = BTM_EIR_MORE_16BITS_UUID_TYPE; APPL_TRACE_WARNING("BTA EIR: UUID 16-bit list is truncated"); break; @@ -3948,26 +3719,20 @@ static void bta_dm_set_eir (char *local_name) #if ( BTA_EIR_CANNED_UUID_LIST != TRUE )&&(BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0) /* Adding 32-bit UUID list */ - if ( free_eir_length >= 2) - { + if ( free_eir_length >= 2) { p_length = p++; p_type = p++; num_uuid = 0; data_type = BTM_EIR_COMPLETE_32BITS_UUID_TYPE; - max_num_uuid = (free_eir_length - 2)/LEN_UUID_32; + max_num_uuid = (free_eir_length - 2) / LEN_UUID_32; - for (custom_uuid_idx = 0; custom_uuid_idx < BTA_EIR_SERVER_NUM_CUSTOM_UUID; custom_uuid_idx++) - { - if (bta_dm_cb.custom_uuid[custom_uuid_idx].len == LEN_UUID_32) - { - if ( num_uuid < max_num_uuid ) - { + for (custom_uuid_idx = 0; custom_uuid_idx < BTA_EIR_SERVER_NUM_CUSTOM_UUID; custom_uuid_idx++) { + if (bta_dm_cb.custom_uuid[custom_uuid_idx].len == LEN_UUID_32) { + if ( num_uuid < max_num_uuid ) { UINT32_TO_STREAM(p, bta_dm_cb.custom_uuid[custom_uuid_idx].uu.uuid32); num_uuid++; - } - else - { + } else { data_type = BTM_EIR_MORE_32BITS_UUID_TYPE; APPL_TRACE_WARNING("BTA EIR: UUID 32-bit list is truncated"); break; @@ -3981,26 +3746,20 @@ static void bta_dm_set_eir (char *local_name) } /* Adding 128-bit UUID list */ - if ( free_eir_length >= 2) - { + if ( free_eir_length >= 2) { p_length = p++; p_type = p++; num_uuid = 0; data_type = BTM_EIR_COMPLETE_128BITS_UUID_TYPE; - max_num_uuid = (free_eir_length - 2)/LEN_UUID_128; + max_num_uuid = (free_eir_length - 2) / LEN_UUID_128; - for (custom_uuid_idx = 0; custom_uuid_idx < BTA_EIR_SERVER_NUM_CUSTOM_UUID; custom_uuid_idx++) - { - if (bta_dm_cb.custom_uuid[custom_uuid_idx].len == LEN_UUID_128) - { - if ( num_uuid < max_num_uuid ) - { + for (custom_uuid_idx = 0; custom_uuid_idx < BTA_EIR_SERVER_NUM_CUSTOM_UUID; custom_uuid_idx++) { + if (bta_dm_cb.custom_uuid[custom_uuid_idx].len == LEN_UUID_128) { + if ( num_uuid < max_num_uuid ) { ARRAY16_TO_STREAM(p, bta_dm_cb.custom_uuid[custom_uuid_idx].uu.uuid128); num_uuid++; - } - else - { + } else { data_type = BTM_EIR_MORE_128BITS_UUID_TYPE; APPL_TRACE_WARNING("BTA EIR: UUID 128-bit list is truncated"); break; @@ -4015,10 +3774,9 @@ static void bta_dm_set_eir (char *local_name) #endif /* ( BTA_EIR_CANNED_UUID_LIST != TRUE )&&(BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0) */ /* if Flags are provided in configuration */ - if(( p_bta_dm_eir_cfg->bta_dm_eir_flag_len > 0 ) - &&( p_bta_dm_eir_cfg->bta_dm_eir_flags ) - &&( free_eir_length >= p_bta_dm_eir_cfg->bta_dm_eir_flag_len + 2 )) - { + if (( p_bta_dm_eir_cfg->bta_dm_eir_flag_len > 0 ) + && ( p_bta_dm_eir_cfg->bta_dm_eir_flags ) + && ( free_eir_length >= p_bta_dm_eir_cfg->bta_dm_eir_flag_len + 2 )) { UINT8_TO_STREAM(p, p_bta_dm_eir_cfg->bta_dm_eir_flag_len + 1); UINT8_TO_STREAM(p, BTM_EIR_FLAGS_TYPE); memcpy(p, p_bta_dm_eir_cfg->bta_dm_eir_flags, @@ -4028,10 +3786,9 @@ static void bta_dm_set_eir (char *local_name) } /* if Manufacturer Specific are provided in configuration */ - if(( p_bta_dm_eir_cfg->bta_dm_eir_manufac_spec_len > 0 ) - &&( p_bta_dm_eir_cfg->bta_dm_eir_manufac_spec ) - &&( free_eir_length >= p_bta_dm_eir_cfg->bta_dm_eir_manufac_spec_len + 2 )) - { + if (( p_bta_dm_eir_cfg->bta_dm_eir_manufac_spec_len > 0 ) + && ( p_bta_dm_eir_cfg->bta_dm_eir_manufac_spec ) + && ( free_eir_length >= p_bta_dm_eir_cfg->bta_dm_eir_manufac_spec_len + 2 )) { p_length = p; UINT8_TO_STREAM(p, p_bta_dm_eir_cfg->bta_dm_eir_manufac_spec_len + 1); @@ -4041,24 +3798,22 @@ static void bta_dm_set_eir (char *local_name) p += p_bta_dm_eir_cfg->bta_dm_eir_manufac_spec_len; free_eir_length -= p_bta_dm_eir_cfg->bta_dm_eir_manufac_spec_len + 2; - } - else - { + } else { p_length = NULL; } /* if Inquiry Tx Resp Power compiled */ if ((p_bta_dm_eir_cfg->bta_dm_eir_inq_tx_power) && - (free_eir_length >= 3)) - { + (free_eir_length >= 3)) { UINT8_TO_STREAM(p, 2); /* Length field */ UINT8_TO_STREAM(p, BTM_EIR_TX_POWER_LEVEL_TYPE); UINT8_TO_STREAM(p, *(p_bta_dm_eir_cfg->bta_dm_eir_inq_tx_power)); free_eir_length -= 3; } - if( free_eir_length ) - UINT8_TO_STREAM(p, 0); /* terminator of significant part */ + if ( free_eir_length ) { + UINT8_TO_STREAM(p, 0); /* terminator of significant part */ + } BTM_WriteEIR( p_buf ); @@ -4081,9 +3836,9 @@ static void bta_dm_eir_search_services( tBTM_INQ_RESULTS *p_result, tBTM_EIR_SEARCH_RESULT result; APPL_TRACE_DEBUG("BTA searching services in EIR of BDA:0x%02X%02X%02X%02X%02X%02X", - p_result->remote_bd_addr[0],p_result->remote_bd_addr[1], - p_result->remote_bd_addr[2],p_result->remote_bd_addr[3], - p_result->remote_bd_addr[4],p_result->remote_bd_addr[5]); + p_result->remote_bd_addr[0], p_result->remote_bd_addr[1], + p_result->remote_bd_addr[2], p_result->remote_bd_addr[3], + p_result->remote_bd_addr[4], p_result->remote_bd_addr[5]); APPL_TRACE_DEBUG(" with services_to_search=0x%08X", *p_services_to_search); @@ -4092,42 +3847,36 @@ static void bta_dm_eir_search_services( tBTM_INQ_RESULTS *p_result, /* if GATT based service is also to be put in EIR, need to modify this */ while (service_index < (BTA_MAX_SERVICE_ID - 1)) #else - while(service_index < BTA_MAX_SERVICE_ID) + while (service_index < BTA_MAX_SERVICE_ID) #endif { - if( *p_services_to_search - & (tBTA_SERVICE_MASK)(BTA_SERVICE_ID_TO_SERVICE_MASK(service_index))) - { + if ( *p_services_to_search + & (tBTA_SERVICE_MASK)(BTA_SERVICE_ID_TO_SERVICE_MASK(service_index))) { result = BTM_HasInquiryEirService( p_result, bta_service_id_to_uuid_lkup_tbl[service_index] ); /* Searching for HSP v1.2 only device */ if ((result != BTM_EIR_FOUND) && - (bta_service_id_to_uuid_lkup_tbl[service_index] == UUID_SERVCLASS_HEADSET)) - { + (bta_service_id_to_uuid_lkup_tbl[service_index] == UUID_SERVCLASS_HEADSET)) { result = BTM_HasInquiryEirService (p_result, UUID_SERVCLASS_HEADSET_HS); } - if( result == BTM_EIR_FOUND ) - { + if ( result == BTM_EIR_FOUND ) { /* If Plug and Play service record, need to check to see if Broadcom stack */ /* However, EIR data doesn't have EXT_BRCM_VERSION so just skip it */ - if( bta_service_id_to_uuid_lkup_tbl[service_index] - != UUID_SERVCLASS_PNP_INFORMATION ) - { + if ( bta_service_id_to_uuid_lkup_tbl[service_index] + != UUID_SERVCLASS_PNP_INFORMATION ) { *p_services_found |= - (tBTA_SERVICE_MASK)(BTA_SERVICE_ID_TO_SERVICE_MASK(service_index)); + (tBTA_SERVICE_MASK)(BTA_SERVICE_ID_TO_SERVICE_MASK(service_index)); /* remove the service from services to be searched */ *p_services_to_search &= - (tBTA_SERVICE_MASK)(~(BTA_SERVICE_ID_TO_SERVICE_MASK(service_index))); + (tBTA_SERVICE_MASK)(~(BTA_SERVICE_ID_TO_SERVICE_MASK(service_index))); } - } - else if( result == BTM_EIR_NOT_FOUND ) - { + } else if ( result == BTM_EIR_NOT_FOUND ) { /* remove the service from services to be searched */ *p_services_to_search &= - (tBTA_SERVICE_MASK)(~(BTA_SERVICE_ID_TO_SERVICE_MASK(service_index))); + (tBTA_SERVICE_MASK)(~(BTA_SERVICE_ID_TO_SERVICE_MASK(service_index))); } } @@ -4135,7 +3884,7 @@ static void bta_dm_eir_search_services( tBTM_INQ_RESULTS *p_result, } APPL_TRACE_ERROR("BTA EIR search result, services_to_search=0x%08X, services_found=0x%08X", - *p_services_to_search, *p_services_found); + *p_services_to_search, *p_services_found); } #if (BTA_EIR_CANNED_UUID_LIST != TRUE) @@ -4151,17 +3900,15 @@ static void bta_dm_eir_search_services( tBTM_INQ_RESULTS *p_result, void bta_dm_eir_update_uuid(UINT16 uuid16, BOOLEAN adding) { /* if this UUID is not advertised in EIR */ - if( !BTM_HasEirService( p_bta_dm_eir_cfg->uuid_mask, uuid16 )) + if ( !BTM_HasEirService( p_bta_dm_eir_cfg->uuid_mask, uuid16 )) { return; + } - if( adding ) - { + if ( adding ) { APPL_TRACE_EVENT("Adding UUID=0x%04X into EIR", uuid16); BTM_AddEirService( bta_dm_cb.eir_uuid, uuid16 ); - } - else - { + } else { APPL_TRACE_EVENT("Removing UUID=0x%04X from EIR", uuid16); BTM_RemoveEirService( bta_dm_cb.eir_uuid, uuid16 ); @@ -4170,7 +3917,7 @@ void bta_dm_eir_update_uuid(UINT16 uuid16, BOOLEAN adding) bta_dm_set_eir (NULL); APPL_TRACE_EVENT("bta_dm_eir_update_uuid UUID bit mask=0x%08X %08X", - bta_dm_cb.eir_uuid[1], bta_dm_cb.eir_uuid[0] ); + bta_dm_cb.eir_uuid[1], bta_dm_cb.eir_uuid[0] ); } #endif @@ -4219,8 +3966,7 @@ void bta_dm_disable_test_mode(tBTA_DM_MSG *p_data) void bta_dm_execute_callback(tBTA_DM_MSG *p_data) { /* sanity check */ - if(p_data->exec_cback.p_exec_cback == NULL) - { + if (p_data->exec_cback.p_exec_cback == NULL) { return; } @@ -4243,41 +3989,38 @@ void bta_dm_encrypt_cback(BD_ADDR bd_addr, tBT_TRANSPORT transport, void *p_ref_ UINT8 i ; UNUSED(p_ref_data); - for (i=0; iset_encryption.p_callback) - { + if (!p_data->set_encryption.p_callback) { APPL_TRACE_ERROR("bta_dm_set_encryption callback is not provided\n"); return; } - for (i=0; iset_encryption.bd_addr) == 0 && - bta_dm_cb.device_list.peer_device[i].conn_state == BTA_DM_CONNECTED) + bta_dm_cb.device_list.peer_device[i].conn_state == BTA_DM_CONNECTED) { break; + } } - if (i < bta_dm_cb.device_list.count) - { - if (bta_dm_cb.device_list.peer_device[i].p_encrypt_cback) - { + if (i < bta_dm_cb.device_list.count) { + if (bta_dm_cb.device_list.peer_device[i].p_encrypt_cback) { APPL_TRACE_ERROR("earlier enc was not done for same device\n"); (*p_data->set_encryption.p_callback)(p_data->set_encryption.bd_addr, - p_data->set_encryption.transport, - BTA_BUSY); + p_data->set_encryption.transport, + BTA_BUSY); return; } if (BTM_SetEncryption(p_data->set_encryption.bd_addr, p_data->set_encryption.transport, - bta_dm_encrypt_cback, &p_data->set_encryption.sec_act) - == BTM_CMD_STARTED) - { + bta_dm_encrypt_cback, &p_data->set_encryption.sec_act) + == BTM_CMD_STARTED) { bta_dm_cb.device_list.peer_device[i].p_encrypt_cback = p_data->set_encryption.p_callback; } } @@ -4340,7 +4079,7 @@ void bta_dm_set_encryption (tBTA_DM_MSG *p_data) *******************************************************************************/ static void bta_dm_observe_results_cb (tBTM_INQ_RESULTS *p_inq, UINT8 *p_eir) { -; + ; tBTA_DM_SEARCH result; tBTM_INQ_INFO *p_inq_info; APPL_TRACE_DEBUG("bta_dm_observe_results_cb") @@ -4355,21 +4094,21 @@ static void bta_dm_observe_results_cb (tBTM_INQ_RESULTS *p_inq, UINT8 *p_eir) /* application will parse EIR to find out remote device name */ result.inq_res.p_eir = p_eir; - if((p_inq_info = BTM_InqDbRead(p_inq->remote_bd_addr)) != NULL) - { + if ((p_inq_info = BTM_InqDbRead(p_inq->remote_bd_addr)) != NULL) { /* initialize remt_name_not_required to FALSE so that we get the name by default */ result.inq_res.remt_name_not_required = FALSE; } - if(bta_dm_search_cb.p_scan_cback) + if (bta_dm_search_cb.p_scan_cback) { bta_dm_search_cb.p_scan_cback(BTA_DM_INQ_RES_EVT, &result); + } - if(p_inq_info) - { + if (p_inq_info) { /* application indicates if it knows the remote name, inside the callback copy that to the inquiry data base*/ - if(result.inq_res.remt_name_not_required) + if (result.inq_res.remt_name_not_required) { p_inq_info->appl_knows_rem_name = TRUE; + } } } @@ -4383,15 +4122,14 @@ static void bta_dm_observe_results_cb (tBTM_INQ_RESULTS *p_inq, UINT8 *p_eir) ** Returns void ** *******************************************************************************/ -static void bta_dm_observe_cmpl_cb (void * p_result) +static void bta_dm_observe_cmpl_cb (void *p_result) { tBTA_DM_SEARCH data; APPL_TRACE_DEBUG("bta_dm_observe_cmpl_cb"); data.inq_cmpl.num_resps = ((tBTM_INQUIRY_CMPL *)p_result)->num_resp; - if (bta_dm_search_cb.p_scan_cback) - { + if (bta_dm_search_cb.p_scan_cback) { bta_dm_search_cb.p_scan_cback(BTA_DM_INQ_CMPL_EVT, &data); } } @@ -4415,127 +4153,115 @@ static UINT8 bta_dm_ble_smp_cback (tBTM_LE_EVT event, BD_ADDR bda, tBTM_LE_EVT_D UINT8 i; tBT_DEVICE_TYPE dev_type; - if (!bta_dm_cb.p_sec_cback) + if (!bta_dm_cb.p_sec_cback) { return BTM_NOT_AUTHORIZED; + } memset(&sec_event, 0, sizeof(tBTA_DM_SEC)); - switch (event) - { - case BTM_LE_IO_REQ_EVT: + switch (event) { + case BTM_LE_IO_REQ_EVT: #if (BTM_LOCAL_IO_CAPS != BTM_IO_CAP_NONE) - bta_dm_co_ble_io_req(bda, - &p_data->io_req.io_cap, - &p_data->io_req.oob_data, - &p_data->io_req.auth_req, - &p_data->io_req.max_key_size, - &p_data->io_req.init_keys, - &p_data->io_req.resp_keys); + bta_dm_co_ble_io_req(bda, + &p_data->io_req.io_cap, + &p_data->io_req.oob_data, + &p_data->io_req.auth_req, + &p_data->io_req.max_key_size, + &p_data->io_req.init_keys, + &p_data->io_req.resp_keys); #endif #if BTM_OOB_INCLUDED == FALSE - status = BTM_SUCCESS; + status = BTM_SUCCESS; #endif - APPL_TRACE_EVENT("io mitm: %d oob_data:%d\n", p_data->io_req.auth_req, p_data->io_req.oob_data); + APPL_TRACE_EVENT("io mitm: %d oob_data:%d\n", p_data->io_req.auth_req, p_data->io_req.oob_data); - break; + break; - case BTM_LE_SEC_REQUEST_EVT: - bdcpy(sec_event.ble_req.bd_addr, bda); - p_name = BTM_SecReadDevName(bda); - if (p_name != NULL) - { - BCM_STRNCPY_S((char*)sec_event.ble_req.bd_name, - sizeof(BD_NAME), p_name, (BD_NAME_LEN)); - } - else - { - sec_event.ble_req.bd_name[0] = 0; - } - sec_event.ble_req.bd_name[BD_NAME_LEN] = 0; - bta_dm_cb.p_sec_cback(BTA_DM_BLE_SEC_REQ_EVT, &sec_event); - break; + case BTM_LE_SEC_REQUEST_EVT: + bdcpy(sec_event.ble_req.bd_addr, bda); + p_name = BTM_SecReadDevName(bda); + if (p_name != NULL) { + BCM_STRNCPY_S((char *)sec_event.ble_req.bd_name, + sizeof(BD_NAME), p_name, (BD_NAME_LEN)); + } else { + sec_event.ble_req.bd_name[0] = 0; + } + sec_event.ble_req.bd_name[BD_NAME_LEN] = 0; + bta_dm_cb.p_sec_cback(BTA_DM_BLE_SEC_REQ_EVT, &sec_event); + break; - case BTM_LE_KEY_NOTIF_EVT: - bdcpy(sec_event.key_notif.bd_addr, bda); - p_name = BTM_SecReadDevName(bda); - if (p_name != NULL) - { - BCM_STRNCPY_S((char*)sec_event.key_notif.bd_name, - sizeof(BD_NAME), p_name, (BD_NAME_LEN)); - } - else - { - sec_event.key_notif.bd_name[0] = 0; - } - sec_event.ble_req.bd_name[BD_NAME_LEN] = 0; - sec_event.key_notif.passkey = p_data->key_notif; - bta_dm_cb.p_sec_cback(BTA_DM_BLE_PASSKEY_NOTIF_EVT, &sec_event); - break; + case BTM_LE_KEY_NOTIF_EVT: + bdcpy(sec_event.key_notif.bd_addr, bda); + p_name = BTM_SecReadDevName(bda); + if (p_name != NULL) { + BCM_STRNCPY_S((char *)sec_event.key_notif.bd_name, + sizeof(BD_NAME), p_name, (BD_NAME_LEN)); + } else { + sec_event.key_notif.bd_name[0] = 0; + } + sec_event.ble_req.bd_name[BD_NAME_LEN] = 0; + sec_event.key_notif.passkey = p_data->key_notif; + bta_dm_cb.p_sec_cback(BTA_DM_BLE_PASSKEY_NOTIF_EVT, &sec_event); + break; - case BTM_LE_KEY_REQ_EVT: - bdcpy(sec_event.ble_req.bd_addr, bda); - bta_dm_cb.p_sec_cback(BTA_DM_BLE_PASSKEY_REQ_EVT, &sec_event); - break; + case BTM_LE_KEY_REQ_EVT: + bdcpy(sec_event.ble_req.bd_addr, bda); + bta_dm_cb.p_sec_cback(BTA_DM_BLE_PASSKEY_REQ_EVT, &sec_event); + break; - case BTM_LE_OOB_REQ_EVT: - bdcpy(sec_event.ble_req.bd_addr, bda); - bta_dm_cb.p_sec_cback(BTA_DM_BLE_OOB_REQ_EVT, &sec_event); - break; + case BTM_LE_OOB_REQ_EVT: + bdcpy(sec_event.ble_req.bd_addr, bda); + bta_dm_cb.p_sec_cback(BTA_DM_BLE_OOB_REQ_EVT, &sec_event); + break; - case BTM_LE_NC_REQ_EVT: - bdcpy(sec_event.key_notif.bd_addr, bda); - BCM_STRNCPY_S((char*)sec_event.key_notif.bd_name, sizeof(BD_NAME), bta_dm_get_remname(), (BD_NAME_LEN)); - sec_event.ble_req.bd_name[BD_NAME_LEN] = 0; - sec_event.key_notif.passkey = p_data->key_notif; - bta_dm_cb.p_sec_cback(BTA_DM_BLE_NC_REQ_EVT, &sec_event); - break; + case BTM_LE_NC_REQ_EVT: + bdcpy(sec_event.key_notif.bd_addr, bda); + BCM_STRNCPY_S((char *)sec_event.key_notif.bd_name, sizeof(BD_NAME), bta_dm_get_remname(), (BD_NAME_LEN)); + sec_event.ble_req.bd_name[BD_NAME_LEN] = 0; + sec_event.key_notif.passkey = p_data->key_notif; + bta_dm_cb.p_sec_cback(BTA_DM_BLE_NC_REQ_EVT, &sec_event); + break; - case BTM_LE_KEY_EVT: - bdcpy(sec_event.ble_key.bd_addr, bda); - sec_event.ble_key.key_type = p_data->key.key_type; - sec_event.ble_key.p_key_value = p_data->key.p_key_value; - bta_dm_cb.p_sec_cback(BTA_DM_BLE_KEY_EVT, &sec_event); - break; + case BTM_LE_KEY_EVT: + bdcpy(sec_event.ble_key.bd_addr, bda); + sec_event.ble_key.key_type = p_data->key.key_type; + sec_event.ble_key.p_key_value = p_data->key.p_key_value; + bta_dm_cb.p_sec_cback(BTA_DM_BLE_KEY_EVT, &sec_event); + break; - case BTM_LE_COMPLT_EVT: - bdcpy(sec_event.auth_cmpl.bd_addr, bda); + case BTM_LE_COMPLT_EVT: + bdcpy(sec_event.auth_cmpl.bd_addr, bda); #if BLE_INCLUDED == TRUE - BTM_ReadDevInfo(bda, &sec_event.auth_cmpl.dev_type, &sec_event.auth_cmpl.addr_type); + BTM_ReadDevInfo(bda, &sec_event.auth_cmpl.dev_type, &sec_event.auth_cmpl.addr_type); #endif - p_name = BTM_SecReadDevName(bda); - if (p_name != NULL) - { - BCM_STRNCPY_S((char*)sec_event.auth_cmpl.bd_name, - sizeof(BD_NAME), p_name, (BD_NAME_LEN)); - } - else - { - sec_event.auth_cmpl.bd_name[0] = 0; - } - if (p_data->complt.reason != 0) - { - sec_event.auth_cmpl.fail_reason = BTA_DM_AUTH_CONVERT_SMP_CODE(((UINT8)p_data->complt.reason)); - /* delete this device entry from Sec Dev DB */ - bta_dm_remove_sec_dev_entry (bda); - } - else - { - sec_event.auth_cmpl.success = TRUE; - if (!p_data->complt.smp_over_br) - GATT_ConfigServiceChangeCCC(bda, TRUE, BT_TRANSPORT_LE); + p_name = BTM_SecReadDevName(bda); + if (p_name != NULL) { + BCM_STRNCPY_S((char *)sec_event.auth_cmpl.bd_name, + sizeof(BD_NAME), p_name, (BD_NAME_LEN)); + } else { + sec_event.auth_cmpl.bd_name[0] = 0; + } + if (p_data->complt.reason != 0) { + sec_event.auth_cmpl.fail_reason = BTA_DM_AUTH_CONVERT_SMP_CODE(((UINT8)p_data->complt.reason)); + /* delete this device entry from Sec Dev DB */ + bta_dm_remove_sec_dev_entry (bda); + } else { + sec_event.auth_cmpl.success = TRUE; + if (!p_data->complt.smp_over_br) { + GATT_ConfigServiceChangeCCC(bda, TRUE, BT_TRANSPORT_LE); } + } - if (bta_dm_cb.p_sec_cback) - { - //bta_dm_cb.p_sec_cback(BTA_DM_AUTH_CMPL_EVT, &sec_event); - bta_dm_cb.p_sec_cback(BTA_DM_BLE_AUTH_CMPL_EVT, &sec_event); - } + if (bta_dm_cb.p_sec_cback) { + //bta_dm_cb.p_sec_cback(BTA_DM_AUTH_CMPL_EVT, &sec_event); + bta_dm_cb.p_sec_cback(BTA_DM_BLE_AUTH_CMPL_EVT, &sec_event); + } - break; + break; - default: - status = BTM_NOT_AUTHORIZED; - break; + default: + status = BTM_NOT_AUTHORIZED; + break; } return status; } @@ -4556,23 +4282,21 @@ static void bta_dm_ble_id_key_cback (UINT8 key_type, tBTM_BLE_LOCAL_KEYS *p_key) UINT8 evt; tBTA_DM_SEC dm_key; - switch (key_type) - { - case BTM_BLE_KEY_TYPE_ID: - case BTM_BLE_KEY_TYPE_ER: - if (bta_dm_cb.p_sec_cback) - { - memcpy(&dm_key.ble_id_keys, p_key, sizeof(tBTM_BLE_LOCAL_KEYS)); + switch (key_type) { + case BTM_BLE_KEY_TYPE_ID: + case BTM_BLE_KEY_TYPE_ER: + if (bta_dm_cb.p_sec_cback) { + memcpy(&dm_key.ble_id_keys, p_key, sizeof(tBTM_BLE_LOCAL_KEYS)); - evt = (key_type == BTM_BLE_KEY_TYPE_ID) ? BTA_DM_BLE_LOCAL_IR_EVT :\ - BTA_DM_BLE_LOCAL_ER_EVT; - bta_dm_cb.p_sec_cback(evt, &dm_key); - } - break; + evt = (key_type == BTM_BLE_KEY_TYPE_ID) ? BTA_DM_BLE_LOCAL_IR_EVT : \ + BTA_DM_BLE_LOCAL_ER_EVT; + bta_dm_cb.p_sec_cback(evt, &dm_key); + } + break; - default: - APPL_TRACE_DEBUG("Unknown key type %d", key_type); - break; + default: + APPL_TRACE_DEBUG("Unknown key type %d", key_type); + break; } return; @@ -4594,12 +4318,11 @@ void bta_dm_add_blekey (tBTA_DM_MSG *p_data) { if (!BTM_SecAddBleKey (p_data->add_ble_key.bd_addr, (tBTM_LE_KEY_VALUE *)&p_data->add_ble_key.blekey, - p_data->add_ble_key.key_type)) - { + p_data->add_ble_key.key_type)) { APPL_TRACE_ERROR ("BTA_DM: Error adding BLE Key for device %08x%04x", - (p_data->add_ble_key.bd_addr[0]<<24)+(p_data->add_ble_key.bd_addr[1]<<16)+\ - (p_data->add_ble_key.bd_addr[2]<<8)+p_data->add_ble_key.bd_addr[3], - (p_data->add_ble_key.bd_addr[4]<<8)+p_data->add_ble_key.bd_addr[5]); + (p_data->add_ble_key.bd_addr[0] << 24) + (p_data->add_ble_key.bd_addr[1] << 16) + \ + (p_data->add_ble_key.bd_addr[2] << 8) + p_data->add_ble_key.bd_addr[3], + (p_data->add_ble_key.bd_addr[4] << 8) + p_data->add_ble_key.bd_addr[5]); } } @@ -4618,12 +4341,11 @@ void bta_dm_add_ble_device (tBTA_DM_MSG *p_data) { if (!BTM_SecAddBleDevice (p_data->add_ble_device.bd_addr, NULL, p_data->add_ble_device.dev_type , - p_data->add_ble_device.addr_type)) - { + p_data->add_ble_device.addr_type)) { APPL_TRACE_ERROR ("BTA_DM: Error adding BLE Device for device %08x%04x", - (p_data->add_ble_device.bd_addr[0]<<24)+(p_data->add_ble_device.bd_addr[1]<<16)+ \ - (p_data->add_ble_device.bd_addr[2]<<8)+p_data->add_ble_device.bd_addr[3], - (p_data->add_ble_device.bd_addr[4]<<8)+p_data->add_ble_device.bd_addr[5]); + (p_data->add_ble_device.bd_addr[0] << 24) + (p_data->add_ble_device.bd_addr[1] << 16) + \ + (p_data->add_ble_device.bd_addr[2] << 8) + p_data->add_ble_device.bd_addr[3], + (p_data->add_ble_device.bd_addr[4] << 8) + p_data->add_ble_device.bd_addr[5]); } } @@ -4640,12 +4362,9 @@ void bta_dm_add_ble_device (tBTA_DM_MSG *p_data) *******************************************************************************/ void bta_dm_ble_passkey_reply (tBTA_DM_MSG *p_data) { - if (p_data->pin_reply.accept) - { + if (p_data->pin_reply.accept) { BTM_BlePasskeyReply(p_data->ble_passkey_reply.bd_addr, BTM_SUCCESS, p_data->ble_passkey_reply.passkey); - } - else - { + } else { BTM_BlePasskeyReply(p_data->ble_passkey_reply.bd_addr, BTM_NOT_AUTHORIZED, p_data->ble_passkey_reply.passkey); } @@ -4663,12 +4382,9 @@ void bta_dm_ble_passkey_reply (tBTA_DM_MSG *p_data) *******************************************************************************/ void bta_dm_ble_confirm_reply (tBTA_DM_MSG *p_data) { - if (p_data->confirm.accept) - { + if (p_data->confirm.accept) { BTM_BleConfirmReply(p_data->confirm.bd_addr, BTM_SUCCESS); - } - else - { + } else { BTM_BleConfirmReply(p_data->ble_passkey_reply.bd_addr, BTM_NOT_AUTHORIZED); } } @@ -4749,13 +4465,13 @@ void bta_dm_ble_set_scan_params(tBTA_DM_MSG *p_data) *******************************************************************************/ void bta_dm_ble_set_scan_fil_params(tBTA_DM_MSG *p_data) { - BTM_BleSetScanFilterParams (p_data->ble_set_scan_fil_params.client_if, - p_data->ble_set_scan_fil_params.scan_int, - p_data->ble_set_scan_fil_params.scan_window, - p_data->ble_set_scan_fil_params.scan_mode, - p_data->ble_set_scan_fil_params.addr_type_own, - p_data->ble_set_scan_fil_params.scan_filter_policy, - p_data->ble_set_scan_fil_params.scan_param_setup_cback); + BTM_BleSetScanFilterParams (p_data->ble_set_scan_fil_params.client_if, + p_data->ble_set_scan_fil_params.scan_int, + p_data->ble_set_scan_fil_params.scan_window, + p_data->ble_set_scan_fil_params.scan_mode, + p_data->ble_set_scan_fil_params.addr_type_own, + p_data->ble_set_scan_fil_params.scan_filter_policy, + p_data->ble_set_scan_fil_params.scan_param_setup_cback); } @@ -4785,11 +4501,10 @@ void bta_dm_ble_set_conn_scan_params (tBTA_DM_MSG *p_data) void bta_dm_ble_update_conn_params (tBTA_DM_MSG *p_data) { if (!L2CA_UpdateBleConnParams(p_data->ble_update_conn_params.bd_addr, - p_data->ble_update_conn_params.min_int, - p_data->ble_update_conn_params.max_int, - p_data->ble_update_conn_params.latency, - p_data->ble_update_conn_params.timeout)) - { + p_data->ble_update_conn_params.min_int, + p_data->ble_update_conn_params.max_int, + p_data->ble_update_conn_params.latency, + p_data->ble_update_conn_params.timeout)) { APPL_TRACE_ERROR("Update connection parameters failed!"); } } @@ -4800,25 +4515,23 @@ void bta_dm_ble_update_conn_params (tBTA_DM_MSG *p_data) ** ** Description This function set the LE random address for the device. ** -** Parameters: rand_addr:the random address whitch should be setting -** Explanation: This function added by Yulong at 2016/9/9 +** Parameters: rand_addr:the random address whitch should be setting +** Explanation: This function added by Yulong at 2016/9/9 *******************************************************************************/ void bta_dm_ble_set_rand_address(tBTA_DM_MSG *p_data) { - UINT8 len = sizeof(p_data->set_addr); - if(len != BD_ADDR_LEN) - { - APPL_TRACE_ERROR("Invalid random adress"); - return; - } - if(p_data->set_addr.addr_type != BLE_ADDR_RANDOM) - { - APPL_TRACE_ERROR("Invalid random adress type = %d\n",p_data->set_addr.addr_type); - return; - } - //send the setting random address to BTM layer - BTM_BleSetRandAddress(p_data->set_addr.address); - + UINT8 len = sizeof(p_data->set_addr); + if (len != BD_ADDR_LEN) { + APPL_TRACE_ERROR("Invalid random adress"); + return; + } + if (p_data->set_addr.addr_type != BLE_ADDR_RANDOM) { + APPL_TRACE_ERROR("Invalid random adress type = %d\n", p_data->set_addr.addr_type); + return; + } + //send the setting random address to BTM layer + BTM_BleSetRandAddress(p_data->set_addr.address); + } /******************************************************************************* @@ -4827,17 +4540,16 @@ void bta_dm_ble_set_rand_address(tBTA_DM_MSG *p_data) ** ** Description This function stop the BLE avdertising for the device. ** -** Parameters: void -** Explanation: This function added by Yulong at 2016/10/19 +** Parameters: void +** Explanation: This function added by Yulong at 2016/10/19 *******************************************************************************/ void bta_dm_ble_stop_advertising(tBTA_DM_MSG *p_data) { - if(p_data->hdr.event != BTA_DM_API_BLE_STOP_ADV_EVT) - { - APPL_TRACE_ERROR("Invalid BTA event,cann't stop the BLE adverting\n"); - } - - btm_ble_stop_adv(); + if (p_data->hdr.event != BTA_DM_API_BLE_STOP_ADV_EVT) { + APPL_TRACE_ERROR("Invalid BTA event,cann't stop the BLE adverting\n"); + } + + btm_ble_stop_adv(); } @@ -4870,26 +4582,21 @@ void bta_dm_ble_config_local_privacy (tBTA_DM_MSG *p_data) void bta_dm_ble_observe (tBTA_DM_MSG *p_data) { tBTM_STATUS status; - if (p_data->ble_observe.start) - { + if (p_data->ble_observe.start) { /*Save the callback to be called when a scan results are available */ bta_dm_search_cb.p_scan_cback = p_data->ble_observe.p_cback; if ((status = BTM_BleObserve(TRUE, p_data->ble_observe.duration, - bta_dm_observe_results_cb, bta_dm_observe_cmpl_cb))!= BTM_CMD_STARTED) - { + bta_dm_observe_results_cb, bta_dm_observe_cmpl_cb)) != BTM_CMD_STARTED) { tBTA_DM_SEARCH data; - APPL_TRACE_WARNING(" %s BTM_BleObserve failed. status %d\n",__FUNCTION__,status); + APPL_TRACE_WARNING(" %s BTM_BleObserve failed. status %d\n", __FUNCTION__, status); data.inq_cmpl.num_resps = 0; - if (bta_dm_search_cb.p_scan_cback) - { + if (bta_dm_search_cb.p_scan_cback) { bta_dm_search_cb.p_scan_cback(BTA_DM_INQ_CMPL_EVT, &data); } } - } - else - { + } else { bta_dm_search_cb.p_scan_cback = NULL; - BTM_BleObserve(FALSE, 0, NULL,NULL ); + BTM_BleObserve(FALSE, 0, NULL, NULL ); } } /******************************************************************************* @@ -4920,15 +4627,15 @@ void bta_dm_ble_set_adv_params (tBTA_DM_MSG *p_data) ** Returns void ** *******************************************************************************/ -void bta_dm_ble_set_adv_params_all (tBTA_DM_MSG *p_data) +void bta_dm_ble_set_adv_params_all (tBTA_DM_MSG *p_data) { - BTM_BleSetAdvParamsStartAdv(p_data->ble_set_adv_params_all.adv_int_min, - p_data->ble_set_adv_params_all.adv_int_max, - p_data->ble_set_adv_params_all.adv_type, - p_data->ble_set_adv_params_all.addr_type_own, - p_data->ble_set_adv_params_all.p_dir_bda, - p_data->ble_set_adv_params_all.channel_map, - p_data->ble_set_adv_params_all.adv_filter_policy); + BTM_BleSetAdvParamsStartAdv(p_data->ble_set_adv_params_all.adv_int_min, + p_data->ble_set_adv_params_all.adv_int_max, + p_data->ble_set_adv_params_all.adv_type, + p_data->ble_set_adv_params_all.addr_type_own, + p_data->ble_set_adv_params_all.p_dir_bda, + p_data->ble_set_adv_params_all.channel_map, + p_data->ble_set_adv_params_all.adv_filter_policy); } /******************************************************************************* @@ -4945,13 +4652,13 @@ void bta_dm_ble_set_adv_config (tBTA_DM_MSG *p_data) tBTA_STATUS status = BTA_FAILURE; if (BTM_BleWriteAdvData(p_data->ble_set_adv_data.data_mask, - (tBTM_BLE_ADV_DATA *)p_data->ble_set_adv_data.p_adv_cfg) == BTM_SUCCESS) - { + (tBTM_BLE_ADV_DATA *)p_data->ble_set_adv_data.p_adv_cfg) == BTM_SUCCESS) { status = BTA_SUCCESS; } - if (p_data->ble_set_adv_data.p_adv_data_cback) + if (p_data->ble_set_adv_data.p_adv_data_cback) { (*p_data->ble_set_adv_data.p_adv_data_cback)(status); + } } /******************************************************************************* @@ -4967,14 +4674,14 @@ void bta_dm_ble_set_scan_rsp (tBTA_DM_MSG *p_data) { tBTA_STATUS status = BTA_FAILURE; - if(BTM_BleWriteScanRsp(p_data->ble_set_adv_data.data_mask, - (tBTM_BLE_ADV_DATA *)p_data->ble_set_adv_data.p_adv_cfg) == BTM_SUCCESS) - { + if (BTM_BleWriteScanRsp(p_data->ble_set_adv_data.data_mask, + (tBTM_BLE_ADV_DATA *)p_data->ble_set_adv_data.p_adv_cfg) == BTM_SUCCESS) { status = BTA_SUCCESS; } - if (p_data->ble_set_adv_data.p_adv_data_cback) + if (p_data->ble_set_adv_data.p_adv_data_cback) { (*p_data->ble_set_adv_data.p_adv_data_cback)(status); + } } /******************************************************************************* @@ -4989,8 +4696,7 @@ void bta_dm_ble_set_scan_rsp (tBTA_DM_MSG *p_data) void bta_dm_ble_set_data_length(tBTA_DM_MSG *p_data) { if (BTM_SetBleDataLength(p_data->ble_set_data_length.remote_bda, - p_data->ble_set_data_length.tx_data_length) != BTM_SUCCESS) - { + p_data->ble_set_data_length.tx_data_length) != BTM_SUCCESS) { APPL_TRACE_ERROR("%s failed\n", __FUNCTION__); } } @@ -5023,16 +4729,14 @@ void bta_dm_ble_multi_adv_enb(tBTA_DM_MSG *p_data) tBTM_STATUS btm_status = 0; bta_dm_cb.p_multi_adv_cback = p_data->ble_multi_adv_enb.p_cback; - if(BTM_BleMaxMultiAdvInstanceCount() > 0 && NULL != p_data->ble_multi_adv_enb.p_ref) - { - btm_status = BTM_BleEnableAdvInstance((tBTM_BLE_ADV_PARAMS*) - p_data->ble_multi_adv_enb.p_params, - p_data->ble_multi_adv_enb.p_cback, - p_data->ble_multi_adv_enb.p_ref); + if (BTM_BleMaxMultiAdvInstanceCount() > 0 && NULL != p_data->ble_multi_adv_enb.p_ref) { + btm_status = BTM_BleEnableAdvInstance((tBTM_BLE_ADV_PARAMS *) + p_data->ble_multi_adv_enb.p_params, + p_data->ble_multi_adv_enb.p_cback, + p_data->ble_multi_adv_enb.p_ref); } - if(BTM_CMD_STARTED != btm_status) - { + if (BTM_CMD_STARTED != btm_status) { bta_dm_cb.p_multi_adv_cback(BTA_BLE_MULTI_ADV_ENB_EVT, 0xFF, p_data->ble_multi_adv_enb.p_ref, BTA_FAILURE); } @@ -5051,18 +4755,16 @@ void bta_dm_ble_multi_adv_upd_param(tBTA_DM_MSG *p_data) tBTM_STATUS btm_status = 0; void *p_ref = NULL; - if(BTM_BleMaxMultiAdvInstanceCount() > 0 && p_data->ble_multi_adv_param.inst_id > 0 - && p_data->ble_multi_adv_param.inst_id < BTM_BleMaxMultiAdvInstanceCount()) - { + if (BTM_BleMaxMultiAdvInstanceCount() > 0 && p_data->ble_multi_adv_param.inst_id > 0 + && p_data->ble_multi_adv_param.inst_id < BTM_BleMaxMultiAdvInstanceCount()) { btm_status = BTM_BleUpdateAdvInstParam(p_data->ble_multi_adv_param.inst_id, - (tBTM_BLE_ADV_PARAMS*)p_data->ble_multi_adv_param.p_params); + (tBTM_BLE_ADV_PARAMS *)p_data->ble_multi_adv_param.p_params); } - if(BTM_CMD_STARTED != btm_status) - { - p_ref = btm_ble_multi_adv_get_ref(p_data->ble_multi_adv_param.inst_id); - bta_dm_cb.p_multi_adv_cback(BTA_BLE_MULTI_ADV_PARAM_EVT, - p_data->ble_multi_adv_param.inst_id, p_ref, BTA_FAILURE); + if (BTM_CMD_STARTED != btm_status) { + p_ref = btm_ble_multi_adv_get_ref(p_data->ble_multi_adv_param.inst_id); + bta_dm_cb.p_multi_adv_cback(BTA_BLE_MULTI_ADV_PARAM_EVT, + p_data->ble_multi_adv_param.inst_id, p_ref, BTA_FAILURE); } } /******************************************************************************* @@ -5080,20 +4782,18 @@ void bta_dm_ble_multi_adv_data(tBTA_DM_MSG *p_data) tBTM_STATUS btm_status = 0; void *p_ref = NULL; - if(BTM_BleMaxMultiAdvInstanceCount() > 0 && p_data->ble_multi_adv_data.inst_id > 0 - && p_data->ble_multi_adv_data.inst_id < BTM_BleMaxMultiAdvInstanceCount()) - { + if (BTM_BleMaxMultiAdvInstanceCount() > 0 && p_data->ble_multi_adv_data.inst_id > 0 + && p_data->ble_multi_adv_data.inst_id < BTM_BleMaxMultiAdvInstanceCount()) { btm_status = BTM_BleCfgAdvInstData(p_data->ble_multi_adv_data.inst_id, - p_data->ble_multi_adv_data.is_scan_rsp, - p_data->ble_multi_adv_data.data_mask, - (tBTM_BLE_ADV_DATA*)p_data->ble_multi_adv_data.p_data); + p_data->ble_multi_adv_data.is_scan_rsp, + p_data->ble_multi_adv_data.data_mask, + (tBTM_BLE_ADV_DATA *)p_data->ble_multi_adv_data.p_data); } - if(BTM_CMD_STARTED != btm_status) - { - p_ref = btm_ble_multi_adv_get_ref(p_data->ble_multi_adv_data.inst_id); - bta_dm_cb.p_multi_adv_cback(BTA_BLE_MULTI_ADV_DATA_EVT, - p_data->ble_multi_adv_data.inst_id, p_ref, BTA_FAILURE); + if (BTM_CMD_STARTED != btm_status) { + p_ref = btm_ble_multi_adv_get_ref(p_data->ble_multi_adv_data.inst_id); + bta_dm_cb.p_multi_adv_cback(BTA_BLE_MULTI_ADV_DATA_EVT, + p_data->ble_multi_adv_data.inst_id, p_ref, BTA_FAILURE); } } @@ -5111,17 +4811,15 @@ void btm_dm_ble_multi_adv_disable(tBTA_DM_MSG *p_data) tBTM_STATUS btm_status = 0; void *p_ref = NULL; - if(BTM_BleMaxMultiAdvInstanceCount() > 0 && p_data->ble_multi_adv_disable.inst_id > 0 - && p_data->ble_multi_adv_disable.inst_id < BTM_BleMaxMultiAdvInstanceCount()) - { + if (BTM_BleMaxMultiAdvInstanceCount() > 0 && p_data->ble_multi_adv_disable.inst_id > 0 + && p_data->ble_multi_adv_disable.inst_id < BTM_BleMaxMultiAdvInstanceCount()) { btm_status = BTM_BleDisableAdvInstance(p_data->ble_multi_adv_disable.inst_id); } - if(BTM_CMD_STARTED != btm_status) - { - p_ref = btm_ble_multi_adv_get_ref(p_data->ble_multi_adv_disable.inst_id); - bta_dm_cb.p_multi_adv_cback(BTA_BLE_MULTI_ADV_DISABLE_EVT, - p_data->ble_multi_adv_disable.inst_id, p_ref, BTA_FAILURE); + if (BTM_CMD_STARTED != btm_status) { + p_ref = btm_ble_multi_adv_get_ref(p_data->ble_multi_adv_disable.inst_id); + bta_dm_cb.p_multi_adv_cback(BTA_BLE_MULTI_ADV_DISABLE_EVT, + p_data->ble_multi_adv_disable.inst_id, p_ref, BTA_FAILURE); } } @@ -5141,8 +4839,7 @@ void bta_dm_ble_setup_storage (tBTA_DM_MSG *p_data) BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb); - if (0 != cmn_ble_vsc_cb.tot_scan_results_strg) - { + if (0 != cmn_ble_vsc_cb.tot_scan_results_strg) { btm_status = BTM_BleSetStorageConfig(p_data->ble_set_storage.batch_scan_full_max, p_data->ble_set_storage.batch_scan_trunc_max, p_data->ble_set_storage.batch_scan_notify_threshold, @@ -5152,9 +4849,9 @@ void bta_dm_ble_setup_storage (tBTA_DM_MSG *p_data) p_data->ble_set_storage.ref_value); } - if(BTM_CMD_STARTED != btm_status) - bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_CFG_STRG_EVT, p_data->ble_set_storage.ref_value, - btm_status); + if (BTM_CMD_STARTED != btm_status) + bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_CFG_STRG_EVT, p_data->ble_set_storage.ref_value, + btm_status); } /******************************************************************************* @@ -5173,8 +4870,7 @@ void bta_dm_ble_enable_batch_scan (tBTA_DM_MSG *p_data) BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb); - if (0 != cmn_ble_vsc_cb.tot_scan_results_strg) - { + if (0 != cmn_ble_vsc_cb.tot_scan_results_strg) { btm_status = BTM_BleEnableBatchScan(p_data->ble_enable_scan.scan_mode, p_data->ble_enable_scan.scan_int, p_data->ble_enable_scan.scan_window, @@ -5183,9 +4879,9 @@ void bta_dm_ble_enable_batch_scan (tBTA_DM_MSG *p_data) p_data->ble_enable_scan.ref_value); } - if(BTM_CMD_STARTED != btm_status) - bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_ENABLE_EVT, p_data->ble_enable_scan.ref_value, - btm_status); + if (BTM_CMD_STARTED != btm_status) + bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_ENABLE_EVT, p_data->ble_enable_scan.ref_value, + btm_status); } /******************************************************************************* @@ -5205,14 +4901,13 @@ void bta_dm_ble_disable_batch_scan (tBTA_DM_MSG *p_data) BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb); - if (0 != cmn_ble_vsc_cb.tot_scan_results_strg) - { + if (0 != cmn_ble_vsc_cb.tot_scan_results_strg) { btm_status = BTM_BleDisableBatchScan(p_data->ble_disable_scan.ref_value); } - if(BTM_CMD_STARTED != btm_status) - bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_DISABLE_EVT, p_data->ble_enable_scan.ref_value, - btm_status); + if (BTM_CMD_STARTED != btm_status) + bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_DISABLE_EVT, p_data->ble_enable_scan.ref_value, + btm_status); } /******************************************************************************* @@ -5231,15 +4926,14 @@ void bta_dm_ble_read_scan_reports(tBTA_DM_MSG *p_data) BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb); - if (0 != cmn_ble_vsc_cb.tot_scan_results_strg) - { + if (0 != cmn_ble_vsc_cb.tot_scan_results_strg) { btm_status = BTM_BleReadScanReports(p_data->ble_read_reports.scan_type, p_data->ble_read_reports.ref_value); } - if(BTM_CMD_STARTED != btm_status) - bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_READ_REPTS_EVT, p_data->ble_enable_scan.ref_value, - btm_status); + if (BTM_CMD_STARTED != btm_status) + bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_READ_REPTS_EVT, p_data->ble_enable_scan.ref_value, + btm_status); } /******************************************************************************* @@ -5261,15 +4955,13 @@ void bta_dm_ble_track_advertiser(tBTA_DM_MSG *p_data) BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb); - if (0 != cmn_ble_vsc_cb.tot_scan_results_strg) - { + if (0 != cmn_ble_vsc_cb.tot_scan_results_strg) { btm_status = BTM_BleTrackAdvertiser((tBTM_BLE_TRACK_ADV_CBACK *) p_data->ble_track_advert.p_track_adv_cback, p_data->ble_track_advert.ref_value); } - if(BTM_CMD_STARTED != btm_status) - { + if (BTM_CMD_STARTED != btm_status) { memset(&track_adv_data, 0, sizeof(tBTA_DM_BLE_TRACK_ADV_DATA)); track_adv_data.advertiser_info_present = NO_ADV_INFO_PRESENT; /* Indicates failure */ track_adv_data.client_if = (UINT8)p_data->ble_track_advert.ref_value; @@ -5287,33 +4979,33 @@ void bta_dm_ble_track_advertiser(tBTA_DM_MSG *p_data) ** *******************************************************************************/ void bta_ble_scan_setup_cb(tBTM_BLE_BATCH_SCAN_EVT evt, tBTM_BLE_REF_VALUE ref_value, - tBTM_STATUS status) + tBTM_STATUS status) { tBTA_BLE_BATCH_SCAN_EVT bta_evt = 0; APPL_TRACE_DEBUG("bta_ble_scan_setup_cb : evt: %d, ref_value: %d, status:%d", evt, - ref_value, status); + ref_value, status); - switch(evt) - { - case BTM_BLE_BATCH_SCAN_ENABLE_EVT: - bta_evt = BTA_BLE_BATCH_SCAN_ENB_EVT; - break; - case BTM_BLE_BATCH_SCAN_CFG_STRG_EVT: - bta_evt = BTA_BLE_BATCH_SCAN_CFG_STRG_EVT; - break; - case BTM_BLE_BATCH_SCAN_DISABLE_EVT: - bta_evt = BTA_BLE_BATCH_SCAN_DIS_EVT; - break; - case BTM_BLE_BATCH_SCAN_PARAM_EVT: - bta_evt = BTA_BLE_BATCH_SCAN_PARAM_EVT; - break; - default: - break; + switch (evt) { + case BTM_BLE_BATCH_SCAN_ENABLE_EVT: + bta_evt = BTA_BLE_BATCH_SCAN_ENB_EVT; + break; + case BTM_BLE_BATCH_SCAN_CFG_STRG_EVT: + bta_evt = BTA_BLE_BATCH_SCAN_CFG_STRG_EVT; + break; + case BTM_BLE_BATCH_SCAN_DISABLE_EVT: + bta_evt = BTA_BLE_BATCH_SCAN_DIS_EVT; + break; + case BTM_BLE_BATCH_SCAN_PARAM_EVT: + bta_evt = BTA_BLE_BATCH_SCAN_PARAM_EVT; + break; + default: + break; } - if(NULL != bta_dm_cb.p_setup_cback) - bta_dm_cb.p_setup_cback(bta_evt, ref_value, status); + if (NULL != bta_dm_cb.p_setup_cback) { + bta_dm_cb.p_setup_cback(bta_evt, ref_value, status); + } } @@ -5329,15 +5021,16 @@ void bta_ble_scan_setup_cb(tBTM_BLE_BATCH_SCAN_EVT evt, tBTM_BLE_REF_VALUE ref_v ** *******************************************************************************/ static void bta_ble_scan_cfg_cmpl(tBTM_BLE_PF_ACTION action, tBTM_BLE_SCAN_COND_OP cfg_op, - tBTM_BLE_PF_AVBL_SPACE avbl_space, tBTM_STATUS status, - tBTM_BLE_REF_VALUE ref_value) + tBTM_BLE_PF_AVBL_SPACE avbl_space, tBTM_STATUS status, + tBTM_BLE_REF_VALUE ref_value) { - tBTA_STATUS st = (status == BTM_SUCCESS) ? BTA_SUCCESS: BTA_FAILURE; + tBTA_STATUS st = (status == BTM_SUCCESS) ? BTA_SUCCESS : BTA_FAILURE; APPL_TRACE_DEBUG("bta_ble_scan_cfg_cmpl: %d, %d, %d, %d", action, cfg_op, avbl_space, status); - if(bta_dm_cb.p_scan_filt_cfg_cback) - bta_dm_cb.p_scan_filt_cfg_cback(action, cfg_op, avbl_space, st, ref_value); + if (bta_dm_cb.p_scan_filt_cfg_cback) { + bta_dm_cb.p_scan_filt_cfg_cback(action, cfg_op, avbl_space, st, ref_value); + } } /******************************************************************************* @@ -5358,15 +5051,13 @@ void bta_dm_cfg_filter_cond (tBTA_DM_MSG *p_data) APPL_TRACE_DEBUG("bta_dm_cfg_filter_cond"); BTM_BleGetVendorCapabilities(&cmn_vsc_cb); - if(0 != cmn_vsc_cb.filter_support) - { + if (0 != cmn_vsc_cb.filter_support) { if ((st = BTM_BleCfgFilterCondition(p_data->ble_cfg_filter_cond.action, - p_data->ble_cfg_filter_cond.cond_type, - (tBTM_BLE_PF_FILT_INDEX)p_data->ble_cfg_filter_cond.filt_index, - (tBTM_BLE_PF_COND_PARAM *)p_data->ble_cfg_filter_cond.p_cond_param, - bta_ble_scan_cfg_cmpl, p_data->ble_cfg_filter_cond.ref_value)) - == BTM_CMD_STARTED) - { + p_data->ble_cfg_filter_cond.cond_type, + (tBTM_BLE_PF_FILT_INDEX)p_data->ble_cfg_filter_cond.filt_index, + (tBTM_BLE_PF_COND_PARAM *)p_data->ble_cfg_filter_cond.p_cond_param, + bta_ble_scan_cfg_cmpl, p_data->ble_cfg_filter_cond.ref_value)) + == BTM_CMD_STARTED) { bta_dm_cb.p_scan_filt_cfg_cback = p_data->ble_cfg_filter_cond.p_filt_cfg_cback; return; } @@ -5374,8 +5065,8 @@ void bta_dm_cfg_filter_cond (tBTA_DM_MSG *p_data) if (p_data->ble_cfg_filter_cond.p_filt_cfg_cback) p_data->ble_cfg_filter_cond.p_filt_cfg_cback(BTA_DM_BLE_PF_CONFIG_EVT, - p_data->ble_cfg_filter_cond.cond_type, 0, status, - p_data->ble_cfg_filter_cond.ref_value); + p_data->ble_cfg_filter_cond.cond_type, 0, status, + p_data->ble_cfg_filter_cond.ref_value); return; } @@ -5397,18 +5088,18 @@ void bta_dm_enable_scan_filter(tBTA_DM_MSG *p_data) APPL_TRACE_DEBUG("bta_dm_enable_scan_filter"); BTM_BleGetVendorCapabilities(&cmn_vsc_cb); - if(0 != cmn_vsc_cb.filter_support) - { - if((st = BTM_BleEnableDisableFilterFeature(p_data->ble_enable_scan_filt.action, - p_data->ble_enable_scan_filt.p_filt_status_cback, - (tBTM_BLE_REF_VALUE)p_data->ble_enable_scan_filt.ref_value)) == BTM_CMD_STARTED) - bta_dm_cb.p_scan_filt_status_cback = p_data->ble_enable_scan_filt.p_filt_status_cback; + if (0 != cmn_vsc_cb.filter_support) { + if ((st = BTM_BleEnableDisableFilterFeature(p_data->ble_enable_scan_filt.action, + p_data->ble_enable_scan_filt.p_filt_status_cback, + (tBTM_BLE_REF_VALUE)p_data->ble_enable_scan_filt.ref_value)) == BTM_CMD_STARTED) { + bta_dm_cb.p_scan_filt_status_cback = p_data->ble_enable_scan_filt.p_filt_status_cback; + } return; } if (p_data->ble_enable_scan_filt.p_filt_status_cback) p_data->ble_enable_scan_filt.p_filt_status_cback (BTA_DM_BLE_PF_ENABLE_EVT, - p_data->ble_enable_scan_filt.ref_value, status); + p_data->ble_enable_scan_filt.ref_value, status); } @@ -5430,15 +5121,13 @@ void bta_dm_scan_filter_param_setup (tBTA_DM_MSG *p_data) APPL_TRACE_DEBUG("bta_dm_scan_filter_param_setup"); BTM_BleGetVendorCapabilities(&cmn_vsc_cb); - if(0 != cmn_vsc_cb.filter_support) - { + if (0 != cmn_vsc_cb.filter_support) { if ((st = BTM_BleAdvFilterParamSetup(p_data->ble_scan_filt_param_setup.action, - p_data->ble_scan_filt_param_setup.filt_index, - (tBTM_BLE_PF_FILT_PARAMS *)&p_data->ble_scan_filt_param_setup.filt_params, - p_data->ble_scan_filt_param_setup.p_target, - p_data->ble_scan_filt_param_setup.p_filt_param_cback, - p_data->ble_scan_filt_param_setup.ref_value)) == BTM_CMD_STARTED) - { + p_data->ble_scan_filt_param_setup.filt_index, + (tBTM_BLE_PF_FILT_PARAMS *)&p_data->ble_scan_filt_param_setup.filt_params, + p_data->ble_scan_filt_param_setup.p_target, + p_data->ble_scan_filt_param_setup.p_filt_param_cback, + p_data->ble_scan_filt_param_setup.ref_value)) == BTM_CMD_STARTED) { bta_dm_cb.p_scan_filt_param_cback = p_data->ble_scan_filt_param_setup.p_filt_param_cback; return; } @@ -5446,7 +5135,7 @@ void bta_dm_scan_filter_param_setup (tBTA_DM_MSG *p_data) if (p_data->ble_scan_filt_param_setup.p_filt_param_cback) p_data->ble_scan_filt_param_setup.p_filt_param_cback (BTA_DM_BLE_PF_ENABLE_EVT, 0, - p_data->ble_scan_filt_param_setup.ref_value, status); + p_data->ble_scan_filt_param_setup.ref_value, status); return; } @@ -5463,19 +5152,21 @@ void bta_dm_scan_filter_param_setup (tBTA_DM_MSG *p_data) ** *******************************************************************************/ static void bta_ble_energy_info_cmpl(tBTM_BLE_TX_TIME_MS tx_time, - tBTM_BLE_RX_TIME_MS rx_time, - tBTM_BLE_IDLE_TIME_MS idle_time, - tBTM_BLE_ENERGY_USED energy_used, - tBTM_STATUS status) + tBTM_BLE_RX_TIME_MS rx_time, + tBTM_BLE_IDLE_TIME_MS idle_time, + tBTM_BLE_ENERGY_USED energy_used, + tBTM_STATUS status) { - tBTA_STATUS st = (status == BTM_SUCCESS) ? BTA_SUCCESS: BTA_FAILURE; + tBTA_STATUS st = (status == BTM_SUCCESS) ? BTA_SUCCESS : BTA_FAILURE; tBTA_DM_CONTRL_STATE ctrl_state = 0; - if (BTA_SUCCESS == st) - ctrl_state = bta_dm_pm_obtain_controller_state(); + if (BTA_SUCCESS == st) { + ctrl_state = bta_dm_pm_obtain_controller_state(); + } - if (bta_dm_cb.p_energy_info_cback) + if (bta_dm_cb.p_energy_info_cback) { bta_dm_cb.p_energy_info_cback(tx_time, rx_time, idle_time, energy_used, ctrl_state, st); + } } /******************************************************************************* @@ -5493,8 +5184,9 @@ void bta_dm_ble_get_energy_info(tBTA_DM_MSG *p_data) bta_dm_cb.p_energy_info_cback = p_data->ble_energy_info.p_energy_info_cback; btm_status = BTM_BleGetEnergyInfo(bta_ble_energy_info_cmpl); - if (BTM_CMD_STARTED != btm_status) + if (BTM_CMD_STARTED != btm_status) { bta_ble_energy_info_cmpl(0, 0, 0, 0, btm_status); + } } #if ((defined BTA_GATT_INCLUDED) && (BTA_GATT_INCLUDED == TRUE)) @@ -5514,10 +5206,9 @@ void bta_dm_ble_get_energy_info(tBTA_DM_MSG *p_data) *******************************************************************************/ static void bta_dm_gattc_register(void) { - tBT_UUID app_uuid = {LEN_UUID_128,{0}}; + tBT_UUID app_uuid = {LEN_UUID_128, {0}}; - if (bta_dm_search_cb.client_if == BTA_GATTS_INVALID_IF) - { + if (bta_dm_search_cb.client_if == BTA_GATTS_INVALID_IF) { memset (&app_uuid.uu.uuid128, 0x87, LEN_UUID_128); BTA_GATTC_AppRegister(&app_uuid, bta_dm_gattc_callback); } @@ -5563,36 +5254,29 @@ static void bta_dm_gatt_disc_result(tBTA_GATT_ID service_id) */ - if ( bta_dm_search_cb.ble_raw_used + sizeof(tBTA_GATT_ID) < bta_dm_search_cb.ble_raw_size ) - { + if ( bta_dm_search_cb.ble_raw_used + sizeof(tBTA_GATT_ID) < bta_dm_search_cb.ble_raw_size ) { APPL_TRACE_DEBUG("ADDING BLE SERVICE uuid=0x%x, ble_ptr = 0x%x, ble_raw_used = 0x%x", - service_id.uuid.uu.uuid16,bta_dm_search_cb.p_ble_rawdata,bta_dm_search_cb.ble_raw_used); + service_id.uuid.uu.uuid16, bta_dm_search_cb.p_ble_rawdata, bta_dm_search_cb.ble_raw_used); - if(bta_dm_search_cb.p_ble_rawdata) - { + if (bta_dm_search_cb.p_ble_rawdata) { memcpy((bta_dm_search_cb.p_ble_rawdata + bta_dm_search_cb.ble_raw_used), &service_id, sizeof(service_id) ); bta_dm_search_cb.ble_raw_used += sizeof(service_id); - } - else - { + } else { APPL_TRACE_ERROR("p_ble_rawdata is NULL"); } - } - else - { - APPL_TRACE_ERROR("%s out of room to accomodate more service ids ble_raw_size = %d ble_raw_used = %d", __FUNCTION__,bta_dm_search_cb.ble_raw_size, bta_dm_search_cb.ble_raw_used ); + } else { + APPL_TRACE_ERROR("%s out of room to accomodate more service ids ble_raw_size = %d ble_raw_used = %d", __FUNCTION__, bta_dm_search_cb.ble_raw_size, bta_dm_search_cb.ble_raw_used ); } LOG_INFO("%s service_id_uuid_len=%d ", __func__, service_id.uuid.len); - if ( bta_dm_search_cb.state != BTA_DM_SEARCH_IDLE) - { + if ( bta_dm_search_cb.state != BTA_DM_SEARCH_IDLE) { /* send result back to app now, one by one */ bdcpy (result.disc_ble_res.bd_addr, bta_dm_search_cb.peer_bdaddr); - BCM_STRNCPY_S((char*)result.disc_ble_res.bd_name, sizeof(BD_NAME), bta_dm_get_remname(), (BD_NAME_LEN-1)); + BCM_STRNCPY_S((char *)result.disc_ble_res.bd_name, sizeof(BD_NAME), bta_dm_get_remname(), (BD_NAME_LEN - 1)); result.disc_ble_res.bd_name[BD_NAME_LEN] = 0; memcpy(&result.disc_ble_res.service, &service_id.uuid, sizeof(tBT_UUID)); @@ -5613,48 +5297,43 @@ static void bta_dm_gatt_disc_complete(UINT16 conn_id, tBTA_GATT_STATUS status) { tBTA_DM_MSG *p_msg; - APPL_TRACE_DEBUG("bta_dm_gatt_disc_complete conn_id = %d",conn_id); + APPL_TRACE_DEBUG("bta_dm_gatt_disc_complete conn_id = %d", conn_id); - if (bta_dm_search_cb.uuid_to_search > 0) bta_dm_search_cb.uuid_to_search --; - - if (status == BTA_GATT_OK && bta_dm_search_cb.uuid_to_search > 0) - { - btm_dm_start_disc_gatt_services(conn_id); + if (bta_dm_search_cb.uuid_to_search > 0) { + bta_dm_search_cb.uuid_to_search --; } - else - { + + if (status == BTA_GATT_OK && bta_dm_search_cb.uuid_to_search > 0) { + btm_dm_start_disc_gatt_services(conn_id); + } else { bta_dm_search_cb.uuid_to_search = 0; /* no more services to be discovered */ - if ((p_msg = (tBTA_DM_MSG *) GKI_getbuf(sizeof(tBTA_DM_MSG))) != NULL) - { + if ((p_msg = (tBTA_DM_MSG *) GKI_getbuf(sizeof(tBTA_DM_MSG))) != NULL) { p_msg->hdr.event = BTA_DM_DISCOVERY_RESULT_EVT; - p_msg->disc_result.result.disc_res.result = (status == BTA_GATT_OK) ? BTA_SUCCESS :BTA_FAILURE; + p_msg->disc_result.result.disc_res.result = (status == BTA_GATT_OK) ? BTA_SUCCESS : BTA_FAILURE; APPL_TRACE_DEBUG("%s service found: 0x%08x", __FUNCTION__, bta_dm_search_cb.services_found); p_msg->disc_result.result.disc_res.services = bta_dm_search_cb.services_found; p_msg->disc_result.result.disc_res.num_uuids = 0; p_msg->disc_result.result.disc_res.p_uuid_list = NULL; bdcpy (p_msg->disc_result.result.disc_res.bd_addr, bta_dm_search_cb.peer_bdaddr); - BCM_STRNCPY_S((char*)p_msg->disc_result.result.disc_res.bd_name, sizeof(BD_NAME), - bta_dm_get_remname(), (BD_NAME_LEN-1)); + BCM_STRNCPY_S((char *)p_msg->disc_result.result.disc_res.bd_name, sizeof(BD_NAME), + bta_dm_get_remname(), (BD_NAME_LEN - 1)); /* make sure the string is terminated */ - p_msg->disc_result.result.disc_res.bd_name[BD_NAME_LEN-1] = 0; + p_msg->disc_result.result.disc_res.bd_name[BD_NAME_LEN - 1] = 0; p_msg->disc_result.result.disc_res.device_type |= BT_DEVICE_TYPE_BLE; - if ( bta_dm_search_cb.ble_raw_used > 0 ) - { + if ( bta_dm_search_cb.ble_raw_used > 0 ) { p_msg->disc_result.result.disc_res.p_raw_data = GKI_getbuf(bta_dm_search_cb.ble_raw_used); memcpy( p_msg->disc_result.result.disc_res.p_raw_data, - bta_dm_search_cb.p_ble_rawdata, - bta_dm_search_cb.ble_raw_used ); + bta_dm_search_cb.p_ble_rawdata, + bta_dm_search_cb.ble_raw_used ); p_msg->disc_result.result.disc_res.raw_data_size = bta_dm_search_cb.ble_raw_used; - } - else - { + } else { p_msg->disc_result.result.disc_res.p_raw_data = NULL; bta_dm_search_cb.p_ble_rawdata = 0; } @@ -5662,11 +5341,10 @@ static void bta_dm_gatt_disc_complete(UINT16 conn_id, tBTA_GATT_STATUS status) bta_sys_sendmsg(p_msg); } - if (conn_id != BTA_GATT_INVALID_CONN_ID) - { + if (conn_id != BTA_GATT_INVALID_CONN_ID) { /* start a GATT channel close delay timer */ bta_sys_start_timer(&bta_dm_search_cb.gatt_close_timer, BTA_DM_DISC_CLOSE_TOUT_EVT, - BTA_DM_GATT_CLOSE_DELAY_TOUT); + BTA_DM_GATT_CLOSE_DELAY_TOUT); bdcpy(bta_dm_search_cb.pending_close_bda, bta_dm_search_cb.peer_bdaddr); } bta_dm_search_cb.gatt_disc_active = FALSE; @@ -5686,8 +5364,9 @@ void bta_dm_close_gatt_conn(tBTA_DM_MSG *p_data) { UNUSED(p_data); - if (bta_dm_search_cb.conn_id != BTA_GATT_INVALID_CONN_ID) + if (bta_dm_search_cb.conn_id != BTA_GATT_INVALID_CONN_ID) { BTA_GATTC_Close(bta_dm_search_cb.conn_id); + } memset(bta_dm_search_cb.pending_close_bda, 0, BD_ADDR_LEN); bta_dm_search_cb.conn_id = BTA_GATT_INVALID_CONN_ID; @@ -5708,14 +5387,13 @@ void btm_dm_start_gatt_discovery (BD_ADDR bd_addr) /* connection is already open */ if (bdcmp(bta_dm_search_cb.pending_close_bda, bd_addr) == 0 && - bta_dm_search_cb.conn_id != BTA_GATT_INVALID_CONN_ID) - { + bta_dm_search_cb.conn_id != BTA_GATT_INVALID_CONN_ID) { memset(bta_dm_search_cb.pending_close_bda, 0, BD_ADDR_LEN); bta_sys_stop_timer(&bta_dm_search_cb.gatt_close_timer); btm_dm_start_disc_gatt_services(bta_dm_search_cb.conn_id); - } - else + } else { BTA_GATTC_Open(bta_dm_search_cb.client_if, bd_addr, TRUE, BTA_GATT_TRANSPORT_LE); + } } /******************************************************************************* @@ -5729,8 +5407,7 @@ void btm_dm_start_gatt_discovery (BD_ADDR bd_addr) *******************************************************************************/ static void bta_dm_cancel_gatt_discovery(BD_ADDR bd_addr) { - if (bta_dm_search_cb.conn_id == BTA_GATT_INVALID_CONN_ID) - { + if (bta_dm_search_cb.conn_id == BTA_GATT_INVALID_CONN_ID) { BTA_GATTC_CancelOpen(bta_dm_search_cb.client_if, bd_addr, TRUE); } @@ -5755,25 +5432,22 @@ void bta_dm_proc_open_evt(tBTA_GATTC_OPEN *p_data) p2 = p_data->remote_bda; APPL_TRACE_DEBUG("DM Search state= %d search_cb.peer_dbaddr: [%08x%04x] connected_bda= [%08x%04x] ", - bta_dm_search_cb.state, - ((p1[0])<<24)+((p1[1])<<16)+((p1[2])<<8)+(p1[3]), - ((p1[4])<<8)+ p1[5], - ((p2[0])<<24)+((p2[1])<<16)+((p2[2])<<8)+(p2[3]), - ((p2[4])<<8)+ p2[5]); + bta_dm_search_cb.state, + ((p1[0]) << 24) + ((p1[1]) << 16) + ((p1[2]) << 8) + (p1[3]), + ((p1[4]) << 8) + p1[5], + ((p2[0]) << 24) + ((p2[1]) << 16) + ((p2[2]) << 8) + (p2[3]), + ((p2[4]) << 8) + p2[5]); APPL_TRACE_DEBUG("BTA_GATTC_OPEN_EVT conn_id = %d client_if=%d status = %d" , - p_data->conn_id, - p_data->client_if, - p_data->status); + p_data->conn_id, + p_data->client_if, + p_data->status); bta_dm_search_cb.conn_id = p_data->conn_id; - if (p_data->status == BTA_GATT_OK) - { + if (p_data->status == BTA_GATT_OK) { btm_dm_start_disc_gatt_services(p_data->conn_id); - } - else - { + } else { bta_dm_gatt_disc_complete(BTA_GATT_INVALID_CONN_ID, p_data->status); } } @@ -5791,42 +5465,42 @@ static void bta_dm_gattc_callback(tBTA_GATTC_EVT event, tBTA_GATTC *p_data) { APPL_TRACE_DEBUG("bta_dm_gattc_callback event = %d", event); - switch (event) - { - case BTA_GATTC_REG_EVT: - APPL_TRACE_DEBUG("BTA_GATTC_REG_EVT client_if = %d", p_data->reg_oper.client_if); - if (p_data->reg_oper.status == BTA_GATT_OK) - bta_dm_search_cb.client_if = p_data->reg_oper.client_if; - else - bta_dm_search_cb.client_if = BTA_GATTS_INVALID_IF; - break; + switch (event) { + case BTA_GATTC_REG_EVT: + APPL_TRACE_DEBUG("BTA_GATTC_REG_EVT client_if = %d", p_data->reg_oper.client_if); + if (p_data->reg_oper.status == BTA_GATT_OK) { + bta_dm_search_cb.client_if = p_data->reg_oper.client_if; + } else { + bta_dm_search_cb.client_if = BTA_GATTS_INVALID_IF; + } + break; - case BTA_GATTC_OPEN_EVT: - bta_dm_proc_open_evt(&p_data->open); - break; + case BTA_GATTC_OPEN_EVT: + bta_dm_proc_open_evt(&p_data->open); + break; - case BTA_GATTC_SEARCH_RES_EVT: - bta_dm_gatt_disc_result(p_data->srvc_res.service_uuid.id); - break; + case BTA_GATTC_SEARCH_RES_EVT: + bta_dm_gatt_disc_result(p_data->srvc_res.service_uuid.id); + break; - case BTA_GATTC_SEARCH_CMPL_EVT: - if ( bta_dm_search_cb.state != BTA_DM_SEARCH_IDLE) - bta_dm_gatt_disc_complete(p_data->search_cmpl.conn_id, p_data->search_cmpl.status); - break; + case BTA_GATTC_SEARCH_CMPL_EVT: + if ( bta_dm_search_cb.state != BTA_DM_SEARCH_IDLE) { + bta_dm_gatt_disc_complete(p_data->search_cmpl.conn_id, p_data->search_cmpl.status); + } + break; - case BTA_GATTC_CLOSE_EVT: - APPL_TRACE_DEBUG("BTA_GATTC_CLOSE_EVT reason = %d", p_data->close.reason); - /* in case of disconnect before search is completed */ - if ( (bta_dm_search_cb.state != BTA_DM_SEARCH_IDLE) && - (bta_dm_search_cb.state != BTA_DM_SEARCH_ACTIVE) && - !memcmp(p_data->close.remote_bda, bta_dm_search_cb.peer_bdaddr, BD_ADDR_LEN)) - { - bta_dm_gatt_disc_complete((UINT16)BTA_GATT_INVALID_CONN_ID, (tBTA_GATT_STATUS) BTA_GATT_ERROR); - } - break; + case BTA_GATTC_CLOSE_EVT: + APPL_TRACE_DEBUG("BTA_GATTC_CLOSE_EVT reason = %d", p_data->close.reason); + /* in case of disconnect before search is completed */ + if ( (bta_dm_search_cb.state != BTA_DM_SEARCH_IDLE) && + (bta_dm_search_cb.state != BTA_DM_SEARCH_ACTIVE) && + !memcmp(p_data->close.remote_bda, bta_dm_search_cb.peer_bdaddr, BD_ADDR_LEN)) { + bta_dm_gatt_disc_complete((UINT16)BTA_GATT_INVALID_CONN_ID, (tBTA_GATT_STATUS) BTA_GATT_ERROR); + } + break; - default: - break; + default: + break; } } @@ -5845,14 +5519,12 @@ static void bta_dm_gattc_callback(tBTA_GATTC_EVT event, tBTA_GATTC *p_data) static void bta_dm_ctrl_features_rd_cmpl_cback(tBTM_STATUS result) { APPL_TRACE_DEBUG("%s status = %d ", __FUNCTION__, result); - if (result == BTM_SUCCESS) - { - if(bta_dm_cb.p_sec_cback) + if (result == BTM_SUCCESS) { + if (bta_dm_cb.p_sec_cback) { bta_dm_cb.p_sec_cback(BTA_DM_LE_FEATURES_READ, NULL); - } - else - { - APPL_TRACE_ERROR("%s Ctrl BLE feature read failed: status :%d",__FUNCTION__, result); + } + } else { + APPL_TRACE_ERROR("%s Ctrl BLE feature read failed: status :%d", __FUNCTION__, result); } } diff --git a/components/bt/bluedroid/bta/dm/bta_dm_api.c b/components/bt/bluedroid/bta/dm/bta_dm_api.c old mode 100755 new mode 100644 index 1f9f7bac9b..d218911903 --- a/components/bt/bluedroid/bta/dm/bta_dm_api.c +++ b/components/bt/bluedroid/bta/dm/bta_dm_api.c @@ -36,14 +36,12 @@ ** Constants *****************************************************************************/ -static const tBTA_SYS_REG bta_dm_reg = -{ +static const tBTA_SYS_REG bta_dm_reg = { bta_dm_sm_execute, bta_dm_sm_disable }; -static const tBTA_SYS_REG bta_dm_search_reg = -{ +static const tBTA_SYS_REG bta_dm_search_reg = { bta_dm_search_sm_execute, bta_dm_search_sm_disable }; @@ -65,8 +63,9 @@ tBTA_STATUS BTA_EnableBluetooth(tBTA_DM_SEC_CBACK *p_cback) tBTA_DM_API_ENABLE *p_msg; /* Bluetooth disabling is in progress */ - if (bta_dm_cb.disabling) + if (bta_dm_cb.disabling) { return BTA_FAILURE; + } memset(&bta_dm_cb, 0, sizeof(bta_dm_cb)); @@ -76,8 +75,7 @@ tBTA_STATUS BTA_EnableBluetooth(tBTA_DM_SEC_CBACK *p_cback) /* if UUID list is not provided as static data */ bta_sys_eir_register(bta_dm_eir_update_uuid); - if ((p_msg = (tBTA_DM_API_ENABLE *) GKI_getbuf(sizeof(tBTA_DM_API_ENABLE))) != NULL) - { + if ((p_msg = (tBTA_DM_API_ENABLE *) GKI_getbuf(sizeof(tBTA_DM_API_ENABLE))) != NULL) { p_msg->hdr.event = BTA_DM_API_ENABLE_EVT; p_msg->p_sec_cback = p_cback; bta_sys_sendmsg(p_msg); @@ -102,13 +100,10 @@ tBTA_STATUS BTA_DisableBluetooth(void) BT_HDR *p_msg; - if ((p_msg = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) - { + if ((p_msg = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) { p_msg->event = BTA_DM_API_DISABLE_EVT; bta_sys_sendmsg(p_msg); - } - else - { + } else { return BTA_FAILURE; } @@ -131,8 +126,7 @@ tBTA_STATUS BTA_EnableTestMode(void) APPL_TRACE_API("BTA_EnableTestMode"); - if ((p_msg = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) - { + if ((p_msg = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) { p_msg->event = BTA_DM_API_ENABLE_TEST_MODE_EVT; bta_sys_sendmsg(p_msg); return BTA_SUCCESS; @@ -156,8 +150,7 @@ void BTA_DisableTestMode(void) APPL_TRACE_API("BTA_DisableTestMode"); - if ((p_msg = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) - { + if ((p_msg = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) { p_msg->event = BTA_DM_API_DISABLE_TEST_MODE_EVT; bta_sys_sendmsg(p_msg); } @@ -178,12 +171,11 @@ void BTA_DmSetDeviceName(char *p_name) tBTA_DM_API_SET_NAME *p_msg; - if ((p_msg = (tBTA_DM_API_SET_NAME *) GKI_getbuf(sizeof(tBTA_DM_API_SET_NAME))) != NULL) - { + if ((p_msg = (tBTA_DM_API_SET_NAME *) GKI_getbuf(sizeof(tBTA_DM_API_SET_NAME))) != NULL) { p_msg->hdr.event = BTA_DM_API_SET_NAME_EVT; /* truncate the name if needed */ - BCM_STRNCPY_S((char*)p_msg->name, sizeof(p_msg->name), p_name, BD_NAME_LEN-1); - p_msg->name[BD_NAME_LEN-1]=0; + BCM_STRNCPY_S((char *)p_msg->name, sizeof(p_msg->name), p_name, BD_NAME_LEN - 1); + p_msg->name[BD_NAME_LEN - 1] = 0; bta_sys_sendmsg(p_msg); } @@ -207,8 +199,7 @@ void BTA_DmSetVisibility(tBTA_DM_DISC disc_mode, tBTA_DM_CONN conn_mode, UINT8 p tBTA_DM_API_SET_VISIBILITY *p_msg; - if ((p_msg = (tBTA_DM_API_SET_VISIBILITY *) GKI_getbuf(sizeof(tBTA_DM_API_SET_VISIBILITY))) != NULL) - { + if ((p_msg = (tBTA_DM_API_SET_VISIBILITY *) GKI_getbuf(sizeof(tBTA_DM_API_SET_VISIBILITY))) != NULL) { p_msg->hdr.event = BTA_DM_API_SET_VISIBILITY_EVT; p_msg->disc_mode = disc_mode; p_msg->conn_mode = conn_mode; @@ -239,8 +230,7 @@ void BTA_DmSearch(tBTA_DM_INQ *p_dm_inq, tBTA_SERVICE_MASK services, tBTA_DM_SEA tBTA_DM_API_SEARCH *p_msg; - if ((p_msg = (tBTA_DM_API_SEARCH *) GKI_getbuf(sizeof(tBTA_DM_API_SEARCH))) != NULL) - { + if ((p_msg = (tBTA_DM_API_SEARCH *) GKI_getbuf(sizeof(tBTA_DM_API_SEARCH))) != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_API_SEARCH)); p_msg->hdr.event = BTA_DM_API_SEARCH_EVT; @@ -268,8 +258,7 @@ void BTA_DmSearchCancel(void) { BT_HDR *p_msg; - if ((p_msg = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) - { + if ((p_msg = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) { p_msg->event = BTA_DM_API_SEARCH_CANCEL_EVT; bta_sys_sendmsg(p_msg); } @@ -292,8 +281,7 @@ void BTA_DmDiscover(BD_ADDR bd_addr, tBTA_SERVICE_MASK services, { tBTA_DM_API_DISCOVER *p_msg; - if ((p_msg = (tBTA_DM_API_DISCOVER *) GKI_getbuf(sizeof(tBTA_DM_API_DISCOVER))) != NULL) - { + if ((p_msg = (tBTA_DM_API_DISCOVER *) GKI_getbuf(sizeof(tBTA_DM_API_DISCOVER))) != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_API_DISCOVER)); p_msg->hdr.event = BTA_DM_API_DISCOVER_EVT; @@ -318,12 +306,11 @@ void BTA_DmDiscover(BD_ADDR bd_addr, tBTA_SERVICE_MASK services, ** *******************************************************************************/ void BTA_DmDiscoverUUID(BD_ADDR bd_addr, tSDP_UUID *uuid, - tBTA_DM_SEARCH_CBACK *p_cback, BOOLEAN sdp_search) + tBTA_DM_SEARCH_CBACK *p_cback, BOOLEAN sdp_search) { tBTA_DM_API_DISCOVER *p_msg; - if ((p_msg = (tBTA_DM_API_DISCOVER *) GKI_getbuf(sizeof(tBTA_DM_API_DISCOVER))) != NULL) - { + if ((p_msg = (tBTA_DM_API_DISCOVER *) GKI_getbuf(sizeof(tBTA_DM_API_DISCOVER))) != NULL) { p_msg->hdr.event = BTA_DM_API_DISCOVER_EVT; bdcpy(p_msg->bd_addr, bd_addr); p_msg->services = BTA_USER_SERVICE_MASK; //Not exposed at API level @@ -356,8 +343,7 @@ void BTA_DmBond(BD_ADDR bd_addr) tBTA_DM_API_BOND *p_msg; p_msg = (tBTA_DM_API_BOND *) GKI_getbuf(sizeof(tBTA_DM_API_BOND)); - if (p_msg != NULL) - { + if (p_msg != NULL) { p_msg->hdr.event = BTA_DM_API_BOND_EVT; bdcpy(p_msg->bd_addr, bd_addr); p_msg->transport = BTA_TRANSPORT_UNKNOWN; @@ -380,8 +366,7 @@ void BTA_DmBondByTransport(BD_ADDR bd_addr, tBTA_TRANSPORT transport) { tBTA_DM_API_BOND *p_msg; - if ((p_msg = (tBTA_DM_API_BOND *) GKI_getbuf(sizeof(tBTA_DM_API_BOND))) != NULL) - { + if ((p_msg = (tBTA_DM_API_BOND *) GKI_getbuf(sizeof(tBTA_DM_API_BOND))) != NULL) { p_msg->hdr.event = BTA_DM_API_BOND_EVT; bdcpy(p_msg->bd_addr, bd_addr); p_msg->transport = transport; @@ -406,8 +391,7 @@ void BTA_DmBondCancel(BD_ADDR bd_addr) { tBTA_DM_API_BOND_CANCEL *p_msg; - if ((p_msg = (tBTA_DM_API_BOND_CANCEL *) GKI_getbuf(sizeof(tBTA_DM_API_BOND_CANCEL))) != NULL) - { + if ((p_msg = (tBTA_DM_API_BOND_CANCEL *) GKI_getbuf(sizeof(tBTA_DM_API_BOND_CANCEL))) != NULL) { p_msg->hdr.event = BTA_DM_API_BOND_CANCEL_EVT; bdcpy(p_msg->bd_addr, bd_addr); bta_sys_sendmsg(p_msg); @@ -432,13 +416,11 @@ void BTA_DmPinReply(BD_ADDR bd_addr, BOOLEAN accept, UINT8 pin_len, UINT8 *p_pin { tBTA_DM_API_PIN_REPLY *p_msg; - if ((p_msg = (tBTA_DM_API_PIN_REPLY *) GKI_getbuf(sizeof(tBTA_DM_API_PIN_REPLY))) != NULL) - { + if ((p_msg = (tBTA_DM_API_PIN_REPLY *) GKI_getbuf(sizeof(tBTA_DM_API_PIN_REPLY))) != NULL) { p_msg->hdr.event = BTA_DM_API_PIN_REPLY_EVT; bdcpy(p_msg->bd_addr, bd_addr); p_msg->accept = accept; - if(accept) - { + if (accept) { p_msg->pin_len = pin_len; memcpy(p_msg->p_pin, p_pin, pin_len); } @@ -465,8 +447,7 @@ void BTA_DmLocalOob(void) { tBTA_DM_API_LOC_OOB *p_msg; - if ((p_msg = (tBTA_DM_API_LOC_OOB *) GKI_getbuf(sizeof(tBTA_DM_API_LOC_OOB))) != NULL) - { + if ((p_msg = (tBTA_DM_API_LOC_OOB *) GKI_getbuf(sizeof(tBTA_DM_API_LOC_OOB))) != NULL) { p_msg->hdr.event = BTA_DM_API_LOC_OOB_EVT; bta_sys_sendmsg(p_msg); } @@ -486,8 +467,7 @@ void BTA_DmConfirm(BD_ADDR bd_addr, BOOLEAN accept) { tBTA_DM_API_CONFIRM *p_msg; - if ((p_msg = (tBTA_DM_API_CONFIRM *) GKI_getbuf(sizeof(tBTA_DM_API_CONFIRM))) != NULL) - { + if ((p_msg = (tBTA_DM_API_CONFIRM *) GKI_getbuf(sizeof(tBTA_DM_API_CONFIRM))) != NULL) { p_msg->hdr.event = BTA_DM_API_CONFIRM_EVT; bdcpy(p_msg->bd_addr, bd_addr); p_msg->accept = accept; @@ -513,8 +493,7 @@ void BTA_DmAddDevice(BD_ADDR bd_addr, DEV_CLASS dev_class, LINK_KEY link_key, tBTA_DM_API_ADD_DEVICE *p_msg; - if ((p_msg = (tBTA_DM_API_ADD_DEVICE *) GKI_getbuf(sizeof(tBTA_DM_API_ADD_DEVICE))) != NULL) - { + if ((p_msg = (tBTA_DM_API_ADD_DEVICE *) GKI_getbuf(sizeof(tBTA_DM_API_ADD_DEVICE))) != NULL) { memset (p_msg, 0, sizeof(tBTA_DM_API_ADD_DEVICE)); p_msg->hdr.event = BTA_DM_API_ADD_DEVICE_EVT; @@ -523,16 +502,14 @@ void BTA_DmAddDevice(BD_ADDR bd_addr, DEV_CLASS dev_class, LINK_KEY link_key, p_msg->is_trusted = is_trusted; p_msg->io_cap = io_cap; - if (link_key) - { + if (link_key) { p_msg->link_key_known = TRUE; p_msg->key_type = key_type; memcpy(p_msg->link_key, link_key, LINK_KEY_LEN); } /* Load device class if specified */ - if (dev_class) - { + if (dev_class) { p_msg->dc_known = TRUE; memcpy (p_msg->dc, dev_class, DEV_CLASS_LEN); } @@ -561,16 +538,13 @@ tBTA_STATUS BTA_DmRemoveDevice(BD_ADDR bd_addr) { tBTA_DM_API_REMOVE_DEVICE *p_msg; - if ((p_msg = (tBTA_DM_API_REMOVE_DEVICE *) GKI_getbuf(sizeof(tBTA_DM_API_REMOVE_DEVICE))) != NULL) - { + if ((p_msg = (tBTA_DM_API_REMOVE_DEVICE *) GKI_getbuf(sizeof(tBTA_DM_API_REMOVE_DEVICE))) != NULL) { memset (p_msg, 0, sizeof(tBTA_DM_API_REMOVE_DEVICE)); p_msg->hdr.event = BTA_DM_API_REMOVE_DEVICE_EVT; bdcpy(p_msg->bd_addr, bd_addr); bta_sys_sendmsg(p_msg); - } - else - { + } else { return BTA_FAILURE; } @@ -594,18 +568,15 @@ void BTA_GetEirService( UINT8 *p_eir, tBTA_SERVICE_MASK *p_services ) { UINT8 xx, yy; UINT8 num_uuid, max_num_uuid = 32; - UINT8 uuid_list[32*LEN_UUID_16]; + UINT8 uuid_list[32 * LEN_UUID_16]; UINT16 *p_uuid16 = (UINT16 *)uuid_list; tBTA_SERVICE_MASK mask; BTM_GetEirUuidList( p_eir, LEN_UUID_16, &num_uuid, uuid_list, max_num_uuid); - for( xx = 0; xx < num_uuid; xx++ ) - { + for ( xx = 0; xx < num_uuid; xx++ ) { mask = 1; - for( yy = 0; yy < BTA_MAX_SERVICE_ID; yy++ ) - { - if( *(p_uuid16 + xx) == bta_service_id_to_uuid_lkup_tbl[yy] ) - { + for ( yy = 0; yy < BTA_MAX_SERVICE_ID; yy++ ) { + if ( *(p_uuid16 + xx) == bta_service_id_to_uuid_lkup_tbl[yy] ) { *p_services |= mask; break; } @@ -613,14 +584,17 @@ void BTA_GetEirService( UINT8 *p_eir, tBTA_SERVICE_MASK *p_services ) } /* for HSP v1.2 only device */ - if (*(p_uuid16 + xx) == UUID_SERVCLASS_HEADSET_HS) + if (*(p_uuid16 + xx) == UUID_SERVCLASS_HEADSET_HS) { *p_services |= BTA_HSP_SERVICE_MASK; + } - if (*(p_uuid16 + xx) == UUID_SERVCLASS_HDP_SOURCE) + if (*(p_uuid16 + xx) == UUID_SERVCLASS_HDP_SOURCE) { *p_services |= BTA_HL_SERVICE_MASK; + } - if (*(p_uuid16 + xx) == UUID_SERVCLASS_HDP_SINK) + if (*(p_uuid16 + xx) == UUID_SERVCLASS_HDP_SINK) { *p_services |= BTA_HL_SERVICE_MASK; + } } } @@ -635,7 +609,7 @@ void BTA_GetEirService( UINT8 *p_eir, tBTA_SERVICE_MASK *p_services ) *******************************************************************************/ UINT16 BTA_DmGetConnectionState( BD_ADDR bd_addr ) { - tBTA_DM_PEER_DEVICE * p_dev = bta_dm_find_peer_device(bd_addr); + tBTA_DM_PEER_DEVICE *p_dev = bta_dm_find_peer_device(bd_addr); return (p_dev && p_dev->conn_state == BTA_DM_CONNECTED); } @@ -653,16 +627,13 @@ UINT16 BTA_DmGetConnectionState( BD_ADDR bd_addr ) ** *******************************************************************************/ tBTA_STATUS BTA_DmSetLocalDiRecord( tBTA_DI_RECORD *p_device_info, - UINT32 *p_handle ) + UINT32 *p_handle ) { tBTA_STATUS status = BTA_FAILURE; - if(bta_dm_di_cb.di_num < BTA_DI_NUM_MAX) - { - if(SDP_SetLocalDiRecord((tSDP_DI_RECORD *)p_device_info, p_handle) == SDP_SUCCESS) - { - if(!p_device_info->primary_record) - { + if (bta_dm_di_cb.di_num < BTA_DI_NUM_MAX) { + if (SDP_SetLocalDiRecord((tSDP_DI_RECORD *)p_device_info, p_handle) == SDP_SUCCESS) { + if (!p_device_info->primary_record) { bta_dm_di_cb.di_handle[bta_dm_di_cb.di_num] = *p_handle; bta_dm_di_cb.di_num ++; } @@ -686,15 +657,14 @@ tBTA_STATUS BTA_DmSetLocalDiRecord( tBTA_DI_RECORD *p_device_info, ** Returns void ** *******************************************************************************/ -void bta_dmexecutecallback (tBTA_DM_EXEC_CBACK* p_callback, void * p_param) +void bta_dmexecutecallback (tBTA_DM_EXEC_CBACK *p_callback, void *p_param) { tBTA_DM_API_EXECUTE_CBACK *p_msg; - if ((p_msg = (tBTA_DM_API_EXECUTE_CBACK *) GKI_getbuf(sizeof(tBTA_DM_API_EXECUTE_CBACK))) != NULL) - { + if ((p_msg = (tBTA_DM_API_EXECUTE_CBACK *) GKI_getbuf(sizeof(tBTA_DM_API_EXECUTE_CBACK))) != NULL) { p_msg->hdr.event = BTA_DM_API_EXECUTE_CBACK_EVT; - p_msg->p_param= p_param; - p_msg->p_exec_cback= p_callback; + p_msg->p_param = p_param; + p_msg->p_exec_cback = p_callback; bta_sys_sendmsg(p_msg); } } @@ -721,8 +691,7 @@ void BTA_DmAddBleKey (BD_ADDR bd_addr, tBTA_LE_KEY_VALUE *p_le_key, tBTA_LE_KEY_ tBTA_DM_API_ADD_BLEKEY *p_msg; - if ((p_msg = (tBTA_DM_API_ADD_BLEKEY *) GKI_getbuf(sizeof(tBTA_DM_API_ADD_BLEKEY))) != NULL) - { + if ((p_msg = (tBTA_DM_API_ADD_BLEKEY *) GKI_getbuf(sizeof(tBTA_DM_API_ADD_BLEKEY))) != NULL) { memset (p_msg, 0, sizeof(tBTA_DM_API_ADD_BLEKEY)); p_msg->hdr.event = BTA_DM_API_ADD_BLEKEY_EVT; @@ -756,8 +725,7 @@ void BTA_DmAddBleDevice(BD_ADDR bd_addr, tBLE_ADDR_TYPE addr_type, tBT_DEVICE_TY #if BLE_INCLUDED == TRUE tBTA_DM_API_ADD_BLE_DEVICE *p_msg; - if ((p_msg = (tBTA_DM_API_ADD_BLE_DEVICE *) GKI_getbuf(sizeof(tBTA_DM_API_ADD_BLE_DEVICE))) != NULL) - { + if ((p_msg = (tBTA_DM_API_ADD_BLE_DEVICE *) GKI_getbuf(sizeof(tBTA_DM_API_ADD_BLE_DEVICE))) != NULL) { memset (p_msg, 0, sizeof(tBTA_DM_API_ADD_BLE_DEVICE)); p_msg->hdr.event = BTA_DM_API_ADD_BLEDEVICE_EVT; @@ -788,16 +756,14 @@ void BTA_DmBlePasskeyReply(BD_ADDR bd_addr, BOOLEAN accept, UINT32 passkey) #if BLE_INCLUDED == TRUE tBTA_DM_API_PASSKEY_REPLY *p_msg; - if ((p_msg = (tBTA_DM_API_PASSKEY_REPLY *) GKI_getbuf(sizeof(tBTA_DM_API_PASSKEY_REPLY))) != NULL) - { + if ((p_msg = (tBTA_DM_API_PASSKEY_REPLY *) GKI_getbuf(sizeof(tBTA_DM_API_PASSKEY_REPLY))) != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_API_PASSKEY_REPLY)); p_msg->hdr.event = BTA_DM_API_BLE_PASSKEY_REPLY_EVT; bdcpy(p_msg->bd_addr, bd_addr); p_msg->accept = accept; - if(accept) - { + if (accept) { p_msg->passkey = passkey; } bta_sys_sendmsg(p_msg); @@ -820,8 +786,7 @@ void BTA_DmBleConfirmReply(BD_ADDR bd_addr, BOOLEAN accept) { #if BLE_INCLUDED == TRUE tBTA_DM_API_CONFIRM *p_msg = (tBTA_DM_API_CONFIRM *)GKI_getbuf(sizeof(tBTA_DM_API_CONFIRM)); - if (p_msg != NULL) - { + if (p_msg != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_API_CONFIRM)); p_msg->hdr.event = BTA_DM_API_BLE_CONFIRM_REPLY_EVT; bdcpy(p_msg->bd_addr, bd_addr); @@ -848,8 +813,7 @@ void BTA_DmBleSecurityGrant(BD_ADDR bd_addr, tBTA_DM_BLE_SEC_GRANT res) #if BLE_INCLUDED == TRUE tBTA_DM_API_BLE_SEC_GRANT *p_msg; - if ((p_msg = (tBTA_DM_API_BLE_SEC_GRANT *) GKI_getbuf(sizeof(tBTA_DM_API_BLE_SEC_GRANT))) != NULL) - { + if ((p_msg = (tBTA_DM_API_BLE_SEC_GRANT *) GKI_getbuf(sizeof(tBTA_DM_API_BLE_SEC_GRANT))) != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_API_BLE_SEC_GRANT)); p_msg->hdr.event = BTA_DM_API_BLE_SEC_GRANT_EVT; @@ -882,14 +846,13 @@ void BTA_DmBleSecurityGrant(BD_ADDR bd_addr, tBTA_DM_BLE_SEC_GRANT res) ** *******************************************************************************/ void BTA_DmSetBlePrefConnParams(BD_ADDR bd_addr, - UINT16 min_conn_int, UINT16 max_conn_int, - UINT16 slave_latency, UINT16 supervision_tout ) + UINT16 min_conn_int, UINT16 max_conn_int, + UINT16 slave_latency, UINT16 supervision_tout ) { #if BLE_INCLUDED == TRUE tBTA_DM_API_BLE_CONN_PARAMS *p_msg; - if ((p_msg = (tBTA_DM_API_BLE_CONN_PARAMS *) GKI_getbuf(sizeof(tBTA_DM_API_BLE_CONN_PARAMS))) != NULL) - { + if ((p_msg = (tBTA_DM_API_BLE_CONN_PARAMS *) GKI_getbuf(sizeof(tBTA_DM_API_BLE_CONN_PARAMS))) != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_API_BLE_CONN_PARAMS)); p_msg->hdr.event = BTA_DM_API_BLE_CONN_PARAM_EVT; @@ -922,8 +885,7 @@ void BTA_DmSetBlePrefConnParams(BD_ADDR bd_addr, void BTA_DmSetBleConnScanParams(UINT32 scan_interval, UINT32 scan_window) { tBTA_DM_API_BLE_SCAN_PARAMS *p_msg; - if ((p_msg = (tBTA_DM_API_BLE_SCAN_PARAMS *)GKI_getbuf(sizeof(tBTA_DM_API_BLE_SCAN_PARAMS))) != NULL) - { + if ((p_msg = (tBTA_DM_API_BLE_SCAN_PARAMS *)GKI_getbuf(sizeof(tBTA_DM_API_BLE_SCAN_PARAMS))) != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_API_BLE_SCAN_PARAMS)); p_msg->hdr.event = BTA_DM_API_BLE_CONN_SCAN_PARAM_EVT; p_msg->scan_int = scan_interval; @@ -953,8 +915,7 @@ void BTA_DmSetBleScanParams(tGATT_IF client_if, UINT32 scan_interval, { tBTA_DM_API_BLE_SCAN_PARAMS *p_msg; - if ((p_msg = (tBTA_DM_API_BLE_SCAN_PARAMS *)GKI_getbuf(sizeof(tBTA_DM_API_BLE_SCAN_PARAMS))) != NULL) - { + if ((p_msg = (tBTA_DM_API_BLE_SCAN_PARAMS *)GKI_getbuf(sizeof(tBTA_DM_API_BLE_SCAN_PARAMS))) != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_API_BLE_SCAN_PARAMS)); p_msg->hdr.event = BTA_DM_API_BLE_SCAN_PARAM_EVT; p_msg->client_if = client_if; @@ -984,26 +945,25 @@ void BTA_DmSetBleScanParams(tGATT_IF client_if, UINT32 scan_interval, ** *******************************************************************************/ void BTA_DmSetBleScanFilterParams(tGATT_IF client_if, UINT32 scan_interval, - UINT32 scan_window, tBLE_SCAN_MODE scan_mode, UINT8 scan_fil_poilcy, - UINT8 addr_type_own, tBLE_SCAN_PARAM_SETUP_CBACK scan_param_setup_cback) + UINT32 scan_window, tBLE_SCAN_MODE scan_mode, UINT8 scan_fil_poilcy, + UINT8 addr_type_own, tBLE_SCAN_PARAM_SETUP_CBACK scan_param_setup_cback) { - tBTA_DM_API_BLE_SCAN_FILTER_PARAMS *p_msg; + tBTA_DM_API_BLE_SCAN_FILTER_PARAMS *p_msg; - if ((p_msg = (tBTA_DM_API_BLE_SCAN_FILTER_PARAMS *)GKI_getbuf(sizeof(tBTA_DM_API_BLE_SCAN_FILTER_PARAMS))) != NULL) - { - memset(p_msg, 0, sizeof(tBTA_DM_API_BLE_SCAN_FILTER_PARAMS)); - p_msg->hdr.event = BTA_DM_API_BLE_SCAN_FIL_PARAM_EVT; - p_msg->client_if = client_if; - p_msg->scan_int = scan_interval; - p_msg->scan_window = scan_window; - p_msg->scan_mode = scan_mode; - p_msg->addr_type_own = addr_type_own; - p_msg->scan_filter_policy = scan_fil_poilcy; - p_msg->scan_param_setup_cback = scan_param_setup_cback; + if ((p_msg = (tBTA_DM_API_BLE_SCAN_FILTER_PARAMS *)GKI_getbuf(sizeof(tBTA_DM_API_BLE_SCAN_FILTER_PARAMS))) != NULL) { + memset(p_msg, 0, sizeof(tBTA_DM_API_BLE_SCAN_FILTER_PARAMS)); + p_msg->hdr.event = BTA_DM_API_BLE_SCAN_FIL_PARAM_EVT; + p_msg->client_if = client_if; + p_msg->scan_int = scan_interval; + p_msg->scan_window = scan_window; + p_msg->scan_mode = scan_mode; + p_msg->addr_type_own = addr_type_own; + p_msg->scan_filter_policy = scan_fil_poilcy; + p_msg->scan_param_setup_cback = scan_param_setup_cback; bta_sys_sendmsg(p_msg); - } - + } + } @@ -1020,7 +980,7 @@ void BTA_DmSetBleScanFilterParams(tGATT_IF client_if, UINT32 scan_interval, ** *******************************************************************************/ void BTA_DmSetBleAdvParams (UINT16 adv_int_min, UINT16 adv_int_max, - tBLE_BD_ADDR *p_dir_bda) + tBLE_BD_ADDR *p_dir_bda) { #if BLE_INCLUDED == TRUE tBTA_DM_API_BLE_ADV_PARAMS *p_msg; @@ -1028,17 +988,15 @@ void BTA_DmSetBleAdvParams (UINT16 adv_int_min, UINT16 adv_int_max, APPL_TRACE_API ("BTA_DmSetBleAdvParam: %d, %d\n", adv_int_min, adv_int_max); if ((p_msg = (tBTA_DM_API_BLE_ADV_PARAMS *) GKI_getbuf(sizeof(tBTA_DM_API_BLE_ADV_PARAMS) - + sizeof(tBLE_BD_ADDR))) != NULL) - { - memset(p_msg, 0, sizeof(tBTA_DM_API_BLE_ADV_PARAMS)+sizeof(tBLE_BD_ADDR)); + + sizeof(tBLE_BD_ADDR))) != NULL) { + memset(p_msg, 0, sizeof(tBTA_DM_API_BLE_ADV_PARAMS) + sizeof(tBLE_BD_ADDR)); p_msg->hdr.event = BTA_DM_API_BLE_ADV_PARAM_EVT; p_msg->adv_int_min = adv_int_min; p_msg->adv_int_max = adv_int_max; - if (p_dir_bda != NULL) - { + if (p_dir_bda != NULL) { p_msg->p_dir_bda = (tBLE_BD_ADDR *)(p_msg + 1); memcpy(p_msg->p_dir_bda, p_dir_bda, sizeof(tBLE_BD_ADDR)); } @@ -1049,31 +1007,29 @@ void BTA_DmSetBleAdvParams (UINT16 adv_int_min, UINT16 adv_int_max, } void BTA_DmSetBleAdvParamsAll (UINT16 adv_int_min, UINT16 adv_int_max, - UINT8 adv_type, tBLE_ADDR_TYPE addr_type_own, - tBTM_BLE_ADV_CHNL_MAP chnl_map, tBTM_BLE_AFP adv_fil_pol, - tBLE_BD_ADDR *p_dir_bda) + UINT8 adv_type, tBLE_ADDR_TYPE addr_type_own, + tBTM_BLE_ADV_CHNL_MAP chnl_map, tBTM_BLE_AFP adv_fil_pol, + tBLE_BD_ADDR *p_dir_bda) { #if BLE_INCLUDED == TRUE tBTA_DM_API_BLE_ADV_PARAMS_ALL *p_msg; APPL_TRACE_ERROR ("BTA_DmSetBleAdvParamsAll: %d, %d\n", adv_int_min, adv_int_max); - APPL_TRACE_ERROR ("adv_type = %d, addr_type_own = %d, chnl_map = %d, adv_fil_pol = %d\n", - adv_type,addr_type_own,chnl_map,adv_fil_pol); + APPL_TRACE_ERROR ("adv_type = %d, addr_type_own = %d, chnl_map = %d, adv_fil_pol = %d\n", + adv_type, addr_type_own, chnl_map, adv_fil_pol); if ((p_msg = (tBTA_DM_API_BLE_ADV_PARAMS_ALL *) GKI_getbuf(sizeof(tBTA_DM_API_BLE_ADV_PARAMS_ALL) - + sizeof(tBLE_BD_ADDR))) != NULL) - { + + sizeof(tBLE_BD_ADDR))) != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_API_BLE_ADV_PARAMS_ALL)); p_msg->hdr.event = BTA_DM_API_BLE_ADV_PARAM_All_EVT; p_msg->adv_int_min = adv_int_min; p_msg->adv_int_max = adv_int_max; - p_msg->adv_type = adv_type; - p_msg->addr_type_own = addr_type_own; - p_msg->channel_map = chnl_map; - p_msg->adv_filter_policy = adv_fil_pol; - if (p_dir_bda != NULL) - { + p_msg->adv_type = adv_type; + p_msg->addr_type_own = addr_type_own; + p_msg->channel_map = chnl_map; + p_msg->adv_filter_policy = adv_fil_pol; + if (p_dir_bda != NULL) { p_msg->p_dir_bda = (tBLE_BD_ADDR *)(p_msg + 1); memcpy(p_msg->p_dir_bda, p_dir_bda, sizeof(tBLE_BD_ADDR)); } @@ -1111,8 +1067,7 @@ void BTA_DmBleSetAdvConfig (tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_adv tBTA_DM_API_SET_ADV_CONFIG *p_msg; if ((p_msg = (tBTA_DM_API_SET_ADV_CONFIG *) - GKI_getbuf(sizeof(tBTA_DM_API_SET_ADV_CONFIG))) != NULL) - { + GKI_getbuf(sizeof(tBTA_DM_API_SET_ADV_CONFIG))) != NULL) { p_msg->hdr.event = BTA_DM_API_BLE_SET_ADV_CONFIG_EVT; p_msg->data_mask = data_mask; p_msg->p_adv_data_cback = p_adv_data_cback; @@ -1139,8 +1094,7 @@ extern void BTA_DmBleSetScanRsp (tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA * tBTA_DM_API_SET_ADV_CONFIG *p_msg; if ((p_msg = (tBTA_DM_API_SET_ADV_CONFIG *) - GKI_getbuf(sizeof(tBTA_DM_API_SET_ADV_CONFIG))) != NULL) - { + GKI_getbuf(sizeof(tBTA_DM_API_SET_ADV_CONFIG))) != NULL) { p_msg->hdr.event = BTA_DM_API_BLE_SET_SCAN_RSP_EVT; p_msg->data_mask = data_mask; p_msg->p_adv_data_cback = p_adv_data_cback; @@ -1168,22 +1122,21 @@ extern void BTA_DmBleSetScanRsp (tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA * ** *******************************************************************************/ extern void BTA_DmBleSetStorageParams(UINT8 batch_scan_full_max, - UINT8 batch_scan_trunc_max, - UINT8 batch_scan_notify_threshold, - tBTA_BLE_SCAN_SETUP_CBACK *p_setup_cback, - tBTA_BLE_SCAN_THRESHOLD_CBACK *p_thres_cback, - tBTA_BLE_SCAN_REP_CBACK* p_rep_cback, - tBTA_DM_BLE_REF_VALUE ref_value) + UINT8 batch_scan_trunc_max, + UINT8 batch_scan_notify_threshold, + tBTA_BLE_SCAN_SETUP_CBACK *p_setup_cback, + tBTA_BLE_SCAN_THRESHOLD_CBACK *p_thres_cback, + tBTA_BLE_SCAN_REP_CBACK *p_rep_cback, + tBTA_DM_BLE_REF_VALUE ref_value) { tBTA_DM_API_SET_STORAGE_CONFIG *p_msg; bta_dm_cb.p_setup_cback = p_setup_cback; if ((p_msg = (tBTA_DM_API_SET_STORAGE_CONFIG *) - GKI_getbuf(sizeof(tBTA_DM_API_SET_STORAGE_CONFIG))) != NULL) - { + GKI_getbuf(sizeof(tBTA_DM_API_SET_STORAGE_CONFIG))) != NULL) { p_msg->hdr.event = BTA_DM_API_BLE_SETUP_STORAGE_EVT; - p_msg->p_setup_cback=bta_ble_scan_setup_cb; - p_msg->p_thres_cback=p_thres_cback; - p_msg->p_read_rep_cback=p_rep_cback; + p_msg->p_setup_cback = bta_ble_scan_setup_cb; + p_msg->p_thres_cback = p_thres_cback; + p_msg->p_read_rep_cback = p_rep_cback; p_msg->ref_value = ref_value; p_msg->batch_scan_full_max = batch_scan_full_max; p_msg->batch_scan_trunc_max = batch_scan_trunc_max; @@ -1209,15 +1162,14 @@ extern void BTA_DmBleSetStorageParams(UINT8 batch_scan_full_max, ** *******************************************************************************/ extern void BTA_DmBleEnableBatchScan(tBTA_BLE_BATCH_SCAN_MODE scan_mode, - UINT32 scan_interval, UINT32 scan_window, - tBTA_BLE_DISCARD_RULE discard_rule, - tBLE_ADDR_TYPE addr_type, - tBTA_DM_BLE_REF_VALUE ref_value) + UINT32 scan_interval, UINT32 scan_window, + tBTA_BLE_DISCARD_RULE discard_rule, + tBLE_ADDR_TYPE addr_type, + tBTA_DM_BLE_REF_VALUE ref_value) { tBTA_DM_API_ENABLE_SCAN *p_msg; - if ((p_msg = (tBTA_DM_API_ENABLE_SCAN *) GKI_getbuf(sizeof(tBTA_DM_API_ENABLE_SCAN))) != NULL) - { + if ((p_msg = (tBTA_DM_API_ENABLE_SCAN *) GKI_getbuf(sizeof(tBTA_DM_API_ENABLE_SCAN))) != NULL) { p_msg->hdr.event = BTA_DM_API_BLE_ENABLE_BATCH_SCAN_EVT; p_msg->scan_mode = scan_mode; p_msg->scan_int = scan_interval; @@ -1245,8 +1197,7 @@ extern void BTA_DmBleDisableBatchScan(tBTA_DM_BLE_REF_VALUE ref_value) tBTA_DM_API_DISABLE_SCAN *p_msg; if ((p_msg = (tBTA_DM_API_DISABLE_SCAN *) - GKI_getbuf(sizeof(tBTA_DM_API_DISABLE_SCAN))) != NULL) - { + GKI_getbuf(sizeof(tBTA_DM_API_DISABLE_SCAN))) != NULL) { p_msg->hdr.event = BTA_DM_API_BLE_DISABLE_BATCH_SCAN_EVT; p_msg->ref_value = ref_value; bta_sys_sendmsg(p_msg); @@ -1266,13 +1217,12 @@ extern void BTA_DmBleDisableBatchScan(tBTA_DM_BLE_REF_VALUE ref_value) ** *******************************************************************************/ extern void BTA_DmBleReadScanReports(tBTA_BLE_BATCH_SCAN_MODE scan_type, - tBTA_DM_BLE_REF_VALUE ref_value) + tBTA_DM_BLE_REF_VALUE ref_value) { tBTA_DM_API_READ_SCAN_REPORTS *p_msg; if ((p_msg = (tBTA_DM_API_READ_SCAN_REPORTS *) - GKI_getbuf(sizeof(tBTA_DM_API_READ_SCAN_REPORTS))) != NULL) - { + GKI_getbuf(sizeof(tBTA_DM_API_READ_SCAN_REPORTS))) != NULL) { p_msg->hdr.event = BTA_DM_API_BLE_READ_SCAN_REPORTS_EVT; p_msg->scan_type = scan_type; p_msg->ref_value = ref_value; @@ -1293,13 +1243,12 @@ extern void BTA_DmBleReadScanReports(tBTA_BLE_BATCH_SCAN_MODE scan_type, ** *******************************************************************************/ extern void BTA_DmBleTrackAdvertiser(tBTA_DM_BLE_REF_VALUE ref_value, - tBTA_BLE_TRACK_ADV_CBACK *p_track_adv_cback) + tBTA_BLE_TRACK_ADV_CBACK *p_track_adv_cback) { tBTA_DM_API_TRACK_ADVERTISER *p_msg; if ((p_msg = (tBTA_DM_API_TRACK_ADVERTISER *) - GKI_getbuf(sizeof(tBTA_DM_API_TRACK_ADVERTISER))) != NULL) - { + GKI_getbuf(sizeof(tBTA_DM_API_TRACK_ADVERTISER))) != NULL) { p_msg->hdr.event = BTA_DM_API_BLE_TRACK_ADVERTISER_EVT; p_msg->p_track_adv_cback = p_track_adv_cback; p_msg->ref_value = ref_value; @@ -1331,8 +1280,7 @@ extern void BTA_DmBleBroadcast (BOOLEAN start) APPL_TRACE_API("BTA_DmBleBroadcast: start = %d \n", start); - if ((p_msg = (tBTA_DM_API_BLE_OBSERVE *) GKI_getbuf(sizeof(tBTA_DM_API_BLE_OBSERVE))) != NULL) - { + if ((p_msg = (tBTA_DM_API_BLE_OBSERVE *) GKI_getbuf(sizeof(tBTA_DM_API_BLE_OBSERVE))) != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_API_BLE_OBSERVE)); p_msg->hdr.event = BTA_DM_API_BLE_BROADCAST_EVT; @@ -1362,8 +1310,7 @@ void BTA_DmBleSetBgConnType(tBTA_DM_BLE_CONN_TYPE bg_conn_type, tBTA_DM_BLE_SEL_ #if BLE_INCLUDED == TRUE tBTA_DM_API_BLE_SET_BG_CONN_TYPE *p_msg; - if ((p_msg = (tBTA_DM_API_BLE_SET_BG_CONN_TYPE *) GKI_getbuf(sizeof(tBTA_DM_API_BLE_SET_BG_CONN_TYPE))) != NULL) - { + if ((p_msg = (tBTA_DM_API_BLE_SET_BG_CONN_TYPE *) GKI_getbuf(sizeof(tBTA_DM_API_BLE_SET_BG_CONN_TYPE))) != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_API_BLE_SET_BG_CONN_TYPE)); p_msg->hdr.event = BTA_DM_API_BLE_SET_BG_CONN_TYPE; @@ -1386,16 +1333,15 @@ void BTA_DmBleSetBgConnType(tBTA_DM_BLE_CONN_TYPE bg_conn_type, tBTA_DM_BLE_SEL_ *******************************************************************************/ #if BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE static void bta_dm_discover_send_msg(BD_ADDR bd_addr, tBTA_SERVICE_MASK_EXT *p_services, - tBTA_DM_SEARCH_CBACK *p_cback, BOOLEAN sdp_search, - tBTA_TRANSPORT transport) + tBTA_DM_SEARCH_CBACK *p_cback, BOOLEAN sdp_search, + tBTA_TRANSPORT transport) { tBTA_DM_API_DISCOVER *p_msg; UINT16 len = p_services ? (sizeof(tBTA_DM_API_DISCOVER) + sizeof(tBT_UUID) * p_services->num_uuid) : - sizeof(tBTA_DM_API_DISCOVER); + sizeof(tBTA_DM_API_DISCOVER); - if ((p_msg = (tBTA_DM_API_DISCOVER *) GKI_getbuf(len)) != NULL) - { + if ((p_msg = (tBTA_DM_API_DISCOVER *) GKI_getbuf(len)) != NULL) { memset(p_msg, 0, len); p_msg->hdr.event = BTA_DM_API_DISCOVER_EVT; @@ -1404,13 +1350,11 @@ static void bta_dm_discover_send_msg(BD_ADDR bd_addr, tBTA_SERVICE_MASK_EXT *p_s p_msg->sdp_search = sdp_search; p_msg->transport = transport; - if (p_services != NULL) - { + if (p_services != NULL) { #if BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE p_msg->services = p_services->srvc_mask; p_msg->num_uuid = p_services->num_uuid; - if (p_services->num_uuid != 0) - { + if (p_services->num_uuid != 0) { p_msg->p_uuid = (tBT_UUID *)(p_msg + 1); memcpy(p_msg->p_uuid, p_services->p_uuid, sizeof(tBT_UUID) * p_services->num_uuid); } @@ -1438,8 +1382,8 @@ static void bta_dm_discover_send_msg(BD_ADDR bd_addr, tBTA_SERVICE_MASK_EXT *p_s ** *******************************************************************************/ void BTA_DmDiscoverByTransport(BD_ADDR bd_addr, tBTA_SERVICE_MASK_EXT *p_services, - tBTA_DM_SEARCH_CBACK *p_cback, BOOLEAN sdp_search, - tBTA_TRANSPORT transport) + tBTA_DM_SEARCH_CBACK *p_cback, BOOLEAN sdp_search, + tBTA_TRANSPORT transport) { #if BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE bta_dm_discover_send_msg(bd_addr, p_services, p_cback, sdp_search, transport); @@ -1463,7 +1407,7 @@ void BTA_DmDiscoverByTransport(BD_ADDR bd_addr, tBTA_SERVICE_MASK_EXT *p_service ** *******************************************************************************/ void BTA_DmDiscoverExt(BD_ADDR bd_addr, tBTA_SERVICE_MASK_EXT *p_services, - tBTA_DM_SEARCH_CBACK *p_cback, BOOLEAN sdp_search) + tBTA_DM_SEARCH_CBACK *p_cback, BOOLEAN sdp_search) { #if BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE bta_dm_discover_send_msg(bd_addr, p_services, p_cback, sdp_search, BTA_TRANSPORT_UNKNOWN); @@ -1495,10 +1439,9 @@ void BTA_DmSearchExt(tBTA_DM_INQ *p_dm_inq, tBTA_SERVICE_MASK_EXT *p_services, t #if BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE tBTA_DM_API_SEARCH *p_msg; UINT16 len = p_services ? (sizeof(tBTA_DM_API_SEARCH) + sizeof(tBT_UUID) * p_services->num_uuid) : - sizeof(tBTA_DM_API_SEARCH); + sizeof(tBTA_DM_API_SEARCH); - if ((p_msg = (tBTA_DM_API_SEARCH *) GKI_getbuf(len)) != NULL) - { + if ((p_msg = (tBTA_DM_API_SEARCH *) GKI_getbuf(len)) != NULL) { memset(p_msg, 0, len); p_msg->hdr.event = BTA_DM_API_SEARCH_EVT; @@ -1507,18 +1450,16 @@ void BTA_DmSearchExt(tBTA_DM_INQ *p_dm_inq, tBTA_SERVICE_MASK_EXT *p_services, t p_msg->rs_res = BTA_DM_RS_NONE; - if (p_services != NULL) - { + if (p_services != NULL) { p_msg->services = p_services->srvc_mask; p_msg->num_uuid = p_services->num_uuid; - if (p_services->num_uuid != 0) - { + if (p_services->num_uuid != 0) { p_msg->p_uuid = (tBT_UUID *)(p_msg + 1); memcpy(p_msg->p_uuid, p_services->p_uuid, sizeof(tBT_UUID) * p_services->num_uuid); - } - else + } else { p_msg->p_uuid = NULL; + } } bta_sys_sendmsg(p_msg); @@ -1552,8 +1493,7 @@ void BTA_DmBleUpdateConnectionParam(BD_ADDR bd_addr, UINT16 min_int, tBTA_DM_API_UPDATE_CONN_PARAM *p_msg; p_msg = (tBTA_DM_API_UPDATE_CONN_PARAM *) GKI_getbuf(sizeof(tBTA_DM_API_UPDATE_CONN_PARAM)); - if (p_msg != NULL) - { + if (p_msg != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_API_UPDATE_CONN_PARAM)); p_msg->hdr.event = BTA_DM_API_UPDATE_CONN_PARAM_EVT; @@ -1579,12 +1519,12 @@ void BTA_DmBleUpdateConnectionParam(BD_ADDR bd_addr, UINT16 min_int, ** *******************************************************************************/ void BTA_DmBleConfigLocalPrivacy(BOOLEAN privacy_enable) -{ ///This function used the irk to generate the resolve address +{ + ///This function used the irk to generate the resolve address #if BLE_INCLUDED == TRUE && BLE_PRIVACY_SPT == TRUE tBTA_DM_API_LOCAL_PRIVACY *p_msg; - if ((p_msg = (tBTA_DM_API_LOCAL_PRIVACY *) GKI_getbuf(sizeof(tBTA_DM_API_ENABLE_PRIVACY))) != NULL) - { + if ((p_msg = (tBTA_DM_API_LOCAL_PRIVACY *) GKI_getbuf(sizeof(tBTA_DM_API_ENABLE_PRIVACY))) != NULL) { memset (p_msg, 0, sizeof(tBTA_DM_API_LOCAL_PRIVACY)); p_msg->hdr.event = BTA_DM_API_LOCAL_PRIVACY_EVT; @@ -1613,22 +1553,21 @@ void BTA_DmBleConfigLocalPrivacy(BOOLEAN privacy_enable) ** *******************************************************************************/ void BTA_BleEnableAdvInstance (tBTA_BLE_ADV_PARAMS *p_params, - tBTA_BLE_MULTI_ADV_CBACK *p_cback, - void *p_ref) -{ ///This function just used for vendor debug + tBTA_BLE_MULTI_ADV_CBACK *p_cback, + void *p_ref) +{ + ///This function just used for vendor debug tBTA_DM_API_BLE_MULTI_ADV_ENB *p_msg; UINT16 len = sizeof(tBTA_BLE_ADV_PARAMS) + sizeof(tBTA_DM_API_BLE_MULTI_ADV_ENB); APPL_TRACE_API ("BTA_BleEnableAdvInstance"); - if ((p_msg = (tBTA_DM_API_BLE_MULTI_ADV_ENB *) GKI_getbuf(len)) != NULL) - { + if ((p_msg = (tBTA_DM_API_BLE_MULTI_ADV_ENB *) GKI_getbuf(len)) != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_API_BLE_MULTI_ADV_ENB)); p_msg->hdr.event = BTA_DM_API_BLE_MULTI_ADV_ENB_EVT; p_msg->p_cback = (void *)p_cback; - if (p_params != NULL) - { + if (p_params != NULL) { p_msg->p_params = (void *)(p_msg + 1); memcpy(p_msg->p_params, p_params, sizeof(tBTA_BLE_ADV_PARAMS)); } @@ -1653,20 +1592,19 @@ void BTA_BleEnableAdvInstance (tBTA_BLE_ADV_PARAMS *p_params, *******************************************************************************/ void BTA_BleUpdateAdvInstParam (UINT8 inst_id, tBTA_BLE_ADV_PARAMS *p_params) { - ///This function just used for vendor debug + ///This function just used for vendor debug tBTA_DM_API_BLE_MULTI_ADV_PARAM *p_msg; UINT16 len = sizeof(tBTA_BLE_ADV_PARAMS) + sizeof(tBTA_DM_API_BLE_MULTI_ADV_PARAM); APPL_TRACE_API ("BTA_BleUpdateAdvInstParam"); - if ((p_msg = (tBTA_DM_API_BLE_MULTI_ADV_PARAM *) GKI_getbuf(len)) != NULL) - { - memset(p_msg, 0, sizeof(tBTA_DM_API_BLE_MULTI_ADV_PARAM)); - p_msg->hdr.event = BTA_DM_API_BLE_MULTI_ADV_PARAM_UPD_EVT; - p_msg->inst_id = inst_id; - p_msg->p_params = (void *)(p_msg + 1); - memcpy(p_msg->p_params, p_params, sizeof(tBTA_BLE_ADV_PARAMS)); + if ((p_msg = (tBTA_DM_API_BLE_MULTI_ADV_PARAM *) GKI_getbuf(len)) != NULL) { + memset(p_msg, 0, sizeof(tBTA_DM_API_BLE_MULTI_ADV_PARAM)); + p_msg->hdr.event = BTA_DM_API_BLE_MULTI_ADV_PARAM_UPD_EVT; + p_msg->inst_id = inst_id; + p_msg->p_params = (void *)(p_msg + 1); + memcpy(p_msg->p_params, p_params, sizeof(tBTA_BLE_ADV_PARAMS)); - bta_sys_sendmsg(p_msg); + bta_sys_sendmsg(p_msg); } } @@ -1690,22 +1628,22 @@ void BTA_BleUpdateAdvInstParam (UINT8 inst_id, tBTA_BLE_ADV_PARAMS *p_params) void BTA_BleCfgAdvInstData (UINT8 inst_id, BOOLEAN is_scan_rsp, tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_data) -{ ///This function just used for vendor debug +{ + ///This function just used for vendor debug tBTA_DM_API_BLE_MULTI_ADV_DATA *p_msg; UINT16 len = sizeof(tBTA_DM_API_BLE_MULTI_ADV_DATA) ; APPL_TRACE_API ("BTA_BleCfgAdvInstData"); - if ((p_msg = (tBTA_DM_API_BLE_MULTI_ADV_DATA *) GKI_getbuf(len)) != NULL) - { - memset(p_msg, 0, len); - p_msg->hdr.event = BTA_DM_API_BLE_MULTI_ADV_DATA_EVT; - p_msg->inst_id = inst_id; - p_msg->is_scan_rsp = is_scan_rsp; - p_msg->data_mask = data_mask; - p_msg->p_data = p_data; + if ((p_msg = (tBTA_DM_API_BLE_MULTI_ADV_DATA *) GKI_getbuf(len)) != NULL) { + memset(p_msg, 0, len); + p_msg->hdr.event = BTA_DM_API_BLE_MULTI_ADV_DATA_EVT; + p_msg->inst_id = inst_id; + p_msg->is_scan_rsp = is_scan_rsp; + p_msg->data_mask = data_mask; + p_msg->p_data = p_data; - bta_sys_sendmsg(p_msg); + bta_sys_sendmsg(p_msg); } } @@ -1720,18 +1658,17 @@ void BTA_BleCfgAdvInstData (UINT8 inst_id, BOOLEAN is_scan_rsp, ** Returns BTA_SUCCESS if command started sucessfully; otherwise failure. ** *******************************************************************************/ -void BTA_BleDisableAdvInstance (UINT8 inst_id) //this function just used for vendor debug +void BTA_BleDisableAdvInstance (UINT8 inst_id) //this function just used for vendor debug { tBTA_DM_API_BLE_MULTI_ADV_DISABLE *p_msg; APPL_TRACE_API ("BTA_BleDisableAdvInstance: %d", inst_id); if ((p_msg = (tBTA_DM_API_BLE_MULTI_ADV_DISABLE *) - GKI_getbuf(sizeof(tBTA_DM_API_BLE_MULTI_ADV_DISABLE))) != NULL) - { - memset(p_msg, 0, sizeof(tBTA_DM_API_BLE_MULTI_ADV_DISABLE)); - p_msg->hdr.event = BTA_DM_API_BLE_MULTI_ADV_DISABLE_EVT; - p_msg->inst_id = inst_id; - bta_sys_sendmsg(p_msg); + GKI_getbuf(sizeof(tBTA_DM_API_BLE_MULTI_ADV_DISABLE))) != NULL) { + memset(p_msg, 0, sizeof(tBTA_DM_API_BLE_MULTI_ADV_DISABLE)); + p_msg->hdr.event = BTA_DM_API_BLE_MULTI_ADV_DISABLE_EVT; + p_msg->inst_id = inst_id; + bta_sys_sendmsg(p_msg); } } @@ -1767,34 +1704,31 @@ void BTA_DmBleCfgFilterCondition(tBTA_DM_BLE_SCAN_COND_OP action, sizeof(tBTA_DM_BLE_PF_COND_PARAM); UINT8 *p; - if (NULL != p_cond) - { - switch(cond_type) - { - case BTA_DM_BLE_PF_SRVC_DATA_PATTERN: - case BTA_DM_BLE_PF_MANU_DATA: - /* Length of pattern and pattern mask and other elements in */ - /* tBTA_DM_BLE_PF_MANU_COND */ - len += ((p_cond->manu_data.data_len) * 2) + - sizeof(UINT16) + sizeof(UINT16) + sizeof(UINT8); - break; + if (NULL != p_cond) { + switch (cond_type) { + case BTA_DM_BLE_PF_SRVC_DATA_PATTERN: + case BTA_DM_BLE_PF_MANU_DATA: + /* Length of pattern and pattern mask and other elements in */ + /* tBTA_DM_BLE_PF_MANU_COND */ + len += ((p_cond->manu_data.data_len) * 2) + + sizeof(UINT16) + sizeof(UINT16) + sizeof(UINT8); + break; - case BTA_DM_BLE_PF_LOCAL_NAME: - len += ((p_cond->local_name.data_len) + sizeof(UINT8)); - break; + case BTA_DM_BLE_PF_LOCAL_NAME: + len += ((p_cond->local_name.data_len) + sizeof(UINT8)); + break; - case BTM_BLE_PF_SRVC_UUID: - case BTM_BLE_PF_SRVC_SOL_UUID: - len += sizeof(tBLE_BD_ADDR) + sizeof(tBTA_DM_BLE_PF_COND_MASK); - break; + case BTM_BLE_PF_SRVC_UUID: + case BTM_BLE_PF_SRVC_SOL_UUID: + len += sizeof(tBLE_BD_ADDR) + sizeof(tBTA_DM_BLE_PF_COND_MASK); + break; - default: - break; + default: + break; } } - if ((p_msg = (tBTA_DM_API_CFG_FILTER_COND *) GKI_getbuf(len)) != NULL) - { + if ((p_msg = (tBTA_DM_API_CFG_FILTER_COND *) GKI_getbuf(len)) != NULL) { memset (p_msg, 0, len); p_msg->hdr.event = BTA_DM_API_CFG_FILTER_COND_EVT; @@ -1803,59 +1737,49 @@ void BTA_DmBleCfgFilterCondition(tBTA_DM_BLE_SCAN_COND_OP action, p_msg->filt_index = filt_index; p_msg->p_filt_cfg_cback = p_cmpl_cback; p_msg->ref_value = ref_value; - if (p_cond) - { + if (p_cond) { p_msg->p_cond_param = (tBTA_DM_BLE_PF_COND_PARAM *)(p_msg + 1); memcpy(p_msg->p_cond_param, p_cond, sizeof(tBTA_DM_BLE_PF_COND_PARAM)); p = (UINT8 *)(p_msg->p_cond_param + 1); if (cond_type == BTA_DM_BLE_PF_SRVC_DATA_PATTERN || - cond_type == BTA_DM_BLE_PF_MANU_DATA) - { + cond_type == BTA_DM_BLE_PF_MANU_DATA) { p_msg->p_cond_param->manu_data.p_pattern = p; p_msg->p_cond_param->manu_data.data_len = p_cond->manu_data.data_len; memcpy(p_msg->p_cond_param->manu_data.p_pattern, p_cond->manu_data.p_pattern, - p_cond->manu_data.data_len); + p_cond->manu_data.data_len); p += p_cond->manu_data.data_len; - if (cond_type == BTA_DM_BLE_PF_MANU_DATA) - { + if (cond_type == BTA_DM_BLE_PF_MANU_DATA) { p_msg->p_cond_param->manu_data.company_id_mask = p_cond->manu_data.company_id_mask; - if ( p_cond->manu_data.p_pattern_mask != NULL) - { + if ( p_cond->manu_data.p_pattern_mask != NULL) { p_msg->p_cond_param->manu_data.p_pattern_mask = p; memcpy(p_msg->p_cond_param->manu_data.p_pattern_mask, - p_cond->manu_data.p_pattern_mask, p_cond->manu_data.data_len); + p_cond->manu_data.p_pattern_mask, p_cond->manu_data.data_len); } } - } - else if (cond_type == BTA_DM_BLE_PF_LOCAL_NAME) - { + } else if (cond_type == BTA_DM_BLE_PF_LOCAL_NAME) { p_msg->p_cond_param->local_name.p_data = p; p_msg->p_cond_param->local_name.data_len = p_cond->local_name.data_len; memcpy(p_msg->p_cond_param->local_name.p_data, - p_cond->local_name.p_data, p_cond->local_name.data_len); - } - else if ((cond_type == BTM_BLE_PF_SRVC_UUID - || cond_type == BTM_BLE_PF_SRVC_SOL_UUID)) - { - if (p_cond->srvc_uuid.p_target_addr != NULL) - { + p_cond->local_name.p_data, p_cond->local_name.data_len); + } else if ((cond_type == BTM_BLE_PF_SRVC_UUID + || cond_type == BTM_BLE_PF_SRVC_SOL_UUID)) { + if (p_cond->srvc_uuid.p_target_addr != NULL) { p_msg->p_cond_param->srvc_uuid.p_target_addr = (tBLE_BD_ADDR *)(p); p_msg->p_cond_param->srvc_uuid.p_target_addr->type = p_cond->srvc_uuid.p_target_addr->type; memcpy(p_msg->p_cond_param->srvc_uuid.p_target_addr->bda, - p_cond->srvc_uuid.p_target_addr->bda, BD_ADDR_LEN); - p = (UINT8*)( p_msg->p_cond_param->srvc_uuid.p_target_addr + 1); + p_cond->srvc_uuid.p_target_addr->bda, BD_ADDR_LEN); + p = (UINT8 *)( p_msg->p_cond_param->srvc_uuid.p_target_addr + 1); } - if (p_cond->srvc_uuid.p_uuid_mask) - { + if (p_cond->srvc_uuid.p_uuid_mask) { p_msg->p_cond_param->srvc_uuid.p_uuid_mask = (tBTA_DM_BLE_PF_COND_MASK *)p; memcpy(p_msg->p_cond_param->srvc_uuid.p_uuid_mask, - p_cond->srvc_uuid.p_uuid_mask, sizeof(tBTA_DM_BLE_PF_COND_MASK)); + p_cond->srvc_uuid.p_uuid_mask, sizeof(tBTA_DM_BLE_PF_COND_MASK)); } } } @@ -1889,10 +1813,10 @@ void BTA_DmBleCfgFilterCondition(tBTA_DM_BLE_SCAN_COND_OP action, ** *******************************************************************************/ void BTA_DmBleScanFilterSetup(UINT8 action, tBTA_DM_BLE_PF_FILT_INDEX filt_index, - tBTA_DM_BLE_PF_FILT_PARAMS *p_filt_params, - tBLE_BD_ADDR *p_target, - tBTA_DM_BLE_PF_PARAM_CBACK *p_cmpl_cback, - tBTA_DM_BLE_REF_VALUE ref_value) + tBTA_DM_BLE_PF_FILT_PARAMS *p_filt_params, + tBLE_BD_ADDR *p_target, + tBTA_DM_BLE_PF_PARAM_CBACK *p_cmpl_cback, + tBTA_DM_BLE_REF_VALUE ref_value) { #if BLE_ANDROID_CONTROLLER_SCAN_FILTER == TRUE tBTA_DM_API_SCAN_FILTER_PARAM_SETUP *p_msg; @@ -1900,20 +1824,19 @@ void BTA_DmBleScanFilterSetup(UINT8 action, tBTA_DM_BLE_PF_FILT_INDEX filt_index UINT16 len = sizeof(tBTA_DM_API_SCAN_FILTER_PARAM_SETUP) + sizeof(tBLE_BD_ADDR); - if ((p_msg = (tBTA_DM_API_SCAN_FILTER_PARAM_SETUP *) GKI_getbuf(len)) != NULL) - { + if ((p_msg = (tBTA_DM_API_SCAN_FILTER_PARAM_SETUP *) GKI_getbuf(len)) != NULL) { memset (p_msg, 0, len); p_msg->hdr.event = BTA_DM_API_SCAN_FILTER_SETUP_EVT; p_msg->action = action; p_msg->filt_index = filt_index; - if (p_filt_params) + if (p_filt_params) { memcpy(&p_msg->filt_params, p_filt_params, sizeof(tBTA_DM_BLE_PF_FILT_PARAMS)); + } p_msg->p_filt_param_cback = p_cmpl_cback; p_msg->ref_value = ref_value; - if (p_target) - { + if (p_target) { p_msg->p_target = (tBLE_BD_ADDR *)(p_msg + 1); memcpy(p_msg->p_target, p_target, sizeof(tBLE_BD_ADDR)); } @@ -1948,8 +1871,7 @@ void BTA_DmBleGetEnergyInfo(tBTA_BLE_ENERGY_INFO_CBACK *p_cmpl_cback) UINT16 len = sizeof(tBTA_DM_API_ENERGY_INFO) + sizeof(tBLE_BD_ADDR); - if ((p_msg = (tBTA_DM_API_ENERGY_INFO *) GKI_getbuf(len)) != NULL) - { + if ((p_msg = (tBTA_DM_API_ENERGY_INFO *) GKI_getbuf(len)) != NULL) { memset (p_msg, 0, len); p_msg->hdr.event = BTA_DM_API_BLE_ENERGY_INFO_EVT; p_msg->p_energy_info_cback = p_cmpl_cback; @@ -1971,7 +1893,7 @@ void BTA_DmBleGetEnergyInfo(tBTA_BLE_ENERGY_INFO_CBACK *p_cmpl_cback) ** *******************************************************************************/ void BTA_DmEnableScanFilter(UINT8 action, tBTA_DM_BLE_PF_STATUS_CBACK *p_cmpl_cback, - tBTA_DM_BLE_REF_VALUE ref_value) + tBTA_DM_BLE_REF_VALUE ref_value) { #if BLE_ANDROID_CONTROLLER_SCAN_FILTER == TRUE tBTA_DM_API_ENABLE_SCAN_FILTER *p_msg; @@ -1979,8 +1901,7 @@ void BTA_DmEnableScanFilter(UINT8 action, tBTA_DM_BLE_PF_STATUS_CBACK *p_cmpl_cb UINT16 len = sizeof(tBTA_DM_API_ENABLE_SCAN_FILTER) + sizeof(tBLE_BD_ADDR); - if ((p_msg = (tBTA_DM_API_ENABLE_SCAN_FILTER *) GKI_getbuf(len)) != NULL) - { + if ((p_msg = (tBTA_DM_API_ENABLE_SCAN_FILTER *) GKI_getbuf(len)) != NULL) { memset (p_msg, 0, len); p_msg->hdr.event = BTA_DM_API_SCAN_FILTER_ENABLE_EVT; @@ -2013,12 +1934,11 @@ void BTA_DmEnableScanFilter(UINT8 action, tBTA_DM_BLE_PF_STATUS_CBACK *p_cmpl_cb ** *******************************************************************************/ void BTA_DmBleUpdateConnectionParams(BD_ADDR bd_addr, UINT16 min_int, UINT16 max_int, - UINT16 latency, UINT16 timeout) + UINT16 latency, UINT16 timeout) { tBTA_DM_API_UPDATE_CONN_PARAM *p_msg; - if ((p_msg = (tBTA_DM_API_UPDATE_CONN_PARAM *) GKI_getbuf(sizeof(tBTA_DM_API_UPDATE_CONN_PARAM))) != NULL) - { + if ((p_msg = (tBTA_DM_API_UPDATE_CONN_PARAM *) GKI_getbuf(sizeof(tBTA_DM_API_UPDATE_CONN_PARAM))) != NULL) { memset (p_msg, 0, sizeof(tBTA_DM_API_UPDATE_CONN_PARAM)); p_msg->hdr.event = BTA_DM_API_UPDATE_CONN_PARAM_EVT; @@ -2047,8 +1967,7 @@ void BTA_DmBleSetDataLength(BD_ADDR remote_device, UINT16 tx_data_length) tBTA_DM_API_BLE_SET_DATA_LENGTH *p_msg; if ((p_msg = (tBTA_DM_API_BLE_SET_DATA_LENGTH *)GKI_getbuf(sizeof(tBTA_DM_API_BLE_SET_DATA_LENGTH))) - != NULL) - { + != NULL) { bdcpy(p_msg->remote_bda, remote_device); p_msg->hdr.event = BTA_DM_API_SET_DATA_LENGTH_EVT; p_msg->tx_data_length = tx_data_length; @@ -2082,13 +2001,12 @@ void BTA_DmBleSetDataLength(BD_ADDR remote_device, UINT16 tx_data_length) ** *******************************************************************************/ void BTA_DmSetEncryption(BD_ADDR bd_addr, tBTA_TRANSPORT transport, tBTA_DM_ENCRYPT_CBACK *p_callback, - tBTA_DM_BLE_SEC_ACT sec_act) + tBTA_DM_BLE_SEC_ACT sec_act) { tBTA_DM_API_SET_ENCRYPTION *p_msg; APPL_TRACE_API("BTA_DmSetEncryption"); //todo - if ((p_msg = (tBTA_DM_API_SET_ENCRYPTION *) GKI_getbuf(sizeof(tBTA_DM_API_SET_ENCRYPTION))) != NULL) - { + if ((p_msg = (tBTA_DM_API_SET_ENCRYPTION *) GKI_getbuf(sizeof(tBTA_DM_API_SET_ENCRYPTION))) != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_API_SET_ENCRYPTION)); p_msg->hdr.event = BTA_DM_API_SET_ENCRYPTION_EVT; @@ -2121,8 +2039,7 @@ void BTA_DmCloseACL(BD_ADDR bd_addr, BOOLEAN remove_dev, tBTA_TRANSPORT transpor APPL_TRACE_API("BTA_DmCloseACL"); - if ((p_msg = (tBTA_DM_API_REMOVE_ACL *) GKI_getbuf(sizeof(tBTA_DM_API_REMOVE_ACL))) != NULL) - { + if ((p_msg = (tBTA_DM_API_REMOVE_ACL *) GKI_getbuf(sizeof(tBTA_DM_API_REMOVE_ACL))) != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_API_REMOVE_ACL)); p_msg->hdr.event = BTA_DM_API_REMOVE_ACL_EVT; @@ -2158,8 +2075,7 @@ extern void BTA_DmBleObserve(BOOLEAN start, UINT8 duration, APPL_TRACE_API("BTA_DmBleObserve:start = %d ", start); - if ((p_msg = (tBTA_DM_API_BLE_OBSERVE *) GKI_getbuf(sizeof(tBTA_DM_API_BLE_OBSERVE))) != NULL) - { + if ((p_msg = (tBTA_DM_API_BLE_OBSERVE *) GKI_getbuf(sizeof(tBTA_DM_API_BLE_OBSERVE))) != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_API_BLE_OBSERVE)); p_msg->hdr.event = BTA_DM_API_BLE_OBSERVE_EVT; @@ -2178,19 +2094,18 @@ extern void BTA_DmBleObserve(BOOLEAN start, UINT8 duration, ** Description This function set the random address for the APP ** ** Parameters void -** +** ** Returns void ** ** *******************************************************************************/ extern void BTA_DmBleStopAdvertising(void) { - BT_HDR *p_msg; + BT_HDR *p_msg; APPL_TRACE_API("BTA_DmBleStopAdvertising\n"); - if ((p_msg = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) - { + if ((p_msg = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) { memset(p_msg, 0, sizeof(BT_HDR)); p_msg->event = BTA_DM_API_BLE_STOP_ADV_EVT; bta_sys_sendmsg(p_msg); @@ -2205,22 +2120,21 @@ extern void BTA_DmBleStopAdvertising(void) ** Description This function set the random address for the APP ** ** Parameters rand_addr: the random address whith should be setting -** +** ** Returns void ** ** *******************************************************************************/ extern void BTA_DmSetRandAddress(BD_ADDR rand_addr) { - tBTA_DM_APT_SET_DEV_ADDR *p_msg; - APPL_TRACE_API("set the random address "); - if ((p_msg = (tBTA_DM_APT_SET_DEV_ADDR *) GKI_getbuf(sizeof(tBTA_DM_APT_SET_DEV_ADDR))) != NULL) - { + tBTA_DM_APT_SET_DEV_ADDR *p_msg; + APPL_TRACE_API("set the random address "); + if ((p_msg = (tBTA_DM_APT_SET_DEV_ADDR *) GKI_getbuf(sizeof(tBTA_DM_APT_SET_DEV_ADDR))) != NULL) { memset(p_msg, 0, sizeof(tBTA_DM_APT_SET_DEV_ADDR)); - memcpy(p_msg->address,rand_addr,BD_ADDR_LEN); + memcpy(p_msg->address, rand_addr, BD_ADDR_LEN); p_msg->hdr.event = BTA_DM_API_SET_RAND_ADDR_EVT; - p_msg->addr_type = BLE_ADDR_RANDOM; - //start sent the msg to the bta system control moudle + p_msg->addr_type = BLE_ADDR_RANDOM; + //start sent the msg to the bta system control moudle bta_sys_sendmsg(p_msg); } } @@ -2254,20 +2168,21 @@ void BTA_VendorCleanup (void) BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb); #if (BLE_INCLUDED == TRUE && BLE_ANDROID_CONTROLLER_SCAN_FILTER == TRUE) - if (cmn_ble_vsc_cb.max_filter > 0) - { + if (cmn_ble_vsc_cb.max_filter > 0) { btm_ble_adv_filter_cleanup(); #if BLE_PRIVACY_SPT == TRUE btm_ble_resolving_list_cleanup (); #endif } - if (cmn_ble_vsc_cb.tot_scan_results_strg > 0) + if (cmn_ble_vsc_cb.tot_scan_results_strg > 0) { btm_ble_batchscan_cleanup(); + } #endif - if(cmn_ble_vsc_cb.adv_inst_max > 0) - btm_ble_multi_adv_cleanup(); + if (cmn_ble_vsc_cb.adv_inst_max > 0) { + btm_ble_multi_adv_cleanup(); + } } #endif diff --git a/components/bt/bluedroid/bta/dm/bta_dm_cfg.c b/components/bt/bluedroid/bta/dm/bta_dm_cfg.c old mode 100755 new mode 100644 index f0895185da..92274247c6 --- a/components/bt/bluedroid/bta/dm/bta_dm_cfg.c +++ b/components/bt/bluedroid/bta/dm/bta_dm_cfg.c @@ -57,8 +57,7 @@ #endif -const tBTA_DM_CFG bta_dm_cfg = -{ +const tBTA_DM_CFG bta_dm_cfg = { /* mobile phone COD */ BTA_DM_COD, /* link policy settings */ @@ -101,8 +100,7 @@ const tBTA_DM_CFG bta_dm_cfg = /* First element is always for SYS: app_id = # of entries table, cfg is device scatternet support */ -const tBTA_DM_RM bta_dm_rm_cfg[] = -{ +const tBTA_DM_RM bta_dm_rm_cfg[] = { {BTA_ID_SYS, BTA_DM_NUM_RM_ENTRY, BTA_DM_SCATTERNET}, {BTA_ID_PAN, BTUI_PAN_ID_NAP, BTA_ANY_ROLE}, {BTA_ID_PAN, BTUI_PAN_ID_GN, BTA_ANY_ROLE}, @@ -113,9 +111,9 @@ const tBTA_DM_RM bta_dm_rm_cfg[] = }; -tBTA_DM_CFG *p_bta_dm_cfg = (tBTA_DM_CFG *)&bta_dm_cfg; +tBTA_DM_CFG *p_bta_dm_cfg = (tBTA_DM_CFG *) &bta_dm_cfg; -tBTA_DM_RM *p_bta_dm_rm_cfg = (tBTA_DM_RM *)&bta_dm_rm_cfg; +tBTA_DM_RM *p_bta_dm_rm_cfg = (tBTA_DM_RM *) &bta_dm_rm_cfg; #if BLE_INCLUDED == TRUE # define BTA_DM_NUM_PM_ENTRY 21 /* number of entries in bta_dm_pm_cfg except the first */ @@ -125,340 +123,338 @@ tBTA_DM_RM *p_bta_dm_rm_cfg = (tBTA_DM_RM *)&bta_dm_rm_cfg; # define BTA_DM_NUM_PM_SPEC 13 /* number of entries in bta_dm_pm_spec */ #endif -tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_CFG bta_dm_pm_cfg[BTA_DM_NUM_PM_ENTRY + 1] = -{ - {BTA_ID_SYS, BTA_DM_NUM_PM_ENTRY, 0}, /* reserved: specifies length of this table. */ - {BTA_ID_AG, BTA_ALL_APP_ID, 0}, /* ag uses first spec table for app id 0 */ - {BTA_ID_CT, 1, 1}, /* ct (BTA_ID_CT,APP ID=1) spec table */ - {BTA_ID_CG, BTA_ALL_APP_ID, 1}, /* cg resue ct spec table */ - {BTA_ID_DG, BTA_ALL_APP_ID, 2}, /* dg spec table */ - {BTA_ID_AV, BTA_ALL_APP_ID, 4}, /* av spec table */ - {BTA_ID_AVK, BTA_ALL_APP_ID, 12}, /* avk spec table */ - {BTA_ID_FTC, BTA_ALL_APP_ID, 6}, /* ftc spec table */ - {BTA_ID_FTS, BTA_ALL_APP_ID, 7}, /* fts spec table */ - {BTA_ID_HD, BTA_ALL_APP_ID, 3}, /* hd spec table */ - {BTA_ID_HH, BTA_ALL_APP_ID, 5}, /* hh spec table */ - {BTA_ID_PBC, BTA_ALL_APP_ID, 2}, /* reuse dg spec table */ - {BTA_ID_PBS, BTA_ALL_APP_ID, 7}, /* reuse fts spec table */ - {BTA_ID_OPC, BTA_ALL_APP_ID, 6}, /* reuse ftc spec table */ - {BTA_ID_OPS, BTA_ALL_APP_ID, 7}, /* reuse fts spec table */ - {BTA_ID_MSE, BTA_ALL_APP_ID, 7}, /* reuse fts spec table */ - // {BTA_ID_JV, BTA_JV_PM_ID_1, 6}, /* app BTA_JV_PM_ID_1, reuse ftc spec table */ - // {BTA_ID_JV, BTA_ALL_APP_ID, 7}, /* reuse fts spec table */ - {BTA_ID_HL, BTA_ALL_APP_ID, 8}, /* reuse fts spec table */ - {BTA_ID_PAN, BTUI_PAN_ID_PANU, 9}, /* PANU spec table */ - {BTA_ID_PAN, BTUI_PAN_ID_NAP, 10}, /* NAP spec table */ - {BTA_ID_HS, BTA_ALL_APP_ID, 11} /* HS spec table */ +tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_CFG bta_dm_pm_cfg[BTA_DM_NUM_PM_ENTRY + 1] = { + {BTA_ID_SYS, BTA_DM_NUM_PM_ENTRY, 0}, /* reserved: specifies length of this table. */ + {BTA_ID_AG, BTA_ALL_APP_ID, 0}, /* ag uses first spec table for app id 0 */ + {BTA_ID_CT, 1, 1}, /* ct (BTA_ID_CT,APP ID=1) spec table */ + {BTA_ID_CG, BTA_ALL_APP_ID, 1}, /* cg resue ct spec table */ + {BTA_ID_DG, BTA_ALL_APP_ID, 2}, /* dg spec table */ + {BTA_ID_AV, BTA_ALL_APP_ID, 4}, /* av spec table */ + {BTA_ID_AVK, BTA_ALL_APP_ID, 12}, /* avk spec table */ + {BTA_ID_FTC, BTA_ALL_APP_ID, 6}, /* ftc spec table */ + {BTA_ID_FTS, BTA_ALL_APP_ID, 7}, /* fts spec table */ + {BTA_ID_HD, BTA_ALL_APP_ID, 3}, /* hd spec table */ + {BTA_ID_HH, BTA_ALL_APP_ID, 5}, /* hh spec table */ + {BTA_ID_PBC, BTA_ALL_APP_ID, 2}, /* reuse dg spec table */ + {BTA_ID_PBS, BTA_ALL_APP_ID, 7}, /* reuse fts spec table */ + {BTA_ID_OPC, BTA_ALL_APP_ID, 6}, /* reuse ftc spec table */ + {BTA_ID_OPS, BTA_ALL_APP_ID, 7}, /* reuse fts spec table */ + {BTA_ID_MSE, BTA_ALL_APP_ID, 7}, /* reuse fts spec table */ + // {BTA_ID_JV, BTA_JV_PM_ID_1, 6}, /* app BTA_JV_PM_ID_1, reuse ftc spec table */ + // {BTA_ID_JV, BTA_ALL_APP_ID, 7}, /* reuse fts spec table */ + {BTA_ID_HL, BTA_ALL_APP_ID, 8}, /* reuse fts spec table */ + {BTA_ID_PAN, BTUI_PAN_ID_PANU, 9}, /* PANU spec table */ + {BTA_ID_PAN, BTUI_PAN_ID_NAP, 10}, /* NAP spec table */ + {BTA_ID_HS, BTA_ALL_APP_ID, 11} /* HS spec table */ #if BLE_INCLUDED == TRUE - ,{BTA_ID_GATTC, BTA_ALL_APP_ID, 13} /* gattc spec table */ - ,{BTA_ID_GATTS, BTA_ALL_APP_ID, 14} /* gatts spec table */ + , {BTA_ID_GATTC, BTA_ALL_APP_ID, 13} /* gattc spec table */ + , {BTA_ID_GATTS, BTA_ALL_APP_ID, 14} /* gatts spec table */ #endif }; -tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_SPEC bta_dm_pm_spec[BTA_DM_NUM_PM_SPEC] = -{ - /* AG : 0 */ - { - (BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */ +tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_SPEC bta_dm_pm_spec[BTA_DM_NUM_PM_SPEC] = { + /* AG : 0 */ + { + (BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */ #if (BTM_SSR_INCLUDED == TRUE) - (BTA_DM_PM_SSR2), /* the SSR entry */ + (BTA_DM_PM_SSR2), /* the SSR entry */ #endif - { - {{BTA_DM_PM_SNIFF_A2DP_IDX, 7000}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */ - {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ - {{BTA_DM_PM_SNIFF_SCO_OPEN_IDX, 7000}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open, active */ - {{BTA_DM_PM_SNIFF_A2DP_IDX, 7000}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close sniff */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ - {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ - {{BTA_DM_PM_RETRY, 7000}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ - } - }, + { + {{BTA_DM_PM_SNIFF_A2DP_IDX, 7000}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */ + {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ + {{BTA_DM_PM_SNIFF_SCO_OPEN_IDX, 7000}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open, active */ + {{BTA_DM_PM_SNIFF_A2DP_IDX, 7000}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close sniff */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ + {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ + {{BTA_DM_PM_RETRY, 7000}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ + } + }, - /* CT, CG : 1 */ - { - (BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */ + /* CT, CG : 1 */ + { + (BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */ #if (BTM_SSR_INCLUDED == TRUE) - (BTA_DM_PM_SSR2), /* the SSR entry */ + (BTA_DM_PM_SSR2), /* the SSR entry */ #endif - { - {{BTA_DM_PM_PARK, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open park */ - {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ - {{BTA_DM_PM_SNIFF_A2DP_IDX, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open sniff */ - {{BTA_DM_PM_PARK, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close park */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ - {{BTA_DM_PM_RETRY, 5000}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ - } - }, + { + {{BTA_DM_PM_PARK, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open park */ + {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ + {{BTA_DM_PM_SNIFF_A2DP_IDX, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open sniff */ + {{BTA_DM_PM_PARK, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close park */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ + {{BTA_DM_PM_RETRY, 5000}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ + } + }, - /* DG, PBC : 2 */ - { - (BTA_DM_PM_ACTIVE), /* no power saving mode allowed */ + /* DG, PBC : 2 */ + { + (BTA_DM_PM_ACTIVE), /* no power saving mode allowed */ #if (BTM_SSR_INCLUDED == TRUE) - (BTA_DM_PM_SSR2), /* the SSR entry */ + (BTA_DM_PM_SSR2), /* the SSR entry */ #endif - { - {{BTA_DM_PM_SNIFF, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */ - {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ - {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */ - {{BTA_DM_PM_SNIFF, 1000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ - {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ - } - }, + { + {{BTA_DM_PM_SNIFF, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */ + {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ + {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */ + {{BTA_DM_PM_SNIFF, 1000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ + {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ + } + }, - /* HD : 3 */ - { - (BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */ + /* HD : 3 */ + { + (BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */ #if (BTM_SSR_INCLUDED == TRUE) - (BTA_DM_PM_SSR3), /* the SSR entry */ + (BTA_DM_PM_SSR3), /* the SSR entry */ #endif - { - {{BTA_DM_PM_SNIFF_HD_ACTIVE_IDX, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */ - {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */ - {{BTA_DM_PM_SNIFF_HD_IDLE_IDX, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ - {{BTA_DM_PM_SNIFF_HD_ACTIVE_IDX, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ - } - }, + { + {{BTA_DM_PM_SNIFF_HD_ACTIVE_IDX, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */ + {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */ + {{BTA_DM_PM_SNIFF_HD_IDLE_IDX, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ + {{BTA_DM_PM_SNIFF_HD_ACTIVE_IDX, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ + } + }, - /* AV : 4 */ - { - (BTA_DM_PM_SNIFF), /* allow sniff */ + /* AV : 4 */ + { + (BTA_DM_PM_SNIFF), /* allow sniff */ #if (BTM_SSR_INCLUDED == TRUE) - (BTA_DM_PM_SSR2), /* the SSR entry */ + (BTA_DM_PM_SSR2), /* the SSR entry */ #endif - { - {{BTA_DM_PM_SNIFF_A2DP_IDX, 7000}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */ - {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */ - {{BTA_DM_PM_SNIFF_A2DP_IDX, 7000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ - {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ - } - }, + { + {{BTA_DM_PM_SNIFF_A2DP_IDX, 7000}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */ + {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */ + {{BTA_DM_PM_SNIFF_A2DP_IDX, 7000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ + {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ + } + }, - /* HH : 5 */ - { - (BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */ + /* HH : 5 */ + { + (BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */ #if (BTM_SSR_INCLUDED == TRUE) - (BTA_DM_PM_SSR1), /* the SSR entry */ + (BTA_DM_PM_SSR1), /* the SSR entry */ #endif - { - {{BTA_DM_PM_SNIFF_HH_OPEN_IDX, BTA_DM_PM_HH_OPEN_DELAY},{BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */ - {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close, used for HH suspend */ - {{BTA_DM_PM_SNIFF_HH_IDLE_IDX, BTA_DM_PM_HH_IDLE_DELAY}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ - {{BTA_DM_PM_SNIFF_HH_ACTIVE_IDX, BTA_DM_PM_HH_ACTIVE_DELAY}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ - } - }, + { + {{BTA_DM_PM_SNIFF_HH_OPEN_IDX, BTA_DM_PM_HH_OPEN_DELAY}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */ + {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close, used for HH suspend */ + {{BTA_DM_PM_SNIFF_HH_IDLE_IDX, BTA_DM_PM_HH_IDLE_DELAY}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ + {{BTA_DM_PM_SNIFF_HH_ACTIVE_IDX, BTA_DM_PM_HH_ACTIVE_DELAY}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ + } + }, - /* FTC, OPC, JV : 6 */ - { - (BTA_DM_PM_SNIFF), /* allow sniff */ + /* FTC, OPC, JV : 6 */ + { + (BTA_DM_PM_SNIFF), /* allow sniff */ #if (BTM_SSR_INCLUDED == TRUE) - (BTA_DM_PM_SSR2), /* the SSR entry */ + (BTA_DM_PM_SSR2), /* the SSR entry */ #endif - { - {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */ - {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ - {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */ - {{BTA_DM_PM_SNIFF_A2DP_IDX, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ - {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ - } - }, + { + {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */ + {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ + {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */ + {{BTA_DM_PM_SNIFF_A2DP_IDX, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ + {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ + } + }, - /* FTS, PBS, OPS, MSE, BTA_JV_PM_ID_1 : 7 */ - { - (BTA_DM_PM_SNIFF), /* allow sniff */ + /* FTS, PBS, OPS, MSE, BTA_JV_PM_ID_1 : 7 */ + { + (BTA_DM_PM_SNIFF), /* allow sniff */ #if (BTM_SSR_INCLUDED == TRUE) - (BTA_DM_PM_SSR2), /* the SSR entry */ + (BTA_DM_PM_SSR2), /* the SSR entry */ #endif - { - {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */ - {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ - {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */ - {{BTA_DM_PM_SNIFF_A2DP_IDX, BTA_FTS_OPS_IDLE_TO_SNIFF_DELAY_MS}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ - {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ - } - }, + { + {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */ + {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ + {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */ + {{BTA_DM_PM_SNIFF_A2DP_IDX, BTA_FTS_OPS_IDLE_TO_SNIFF_DELAY_MS}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ + {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ + } + }, - /* HL : 8 */ - { - (BTA_DM_PM_SNIFF), /* allow sniff */ + /* HL : 8 */ + { + (BTA_DM_PM_SNIFF), /* allow sniff */ #if (BTM_SSR_INCLUDED == TRUE) - (BTA_DM_PM_SSR2), /* the SSR entry */ + (BTA_DM_PM_SSR2), /* the SSR entry */ #endif - { - {{BTA_DM_PM_SNIFF_A2DP_IDX, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */ - {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open, active */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close sniff */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ - {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ - } - }, + { + {{BTA_DM_PM_SNIFF_A2DP_IDX, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */ + {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open, active */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close sniff */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ + {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ + } + }, - /* PANU : 9 */ - { - (BTA_DM_PM_SNIFF), /* allow sniff */ + /* PANU : 9 */ + { + (BTA_DM_PM_SNIFF), /* allow sniff */ #if (BTM_SSR_INCLUDED == TRUE) - (BTA_DM_PM_SSR2), /* the SSR entry */ + (BTA_DM_PM_SSR2), /* the SSR entry */ #endif - { - {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */ - {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ - {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */ - {{BTA_DM_PM_SNIFF_A2DP_IDX, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ - {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ - } - }, + { + {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */ + {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ + {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */ + {{BTA_DM_PM_SNIFF_A2DP_IDX, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ + {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ + } + }, - /* NAP : 10 */ - { - (BTA_DM_PM_SNIFF), /* allow sniff */ + /* NAP : 10 */ + { + (BTA_DM_PM_SNIFF), /* allow sniff */ #if (BTM_SSR_INCLUDED == TRUE) - (BTA_DM_PM_SSR2), /* the SSR entry */ + (BTA_DM_PM_SSR2), /* the SSR entry */ #endif - { - {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */ - {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ - {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */ - {{BTA_DM_PM_SNIFF_A2DP_IDX, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ - {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ + { + {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */ + {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ + {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */ + {{BTA_DM_PM_SNIFF_A2DP_IDX, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ + {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ - } - }, + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ + } + }, - /* HS : 11 */ - { - (BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */ + /* HS : 11 */ + { + (BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */ #if (BTM_SSR_INCLUDED == TRUE) - (BTA_DM_PM_SSR2), /* the SSR entry */ + (BTA_DM_PM_SSR2), /* the SSR entry */ #endif - { - {{BTA_DM_PM_SNIFF, 7000}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */ - {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ - {{BTA_DM_PM_SNIFF3, 7000}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open, active */ - {{BTA_DM_PM_SNIFF, 7000}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close sniff */ - {{BTA_DM_PM_SNIFF, 7000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ - {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ - {{BTA_DM_PM_RETRY, 7000}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ - } - }, + { + {{BTA_DM_PM_SNIFF, 7000}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */ + {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ + {{BTA_DM_PM_SNIFF3, 7000}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open, active */ + {{BTA_DM_PM_SNIFF, 7000}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close sniff */ + {{BTA_DM_PM_SNIFF, 7000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ + {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ + {{BTA_DM_PM_RETRY, 7000}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ + } + }, - /* AVK : 12 */ - { - (BTA_DM_PM_SNIFF), /* allow sniff */ + /* AVK : 12 */ + { + (BTA_DM_PM_SNIFF), /* allow sniff */ #if (BTM_SSR_INCLUDED == TRUE) - (BTA_DM_PM_SSR2), /* the SSR entry */ + (BTA_DM_PM_SSR2), /* the SSR entry */ #endif - { - {{BTA_DM_PM_SNIFF, 3000}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */ - {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */ - {{BTA_DM_PM_SNIFF4, 3000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ - {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ - } - } + { + {{BTA_DM_PM_SNIFF, 3000}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */ + {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */ + {{BTA_DM_PM_SNIFF4, 3000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ + {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ + } + } #if BLE_INCLUDED == TRUE /* GATTC : 13 */ - ,{ - (BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */ + , { + (BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */ #if (BTM_SSR_INCLUDED == TRUE) - (BTA_DM_PM_SSR2), /* the SSR entry */ + (BTA_DM_PM_SSR2), /* the SSR entry */ #endif - { - {{BTA_DM_PM_SNIFF_A2DP_IDX, 10000}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */ - {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ - {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */ - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */ - {{BTA_DM_PM_SNIFF_A2DP_IDX, 10000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ - {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ + { + {{BTA_DM_PM_SNIFF_A2DP_IDX, 10000}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */ + {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ + {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */ + {{BTA_DM_PM_SNIFF_A2DP_IDX, 10000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ + {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ #if defined(AMP_INCLUDED) && (AMP_INCLUDED == TRUE) - {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* amp */ + {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* amp */ #endif - {{BTA_DM_PM_RETRY, 5000}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ - } - } + {{BTA_DM_PM_RETRY, 5000}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ + } + } /* GATTS : 14 */ - ,{ - (BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */ + , { + (BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */ #if (BTM_SSR_INCLUDED == TRUE) - (BTA_DM_PM_SSR2), /* the SSR entry */ + (BTA_DM_PM_SSR2), /* the SSR entry */ #endif - { - {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */ - {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ - {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ - {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ - {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */ - {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */ - {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ - {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ + { + {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */ + {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */ + {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */ + {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */ + {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */ + {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */ + {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */ + {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */ #if defined(AMP_INCLUDED) && (AMP_INCLUDED == TRUE) - {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* amp */ + {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* amp */ #endif - {{BTA_DM_PM_RETRY, 5000}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ - } - } + {{BTA_DM_PM_RETRY, 5000}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */ + } + } #endif #ifdef BTE_SIM_APP /* For Insight builds only */ - /* Entries at the end of the pm_spec table are user-defined (runtime configurable), - for power consumption experiments. - Insight finds the first user-defined entry by looking for the first BTA_DM_PM_NO_PREF. - The number of user_defined specs is defined by BTA_SWRAP_UD_PM_SPEC_COUNT */ - , - {BTA_DM_PM_NO_PREF}, /* pm_spec USER_DEFINED_0 */ - {BTA_DM_PM_NO_PREF} /* pm_spec USER_DEFINED_1 */ + /* Entries at the end of the pm_spec table are user-defined (runtime configurable), + for power consumption experiments. + Insight finds the first user-defined entry by looking for the first BTA_DM_PM_NO_PREF. + The number of user_defined specs is defined by BTA_SWRAP_UD_PM_SPEC_COUNT */ + , + {BTA_DM_PM_NO_PREF}, /* pm_spec USER_DEFINED_0 */ + {BTA_DM_PM_NO_PREF} /* pm_spec USER_DEFINED_1 */ #endif /* BTE_SIM_APP */ }; @@ -476,38 +472,37 @@ tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_SPEC bta_dm_pm_spec[BTA_DM_NUM_PM_SPEC] = * If there is a conflict among the connected services the setting with the lowest latency will * be selected. */ -tBTA_DM_PM_TYPE_QUALIFIER tBTM_PM_PWR_MD bta_dm_pm_md[] = -{ -/* - * More sniff parameter entries can be added for - * BTA_DM_PM_SNIFF3 - BTA_DM_PM_SNIFF7, if needed. When entries are added or - * removed, BTA_DM_PM_PARK_IDX needs to be updated to reflect the actual index - * BTA_DM_PM_PARK_IDX is defined in bta_api.h and can be override by the - * bdroid_buildcfg.h settings. - * The SNIFF table entries must be in the order from highest latency (biggest - * interval) to lowest latency. If there's a conflict among the connected - * services, the setting with lowest latency wins. - */ -/* sniff modes: max interval, min interval, attempt, timeout */ - {BTA_DM_PM_SNIFF_MAX, BTA_DM_PM_SNIFF_MIN, BTA_DM_PM_SNIFF_ATTEMPT, BTA_DM_PM_SNIFF_TIMEOUT, BTM_PM_MD_SNIFF}, /* for BTA_DM_PM_SNIFF - A2DP */ - {BTA_DM_PM_SNIFF1_MAX, BTA_DM_PM_SNIFF1_MIN, BTA_DM_PM_SNIFF1_ATTEMPT, BTA_DM_PM_SNIFF1_TIMEOUT, BTM_PM_MD_SNIFF}, /* for BTA_DM_PM_SNIFF1 */ - {BTA_DM_PM_SNIFF2_MAX, BTA_DM_PM_SNIFF2_MIN, BTA_DM_PM_SNIFF2_ATTEMPT, BTA_DM_PM_SNIFF2_TIMEOUT, BTM_PM_MD_SNIFF}, /* for BTA_DM_PM_SNIFF2- HD idle */ - {BTA_DM_PM_SNIFF3_MAX, BTA_DM_PM_SNIFF3_MIN, BTA_DM_PM_SNIFF3_ATTEMPT, BTA_DM_PM_SNIFF3_TIMEOUT, BTM_PM_MD_SNIFF}, /* for BTA_DM_PM_SNIFF3- SCO open */ - {BTA_DM_PM_SNIFF4_MAX, BTA_DM_PM_SNIFF4_MIN, BTA_DM_PM_SNIFF4_ATTEMPT, BTA_DM_PM_SNIFF4_TIMEOUT, BTM_PM_MD_SNIFF}, /* for BTA_DM_PM_SNIFF4- HD active */ - {BTA_DM_PM_SNIFF5_MAX, BTA_DM_PM_SNIFF5_MIN, BTA_DM_PM_SNIFF5_ATTEMPT, BTA_DM_PM_SNIFF5_TIMEOUT, BTM_PM_MD_SNIFF}, /* for BTA_DM_PM_SNIFF5- HD active */ - {BTA_DM_PM_PARK_MAX, BTA_DM_PM_PARK_MIN, BTA_DM_PM_PARK_ATTEMPT, BTA_DM_PM_PARK_TIMEOUT, BTM_PM_MD_PARK} +tBTA_DM_PM_TYPE_QUALIFIER tBTM_PM_PWR_MD bta_dm_pm_md[] = { + /* + * More sniff parameter entries can be added for + * BTA_DM_PM_SNIFF3 - BTA_DM_PM_SNIFF7, if needed. When entries are added or + * removed, BTA_DM_PM_PARK_IDX needs to be updated to reflect the actual index + * BTA_DM_PM_PARK_IDX is defined in bta_api.h and can be override by the + * bdroid_buildcfg.h settings. + * The SNIFF table entries must be in the order from highest latency (biggest + * interval) to lowest latency. If there's a conflict among the connected + * services, the setting with lowest latency wins. + */ + /* sniff modes: max interval, min interval, attempt, timeout */ + {BTA_DM_PM_SNIFF_MAX, BTA_DM_PM_SNIFF_MIN, BTA_DM_PM_SNIFF_ATTEMPT, BTA_DM_PM_SNIFF_TIMEOUT, BTM_PM_MD_SNIFF}, /* for BTA_DM_PM_SNIFF - A2DP */ + {BTA_DM_PM_SNIFF1_MAX, BTA_DM_PM_SNIFF1_MIN, BTA_DM_PM_SNIFF1_ATTEMPT, BTA_DM_PM_SNIFF1_TIMEOUT, BTM_PM_MD_SNIFF}, /* for BTA_DM_PM_SNIFF1 */ + {BTA_DM_PM_SNIFF2_MAX, BTA_DM_PM_SNIFF2_MIN, BTA_DM_PM_SNIFF2_ATTEMPT, BTA_DM_PM_SNIFF2_TIMEOUT, BTM_PM_MD_SNIFF}, /* for BTA_DM_PM_SNIFF2- HD idle */ + {BTA_DM_PM_SNIFF3_MAX, BTA_DM_PM_SNIFF3_MIN, BTA_DM_PM_SNIFF3_ATTEMPT, BTA_DM_PM_SNIFF3_TIMEOUT, BTM_PM_MD_SNIFF}, /* for BTA_DM_PM_SNIFF3- SCO open */ + {BTA_DM_PM_SNIFF4_MAX, BTA_DM_PM_SNIFF4_MIN, BTA_DM_PM_SNIFF4_ATTEMPT, BTA_DM_PM_SNIFF4_TIMEOUT, BTM_PM_MD_SNIFF}, /* for BTA_DM_PM_SNIFF4- HD active */ + {BTA_DM_PM_SNIFF5_MAX, BTA_DM_PM_SNIFF5_MIN, BTA_DM_PM_SNIFF5_ATTEMPT, BTA_DM_PM_SNIFF5_TIMEOUT, BTM_PM_MD_SNIFF}, /* for BTA_DM_PM_SNIFF5- HD active */ + {BTA_DM_PM_PARK_MAX, BTA_DM_PM_PARK_MIN, BTA_DM_PM_PARK_ATTEMPT, BTA_DM_PM_PARK_TIMEOUT, BTM_PM_MD_PARK} #ifdef BTE_SIM_APP /* For Insight builds only */ - /* Entries at the end of the bta_dm_pm_md table are user-defined (runtime configurable), - for power consumption experiments. - Insight finds the first user-defined entry by looking for the first 'max=0'. - The number of user_defined specs is defined by BTA_SWRAP_UD_PM_DM_COUNT */ - , - {0}, /* CONN_OPEN/SCO_CLOSE power mode settings for pm_spec USER_DEFINED_0 */ - {0}, /* SCO_OPEN power mode settings for pm_spec USER_DEFINED_0 */ + /* Entries at the end of the bta_dm_pm_md table are user-defined (runtime configurable), + for power consumption experiments. + Insight finds the first user-defined entry by looking for the first 'max=0'. + The number of user_defined specs is defined by BTA_SWRAP_UD_PM_DM_COUNT */ + , + {0}, /* CONN_OPEN/SCO_CLOSE power mode settings for pm_spec USER_DEFINED_0 */ + {0}, /* SCO_OPEN power mode settings for pm_spec USER_DEFINED_0 */ - {0}, /* CONN_OPEN/SCO_CLOSE power mode settings for pm_spec USER_DEFINED_1 */ - {0} /* SCO_OPEN power mode settings for pm_spec USER_DEFINED_1 */ + {0}, /* CONN_OPEN/SCO_CLOSE power mode settings for pm_spec USER_DEFINED_1 */ + {0} /* SCO_OPEN power mode settings for pm_spec USER_DEFINED_1 */ #endif /* BTE_SIM_APP */ }; @@ -515,8 +510,7 @@ tBTA_DM_PM_TYPE_QUALIFIER tBTM_PM_PWR_MD bta_dm_pm_md[] = /* the smaller of the SSR max latency wins. * the entries in this table must be from highest latency (biggest interval) to lowest latency */ #if (BTM_SSR_INCLUDED == TRUE) -tBTA_DM_SSR_SPEC bta_dm_ssr_spec[] = -{ +tBTA_DM_SSR_SPEC bta_dm_ssr_spec[] = { /*max_lat, min_rmt_to, min_loc_to*/ {0, 0, 0}, /* BTA_DM_PM_SSR0 - do not use SSR */ {0, 0, 2}, /* BTA_DM_PM_SSR1 - HH, can NOT share entry with any other profile, @@ -526,12 +520,12 @@ tBTA_DM_SSR_SPEC bta_dm_ssr_spec[] = {360, 160, 2} /* BTA_DM_PM_SSR3 - HD */ }; -tBTA_DM_SSR_SPEC *p_bta_dm_ssr_spec = (tBTA_DM_SSR_SPEC *)&bta_dm_ssr_spec; +tBTA_DM_SSR_SPEC *p_bta_dm_ssr_spec = (tBTA_DM_SSR_SPEC *) &bta_dm_ssr_spec; #endif -tBTA_DM_PM_CFG *p_bta_dm_pm_cfg = (tBTA_DM_PM_CFG *)&bta_dm_pm_cfg; -tBTA_DM_PM_SPEC *p_bta_dm_pm_spec = (tBTA_DM_PM_SPEC *)&bta_dm_pm_spec; -tBTM_PM_PWR_MD *p_bta_dm_pm_md = (tBTM_PM_PWR_MD *)&bta_dm_pm_md; +tBTA_DM_PM_CFG *p_bta_dm_pm_cfg = (tBTA_DM_PM_CFG *) &bta_dm_pm_cfg; +tBTA_DM_PM_SPEC *p_bta_dm_pm_spec = (tBTA_DM_PM_SPEC *) &bta_dm_pm_spec; +tBTM_PM_PWR_MD *p_bta_dm_pm_md = (tBTM_PM_PWR_MD *) &bta_dm_pm_md; /* The performance impact of EIR packet size ** @@ -552,20 +546,19 @@ tBTM_PM_PWR_MD *p_bta_dm_pm_md = (tBTM_PM_PWR_MD *)&bta_dm_pm_md; */ #if (BTA_EIR_CANNED_UUID_LIST == TRUE) - /* for example */ +/* for example */ const UINT8 bta_dm_eir_uuid16_list[] = { 0x08, 0x11, /* Headset */ 0x1E, 0x11, /* Handsfree */ 0x0E, 0x11, /* AV Remote Control */ 0x0B, 0x11, /* Audio Sink */ -}; + }; #endif // BTA_EIR_CANNED_UUID_LIST /* Extended Inquiry Response */ -const tBTA_DM_EIR_CONF bta_dm_eir_cfg = -{ +const tBTA_DM_EIR_CONF bta_dm_eir_cfg = { 50, /* minimum length of local name when it is shortened */ - /* if length of local name is longer than this and EIR has not enough */ - /* room for all UUID list then local name is shortened to this length */ + /* if length of local name is longer than this and EIR has not enough */ + /* room for all UUID list then local name is shortened to this length */ #if (BTA_EIR_CANNED_UUID_LIST == TRUE) 8, (UINT8 *)bta_dm_eir_uuid16_list, @@ -584,4 +577,4 @@ const tBTA_DM_EIR_CONF bta_dm_eir_cfg = 0, /* length of additional data in bytes */ NULL /* additional data */ }; -tBTA_DM_EIR_CONF *p_bta_dm_eir_cfg = (tBTA_DM_EIR_CONF*)&bta_dm_eir_cfg; +tBTA_DM_EIR_CONF *p_bta_dm_eir_cfg = (tBTA_DM_EIR_CONF *) &bta_dm_eir_cfg; diff --git a/components/bt/bluedroid/bta/dm/bta_dm_ci.c b/components/bt/bluedroid/bta/dm/bta_dm_ci.c old mode 100755 new mode 100644 index 11ef0b2a2f..fe4c39b7b0 --- a/components/bt/bluedroid/bta/dm/bta_dm_ci.c +++ b/components/bt/bluedroid/bta/dm/bta_dm_ci.c @@ -43,13 +43,12 @@ ** *******************************************************************************/ void bta_dm_ci_io_req(BD_ADDR bd_addr, tBTA_IO_CAP io_cap, tBTA_OOB_DATA oob_data, - tBTA_AUTH_REQ auth_req) + tBTA_AUTH_REQ auth_req) { tBTA_DM_CI_IO_REQ *p_msg; - if ((p_msg = (tBTA_DM_CI_IO_REQ *) GKI_getbuf(sizeof(tBTA_DM_CI_IO_REQ))) != NULL) - { + if ((p_msg = (tBTA_DM_CI_IO_REQ *) GKI_getbuf(sizeof(tBTA_DM_CI_IO_REQ))) != NULL) { p_msg->hdr.event = BTA_DM_CI_IO_REQ_EVT; bdcpy(p_msg->bd_addr, bd_addr); p_msg->io_cap = io_cap; @@ -74,8 +73,7 @@ void bta_dm_ci_rmt_oob(BOOLEAN accept, BD_ADDR bd_addr, BT_OCTET16 c, BT_OCTET16 { tBTA_DM_CI_RMT_OOB *p_msg; - if ((p_msg = (tBTA_DM_CI_RMT_OOB *) GKI_getbuf(sizeof(tBTA_DM_CI_RMT_OOB))) != NULL) - { + if ((p_msg = (tBTA_DM_CI_RMT_OOB *) GKI_getbuf(sizeof(tBTA_DM_CI_RMT_OOB))) != NULL) { p_msg->hdr.event = BTA_DM_CI_RMT_OOB_EVT; bdcpy(p_msg->bd_addr, bd_addr); p_msg->accept = accept; @@ -106,8 +104,7 @@ void bta_dm_sco_ci_data_ready(UINT16 event, UINT16 sco_handle) { BT_HDR *p_buf; - if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) - { + if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) { p_buf->event = event; p_buf->layer_specific = sco_handle; diff --git a/components/bt/bluedroid/bta/dm/bta_dm_int.h b/components/bt/bluedroid/bta/dm/bta_dm_int.h old mode 100755 new mode 100644 index e098353c6a..80e0bea477 --- a/components/bt/bluedroid/bta/dm/bta_dm_int.h +++ b/components/bt/bluedroid/bta/dm/bta_dm_int.h @@ -27,7 +27,7 @@ #include "bt_target.h" #if (BLE_INCLUDED == TRUE && (defined BTA_GATT_INCLUDED) && (BTA_GATT_INCLUDED == TRUE)) - #include "bta_gatt_api.h" +#include "bta_gatt_api.h" #endif @@ -47,8 +47,7 @@ #define BTA_SERVICE_ID_TO_SERVICE_MASK(id) (1 << (id)) /* DM events */ -enum -{ +enum { /* device manager local device API events */ BTA_DM_API_ENABLE_EVT = BTA_SYS_EVT_START(BTA_ID_DM), BTA_DM_API_DISABLE_EVT, @@ -90,15 +89,15 @@ enum BTA_DM_API_BLE_CONN_PARAM_EVT, BTA_DM_API_BLE_CONN_SCAN_PARAM_EVT, BTA_DM_API_BLE_SCAN_PARAM_EVT, - /*******This event added by Yulong at 2016/10/25 to + /*******This event added by Yulong at 2016/10/25 to support the scan filter setting for the APP******/ BTA_DM_API_BLE_SCAN_FIL_PARAM_EVT, BTA_DM_API_BLE_OBSERVE_EVT, BTA_DM_API_UPDATE_CONN_PARAM_EVT, - /*******This event added by Yulong at 2016/9/9 to + /*******This event added by Yulong at 2016/9/9 to support the random address setting for the APP******/ BTA_DM_API_SET_RAND_ADDR_EVT, - /*******This event added by Yulong at 2016/10/19 to + /*******This event added by Yulong at 2016/10/19 to support stop the ble advertising setting by the APP******/ BTA_DM_API_BLE_STOP_ADV_EVT, #if BLE_PRIVACY_SPT == TRUE @@ -106,7 +105,7 @@ enum #endif BTA_DM_API_BLE_ADV_PARAM_EVT, - /*******This event added by Yulong at 2016/10/20 to + /*******This event added by Yulong at 2016/10/20 to support setting the ble advertising param by the APP******/ BTA_DM_API_BLE_ADV_PARAM_All_EVT, BTA_DM_API_BLE_SET_ADV_CONFIG_EVT, @@ -142,8 +141,7 @@ enum /* DM search events */ -enum -{ +enum { /* DM search API events */ BTA_DM_API_SEARCH_EVT = BTA_SYS_EVT_START(BTA_ID_DM_SEARCH), BTA_DM_API_SEARCH_CANCEL_EVT, @@ -159,22 +157,19 @@ enum }; /* data type for BTA_DM_API_ENABLE_EVT */ -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_DM_SEC_CBACK *p_sec_cback; } tBTA_DM_API_ENABLE; /* data type for BTA_DM_API_SET_NAME_EVT */ -typedef struct -{ +typedef struct { BT_HDR hdr; BD_NAME name; /* max 248 bytes name, plus must be Null terminated */ } tBTA_DM_API_SET_NAME; /* data type for BTA_DM_API_SET_VISIBILITY_EVT */ -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_DM_DISC disc_mode; tBTA_DM_CONN conn_mode; @@ -182,8 +177,7 @@ typedef struct UINT8 conn_paired_only; } tBTA_DM_API_SET_VISIBILITY; -enum -{ +enum { BTA_DM_RS_NONE, /* straight API call */ BTA_DM_RS_OK, /* the role switch result - successful */ BTA_DM_RS_FAIL /* the role switch result - failed */ @@ -191,12 +185,11 @@ enum typedef UINT8 tBTA_DM_RS_RES; /* data type for BTA_DM_API_SEARCH_EVT */ -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_DM_INQ inq_params; tBTA_SERVICE_MASK services; - tBTA_DM_SEARCH_CBACK * p_cback; + tBTA_DM_SEARCH_CBACK *p_cback; tBTA_DM_RS_RES rs_res; #if BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE UINT8 num_uuid; @@ -205,12 +198,11 @@ typedef struct } tBTA_DM_API_SEARCH; /* data type for BTA_DM_API_DISCOVER_EVT */ -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR bd_addr; tBTA_SERVICE_MASK services; - tBTA_DM_SEARCH_CBACK * p_cback; + tBTA_DM_SEARCH_CBACK *p_cback; BOOLEAN sdp_search; tBTA_TRANSPORT transport; #if BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE @@ -221,34 +213,30 @@ typedef struct } tBTA_DM_API_DISCOVER; /* data type for BTA_DM_API_DI_DISC_EVT */ -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR bd_addr; tBTA_DISCOVERY_DB *p_sdp_db; UINT32 len; - tBTA_DM_SEARCH_CBACK * p_cback; -}tBTA_DM_API_DI_DISC; + tBTA_DM_SEARCH_CBACK *p_cback; +} tBTA_DM_API_DI_DISC; /* data type for BTA_DM_API_BOND_EVT */ -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR bd_addr; tBTA_TRANSPORT transport; } tBTA_DM_API_BOND; /* data type for BTA_DM_API_BOND_CANCEL_EVT */ -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR bd_addr; tBTA_TRANSPORT transport; } tBTA_DM_API_BOND_CANCEL; /* data type for BTA_DM_API_PIN_REPLY_EVT */ -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR bd_addr; BOOLEAN accept; @@ -257,22 +245,19 @@ typedef struct } tBTA_DM_API_PIN_REPLY; /* data type for BTA_DM_API_LOC_OOB_EVT */ -typedef struct -{ +typedef struct { BT_HDR hdr; } tBTA_DM_API_LOC_OOB; /* data type for BTA_DM_API_CONFIRM_EVT */ -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR bd_addr; BOOLEAN accept; } tBTA_DM_API_CONFIRM; /* data type for BTA_DM_CI_IO_REQ_EVT */ -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR bd_addr; tBTA_IO_CAP io_cap; @@ -281,8 +266,7 @@ typedef struct } tBTA_DM_CI_IO_REQ; /* data type for BTA_DM_CI_RMT_OOB_EVT */ -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR bd_addr; BT_OCTET16 c; @@ -291,37 +275,32 @@ typedef struct } tBTA_DM_CI_RMT_OOB; /* data type for BTA_DM_REMT_NAME_EVT */ -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_DM_SEARCH result; } tBTA_DM_REM_NAME; /* data type for tBTA_DM_DISC_RESULT */ -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_DM_SEARCH result; } tBTA_DM_DISC_RESULT; /* data type for BTA_DM_INQUIRY_CMPL_EVT */ -typedef struct -{ +typedef struct { BT_HDR hdr; UINT8 num; } tBTA_DM_INQUIRY_CMPL; /* data type for BTA_DM_SDP_RESULT_EVT */ -typedef struct -{ +typedef struct { BT_HDR hdr; UINT16 sdp_result; } tBTA_DM_SDP_RESULT; /* data type for BTA_DM_ACL_CHANGE_EVT */ -typedef struct -{ +typedef struct { BT_HDR hdr; tBTM_BL_EVENT event; UINT8 busy_level; @@ -337,8 +316,7 @@ typedef struct } tBTA_DM_ACL_CHANGE; /* data type for BTA_DM_PM_BTM_STATUS_EVT */ -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR bd_addr; @@ -349,8 +327,7 @@ typedef struct } tBTA_DM_PM_BTM_STATUS; /* data type for BTA_DM_PM_TIMER_EVT */ -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR bd_addr; tBTA_DM_PM_ACTION pm_request; @@ -358,8 +335,7 @@ typedef struct /* data type for BTA_DM_API_ADD_DEVICE_EVT */ -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR bd_addr; DEV_CLASS dc; @@ -376,23 +352,20 @@ typedef struct } tBTA_DM_API_ADD_DEVICE; /* data type for BTA_DM_API_REMOVE_ACL_EVT */ -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR bd_addr; } tBTA_DM_API_REMOVE_DEVICE; /* data type for BTA_DM_API_EXECUTE_CBACK_EVT */ -typedef struct -{ +typedef struct { BT_HDR hdr; - void * p_param; + void *p_param; tBTA_DM_EXEC_CBACK *p_exec_cback; } tBTA_DM_API_EXECUTE_CBACK; /* data type for tBTA_DM_API_SET_ENCRYPTION */ -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_TRANSPORT transport; tBTA_DM_ENCRYPT_CBACK *p_callback; @@ -401,50 +374,44 @@ typedef struct } tBTA_DM_API_SET_ENCRYPTION; #if BLE_INCLUDED == TRUE -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR bd_addr; tBTA_LE_KEY_VALUE blekey; tBTA_LE_KEY_TYPE key_type; -}tBTA_DM_API_ADD_BLEKEY; +} tBTA_DM_API_ADD_BLEKEY; -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR bd_addr; tBT_DEVICE_TYPE dev_type ; tBLE_ADDR_TYPE addr_type; -}tBTA_DM_API_ADD_BLE_DEVICE; +} tBTA_DM_API_ADD_BLE_DEVICE; -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR bd_addr; BOOLEAN accept; UINT32 passkey; -}tBTA_DM_API_PASSKEY_REPLY; +} tBTA_DM_API_PASSKEY_REPLY; -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR bd_addr; tBTA_DM_BLE_SEC_GRANT res; -}tBTA_DM_API_BLE_SEC_GRANT; +} tBTA_DM_API_BLE_SEC_GRANT; -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_DM_BLE_CONN_TYPE bg_conn_type; tBTA_DM_BLE_SEL_CBACK *p_select_cback; -}tBTA_DM_API_BLE_SET_BG_CONN_TYPE; +} tBTA_DM_API_BLE_SET_BG_CONN_TYPE; /* set prefered BLE connection parameters for a device */ -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR peer_bda; UINT16 conn_int_min; @@ -452,150 +419,133 @@ typedef struct UINT16 supervision_tout; UINT16 slave_latency; -}tBTA_DM_API_BLE_CONN_PARAMS; +} tBTA_DM_API_BLE_CONN_PARAMS; -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR peer_bda; BOOLEAN privacy_enable; -}tBTA_DM_API_ENABLE_PRIVACY; +} tBTA_DM_API_ENABLE_PRIVACY; -typedef struct -{ +typedef struct { BT_HDR hdr; BOOLEAN privacy_enable; -}tBTA_DM_API_LOCAL_PRIVACY; +} tBTA_DM_API_LOCAL_PRIVACY; /* set scan parameter for BLE connections */ -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_GATTC_IF client_if; UINT32 scan_int; UINT32 scan_window; tBLE_SCAN_MODE scan_mode; tBLE_SCAN_PARAM_SETUP_CBACK scan_param_setup_cback; -}tBTA_DM_API_BLE_SCAN_PARAMS; +} tBTA_DM_API_BLE_SCAN_PARAMS; -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_GATTC_IF client_if; UINT32 scan_int; UINT32 scan_window; tBLE_SCAN_MODE scan_mode; - UINT8 addr_type_own; - UINT8 scan_filter_policy; + UINT8 addr_type_own; + UINT8 scan_filter_policy; tBLE_SCAN_PARAM_SETUP_CBACK scan_param_setup_cback; -}tBTA_DM_API_BLE_SCAN_FILTER_PARAMS; +} tBTA_DM_API_BLE_SCAN_FILTER_PARAMS; /* set scan parameter for BLE connections */ -typedef struct -{ +typedef struct { BT_HDR hdr; UINT16 scan_int; UINT16 scan_window; } tBTA_DM_API_BLE_CONN_SCAN_PARAMS; /* Data type for start/stop observe */ -typedef struct -{ +typedef struct { BT_HDR hdr; BOOLEAN start; UINT16 duration; - tBTA_DM_SEARCH_CBACK * p_cback; -}tBTA_DM_API_BLE_OBSERVE; + tBTA_DM_SEARCH_CBACK *p_cback; +} tBTA_DM_API_BLE_OBSERVE; -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR remote_bda; UINT16 tx_data_length; -}tBTA_DM_API_BLE_SET_DATA_LENGTH; +} tBTA_DM_API_BLE_SET_DATA_LENGTH; /* set the address for BLE device this type added by Yulong at 2016/9/9*/ -typedef struct -{ - BT_HDR hdr; - tBLE_ADDR_TYPE addr_type; - BD_ADDR address; -}tBTA_DM_APT_SET_DEV_ADDR; +typedef struct { + BT_HDR hdr; + tBLE_ADDR_TYPE addr_type; + BD_ADDR address; +} tBTA_DM_APT_SET_DEV_ADDR; /* set adv parameter for BLE advertising */ -typedef struct -{ +typedef struct { BT_HDR hdr; UINT16 adv_int_min; UINT16 adv_int_max; tBLE_BD_ADDR *p_dir_bda; -}tBTA_DM_API_BLE_ADV_PARAMS; +} tBTA_DM_API_BLE_ADV_PARAMS; /* set adv parameter for BLE advertising */ -typedef struct -{ +typedef struct { BT_HDR hdr; UINT16 adv_int_min; UINT16 adv_int_max; - UINT8 adv_type; - tBLE_ADDR_TYPE addr_type_own; - tBTM_BLE_ADV_CHNL_MAP channel_map; - tBTM_BLE_AFP adv_filter_policy; + UINT8 adv_type; + tBLE_ADDR_TYPE addr_type_own; + tBTM_BLE_ADV_CHNL_MAP channel_map; + tBTM_BLE_AFP adv_filter_policy; tBLE_BD_ADDR *p_dir_bda; -}tBTA_DM_API_BLE_ADV_PARAMS_ALL; +} tBTA_DM_API_BLE_ADV_PARAMS_ALL; -typedef struct -{ +typedef struct { BT_HDR hdr; BOOLEAN enable; -}tBTA_DM_API_BLE_FEATURE; +} tBTA_DM_API_BLE_FEATURE; /* multi adv data structure */ -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_BLE_MULTI_ADV_CBACK *p_cback; void *p_ref; tBTA_BLE_ADV_PARAMS *p_params; -}tBTA_DM_API_BLE_MULTI_ADV_ENB; +} tBTA_DM_API_BLE_MULTI_ADV_ENB; -typedef struct -{ +typedef struct { BT_HDR hdr; UINT8 inst_id; tBTA_BLE_ADV_PARAMS *p_params; -}tBTA_DM_API_BLE_MULTI_ADV_PARAM; +} tBTA_DM_API_BLE_MULTI_ADV_PARAM; -typedef struct -{ +typedef struct { BT_HDR hdr; UINT8 inst_id; BOOLEAN is_scan_rsp; tBTA_BLE_AD_MASK data_mask; tBTA_BLE_ADV_DATA *p_data; -}tBTA_DM_API_BLE_MULTI_ADV_DATA; +} tBTA_DM_API_BLE_MULTI_ADV_DATA; -typedef struct -{ +typedef struct { BT_HDR hdr; UINT8 inst_id; -}tBTA_DM_API_BLE_MULTI_ADV_DISABLE; +} tBTA_DM_API_BLE_MULTI_ADV_DISABLE; -typedef struct -{ +typedef struct { BT_HDR hdr; UINT32 data_mask; tBTA_BLE_ADV_DATA *p_adv_cfg; tBTA_SET_ADV_DATA_CMPL_CBACK *p_adv_data_cback; -}tBTA_DM_API_SET_ADV_CONFIG; +} tBTA_DM_API_SET_ADV_CONFIG; -typedef struct -{ +typedef struct { BT_HDR hdr; UINT8 batch_scan_full_max; UINT8 batch_scan_trunc_max; @@ -606,8 +556,7 @@ typedef struct tBTA_DM_BLE_REF_VALUE ref_value; } tBTA_DM_API_SET_STORAGE_CONFIG; -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_BLE_BATCH_SCAN_MODE scan_mode; UINT32 scan_int; @@ -617,28 +566,24 @@ typedef struct tBTA_DM_BLE_REF_VALUE ref_value; } tBTA_DM_API_ENABLE_SCAN; -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_DM_BLE_REF_VALUE ref_value; } tBTA_DM_API_DISABLE_SCAN; -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_BLE_BATCH_SCAN_MODE scan_type; tBTA_DM_BLE_REF_VALUE ref_value; } tBTA_DM_API_READ_SCAN_REPORTS; -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_DM_BLE_REF_VALUE ref_value; tBTA_BLE_TRACK_ADV_CBACK *p_track_adv_cback; } tBTA_DM_API_TRACK_ADVERTISER; -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_BLE_ENERGY_INFO_CBACK *p_energy_info_cback; } tBTA_DM_API_ENERGY_INFO; @@ -646,35 +591,31 @@ typedef struct #endif /* BLE_INCLUDED */ /* data type for BTA_DM_API_REMOVE_ACL_EVT */ -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR bd_addr; BOOLEAN remove_dev; tBTA_TRANSPORT transport; -}tBTA_DM_API_REMOVE_ACL; +} tBTA_DM_API_REMOVE_ACL; /* data type for BTA_DM_API_REMOVE_ALL_ACL_EVT */ -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_DM_LINK_TYPE link_type; } tBTA_DM_API_REMOVE_ALL_ACL; -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR bd_addr; UINT16 min_int; UINT16 max_int; UINT16 latency; UINT16 timeout; -}tBTA_DM_API_UPDATE_CONN_PARAM; +} tBTA_DM_API_UPDATE_CONN_PARAM; #if BLE_ANDROID_CONTROLLER_SCAN_FILTER == TRUE -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_DM_BLE_SCAN_COND_OP action; tBTA_DM_BLE_PF_COND_TYPE cond_type; @@ -682,18 +623,16 @@ typedef struct tBTA_DM_BLE_PF_COND_PARAM *p_cond_param; tBTA_DM_BLE_PF_CFG_CBACK *p_filt_cfg_cback; tBTA_DM_BLE_REF_VALUE ref_value; -}tBTA_DM_API_CFG_FILTER_COND; +} tBTA_DM_API_CFG_FILTER_COND; -typedef struct -{ +typedef struct { BT_HDR hdr; UINT8 action; tBTA_DM_BLE_PF_STATUS_CBACK *p_filt_status_cback; tBTA_DM_BLE_REF_VALUE ref_value; -}tBTA_DM_API_ENABLE_SCAN_FILTER; +} tBTA_DM_API_ENABLE_SCAN_FILTER; -typedef struct -{ +typedef struct { BT_HDR hdr; UINT8 action; tBTA_DM_BLE_PF_FILT_INDEX filt_index; @@ -701,12 +640,11 @@ typedef struct tBLE_BD_ADDR *p_target; tBTA_DM_BLE_PF_PARAM_CBACK *p_filt_param_cback; tBTA_DM_BLE_REF_VALUE ref_value; -}tBTA_DM_API_SCAN_FILTER_PARAM_SETUP; +} tBTA_DM_API_SCAN_FILTER_PARAM_SETUP; #endif /* union of all data types */ -typedef union -{ +typedef union { /* GKI event buffer header */ BT_HDR hdr; tBTA_DM_API_ENABLE enable; @@ -763,12 +701,12 @@ typedef union tBTA_DM_API_BLE_CONN_PARAMS ble_set_conn_params; tBTA_DM_API_BLE_CONN_SCAN_PARAMS ble_set_conn_scan_params; tBTA_DM_API_BLE_SCAN_PARAMS ble_set_scan_params; - tBTA_DM_API_BLE_SCAN_FILTER_PARAMS ble_set_scan_fil_params; + tBTA_DM_API_BLE_SCAN_FILTER_PARAMS ble_set_scan_fil_params; tBTA_DM_API_BLE_OBSERVE ble_observe; tBTA_DM_API_ENABLE_PRIVACY ble_remote_privacy; tBTA_DM_API_LOCAL_PRIVACY ble_local_privacy; tBTA_DM_API_BLE_ADV_PARAMS ble_set_adv_params; - tBTA_DM_API_BLE_ADV_PARAMS_ALL ble_set_adv_params_all; + tBTA_DM_API_BLE_ADV_PARAMS_ALL ble_set_adv_params_all; tBTA_DM_API_SET_ADV_CONFIG ble_set_adv_data; #if BLE_ANDROID_CONTROLLER_SCAN_FILTER == TRUE tBTA_DM_API_SCAN_FILTER_PARAM_SETUP ble_scan_filt_param_setup; @@ -777,7 +715,7 @@ typedef union #endif tBTA_DM_API_UPDATE_CONN_PARAM ble_update_conn_params; tBTA_DM_API_BLE_SET_DATA_LENGTH ble_set_data_length; - tBTA_DM_APT_SET_DEV_ADDR set_addr; + tBTA_DM_APT_SET_DEV_ADDR set_addr; tBTA_DM_API_BLE_MULTI_ADV_ENB ble_multi_adv_enb; tBTA_DM_API_BLE_MULTI_ADV_PARAM ble_multi_adv_param; tBTA_DM_API_BLE_MULTI_ADV_DATA ble_multi_adv_data; @@ -819,8 +757,7 @@ typedef UINT8 tBTA_DM_DEV_INFO; #define BTA_DM_PM_EXECUTE 3 typedef UINT8 tBTA_DM_PM_REQ; -typedef struct -{ +typedef struct { BD_ADDR peer_bdaddr; UINT16 link_policy; tBTA_DM_CONN_STATE conn_state; @@ -844,8 +781,7 @@ typedef struct /* structure to store list of active connections */ -typedef struct -{ +typedef struct { tBTA_DM_PEER_DEVICE peer_device[BTA_DM_NUM_PEER_DEVICE]; UINT8 count; #if BLE_INCLUDED == TRUE @@ -854,8 +790,7 @@ typedef struct } tBTA_DM_ACTIVE_LINK; -typedef struct -{ +typedef struct { BD_ADDR peer_bdaddr; tBTA_SYS_ID id; UINT8 app_id; @@ -868,16 +803,14 @@ typedef struct #define BTA_DM_NUM_CONN_SRVS 10 #endif -typedef struct -{ +typedef struct { UINT8 count; tBTA_DM_SRVCS conn_srvc[BTA_DM_NUM_CONN_SRVS]; } tBTA_DM_CONNECTED_SRVCS; -typedef struct -{ +typedef struct { #define BTA_DM_PM_SNIFF_TIMER_IDX 0 #define BTA_DM_PM_PARK_TIMER_IDX 1 #define BTA_DM_PM_SUSPEND_TIMER_IDX 2 @@ -901,8 +834,7 @@ extern tBTA_DM_CONNECTED_SRVCS bta_dm_conn_srvcs; #define BTA_DM_NUM_PM_TIMER 7 /* DM control block */ -typedef struct -{ +typedef struct { BOOLEAN is_bta_dm_active; tBTA_DM_ACTIVE_LINK device_list; tBTA_DM_SEC_CBACK *p_sec_cback; @@ -961,22 +893,21 @@ typedef struct #endif /* DM search control block */ -typedef struct -{ +typedef struct { - tBTA_DM_SEARCH_CBACK * p_search_cback; - tBTM_INQ_INFO * p_btm_inq_info; + tBTA_DM_SEARCH_CBACK *p_search_cback; + tBTM_INQ_INFO *p_btm_inq_info; tBTA_SERVICE_MASK services; tBTA_SERVICE_MASK services_to_search; tBTA_SERVICE_MASK services_found; - tSDP_DISCOVERY_DB * p_sdp_db; + tSDP_DISCOVERY_DB *p_sdp_db; UINT16 state; BD_ADDR peer_bdaddr; BOOLEAN name_discover_done; BD_NAME peer_name; TIMER_LIST_ENT search_timer; UINT8 service_index; - tBTA_DM_MSG * p_search_queue; /* search or discover commands during search cancel stored here */ + tBTA_DM_MSG *p_search_queue; /* search or discover commands during search cancel stored here */ BOOLEAN wait_disc; BOOLEAN sdp_results; tSDP_UUID uuid; @@ -985,7 +916,7 @@ typedef struct BOOLEAN cancel_pending; /* inquiry cancel is pending */ tBTA_TRANSPORT transport; #if ((defined BLE_INCLUDED) && (BLE_INCLUDED == TRUE)) - tBTA_DM_SEARCH_CBACK * p_scan_cback; + tBTA_DM_SEARCH_CBACK *p_scan_cback; #if ((defined BTA_GATT_INCLUDED) && (BTA_GATT_INCLUDED == TRUE)) tBTA_GATTC_IF client_if; UINT8 num_uuid; @@ -993,7 +924,7 @@ typedef struct UINT8 uuid_to_search; BOOLEAN gatt_disc_active; UINT16 conn_id; - UINT8 * p_ble_rawdata; + UINT8 *p_ble_rawdata; UINT32 ble_raw_size; UINT32 ble_raw_used; TIMER_LIST_ENT gatt_close_timer; /* GATT channel close delay timer */ @@ -1005,16 +936,14 @@ typedef struct } tBTA_DM_SEARCH_CB; /* DI control block */ -typedef struct -{ - tSDP_DISCOVERY_DB * p_di_db; /* pointer to the DI discovery database */ +typedef struct { + tSDP_DISCOVERY_DB *p_di_db; /* pointer to the DI discovery database */ UINT8 di_num; /* total local DI record number */ UINT32 di_handle[BTA_DI_NUM_MAX]; /* local DI record handle, the first one is primary record */ -}tBTA_DM_DI_CB; +} tBTA_DM_DI_CB; /* DM search state */ -enum -{ +enum { BTA_DM_SEARCH_IDLE, BTA_DM_SEARCH_ACTIVE, @@ -1025,8 +954,7 @@ enum -typedef struct -{ +typedef struct { DEV_CLASS dev_class; /* local device class */ UINT16 policy_settings; /* link policy setting hold, sniff, park, MS switch */ UINT16 page_timeout; /* timeout for page in slots */ @@ -1038,8 +966,7 @@ typedef struct extern const UINT32 bta_service_id_to_btm_srv_id_lkup_tbl[]; -typedef struct -{ +typedef struct { UINT8 id; UINT8 app_id; UINT8 cfg; @@ -1049,48 +976,43 @@ typedef struct extern tBTA_DM_CFG *p_bta_dm_cfg; extern tBTA_DM_RM *p_bta_dm_rm_cfg; -typedef struct -{ +typedef struct { - UINT8 id; - UINT8 app_id; - UINT8 spec_idx; /* index of spec table to use */ + UINT8 id; + UINT8 app_id; + UINT8 spec_idx; /* index of spec table to use */ } tBTA_DM_PM_CFG; -typedef struct -{ +typedef struct { - tBTA_DM_PM_ACTION power_mode; - UINT16 timeout; + tBTA_DM_PM_ACTION power_mode; + UINT16 timeout; } tBTA_DM_PM_ACTN; -typedef struct -{ +typedef struct { - UINT8 allow_mask; /* mask of sniff/hold/park modes to allow */ + UINT8 allow_mask; /* mask of sniff/hold/park modes to allow */ #if (BTM_SSR_INCLUDED == TRUE) - UINT8 ssr; /* set SSR on conn open/unpark */ + UINT8 ssr; /* set SSR on conn open/unpark */ #endif - tBTA_DM_PM_ACTN actn_tbl [BTA_DM_PM_NUM_EVTS][2]; + tBTA_DM_PM_ACTN actn_tbl [BTA_DM_PM_NUM_EVTS][2]; } tBTA_DM_PM_SPEC; -typedef struct -{ +typedef struct { UINT16 max_lat; UINT16 min_rmt_to; UINT16 min_loc_to; } tBTA_DM_SSR_SPEC; -typedef struct -{ - UINT16 manufacturer; - UINT16 lmp_sub_version; - UINT8 lmp_version; -}tBTA_DM_LMP_VER_INFO; +typedef struct { + UINT16 manufacturer; + UINT16 lmp_sub_version; + UINT8 lmp_version; +} tBTA_DM_LMP_VER_INFO; extern tBTA_DM_PM_CFG *p_bta_dm_pm_cfg; extern tBTA_DM_PM_SPEC *p_bta_dm_pm_spec; @@ -1171,7 +1093,7 @@ extern void bta_dm_ble_set_rand_address(tBTA_DM_MSG *p_data); extern void bta_dm_ble_stop_advertising(tBTA_DM_MSG *p_data); extern void bta_dm_ble_config_local_privacy (tBTA_DM_MSG *p_data); extern void bta_dm_ble_set_adv_params (tBTA_DM_MSG *p_data); -extern void bta_dm_ble_set_adv_params_all (tBTA_DM_MSG *p_data); +extern void bta_dm_ble_set_adv_params_all (tBTA_DM_MSG *p_data); extern void bta_dm_ble_set_adv_config (tBTA_DM_MSG *p_data); extern void bta_dm_ble_set_scan_rsp (tBTA_DM_MSG *p_data); extern void bta_dm_ble_broadcast (tBTA_DM_MSG *p_data); @@ -1188,10 +1110,10 @@ extern void bta_dm_ble_multi_adv_upd_param(tBTA_DM_MSG *p_data); extern void bta_dm_ble_multi_adv_enb(tBTA_DM_MSG *p_data); extern void bta_dm_ble_setup_storage(tBTA_DM_MSG *p_data); -extern void bta_dm_ble_enable_batch_scan(tBTA_DM_MSG * p_data); -extern void bta_dm_ble_disable_batch_scan(tBTA_DM_MSG * p_data); -extern void bta_dm_ble_read_scan_reports(tBTA_DM_MSG * p_data); -extern void bta_dm_ble_track_advertiser(tBTA_DM_MSG * p_data); +extern void bta_dm_ble_enable_batch_scan(tBTA_DM_MSG *p_data); +extern void bta_dm_ble_disable_batch_scan(tBTA_DM_MSG *p_data); +extern void bta_dm_ble_read_scan_reports(tBTA_DM_MSG *p_data); +extern void bta_dm_ble_track_advertiser(tBTA_DM_MSG *p_data); extern void bta_dm_ble_get_energy_info(tBTA_DM_MSG *p_data); #endif @@ -1226,7 +1148,7 @@ extern void bta_dm_search_cancel_cmpl (tBTA_DM_MSG *p_data); extern void bta_dm_search_cancel_notify (tBTA_DM_MSG *p_data); extern void bta_dm_search_cancel_transac_cmpl(tBTA_DM_MSG *p_data); extern void bta_dm_disc_rmt_name (tBTA_DM_MSG *p_data); -extern tBTA_DM_PEER_DEVICE * bta_dm_find_peer_device(BD_ADDR peer_addr); +extern tBTA_DM_PEER_DEVICE *bta_dm_find_peer_device(BD_ADDR peer_addr); extern void bta_dm_pm_active(BD_ADDR peer_addr); diff --git a/components/bt/bluedroid/bta/dm/bta_dm_main.c b/components/bt/bluedroid/bta/dm/bta_dm_main.c old mode 100755 new mode 100644 index e896b31f01..ea3f54618f --- a/components/bt/bluedroid/bta/dm/bta_dm_main.c +++ b/components/bt/bluedroid/bta/dm/bta_dm_main.c @@ -44,8 +44,7 @@ tBTA_DM_DI_CB bta_dm_di_cb; typedef void (*tBTA_DM_ACTION)(tBTA_DM_MSG *p_data); /* action function list */ -const tBTA_DM_ACTION bta_dm_action[BTA_DM_MAX_EVT] = -{ +const tBTA_DM_ACTION bta_dm_action[BTA_DM_MAX_EVT] = { /* device manager local device API events */ bta_dm_enable, /* 0 BTA_DM_API_ENABLE_EVT */ @@ -87,15 +86,15 @@ const tBTA_DM_ACTION bta_dm_action[BTA_DM_MAX_EVT] = bta_dm_ble_set_conn_params, /* BTA_DM_API_BLE_CONN_PARAM_EVT */ bta_dm_ble_set_conn_scan_params, /* BTA_DM_API_BLE_CONN_SCAN_PARAM_EVT */ bta_dm_ble_set_scan_params, /* BTA_DM_API_BLE_SCAN_PARAM_EVT */ - bta_dm_ble_set_scan_fil_params, /* BTA_DM_API_BLE_SCAN_FIL_PARAM_EVT */ - bta_dm_ble_observe, /* BTA_DM_API_BLE_OBSERVE_EVT*/ + bta_dm_ble_set_scan_fil_params, /* BTA_DM_API_BLE_SCAN_FIL_PARAM_EVT */ + bta_dm_ble_observe, /* BTA_DM_API_BLE_OBSERVE_EVT*/ bta_dm_ble_update_conn_params, /* BTA_DM_API_UPDATE_CONN_PARAM_EVT */ - /*******This handler function added by Yulong at 2016/9/9 to - support the random address setting for the APP******/ - bta_dm_ble_set_rand_address, /*BTA_DM_API_SET_RAND_ADDR_EVT*/ - /*******This handler function added by Yulong at 2016/10/19 to - support stop the ble advertising setting by the APP******/ - bta_dm_ble_stop_advertising, /*BTA_DM_API_BLE_STOP_ADV_EVT*/ + /*******This handler function added by Yulong at 2016/9/9 to + support the random address setting for the APP******/ + bta_dm_ble_set_rand_address, /*BTA_DM_API_SET_RAND_ADDR_EVT*/ + /*******This handler function added by Yulong at 2016/10/19 to + support stop the ble advertising setting by the APP******/ + bta_dm_ble_stop_advertising, /*BTA_DM_API_BLE_STOP_ADV_EVT*/ #if BLE_PRIVACY_SPT == TRUE bta_dm_ble_config_local_privacy, /* BTA_DM_API_LOCAL_PRIVACY_EVT */ #endif @@ -133,8 +132,7 @@ const tBTA_DM_ACTION bta_dm_action[BTA_DM_MAX_EVT] = /* state machine action enumeration list */ -enum -{ +enum { BTA_DM_API_SEARCH, /* 0 bta_dm_search_start */ BTA_DM_API_SEARCH_CANCEL, /* 1 bta_dm_search_cancel */ BTA_DM_API_DISCOVER, /* 2 bta_dm_discover */ @@ -161,29 +159,28 @@ enum /* action function list */ -const tBTA_DM_ACTION bta_dm_search_action[] = -{ +const tBTA_DM_ACTION bta_dm_search_action[] = { - bta_dm_search_start, /* 0 BTA_DM_API_SEARCH */ - bta_dm_search_cancel, /* 1 BTA_DM_API_SEARCH_CANCEL */ - bta_dm_discover, /* 2 BTA_DM_API_DISCOVER */ - bta_dm_inq_cmpl, /* 3 BTA_DM_INQUIRY_CMPL */ - bta_dm_rmt_name, /* 4 BTA_DM_REMT_NAME */ - bta_dm_sdp_result, /* 5 BTA_DM_SDP_RESULT */ - bta_dm_search_cmpl, /* 6 BTA_DM_SEARCH_CMPL */ - bta_dm_free_sdp_db, /* 7 BTA_DM_FREE_SDP_DB */ - bta_dm_disc_result, /* 8 BTA_DM_DISC_RESULT */ - bta_dm_search_result, /* 9 BTA_DM_SEARCH_RESULT */ - bta_dm_queue_search, /* 10 BTA_DM_QUEUE_SEARCH */ - bta_dm_queue_disc, /* 11 BTA_DM_QUEUE_DISC */ - bta_dm_search_clear_queue, /* 12 BTA_DM_SEARCH_CLEAR_QUEUE */ - bta_dm_search_cancel_cmpl, /* 13 BTA_DM_SEARCH_CANCEL_CMPL */ - bta_dm_search_cancel_notify, /* 14 BTA_DM_SEARCH_CANCEL_NOTIFY */ - bta_dm_search_cancel_transac_cmpl, /* 15 BTA_DM_SEARCH_CANCEL_TRANSAC_CMPL */ - bta_dm_disc_rmt_name, /* 16 BTA_DM_DISC_RMT_NAME */ - bta_dm_di_disc /* 17 BTA_DM_API_DI_DISCOVER */ + bta_dm_search_start, /* 0 BTA_DM_API_SEARCH */ + bta_dm_search_cancel, /* 1 BTA_DM_API_SEARCH_CANCEL */ + bta_dm_discover, /* 2 BTA_DM_API_DISCOVER */ + bta_dm_inq_cmpl, /* 3 BTA_DM_INQUIRY_CMPL */ + bta_dm_rmt_name, /* 4 BTA_DM_REMT_NAME */ + bta_dm_sdp_result, /* 5 BTA_DM_SDP_RESULT */ + bta_dm_search_cmpl, /* 6 BTA_DM_SEARCH_CMPL */ + bta_dm_free_sdp_db, /* 7 BTA_DM_FREE_SDP_DB */ + bta_dm_disc_result, /* 8 BTA_DM_DISC_RESULT */ + bta_dm_search_result, /* 9 BTA_DM_SEARCH_RESULT */ + bta_dm_queue_search, /* 10 BTA_DM_QUEUE_SEARCH */ + bta_dm_queue_disc, /* 11 BTA_DM_QUEUE_DISC */ + bta_dm_search_clear_queue, /* 12 BTA_DM_SEARCH_CLEAR_QUEUE */ + bta_dm_search_cancel_cmpl, /* 13 BTA_DM_SEARCH_CANCEL_CMPL */ + bta_dm_search_cancel_notify, /* 14 BTA_DM_SEARCH_CANCEL_NOTIFY */ + bta_dm_search_cancel_transac_cmpl, /* 15 BTA_DM_SEARCH_CANCEL_TRANSAC_CMPL */ + bta_dm_disc_rmt_name, /* 16 BTA_DM_DISC_RMT_NAME */ + bta_dm_di_disc /* 17 BTA_DM_API_DI_DISCOVER */ #if BLE_INCLUDED == TRUE - ,bta_dm_close_gatt_conn + , bta_dm_close_gatt_conn #endif }; @@ -196,77 +193,73 @@ const tBTA_DM_ACTION bta_dm_search_action[] = /* state table for listen state */ -const UINT8 bta_dm_search_idle_st_table[][BTA_DM_SEARCH_NUM_COLS] = -{ +const UINT8 bta_dm_search_idle_st_table[][BTA_DM_SEARCH_NUM_COLS] = { -/* Event Action 1 Action 2 Next State */ -/* API_SEARCH */ {BTA_DM_API_SEARCH, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE}, -/* API_SEARCH_CANCEL */ {BTA_DM_SEARCH_CANCEL_NOTIFY, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE}, -/* API_SEARCH_DISC */ {BTA_DM_API_DISCOVER, BTA_DM_SEARCH_IGNORE, BTA_DM_DISCOVER_ACTIVE}, -/* INQUIRY_CMPL */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE}, -/* REMT_NAME_EVT */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE}, -/* SDP_RESULT_EVT */ {BTA_DM_FREE_SDP_DB, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE}, -/* SEARCH_CMPL_EVT */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE}, -/* DISCV_RES_EVT */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE}, -/* API_DI_DISCOVER_EVT */ {BTA_DM_API_DI_DISCOVER, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE} + /* Event Action 1 Action 2 Next State */ + /* API_SEARCH */ {BTA_DM_API_SEARCH, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE}, + /* API_SEARCH_CANCEL */ {BTA_DM_SEARCH_CANCEL_NOTIFY, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE}, + /* API_SEARCH_DISC */ {BTA_DM_API_DISCOVER, BTA_DM_SEARCH_IGNORE, BTA_DM_DISCOVER_ACTIVE}, + /* INQUIRY_CMPL */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE}, + /* REMT_NAME_EVT */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE}, + /* SDP_RESULT_EVT */ {BTA_DM_FREE_SDP_DB, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE}, + /* SEARCH_CMPL_EVT */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE}, + /* DISCV_RES_EVT */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE}, + /* API_DI_DISCOVER_EVT */ {BTA_DM_API_DI_DISCOVER, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE} #if BLE_INCLUDED == TRUE -/* DISC_CLOSE_TOUT_EVT */ ,{BTA_DM_CLOSE_GATT_CONN, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE} + /* DISC_CLOSE_TOUT_EVT */ , {BTA_DM_CLOSE_GATT_CONN, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE} #endif }; -const UINT8 bta_dm_search_search_active_st_table[][BTA_DM_SEARCH_NUM_COLS] = -{ +const UINT8 bta_dm_search_search_active_st_table[][BTA_DM_SEARCH_NUM_COLS] = { -/* Event Action 1 Action 2 Next State */ -/* API_SEARCH */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE}, -/* API_SEARCH_CANCEL */ {BTA_DM_API_SEARCH_CANCEL, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_CANCELLING}, -/* API_SEARCH_DISC */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE}, -/* INQUIRY_CMPL */ {BTA_DM_INQUIRY_CMPL, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE}, -/* REMT_NAME_EVT */ {BTA_DM_REMT_NAME, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE}, -/* SDP_RESULT_EVT */ {BTA_DM_SDP_RESULT, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE}, -/* SEARCH_CMPL_EVT */ {BTA_DM_SEARCH_CMPL, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE}, -/* DISCV_RES_EVT */ {BTA_DM_SEARCH_RESULT, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE}, -/* API_DI_DISCOVER_EVT */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE} + /* Event Action 1 Action 2 Next State */ + /* API_SEARCH */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE}, + /* API_SEARCH_CANCEL */ {BTA_DM_API_SEARCH_CANCEL, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_CANCELLING}, + /* API_SEARCH_DISC */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE}, + /* INQUIRY_CMPL */ {BTA_DM_INQUIRY_CMPL, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE}, + /* REMT_NAME_EVT */ {BTA_DM_REMT_NAME, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE}, + /* SDP_RESULT_EVT */ {BTA_DM_SDP_RESULT, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE}, + /* SEARCH_CMPL_EVT */ {BTA_DM_SEARCH_CMPL, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE}, + /* DISCV_RES_EVT */ {BTA_DM_SEARCH_RESULT, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE}, + /* API_DI_DISCOVER_EVT */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE} #if BLE_INCLUDED == TRUE -/* DISC_CLOSE_TOUT_EVT */ ,{BTA_DM_CLOSE_GATT_CONN, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE} + /* DISC_CLOSE_TOUT_EVT */ , {BTA_DM_CLOSE_GATT_CONN, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE} #endif }; -const UINT8 bta_dm_search_search_cancelling_st_table[][BTA_DM_SEARCH_NUM_COLS] = -{ +const UINT8 bta_dm_search_search_cancelling_st_table[][BTA_DM_SEARCH_NUM_COLS] = { -/* Event Action 1 Action 2 Next State */ -/* API_SEARCH */ {BTA_DM_QUEUE_SEARCH, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_CANCELLING}, -/* API_SEARCH_CANCEL */ {BTA_DM_SEARCH_CLEAR_QUEUE, BTA_DM_SEARCH_CANCEL_NOTIFY, BTA_DM_SEARCH_CANCELLING}, -/* API_SEARCH_DISC */ {BTA_DM_QUEUE_DISC, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_CANCELLING}, -/* INQUIRY_CMPL */ {BTA_DM_SEARCH_CANCEL_CMPL, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE}, -/* REMT_NAME_EVT */ {BTA_DM_SEARCH_CANCEL_TRANSAC_CMPL, BTA_DM_SEARCH_CANCEL_CMPL, BTA_DM_SEARCH_IDLE}, -/* SDP_RESULT_EVT */ {BTA_DM_SEARCH_CANCEL_TRANSAC_CMPL, BTA_DM_SEARCH_CANCEL_CMPL, BTA_DM_SEARCH_IDLE}, -/* SEARCH_CMPL_EVT */ {BTA_DM_SEARCH_CANCEL_TRANSAC_CMPL, BTA_DM_SEARCH_CANCEL_CMPL, BTA_DM_SEARCH_IDLE}, -/* DISCV_RES_EVT */ {BTA_DM_SEARCH_CANCEL_TRANSAC_CMPL, BTA_DM_SEARCH_CANCEL_CMPL, BTA_DM_SEARCH_IDLE}, -/* API_DI_DISCOVER_EVT */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_CANCELLING} + /* Event Action 1 Action 2 Next State */ + /* API_SEARCH */ {BTA_DM_QUEUE_SEARCH, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_CANCELLING}, + /* API_SEARCH_CANCEL */ {BTA_DM_SEARCH_CLEAR_QUEUE, BTA_DM_SEARCH_CANCEL_NOTIFY, BTA_DM_SEARCH_CANCELLING}, + /* API_SEARCH_DISC */ {BTA_DM_QUEUE_DISC, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_CANCELLING}, + /* INQUIRY_CMPL */ {BTA_DM_SEARCH_CANCEL_CMPL, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE}, + /* REMT_NAME_EVT */ {BTA_DM_SEARCH_CANCEL_TRANSAC_CMPL, BTA_DM_SEARCH_CANCEL_CMPL, BTA_DM_SEARCH_IDLE}, + /* SDP_RESULT_EVT */ {BTA_DM_SEARCH_CANCEL_TRANSAC_CMPL, BTA_DM_SEARCH_CANCEL_CMPL, BTA_DM_SEARCH_IDLE}, + /* SEARCH_CMPL_EVT */ {BTA_DM_SEARCH_CANCEL_TRANSAC_CMPL, BTA_DM_SEARCH_CANCEL_CMPL, BTA_DM_SEARCH_IDLE}, + /* DISCV_RES_EVT */ {BTA_DM_SEARCH_CANCEL_TRANSAC_CMPL, BTA_DM_SEARCH_CANCEL_CMPL, BTA_DM_SEARCH_IDLE}, + /* API_DI_DISCOVER_EVT */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_CANCELLING} #if BLE_INCLUDED == TRUE -/* DISC_CLOSE_TOUT_EVT */ ,{BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_CANCELLING} + /* DISC_CLOSE_TOUT_EVT */ , {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_CANCELLING} #endif }; -const UINT8 bta_dm_search_disc_active_st_table[][BTA_DM_SEARCH_NUM_COLS] = -{ +const UINT8 bta_dm_search_disc_active_st_table[][BTA_DM_SEARCH_NUM_COLS] = { -/* Event Action 1 Action 2 Next State */ -/* API_SEARCH */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_DISCOVER_ACTIVE}, -/* API_SEARCH_CANCEL */ {BTA_DM_SEARCH_CANCEL_NOTIFY, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_CANCELLING}, -/* API_SEARCH_DISC */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_DISCOVER_ACTIVE}, -/* INQUIRY_CMPL */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_DISCOVER_ACTIVE}, -/* REMT_NAME_EVT */ {BTA_DM_DISC_RMT_NAME, BTA_DM_SEARCH_IGNORE, BTA_DM_DISCOVER_ACTIVE}, -/* SDP_RESULT_EVT */ {BTA_DM_SDP_RESULT, BTA_DM_SEARCH_IGNORE, BTA_DM_DISCOVER_ACTIVE}, -/* SEARCH_CMPL_EVT */ {BTA_DM_SEARCH_CMPL, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE}, -/* DISCV_RES_EVT */ {BTA_DM_DISC_RESULT, BTA_DM_SEARCH_IGNORE, BTA_DM_DISCOVER_ACTIVE}, -/* API_DI_DISCOVER_EVT */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_DISCOVER_ACTIVE} + /* Event Action 1 Action 2 Next State */ + /* API_SEARCH */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_DISCOVER_ACTIVE}, + /* API_SEARCH_CANCEL */ {BTA_DM_SEARCH_CANCEL_NOTIFY, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_CANCELLING}, + /* API_SEARCH_DISC */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_DISCOVER_ACTIVE}, + /* INQUIRY_CMPL */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_DISCOVER_ACTIVE}, + /* REMT_NAME_EVT */ {BTA_DM_DISC_RMT_NAME, BTA_DM_SEARCH_IGNORE, BTA_DM_DISCOVER_ACTIVE}, + /* SDP_RESULT_EVT */ {BTA_DM_SDP_RESULT, BTA_DM_SEARCH_IGNORE, BTA_DM_DISCOVER_ACTIVE}, + /* SEARCH_CMPL_EVT */ {BTA_DM_SEARCH_CMPL, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE}, + /* DISCV_RES_EVT */ {BTA_DM_DISC_RESULT, BTA_DM_SEARCH_IGNORE, BTA_DM_DISCOVER_ACTIVE}, + /* API_DI_DISCOVER_EVT */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_DISCOVER_ACTIVE} #if BLE_INCLUDED == TRUE -/* DISC_CLOSE_TOUT_EVT */ ,{BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_DISCOVER_ACTIVE} + /* DISC_CLOSE_TOUT_EVT */ , {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_DISCOVER_ACTIVE} #endif }; @@ -314,9 +307,8 @@ BOOLEAN bta_dm_sm_execute(BT_HDR *p_msg) APPL_TRACE_EVENT("bta_dm_sm_execute event:0x%x", event); /* execute action functions */ - if(event < BTA_DM_NUM_ACTIONS) - { - (*bta_dm_action[event])( (tBTA_DM_MSG*) p_msg); + if (event < BTA_DM_NUM_ACTIONS) { + (*bta_dm_action[event])( (tBTA_DM_MSG *) p_msg); } return TRUE; @@ -356,7 +348,7 @@ BOOLEAN bta_dm_search_sm_execute(BT_HDR *p_msg) int i; APPL_TRACE_EVENT("bta_dm_search_sm_execute state:%d, event:0x%x", - bta_dm_search_cb.state, p_msg->event); + bta_dm_search_cb.state, p_msg->event); /* look up the state table for the current state */ state_table = bta_dm_search_st_tbl[bta_dm_search_cb.state]; @@ -365,14 +357,10 @@ BOOLEAN bta_dm_search_sm_execute(BT_HDR *p_msg) /* execute action functions */ - for (i = 0; i < BTA_DM_SEARCH_ACTIONS; i++) - { - if ((action = state_table[p_msg->event & 0x00ff][i]) != BTA_DM_SEARCH_IGNORE) - { - (*bta_dm_search_action[action])( (tBTA_DM_MSG*) p_msg); - } - else - { + for (i = 0; i < BTA_DM_SEARCH_ACTIONS; i++) { + if ((action = state_table[p_msg->event & 0x00ff][i]) != BTA_DM_SEARCH_IGNORE) { + (*bta_dm_search_action[action])( (tBTA_DM_MSG *) p_msg); + } else { break; } } diff --git a/components/bt/bluedroid/bta/dm/bta_dm_pm.c b/components/bt/bluedroid/bta/dm/bta_dm_pm.c old mode 100755 new mode 100644 index 23273aef27..1acb0f46ce --- a/components/bt/bluedroid/bta/dm/bta_dm_pm.c +++ b/components/bt/bluedroid/bta/dm/bta_dm_pm.c @@ -44,7 +44,7 @@ static BOOLEAN bta_dm_pm_is_sco_active (); static void bta_dm_pm_hid_check(BOOLEAN bScoActive); static void bta_dm_pm_set_sniff_policy(tBTA_DM_PEER_DEVICE *p_dev, BOOLEAN bDisable); static void bta_dm_pm_stop_timer_by_index(tBTA_PM_TIMER *p_timer, - UINT8 timer_idx); + UINT8 timer_idx); #if (BTM_SSR_INCLUDED == TRUE) #if (defined BTA_HH_INCLUDED && BTA_HH_INCLUDED == TRUE) @@ -73,19 +73,18 @@ void bta_dm_init_pm(void) memset(&bta_dm_conn_srvcs, 0x00, sizeof(bta_dm_conn_srvcs)); /* if there are no power manger entries, so not register */ - if(p_bta_dm_pm_cfg[0].app_id != 0) - { - bta_sys_pm_register((tBTA_SYS_CONN_CBACK*)bta_dm_pm_cback); + if (p_bta_dm_pm_cfg[0].app_id != 0) { + bta_sys_pm_register((tBTA_SYS_CONN_CBACK *)bta_dm_pm_cback); BTM_PmRegister((BTM_PM_REG_SET | BTM_PM_REG_NOTIF), &bta_dm_cb.pm_id, bta_dm_pm_btm_cback); } /* Need to initialize all PM timer service IDs */ - for (int i = 0; i < BTA_DM_NUM_PM_TIMER; i++) - { - for (int j = 0; j < BTA_DM_PM_MODE_TIMER_MAX; j++) + for (int i = 0; i < BTA_DM_NUM_PM_TIMER; i++) { + for (int j = 0; j < BTA_DM_PM_MODE_TIMER_MAX; j++) { bta_dm_cb.pm_timer[i].srvc_id[j] = BTA_ID_MAX; + } } } @@ -108,13 +107,11 @@ void bta_dm_disable_pm(void) * Deregister the PM callback from the system handling to prevent * re-enabling the PM timers after this call if the callback is invoked. */ - bta_sys_pm_register((tBTA_SYS_CONN_CBACK*)NULL); + bta_sys_pm_register((tBTA_SYS_CONN_CBACK *)NULL); /* Need to stop all active timers. */ - for (int i = 0; i < BTA_DM_NUM_PM_TIMER; i++) - { - for (int j = 0; j < BTA_DM_PM_MODE_TIMER_MAX; j++) - { + for (int i = 0; i < BTA_DM_NUM_PM_TIMER; i++) { + for (int j = 0; j < BTA_DM_PM_MODE_TIMER_MAX; j++) { bta_dm_pm_stop_timer_by_index(&bta_dm_cb.pm_timer[i], j); bta_dm_cb.pm_timer[i].pm_action[j] = BTA_DM_PM_NO_ACTION; } @@ -134,10 +131,10 @@ void bta_dm_disable_pm(void) UINT8 bta_dm_get_av_count(void) { UINT8 count = 0; - for (int i = 0; i < bta_dm_conn_srvcs.count; i++) - { - if (bta_dm_conn_srvcs.conn_srvc[i].id == BTA_ID_AV) + for (int i = 0; i < bta_dm_conn_srvcs.count; i++) { + if (bta_dm_conn_srvcs.conn_srvc[i].id == BTA_ID_AV) { ++count; + } } return count; } @@ -156,12 +153,9 @@ static void bta_dm_pm_stop_timer(BD_ADDR peer_addr) { APPL_TRACE_DEBUG("%s: ", __func__); - for(int i=0; iin_use = TRUE; p_timer->timer[timer_idx].p_cback = bta_dm_pm_timer_cback; - if (p_timer->srvc_id[timer_idx] == BTA_ID_MAX) + if (p_timer->srvc_id[timer_idx] == BTA_ID_MAX) { p_timer->active++; + } - if (p_timer->pm_action[timer_idx] < pm_action) + if (p_timer->pm_action[timer_idx] < pm_action) { p_timer->pm_action[timer_idx] = pm_action; + } p_timer->srvc_id[timer_idx] = srvc_id; @@ -305,13 +296,15 @@ static void bta_dm_pm_start_timer(tBTA_PM_TIMER *p_timer, UINT8 timer_idx, ** *******************************************************************************/ static void bta_dm_pm_stop_timer_by_index(tBTA_PM_TIMER *p_timer, - UINT8 timer_idx) + UINT8 timer_idx) { - if ((p_timer == NULL) || (timer_idx >= BTA_DM_PM_MODE_TIMER_MAX)) + if ((p_timer == NULL) || (timer_idx >= BTA_DM_PM_MODE_TIMER_MAX)) { return; + } - if (p_timer->srvc_id[timer_idx] == BTA_ID_MAX) - return; /* The timer was not scheduled */ + if (p_timer->srvc_id[timer_idx] == BTA_ID_MAX) { + return; /* The timer was not scheduled */ + } assert(p_timer->in_use && (p_timer->active > 0)); @@ -320,8 +313,9 @@ static void bta_dm_pm_stop_timer_by_index(tBTA_PM_TIMER *p_timer, /* NOTE: pm_action[timer_idx] intentionally not reset */ p_timer->active--; - if (p_timer->active == 0) + if (p_timer->active == 0) { p_timer->in_use = FALSE; + } } UINT32 bta_dm_pm_get_remaining_ticks (TIMER_LIST_ENT *p_target_tle) @@ -342,7 +336,7 @@ UINT32 bta_dm_pm_get_remaining_ticks (TIMER_LIST_ENT *p_target_tle) static void bta_dm_pm_cback(tBTA_SYS_CONN_STATUS status, UINT8 id, UINT8 app_id, BD_ADDR peer_addr) { - UINT8 i,j; + UINT8 i, j; UINT16 policy_setting; UINT8 *p = NULL; tBTA_DM_PEER_DEVICE *p_dev; @@ -356,78 +350,67 @@ static void bta_dm_pm_cback(tBTA_SYS_CONN_STATUS status, UINT8 id, UINT8 app_id, p_dev = bta_dm_find_peer_device(peer_addr); /* find if there is an power mode entry for the service */ - for(i=1; i<=p_bta_dm_pm_cfg[0].app_id; i++) - { + for (i = 1; i <= p_bta_dm_pm_cfg[0].app_id; i++) { - if((p_bta_dm_pm_cfg[i].id == id) - && ((p_bta_dm_pm_cfg[i].app_id == BTA_ALL_APP_ID ) || (p_bta_dm_pm_cfg[i].app_id == app_id ))) + if ((p_bta_dm_pm_cfg[i].id == id) + && ((p_bta_dm_pm_cfg[i].app_id == BTA_ALL_APP_ID ) || (p_bta_dm_pm_cfg[i].app_id == app_id ))) { break; + } } /* if no entries are there for the app_id and subsystem in p_bta_dm_pm_spec*/ - if(i> p_bta_dm_pm_cfg[0].app_id) + if (i > p_bta_dm_pm_cfg[0].app_id) { return; + } bta_dm_pm_stop_timer_by_srvc_id(peer_addr, id); /*p_dev = bta_dm_find_peer_device(peer_addr);*/ #if (BTM_SSR_INCLUDED == TRUE) /* set SSR parameters on SYS CONN OPEN */ - if((BTA_SYS_CONN_OPEN == status) && p_dev && (p_dev->info & BTA_DM_DI_USE_SSR)) - { + if ((BTA_SYS_CONN_OPEN == status) && p_dev && (p_dev->info & BTA_DM_DI_USE_SSR)) { index = p_bta_dm_pm_spec[p_bta_dm_pm_cfg[i].spec_idx].ssr; } #endif /* if no action for the event */ - if(p_bta_dm_pm_spec[p_bta_dm_pm_cfg[i].spec_idx].actn_tbl[status][0].power_mode == BTA_DM_PM_NO_ACTION) - { + if (p_bta_dm_pm_spec[p_bta_dm_pm_cfg[i].spec_idx].actn_tbl[status][0].power_mode == BTA_DM_PM_NO_ACTION) { #if (BTM_SSR_INCLUDED == TRUE) - if(BTA_DM_PM_SSR0 == index) /* and do not need to set SSR, return. */ + if (BTA_DM_PM_SSR0 == index) /* and do not need to set SSR, return. */ #endif - return; + return; } - for(j=0; jpm_mode_attempted = 0; p_dev->pm_mode_failed = 0; } #if (BTM_SSR_INCLUDED == TRUE) - if(p_bta_dm_ssr_spec[index].max_lat + if (p_bta_dm_ssr_spec[index].max_lat #if (defined BTA_HH_INCLUDED && BTA_HH_INCLUDED == TRUE) - || index == BTA_DM_PM_SSR_HH + || index == BTA_DM_PM_SSR_HH #endif - ) - { + ) { bta_dm_pm_ssr(peer_addr); - } - else - { - if( ((NULL != (p = BTM_ReadLocalFeatures ())) && HCI_SNIFF_SUB_RATE_SUPPORTED(p)) && - ((NULL != (p = BTM_ReadRemoteFeatures (peer_addr))) && HCI_SNIFF_SUB_RATE_SUPPORTED(p)) && - (index == BTA_DM_PM_SSR0)) - { - if (status == BTA_SYS_SCO_OPEN) - { + } else { + if ( ((NULL != (p = BTM_ReadLocalFeatures ())) && HCI_SNIFF_SUB_RATE_SUPPORTED(p)) && + ((NULL != (p = BTM_ReadRemoteFeatures (peer_addr))) && HCI_SNIFF_SUB_RATE_SUPPORTED(p)) && + (index == BTA_DM_PM_SSR0)) { + if (status == BTA_SYS_SCO_OPEN) { APPL_TRACE_DEBUG("%s: SCO inactive, reset SSR to zero", __func__); - BTM_SetSsrParams (peer_addr, 0,0,0 ); - } - else if (status == BTA_SYS_SCO_CLOSE) - { + BTM_SetSsrParams (peer_addr, 0, 0, 0 ); + } else if (status == BTA_SYS_SCO_CLOSE) { APPL_TRACE_DEBUG("%s: SCO active, back to old SSR", __func__); bta_dm_pm_ssr(peer_addr); } @@ -495,14 +468,14 @@ static void bta_dm_pm_cback(tBTA_SYS_CONN_STATUS status, UINT8 id, UINT8 app_id, ** This will handle the case where HID connects when SCO already active */ if ( BTM_IsDeviceUp() && - ( ((status == BTA_SYS_SCO_OPEN) || (status == BTA_SYS_SCO_CLOSE)) || - ((status == BTA_SYS_CONN_OPEN) && (id == BTA_ID_HH) && bta_dm_pm_is_sco_active()) ) ) - { + ( ((status == BTA_SYS_SCO_OPEN) || (status == BTA_SYS_SCO_CLOSE)) || + ((status == BTA_SYS_CONN_OPEN) && (id == BTA_ID_HH) && bta_dm_pm_is_sco_active()) ) ) { BOOLEAN bScoActive; - if (status == BTA_SYS_CONN_OPEN) + if (status == BTA_SYS_CONN_OPEN) { bScoActive = TRUE; - else + } else { bScoActive = (status == BTA_SYS_SCO_OPEN); + } bta_dm_pm_hid_check(bScoActive); } @@ -527,7 +500,7 @@ static void bta_dm_pm_set_mode(BD_ADDR peer_addr, tBTA_DM_PM_ACTION pm_request, tBTA_DM_PM_ACTION pm_action = BTA_DM_PM_NO_ACTION; UINT16 timeout = 0; - UINT8 i,j; + UINT8 i, j; tBTA_DM_PM_ACTION failed_pm = 0; tBTA_DM_PEER_DEVICE *p_peer_device = NULL; tBTA_DM_PM_ACTION allowed_modes = 0; @@ -540,31 +513,31 @@ static void bta_dm_pm_set_mode(BD_ADDR peer_addr, tBTA_DM_PM_ACTION pm_request, UINT8 timer_idx, available_timer = BTA_DM_PM_MODE_TIMER_MAX; UINT32 remaining_ticks = 0; - if(!bta_dm_cb.device_list.count) + if (!bta_dm_cb.device_list.count) { return; + } /* see if any attempt to put device in low power mode failed */ p_peer_device = bta_dm_find_peer_device(peer_addr); /* if no peer device found return */ - if (p_peer_device == NULL) + if (p_peer_device == NULL) { return; + } failed_pm = p_peer_device->pm_mode_failed; - for(i=0; ipeer_bdaddr, peer_addr)) - { + if (!bdcmp(p_srvcs->peer_bdaddr, peer_addr)) { /* p_bta_dm_pm_cfg[0].app_id is the number of entries */ - for(j=1; j<=p_bta_dm_pm_cfg[0].app_id; j++) - { - if((p_bta_dm_pm_cfg[j].id == p_srvcs->id) - && ((p_bta_dm_pm_cfg[j].app_id == BTA_ALL_APP_ID ) || - (p_bta_dm_pm_cfg[j].app_id == p_srvcs->app_id))) + for (j = 1; j <= p_bta_dm_pm_cfg[0].app_id; j++) { + if ((p_bta_dm_pm_cfg[j].id == p_srvcs->id) + && ((p_bta_dm_pm_cfg[j].app_id == BTA_ALL_APP_ID ) || + (p_bta_dm_pm_cfg[j].app_id == p_srvcs->app_id))) { break; + } } p_pm_cfg = &p_bta_dm_pm_cfg[j]; @@ -578,28 +551,23 @@ static void bta_dm_pm_set_mode(BD_ADDR peer_addr, tBTA_DM_PM_ACTION pm_request, /* PM actions are in the order of strictness */ /* first check if the first preference is ok */ - if(!(failed_pm & p_act0->power_mode)) - { + if (!(failed_pm & p_act0->power_mode)) { pref_modes |= p_act0->power_mode; - if(p_act0->power_mode >= pm_action) - { + if (p_act0->power_mode >= pm_action) { pm_action = p_act0->power_mode; - if (pm_req != BTA_DM_PM_NEW_REQ || p_srvcs->new_request) - { + if (pm_req != BTA_DM_PM_NEW_REQ || p_srvcs->new_request) { p_srvcs->new_request = FALSE; timeout = p_act0->timeout; } } } /* if first preference has already failed, try second preference */ - else if(!(failed_pm & p_act1->power_mode)) - { + else if (!(failed_pm & p_act1->power_mode)) { pref_modes |= p_act1->power_mode; - if(p_act1->power_mode > pm_action) - { + if (p_act1->power_mode > pm_action) { pm_action = p_act1->power_mode; timeout = p_act1->timeout; } @@ -607,36 +575,28 @@ static void bta_dm_pm_set_mode(BD_ADDR peer_addr, tBTA_DM_PM_ACTION pm_request, } } - if(pm_action & (BTA_DM_PM_PARK | BTA_DM_PM_SNIFF)) - { + if (pm_action & (BTA_DM_PM_PARK | BTA_DM_PM_SNIFF)) { /* some service don't like the mode */ - if(!(allowed_modes & pm_action)) - { + if (!(allowed_modes & pm_action)) { /* select the other mode if its allowed and preferred, otherwise 0 which is BTA_DM_PM_NO_ACTION */ pm_action = (allowed_modes & (BTA_DM_PM_PARK | BTA_DM_PM_SNIFF) & pref_modes); /* no timeout needed if no action is required */ - if(pm_action == BTA_DM_PM_NO_ACTION) - { + if (pm_action == BTA_DM_PM_NO_ACTION) { timeout = 0; } } } /* if need to start a timer */ - if((pm_req != BTA_DM_PM_EXECUTE) && timeout) - { - for(i=0; iid, pm_action); timer_started = TRUE; } } /* no more timers */ - else - { + else { APPL_TRACE_WARNING("bta_dm_act dm_pm_timer no more"); } } @@ -682,31 +637,22 @@ static void bta_dm_pm_set_mode(BD_ADDR peer_addr, tBTA_DM_PM_ACTION pm_request, } /* if pending power mode timer expires, and currecnt link is in a lower power mode than current profile requirement, igonre it */ - if (pm_req == BTA_DM_PM_EXECUTE && pm_request < pm_action) - { + if (pm_req == BTA_DM_PM_EXECUTE && pm_request < pm_action) { APPL_TRACE_ERROR("Ignore the power mode request: %d", pm_request) return; } - if(pm_action == BTA_DM_PM_PARK) - { + if (pm_action == BTA_DM_PM_PARK) { p_peer_device->pm_mode_attempted = BTA_DM_PM_PARK; bta_dm_pm_park(peer_addr); - } - else if(pm_action & BTA_DM_PM_SNIFF) - { + } else if (pm_action & BTA_DM_PM_SNIFF) { /* dont initiate SNIFF, if link_policy has it disabled */ - if (p_peer_device->link_policy & HCI_ENABLE_SNIFF_MODE) - { + if (p_peer_device->link_policy & HCI_ENABLE_SNIFF_MODE) { p_peer_device->pm_mode_attempted = BTA_DM_PM_SNIFF; bta_dm_pm_sniff(p_peer_device, (UINT8)(pm_action & 0x0F) ); - } - else - { + } else { APPL_TRACE_DEBUG("bta_dm_pm_set_mode: Link policy disallows SNIFF, ignore request"); } - } - else if(pm_action == BTA_DM_PM_ACTIVE) - { + } else if (pm_action == BTA_DM_PM_ACTIVE) { bta_dm_pm_active(peer_addr); } } @@ -728,8 +674,7 @@ static BOOLEAN bta_dm_pm_park(BD_ADDR peer_addr) /* if not in park mode, switch to park */ BTM_ReadPowerMode(peer_addr, &mode); - if(mode != BTM_PM_MD_PARK) - { + if (mode != BTM_PM_MD_PARK) { BTM_SetPowerMode (bta_dm_cb.pm_id, peer_addr, &p_bta_dm_pm_md[BTA_DM_PM_PARK_IDX]); } return TRUE; @@ -760,12 +705,12 @@ static BOOLEAN bta_dm_pm_sniff(tBTA_DM_PEER_DEVICE *p_peer_dev, UINT8 index) #if (BTM_SSR_INCLUDED == TRUE) APPL_TRACE_DEBUG("bta_dm_pm_sniff cur:%d, idx:%d, info:x%x", mode, index, p_peer_dev->info); if (mode != BTM_PM_MD_SNIFF || - (HCI_SNIFF_SUB_RATE_SUPPORTED(BTM_ReadLocalFeatures ()) && p_rem_feat && - HCI_SNIFF_SUB_RATE_SUPPORTED(p_rem_feat) && - !(p_peer_dev->info & BTA_DM_DI_USE_SSR))) + (HCI_SNIFF_SUB_RATE_SUPPORTED(BTM_ReadLocalFeatures ()) && p_rem_feat && + HCI_SNIFF_SUB_RATE_SUPPORTED(p_rem_feat) && + !(p_peer_dev->info & BTA_DM_DI_USE_SSR))) #else APPL_TRACE_DEBUG("bta_dm_pm_sniff cur:%d, idx:%d", mode, index); - if(mode != BTM_PM_MD_SNIFF) + if (mode != BTM_PM_MD_SNIFF) #endif { #if (BTM_SSR_INCLUDED == TRUE) @@ -773,8 +718,7 @@ static BOOLEAN bta_dm_pm_sniff(tBTA_DM_PEER_DEVICE *p_peer_dev, UINT8 index) * remote sniff params. This avoid sniff loop issue with * some agrresive headsets who use sniff latencies more than * DUT supported range of Sniff intervals.*/ - if ((mode == BTM_PM_MD_SNIFF) && (p_peer_dev->info & BTA_DM_DI_ACP_SNIFF)) - { + if ((mode == BTM_PM_MD_SNIFF) && (p_peer_dev->info & BTA_DM_DI_ACP_SNIFF)) { APPL_TRACE_DEBUG("%s: already in remote initiate sniff", __func__); return TRUE; } @@ -782,25 +726,19 @@ static BOOLEAN bta_dm_pm_sniff(tBTA_DM_PEER_DEVICE *p_peer_dev, UINT8 index) /* if the current mode is not sniff, issue the sniff command. * If sniff, but SSR is not used in this link, still issue the command */ memcpy(&pwr_md, &p_bta_dm_pm_md[index], sizeof (tBTM_PM_PWR_MD)); - if (p_peer_dev->info & BTA_DM_DI_INT_SNIFF) - { + if (p_peer_dev->info & BTA_DM_DI_INT_SNIFF) { pwr_md.mode |= BTM_PM_MD_FORCE; } status = BTM_SetPowerMode (bta_dm_cb.pm_id, p_peer_dev->peer_bdaddr, &pwr_md); - if (status == BTM_CMD_STORED|| status == BTM_CMD_STARTED) - { - p_peer_dev->info &= ~(BTA_DM_DI_INT_SNIFF|BTA_DM_DI_ACP_SNIFF); + if (status == BTM_CMD_STORED || status == BTM_CMD_STARTED) { + p_peer_dev->info &= ~(BTA_DM_DI_INT_SNIFF | BTA_DM_DI_ACP_SNIFF); p_peer_dev->info |= BTA_DM_DI_SET_SNIFF; - } - else if (status == BTM_SUCCESS) - { + } else if (status == BTM_SUCCESS) { APPL_TRACE_DEBUG("bta_dm_pm_sniff BTM_SetPowerMode() returns BTM_SUCCESS"); - p_peer_dev->info &= ~(BTA_DM_DI_INT_SNIFF|BTA_DM_DI_ACP_SNIFF|BTA_DM_DI_SET_SNIFF); - } - else /* error */ - { + p_peer_dev->info &= ~(BTA_DM_DI_INT_SNIFF | BTA_DM_DI_ACP_SNIFF | BTA_DM_DI_SET_SNIFF); + } else { /* error */ APPL_TRACE_ERROR("bta_dm_pm_sniff BTM_SetPowerMode() returns ERROR status=%d", status); - p_peer_dev->info &= ~(BTA_DM_DI_INT_SNIFF|BTA_DM_DI_ACP_SNIFF|BTA_DM_DI_SET_SNIFF); + p_peer_dev->info &= ~(BTA_DM_DI_INT_SNIFF | BTA_DM_DI_ACP_SNIFF | BTA_DM_DI_SET_SNIFF); } } return TRUE; @@ -819,24 +757,20 @@ static BOOLEAN bta_dm_pm_sniff(tBTA_DM_PEER_DEVICE *p_peer_dev, UINT8 index) static void bta_dm_pm_ssr(BD_ADDR peer_addr) { tBTA_DM_SSR_SPEC *p_spec, *p_spec_cur; - UINT8 i,j; + UINT8 i, j; int ssr = BTA_DM_PM_SSR0; /* go through the connected services */ - for(i=0; imax_lat, &p_spec_cur->min_rmt_to) == BTA_HH_ERR) + if (p_bta_dm_pm_spec[p_bta_dm_pm_cfg[j].spec_idx].ssr == BTA_DM_PM_SSR_HH) { + if (bta_hh_read_ssr_param(peer_addr, &p_spec_cur->max_lat, &p_spec_cur->min_rmt_to) == BTA_HH_ERR) { continue; + } } #endif if (p_spec_cur->max_lat < p_spec->max_lat || - (ssr == BTA_DM_PM_SSR0 && p_bta_dm_pm_spec[p_bta_dm_pm_cfg[j].spec_idx].ssr != BTA_DM_PM_SSR0)) - { + (ssr == BTA_DM_PM_SSR0 && p_bta_dm_pm_spec[p_bta_dm_pm_cfg[j].spec_idx].ssr != BTA_DM_PM_SSR0)) { ssr = p_bta_dm_pm_spec[p_bta_dm_pm_cfg[j].spec_idx].ssr; } @@ -864,11 +797,10 @@ static void bta_dm_pm_ssr(BD_ADDR peer_addr) p_spec = &p_bta_dm_ssr_spec[ssr]; APPL_TRACE_WARNING("bta_dm_pm_ssr:%d, lat:%d", ssr, p_spec->max_lat); - if(p_spec->max_lat) - { + if (p_spec->max_lat) { /* set the SSR parameters. */ BTM_SetSsrParams (peer_addr, p_spec->max_lat, - p_spec->min_rmt_to, p_spec->min_loc_to); + p_spec->min_rmt_to, p_spec->min_loc_to); } } #endif @@ -886,7 +818,7 @@ void bta_dm_pm_active(BD_ADDR peer_addr) { tBTM_PM_PWR_MD pm; - memset( (void*)&pm, 0, sizeof(pm)); + memset( (void *)&pm, 0, sizeof(pm)); /* switch to active mode */ pm.mode = BTM_PM_MD_ACTIVE; @@ -908,10 +840,9 @@ void bta_dm_pm_active(BD_ADDR peer_addr) *******************************************************************************/ static void bta_dm_pm_btm_cback(BD_ADDR bd_addr, tBTM_PM_STATUS status, UINT16 value, UINT8 hci_status) { - tBTA_DM_PM_BTM_STATUS *p_buf; + tBTA_DM_PM_BTM_STATUS *p_buf; - if ((p_buf = (tBTA_DM_PM_BTM_STATUS *) GKI_getbuf(sizeof(tBTA_DM_PM_BTM_STATUS))) != NULL) - { + if ((p_buf = (tBTA_DM_PM_BTM_STATUS *) GKI_getbuf(sizeof(tBTA_DM_PM_BTM_STATUS))) != NULL) { p_buf->hdr.event = BTA_DM_PM_BTM_STATUS_EVT; p_buf->status = status; p_buf->value = value; @@ -935,35 +866,33 @@ static void bta_dm_pm_timer_cback(void *p_tle) { UINT8 i, j; - for (i=0; ihdr.event = BTA_DM_PM_TIMER_EVT; p_buf->pm_request = bta_dm_cb.pm_timer[i].pm_action[j]; bdcpy(p_buf->bd_addr, bta_dm_cb.pm_timer[i].peer_bdaddr); @@ -986,89 +915,84 @@ void bta_dm_pm_btm_status(tBTA_DM_MSG *p_data) APPL_TRACE_DEBUG("%s status: %d", __func__, p_data->pm_status.status); tBTA_DM_PEER_DEVICE *p_dev = bta_dm_find_peer_device(p_data->pm_status.bd_addr); - if (NULL == p_dev) + if (NULL == p_dev) { return; + } tBTA_DM_DEV_INFO info = p_dev->info; /* check new mode */ - switch (p_data->pm_status.status) - { - case BTM_PM_STS_ACTIVE: - /* if our sniff or park attempt failed - we should not try it again*/ - if (p_data->pm_status.hci_status != 0) - { - APPL_TRACE_ERROR("%s hci_status=%d", __func__, p_data->pm_status.hci_status); - p_dev->info &= ~(BTA_DM_DI_INT_SNIFF|BTA_DM_DI_ACP_SNIFF|BTA_DM_DI_SET_SNIFF); + switch (p_data->pm_status.status) { + case BTM_PM_STS_ACTIVE: + /* if our sniff or park attempt failed + we should not try it again*/ + if (p_data->pm_status.hci_status != 0) { + APPL_TRACE_ERROR("%s hci_status=%d", __func__, p_data->pm_status.hci_status); + p_dev->info &= ~(BTA_DM_DI_INT_SNIFF | BTA_DM_DI_ACP_SNIFF | BTA_DM_DI_SET_SNIFF); - if(p_dev->pm_mode_attempted &(BTA_DM_PM_PARK | BTA_DM_PM_SNIFF)) - { - p_dev->pm_mode_failed - |= ((BTA_DM_PM_PARK | BTA_DM_PM_SNIFF) & p_dev->pm_mode_attempted); - bta_dm_pm_stop_timer_by_mode(p_data->pm_status.bd_addr, p_dev->pm_mode_attempted); - bta_dm_pm_set_mode(p_data->pm_status.bd_addr, BTA_DM_PM_NO_ACTION, BTA_DM_PM_RESTART); - } - } - else - { -#if (BTM_SSR_INCLUDED == TRUE) - if(p_dev->prev_low) - { - /* need to send the SSR paramaters to controller again */ - bta_dm_pm_ssr(p_dev->peer_bdaddr); - } - p_dev->prev_low = BTM_PM_STS_ACTIVE; -#endif - /* link to active mode, need to restart the timer for next low power mode if needed */ - bta_dm_pm_stop_timer(p_data->pm_status.bd_addr); + if (p_dev->pm_mode_attempted & (BTA_DM_PM_PARK | BTA_DM_PM_SNIFF)) { + p_dev->pm_mode_failed + |= ((BTA_DM_PM_PARK | BTA_DM_PM_SNIFF) & p_dev->pm_mode_attempted); + bta_dm_pm_stop_timer_by_mode(p_data->pm_status.bd_addr, p_dev->pm_mode_attempted); bta_dm_pm_set_mode(p_data->pm_status.bd_addr, BTA_DM_PM_NO_ACTION, BTA_DM_PM_RESTART); } - break; + } else { +#if (BTM_SSR_INCLUDED == TRUE) + if (p_dev->prev_low) { + /* need to send the SSR paramaters to controller again */ + bta_dm_pm_ssr(p_dev->peer_bdaddr); + } + p_dev->prev_low = BTM_PM_STS_ACTIVE; +#endif + /* link to active mode, need to restart the timer for next low power mode if needed */ + bta_dm_pm_stop_timer(p_data->pm_status.bd_addr); + bta_dm_pm_set_mode(p_data->pm_status.bd_addr, BTA_DM_PM_NO_ACTION, BTA_DM_PM_RESTART); + } + break; #if (BTM_SSR_INCLUDED == TRUE) - case BTM_PM_STS_PARK: - case BTM_PM_STS_HOLD: - /* save the previous low power mode - for SSR. - * SSR parameters are sent to controller on "conn open". - * the numbers stay good until park/hold/detach */ - if(p_dev->info & BTA_DM_DI_USE_SSR) - p_dev->prev_low = p_data->pm_status.status; - break; + case BTM_PM_STS_PARK: + case BTM_PM_STS_HOLD: + /* save the previous low power mode - for SSR. + * SSR parameters are sent to controller on "conn open". + * the numbers stay good until park/hold/detach */ + if (p_dev->info & BTA_DM_DI_USE_SSR) { + p_dev->prev_low = p_data->pm_status.status; + } + break; - case BTM_PM_STS_SSR: - if(p_data->pm_status.value) - p_dev->info |= BTA_DM_DI_USE_SSR; - else - p_dev->info &= ~BTA_DM_DI_USE_SSR; - break; + case BTM_PM_STS_SSR: + if (p_data->pm_status.value) { + p_dev->info |= BTA_DM_DI_USE_SSR; + } else { + p_dev->info &= ~BTA_DM_DI_USE_SSR; + } + break; #endif - case BTM_PM_STS_SNIFF: - if (p_data->pm_status.hci_status == 0) - { - /* Stop PM timer now if already active for - * particular device since link is already - * put in sniff mode by remote device, and - * PM timer sole purpose is to put the link - * in sniff mode from host side. - */ - bta_dm_pm_stop_timer(p_data->pm_status.bd_addr); + case BTM_PM_STS_SNIFF: + if (p_data->pm_status.hci_status == 0) { + /* Stop PM timer now if already active for + * particular device since link is already + * put in sniff mode by remote device, and + * PM timer sole purpose is to put the link + * in sniff mode from host side. + */ + bta_dm_pm_stop_timer(p_data->pm_status.bd_addr); + } else { + p_dev->info &= ~(BTA_DM_DI_SET_SNIFF | BTA_DM_DI_INT_SNIFF | BTA_DM_DI_ACP_SNIFF); + if (info & BTA_DM_DI_SET_SNIFF) { + p_dev->info |= BTA_DM_DI_INT_SNIFF; + } else { + p_dev->info |= BTA_DM_DI_ACP_SNIFF; } - else - { - p_dev->info &= ~(BTA_DM_DI_SET_SNIFF | BTA_DM_DI_INT_SNIFF | BTA_DM_DI_ACP_SNIFF); - if (info & BTA_DM_DI_SET_SNIFF) - p_dev->info |= BTA_DM_DI_INT_SNIFF; - else - p_dev->info |= BTA_DM_DI_ACP_SNIFF; - } - break; + } + break; - case BTM_PM_STS_ERROR: - p_dev->info &= ~BTA_DM_DI_SET_SNIFF; - break; + case BTM_PM_STS_ERROR: + p_dev->info &= ~BTA_DM_DI_SET_SNIFF; + break; - default: - break; + default: + break; } @@ -1100,14 +1024,12 @@ void bta_dm_pm_timer(tBTA_DM_MSG *p_data) ** Returns tBTA_DM_PEER_DEVICE ** *******************************************************************************/ -tBTA_DM_PEER_DEVICE * bta_dm_find_peer_device(BD_ADDR peer_addr) +tBTA_DM_PEER_DEVICE *bta_dm_find_peer_device(BD_ADDR peer_addr) { tBTA_DM_PEER_DEVICE *p_dev = NULL; - for (int i=0; ipeer_bdaddr); + } /* update device record and set link policy */ p_dev->link_policy = policy_setting; diff --git a/components/bt/bluedroid/bta/dm/bta_dm_sco.c b/components/bt/bluedroid/bta/dm/bta_dm_sco.c old mode 100755 new mode 100644 index 109140a4d2..06e58e9637 --- a/components/bt/bluedroid/bta/dm/bta_dm_sco.c +++ b/components/bt/bluedroid/bta/dm/bta_dm_sco.c @@ -38,7 +38,7 @@ ** Constants *****************************************************************************/ -#define BTA_DM_PCM_OVERLAP_SIZE 48 +#define BTA_DM_PCM_OVERLAP_SIZE 48 #define BTA_DM_PCM_SMPL_RATE_44100 44100 #define BTA_DM_PCM_SMPL_RATE_22050 22050 @@ -49,11 +49,10 @@ *****************************************************************************/ typedef INT32 (*PCONVERT_TO_BT_FILTERED) (UINT8 *pSrc, void *pDst, UINT32 dwSrcSamples, - UINT32 dwSrcSps,INT32 *pLastCurPos, UINT8 *pOverlapArea); + UINT32 dwSrcSps, INT32 *pLastCurPos, UINT8 *pOverlapArea); typedef INT32 (*PCONVERT_TO_BT_NOFILTER) (void *pSrc, void *pDst, UINT32 dwSrcSamples, - UINT32 dwSrcSps); -typedef struct -{ + UINT32 dwSrcSps); +typedef struct { UINT8 overlap_area[BTA_DM_PCM_OVERLAP_SIZE * 4]; UINT32 cur_pos; /* current position */ UINT32 src_sps; /* samples per second (source audio data) */ @@ -65,7 +64,7 @@ typedef struct UINT32 n_channels; /* number of channels (i.e. mono(1), stereo(2)...) */ UINT32 sample_size; UINT32 can_be_filtered; - UINT32 divisor; + UINT32 divisor; } tBTA_DM_PCM_RESAMPLE_CB; tBTA_DM_PCM_RESAMPLE_CB bta_dm_pcm_cb; @@ -240,7 +239,7 @@ tBTA_DM_PCM_RESAMPLE_CB bta_dm_pcm_cb; ** Local Function *****************************************************************************/ INT32 Convert_8M_ToBT_Filtered (UINT8 *pSrc, void *pDst, UINT32 dwSrcSamples, - UINT32 dwSrcSps, INT32 *pLastCurPos, UINT8 *pOverlapArea) + UINT32 dwSrcSps, INT32 *pLastCurPos, UINT8 *pOverlapArea) { INT32 CurrentPos = *pLastCurPos; SRC_TYPE *pIn, *pInEnd; @@ -252,30 +251,25 @@ INT32 Convert_8M_ToBT_Filtered (UINT8 *pSrc, void *pDst, UINT32 dwSrcSamples, memcpy (pOverlapArea + (BTA_DM_PCM_OVERLAP_SIZE * 2), pSrc, BTA_DM_PCM_OVERLAP_SIZE * 2); pOv = (SRC_TYPE *)(pOverlapArea + BTA_DM_PCM_OVERLAP_SIZE); - pOvEnd = (SRC_TYPE *)(pOverlapArea + (BTA_DM_PCM_OVERLAP_SIZE * 3)); + pOvEnd = (SRC_TYPE *)(pOverlapArea + (BTA_DM_PCM_OVERLAP_SIZE * 3)); pIn = (SRC_TYPE *)(pSrc + BTA_DM_PCM_OVERLAP_SIZE); - pInEnd = (SRC_TYPE *)(pSrc + (dwSrcSamples * SRC_CHANNELS * sizeof (SRC_TYPE)) - \ - BTA_DM_PCM_OVERLAP_SIZE); + pInEnd = (SRC_TYPE *)(pSrc + (dwSrcSamples * SRC_CHANNELS * sizeof (SRC_TYPE)) - \ + BTA_DM_PCM_OVERLAP_SIZE); - if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_44100) - { + if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_44100) { CONVERT_44100_TO_BLUETOOTH(pOv, pOvEnd); CONVERT_44100_TO_BLUETOOTH(pIn, pInEnd); - } - else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_22050) - { + } else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_22050) { CONVERT_22050_TO_BLUETOOTH(pOv, pOvEnd); CONVERT_22050_TO_BLUETOOTH(pIn, pInEnd); - } - else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_11025) - { + } else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_11025) { CONVERT_11025_TO_BLUETOOTH(pOv, pOvEnd); CONVERT_11025_TO_BLUETOOTH(pIn, pInEnd); } memcpy (pOverlapArea, pSrc + (dwSrcSamples * SRC_CHANNELS * sizeof (SRC_TYPE)) - \ - (BTA_DM_PCM_OVERLAP_SIZE * 2), BTA_DM_PCM_OVERLAP_SIZE * 2); + (BTA_DM_PCM_OVERLAP_SIZE * 2), BTA_DM_PCM_OVERLAP_SIZE * 2); *pLastCurPos = CurrentPos; @@ -293,14 +287,12 @@ INT32 Convert_8M_ToBT_NoFilter (void *pSrc, void *pDst, UINT32 dwSrcSamples, UIN // CurrentPos = (dwSrcSps >> 1); - while (dwSrcSamples--) - { + while (dwSrcSamples--) { CurrentPos -= 8000; - if (CurrentPos >= 0) + if (CurrentPos >= 0) { pbSrc++; - else - { + } else { sWorker = *pbSrc++; sWorker -= 0x80; sWorker <<= 8; @@ -336,29 +328,24 @@ INT32 Convert_16M_ToBT_Filtered (UINT8 *pSrc, void *pDst, UINT32 dwSrcSamples, memcpy (pOverlapArea + (BTA_DM_PCM_OVERLAP_SIZE * 2), pSrc, BTA_DM_PCM_OVERLAP_SIZE * 2); pOv = (SRC_TYPE *)(pOverlapArea + BTA_DM_PCM_OVERLAP_SIZE); - pOvEnd = (SRC_TYPE *)(pOverlapArea + (BTA_DM_PCM_OVERLAP_SIZE * 3)); + pOvEnd = (SRC_TYPE *)(pOverlapArea + (BTA_DM_PCM_OVERLAP_SIZE * 3)); pIn = (SRC_TYPE *)(pSrc + BTA_DM_PCM_OVERLAP_SIZE); - pInEnd = (SRC_TYPE *)(pSrc + (dwSrcSamples * SRC_CHANNELS * sizeof (SRC_TYPE)) - BTA_DM_PCM_OVERLAP_SIZE); + pInEnd = (SRC_TYPE *)(pSrc + (dwSrcSamples * SRC_CHANNELS * sizeof (SRC_TYPE)) - BTA_DM_PCM_OVERLAP_SIZE); - if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_44100) - { + if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_44100) { CONVERT_44100_TO_BLUETOOTH(pOv, pOvEnd); CONVERT_44100_TO_BLUETOOTH(pIn, pInEnd); - } - else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_22050) - { + } else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_22050) { CONVERT_22050_TO_BLUETOOTH(pOv, pOvEnd); CONVERT_22050_TO_BLUETOOTH(pIn, pInEnd); - } - else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_11025) - { + } else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_11025) { CONVERT_11025_TO_BLUETOOTH(pOv, pOvEnd); CONVERT_11025_TO_BLUETOOTH(pIn, pInEnd); } memcpy (pOverlapArea, pSrc + (dwSrcSamples * SRC_CHANNELS * sizeof (SRC_TYPE)) - \ - (BTA_DM_PCM_OVERLAP_SIZE * 2), BTA_DM_PCM_OVERLAP_SIZE * 2); + (BTA_DM_PCM_OVERLAP_SIZE * 2), BTA_DM_PCM_OVERLAP_SIZE * 2); *pLastCurPos = CurrentPos; @@ -375,14 +362,12 @@ INT32 Convert_16M_ToBT_NoFilter (void *pSrc, void *pDst, UINT32 dwSrcSamples, UI // CurrentPos = (dwSrcSps >> 1); - while (dwSrcSamples--) - { + while (dwSrcSamples--) { CurrentPos -= 8000; - if (CurrentPos >= 0) + if (CurrentPos >= 0) { psSrc++; - else - { + } else { *psDst++ = *psSrc++; CurrentPos += dwSrcSps; @@ -413,34 +398,29 @@ INT32 Convert_8S_ToBT_Filtered (UINT8 *pSrc, void *pDst, UINT32 dwSrcSamples, #if BTA_DM_SCO_DEBUG APPL_TRACE_DEBUG("Convert_8S_ToBT_Filtered CurrentPos %d, SRC_TYPE %d, SRC_CHANNELS %d, \ dwSrcSamples %d, dwSrcSps %d", CurrentPos, sizeof (SRC_TYPE), SRC_CHANNELS, \ - dwSrcSamples, dwSrcSps); + dwSrcSamples, dwSrcSps); #endif memcpy (pOverlapArea + (BTA_DM_PCM_OVERLAP_SIZE * 2), pSrc, BTA_DM_PCM_OVERLAP_SIZE * 2); pOv = (SRC_TYPE *)(pOverlapArea + BTA_DM_PCM_OVERLAP_SIZE); - pOvEnd = (SRC_TYPE *)(pOverlapArea + (BTA_DM_PCM_OVERLAP_SIZE * 3)); + pOvEnd = (SRC_TYPE *)(pOverlapArea + (BTA_DM_PCM_OVERLAP_SIZE * 3)); pIn = (SRC_TYPE *)(pSrc + BTA_DM_PCM_OVERLAP_SIZE); - pInEnd = (SRC_TYPE *)(pSrc + (dwSrcSamples * SRC_CHANNELS * sizeof (SRC_TYPE)) - BTA_DM_PCM_OVERLAP_SIZE); + pInEnd = (SRC_TYPE *)(pSrc + (dwSrcSamples * SRC_CHANNELS * sizeof (SRC_TYPE)) - BTA_DM_PCM_OVERLAP_SIZE); - if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_44100) - { + if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_44100) { CONVERT_44100_TO_BLUETOOTH(pOv, pOvEnd); CONVERT_44100_TO_BLUETOOTH(pIn, pInEnd); - } - else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_22050) - { + } else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_22050) { CONVERT_22050_TO_BLUETOOTH(pOv, pOvEnd); CONVERT_22050_TO_BLUETOOTH(pIn, pInEnd); - } - else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_11025) - { + } else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_11025) { CONVERT_11025_TO_BLUETOOTH(pOv, pOvEnd); CONVERT_11025_TO_BLUETOOTH(pIn, pInEnd); } memcpy (pOverlapArea, pSrc + (dwSrcSamples * SRC_CHANNELS * sizeof (SRC_TYPE)) - \ - (BTA_DM_PCM_OVERLAP_SIZE * 2), BTA_DM_PCM_OVERLAP_SIZE * 2); + (BTA_DM_PCM_OVERLAP_SIZE * 2), BTA_DM_PCM_OVERLAP_SIZE * 2); *pLastCurPos = CurrentPos; @@ -458,14 +438,12 @@ INT32 Convert_8S_ToBT_NoFilter (void *pSrc, void *pDst, UINT32 dwSrcSamples, UIN // CurrentPos = (dwSrcSps >> 1); - while (dwSrcSamples--) - { + while (dwSrcSamples--) { CurrentPos -= 8000; - if (CurrentPos >= 0) + if (CurrentPos >= 0) { pbSrc += 2; - else - { + } else { sWorker = *(unsigned char *)pbSrc; sWorker -= 0x80; sWorker <<= 8; @@ -510,29 +488,24 @@ INT32 Convert_16S_ToBT_Filtered (UINT8 *pSrc, void *pDst, UINT32 dwSrcSamples, memcpy (pOverlapArea + (BTA_DM_PCM_OVERLAP_SIZE * 2), pSrc, BTA_DM_PCM_OVERLAP_SIZE * 2); pOv = (SRC_TYPE *)(pOverlapArea + BTA_DM_PCM_OVERLAP_SIZE); - pOvEnd = (SRC_TYPE *)(pOverlapArea + (BTA_DM_PCM_OVERLAP_SIZE * 3)); + pOvEnd = (SRC_TYPE *)(pOverlapArea + (BTA_DM_PCM_OVERLAP_SIZE * 3)); pIn = (SRC_TYPE *)(pSrc + BTA_DM_PCM_OVERLAP_SIZE); - pInEnd = (SRC_TYPE *)(pSrc + (dwSrcSamples * SRC_CHANNELS * sizeof (SRC_TYPE)) - BTA_DM_PCM_OVERLAP_SIZE); + pInEnd = (SRC_TYPE *)(pSrc + (dwSrcSamples * SRC_CHANNELS * sizeof (SRC_TYPE)) - BTA_DM_PCM_OVERLAP_SIZE); - if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_44100) - { + if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_44100) { CONVERT_44100_TO_BLUETOOTH(pOv, pOvEnd); CONVERT_44100_TO_BLUETOOTH(pIn, pInEnd); - } - else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_22050) - { + } else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_22050) { CONVERT_22050_TO_BLUETOOTH(pOv, pOvEnd); CONVERT_22050_TO_BLUETOOTH(pIn, pInEnd); - } - else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_11025) - { + } else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_11025) { CONVERT_11025_TO_BLUETOOTH(pOv, pOvEnd); CONVERT_11025_TO_BLUETOOTH(pIn, pInEnd); } memcpy (pOverlapArea, pSrc + (dwSrcSamples * SRC_CHANNELS * sizeof (SRC_TYPE)) - \ - (BTA_DM_PCM_OVERLAP_SIZE * 2), BTA_DM_PCM_OVERLAP_SIZE * 2); + (BTA_DM_PCM_OVERLAP_SIZE * 2), BTA_DM_PCM_OVERLAP_SIZE * 2); *pLastCurPos = CurrentPos; @@ -550,14 +523,12 @@ INT32 Convert_16S_ToBT_NoFilter (void *pSrc, void *pDst, UINT32 dwSrcSamples, UI // CurrentPos = (dwSrcSps >> 1); - while (dwSrcSamples--) - { + while (dwSrcSamples--) { CurrentPos -= 8000; - if (CurrentPos >= 0) + if (CurrentPos >= 0) { psSrc += 2; - else - { + } else { /* CR 82894, to avoid overflow, divide before add */ sWorker = ((*psSrc) >> 1 ); psSrc++; @@ -596,56 +567,48 @@ void BTA_DmPcmInitSamples (UINT32 src_sps, UINT32 bits, UINT32 n_channels) p_cb->bits = bits; p_cb->n_channels = n_channels; p_cb->sample_size = 2; - p_cb->divisor = 2; + p_cb->divisor = 2; memset(p_cb->overlap_area, 0, sizeof(p_cb->overlap_area) ); if ((src_sps == BTA_DM_PCM_SMPL_RATE_44100) || - (src_sps == BTA_DM_PCM_SMPL_RATE_22050) || - (src_sps == BTA_DM_PCM_SMPL_RATE_11025)) - p_cb->can_be_filtered = 1; - else - p_cb->can_be_filtered = 0; + (src_sps == BTA_DM_PCM_SMPL_RATE_22050) || + (src_sps == BTA_DM_PCM_SMPL_RATE_11025)) { + p_cb->can_be_filtered = 1; + } else { + p_cb->can_be_filtered = 0; + } #if BTA_DM_SCO_DEBUG APPL_TRACE_DEBUG("bta_dm_pcm_init_samples: n_channels = %d bits = %d", n_channels, bits); #endif - if(n_channels == 1) - { + if (n_channels == 1) { /* mono */ - if(bits == 8) - { + if (bits == 8) { p_cb->filter = (PCONVERT_TO_BT_FILTERED) Convert_8M_ToBT_Filtered; p_cb->nofilter = (PCONVERT_TO_BT_NOFILTER) Convert_8M_ToBT_NoFilter; - p_cb->divisor = 1; - } - else - { + p_cb->divisor = 1; + } else { p_cb->filter = (PCONVERT_TO_BT_FILTERED) Convert_16M_ToBT_Filtered; p_cb->nofilter = (PCONVERT_TO_BT_NOFILTER) Convert_16M_ToBT_NoFilter; } - } - else - { + } else { /* stereo */ - if(bits == 8) - { + if (bits == 8) { p_cb->filter = (PCONVERT_TO_BT_FILTERED) Convert_8S_ToBT_Filtered; p_cb->nofilter = (PCONVERT_TO_BT_NOFILTER) Convert_8S_ToBT_NoFilter; - } - else - { + } else { p_cb->filter = (PCONVERT_TO_BT_FILTERED) Convert_16S_ToBT_Filtered; p_cb->nofilter = (PCONVERT_TO_BT_NOFILTER) Convert_16S_ToBT_NoFilter; - p_cb->divisor = 4; + p_cb->divisor = 4; } } #if BTA_DM_SCO_DEBUG APPL_TRACE_DEBUG("bta_pcm_init_dwn_sample: cur_pos %d, src_sps %d", \ - p_cb->cur_pos, p_cb->src_sps); + p_cb->cur_pos, p_cb->src_sps); APPL_TRACE_DEBUG("bta_pcm_init_dwn_sample: bits %d, n_channels %d, sample_size %d, ", \ - p_cb->bits, p_cb->n_channels, p_cb->sample_size); + p_cb->bits, p_cb->n_channels, p_cb->sample_size); APPL_TRACE_DEBUG("bta_pcm_init_dwn_sample: can_be_filtered %d, n_channels: %d, \ divisor %d", p_cb->can_be_filtered, p_cb->n_channels, p_cb->divisor); #endif @@ -675,15 +638,12 @@ INT32 BTA_DmPcmResample (void *p_src, UINT32 in_bytes, void *p_dst) #if BTA_DM_SCO_DEBUG APPL_TRACE_DEBUG("bta_pcm_resample : insamples %d", (in_bytes / bta_dm_pcm_cb.divisor)); #endif - if(bta_dm_pcm_cb.can_be_filtered) - { + if (bta_dm_pcm_cb.can_be_filtered) { out_sample = (*bta_dm_pcm_cb.filter) (p_src, p_dst, (in_bytes / bta_dm_pcm_cb.divisor), - bta_dm_pcm_cb.src_sps, (INT32 *) &bta_dm_pcm_cb.cur_pos, bta_dm_pcm_cb.overlap_area); - } - else - { + bta_dm_pcm_cb.src_sps, (INT32 *) &bta_dm_pcm_cb.cur_pos, bta_dm_pcm_cb.overlap_area); + } else { out_sample = (*bta_dm_pcm_cb.nofilter) (p_src, p_dst, - (in_bytes / bta_dm_pcm_cb.divisor), bta_dm_pcm_cb.src_sps); + (in_bytes / bta_dm_pcm_cb.divisor), bta_dm_pcm_cb.src_sps); } #if BTA_DM_SCO_DEBUG diff --git a/components/bt/bluedroid/bta/gatt/bta_gattc_act.c b/components/bt/bluedroid/bta/gatt/bta_gattc_act.c old mode 100755 new mode 100644 index 5f71d1f334..f03b545e1b --- a/components/bt/bluedroid/bta/gatt/bta_gattc_act.c +++ b/components/bt/bluedroid/bta/gatt/bta_gattc_act.c @@ -62,8 +62,7 @@ static void bta_gattc_deregister_cmpl(tBTA_GATTC_RCB *p_clreg); static void bta_gattc_enc_cmpl_cback(tGATT_IF gattc_if, BD_ADDR bda); static void bta_gattc_cong_cback (UINT16 conn_id, BOOLEAN congested); -static tGATT_CBACK bta_gattc_cl_cback = -{ +static tGATT_CBACK bta_gattc_cl_cback = { bta_gattc_conn_cback, bta_gattc_cmpl_cback, bta_gattc_disc_res_cback, @@ -74,8 +73,7 @@ static tGATT_CBACK bta_gattc_cl_cback = }; /* opcode(tGATTC_OPTYPE) order has to be comply with internal event order */ -static UINT16 bta_gattc_opcode_to_int_evt[] = -{ +static UINT16 bta_gattc_opcode_to_int_evt[] = { BTA_GATTC_API_READ_EVT, BTA_GATTC_API_WRITE_EVT, BTA_GATTC_API_EXEC_EVT, @@ -83,8 +81,7 @@ static UINT16 bta_gattc_opcode_to_int_evt[] = }; #if (BT_TRACE_VERBOSE == TRUE) -static const char *bta_gattc_op_code_name[] = -{ +static const char *bta_gattc_op_code_name[] = { "Unknown", "Discovery", "Read", @@ -113,14 +110,11 @@ static void bta_gattc_enable(tBTA_GATTC_CB *p_cb) { APPL_TRACE_DEBUG("bta_gattc_enable"); - if (p_cb->state == BTA_GATTC_STATE_DISABLED) - { + if (p_cb->state == BTA_GATTC_STATE_DISABLED) { /* initialize control block */ memset(&bta_gattc_cb, 0, sizeof(tBTA_GATTC_CB)); p_cb->state = BTA_GATTC_STATE_ENABLED; - } - else - { + } else { APPL_TRACE_DEBUG("GATTC is arelady enabled"); } } @@ -142,16 +136,13 @@ void bta_gattc_disable(tBTA_GATTC_CB *p_cb) APPL_TRACE_DEBUG("bta_gattc_disable"); - if (p_cb->state != BTA_GATTC_STATE_ENABLED) - { + if (p_cb->state != BTA_GATTC_STATE_ENABLED) { APPL_TRACE_ERROR("not enabled or disable in pogress"); return; } - for (i = 0; i cl_rcb[i].in_use) - { + for (i = 0; i < BTA_GATTC_CL_MAX; i ++) { + if (p_cb->cl_rcb[i].in_use) { p_cb->state = BTA_GATTC_STATE_DISABLING; /* don't deregister HH GATT IF */ /* HH GATT IF will be deregistered by bta_hh_le_deregister when disable HH */ @@ -166,8 +157,7 @@ void bta_gattc_disable(tBTA_GATTC_CB *p_cb) } /* no registered apps, indicate disable completed */ - if (p_cb->state != BTA_GATTC_STATE_DISABLING) - { + if (p_cb->state != BTA_GATTC_STATE_DISABLING) { p_cb->state = BTA_GATTC_STATE_DISABLED; memset(p_cb, 0, sizeof(tBTA_GATTC_CB)); } @@ -191,27 +181,21 @@ void bta_gattc_register(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA *p_data) tBTA_GATT_STATUS status = BTA_GATT_NO_RESOURCES; - APPL_TRACE_DEBUG("bta_gattc_register state %d\n",p_cb->state); + APPL_TRACE_DEBUG("bta_gattc_register state %d\n", p_cb->state); memset(&cb_data, 0, sizeof(cb_data)); cb_data.reg_oper.status = BTA_GATT_NO_RESOURCES; - - /* check if GATTC module is already enabled . Else enable */ - if (p_cb->state == BTA_GATTC_STATE_DISABLED) - { - bta_gattc_enable (p_cb); - } + + /* check if GATTC module is already enabled . Else enable */ + if (p_cb->state == BTA_GATTC_STATE_DISABLED) { + bta_gattc_enable (p_cb); + } /* todo need to check duplicate uuid */ - for (i = 0; i < BTA_GATTC_CL_MAX; i ++) - { - if (!p_cb->cl_rcb[i].in_use) - { - if ((p_app_uuid == NULL) || (p_cb->cl_rcb[i].client_if = GATT_Register(p_app_uuid, &bta_gattc_cl_cback)) == 0) - { + for (i = 0; i < BTA_GATTC_CL_MAX; i ++) { + if (!p_cb->cl_rcb[i].in_use) { + if ((p_app_uuid == NULL) || (p_cb->cl_rcb[i].client_if = GATT_Register(p_app_uuid, &bta_gattc_cl_cback)) == 0) { APPL_TRACE_ERROR("Register with GATT stack failed.\n"); status = BTA_GATT_ERROR; - } - else - { + } else { p_cb->cl_rcb[i].in_use = TRUE; p_cb->cl_rcb[i].p_cback = p_data->api_reg.p_cback; memcpy(&p_cb->cl_rcb[i].app_uuid, p_app_uuid, sizeof(tBT_UUID)); @@ -219,16 +203,13 @@ void bta_gattc_register(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA *p_data) /* BTA use the same client interface as BTE GATT statck */ cb_data.reg_oper.client_if = p_cb->cl_rcb[i].client_if; - if ((p_buf = (tBTA_GATTC_INT_START_IF *) GKI_getbuf(sizeof(tBTA_GATTC_INT_START_IF))) != NULL) - { + if ((p_buf = (tBTA_GATTC_INT_START_IF *) GKI_getbuf(sizeof(tBTA_GATTC_INT_START_IF))) != NULL) { p_buf->hdr.event = BTA_GATTC_INT_START_IF_EVT; p_buf->client_if = p_cb->cl_rcb[i].client_if; - APPL_TRACE_DEBUG("GATTC getbuf sucess.\n"); + APPL_TRACE_DEBUG("GATTC getbuf sucess.\n"); bta_sys_sendmsg(p_buf); status = BTA_GATT_OK; - } - else - { + } else { GATT_Deregister(p_cb->cl_rcb[i].client_if); status = BTA_GATT_NO_RESOURCES; @@ -240,10 +221,10 @@ void bta_gattc_register(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA *p_data) } /* callback with register event */ - if (p_data->api_reg.p_cback) - { - if (p_app_uuid != NULL) - memcpy(&(cb_data.reg_oper.app_uuid),p_app_uuid,sizeof(tBT_UUID)); + if (p_data->api_reg.p_cback) { + if (p_app_uuid != NULL) { + memcpy(&(cb_data.reg_oper.app_uuid), p_app_uuid, sizeof(tBT_UUID)); + } cb_data.reg_oper.status = status; (*p_data->api_reg.p_cback)(BTA_GATTC_REG_EVT, (tBTA_GATTC *)&cb_data); } @@ -261,13 +242,10 @@ void bta_gattc_start_if(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA *p_msg) { UNUSED(p_cb); - if (bta_gattc_cl_get_regcb(p_msg->int_start_if.client_if) !=NULL ) - { + if (bta_gattc_cl_get_regcb(p_msg->int_start_if.client_if) != NULL ) { GATT_StartIf(p_msg->int_start_if.client_if); - } - else - { - APPL_TRACE_ERROR("Unable to start app.: Unknown interface =%d",p_msg->int_start_if.client_if ); + } else { + APPL_TRACE_ERROR("Unable to start app.: Unknown interface =%d", p_msg->int_start_if.client_if ); } } @@ -285,32 +263,24 @@ void bta_gattc_deregister(tBTA_GATTC_CB *p_cb, tBTA_GATTC_RCB *p_clreg) UINT8 i; BT_HDR buf; - if (p_clreg != NULL) - { + if (p_clreg != NULL) { /* remove bg connection associated with this rcb */ - for (i = 0; i < BTA_GATTC_KNOWN_SR_MAX; i ++) - { - if (p_cb->bg_track[i].in_use) - { - if (p_cb->bg_track[i].cif_mask & (1 <<(p_clreg->client_if - 1))) - { + for (i = 0; i < BTA_GATTC_KNOWN_SR_MAX; i ++) { + if (p_cb->bg_track[i].in_use) { + if (p_cb->bg_track[i].cif_mask & (1 << (p_clreg->client_if - 1))) { bta_gattc_mark_bg_conn(p_clreg->client_if, p_cb->bg_track[i].remote_bda, FALSE, FALSE); GATT_CancelConnect(p_clreg->client_if, p_cb->bg_track[i].remote_bda, FALSE); } - if (p_cb->bg_track[i].cif_adv_mask & (1 <<(p_clreg->client_if - 1))) - { + if (p_cb->bg_track[i].cif_adv_mask & (1 << (p_clreg->client_if - 1))) { bta_gattc_mark_bg_conn(p_clreg->client_if, p_cb->bg_track[i].remote_bda, FALSE, TRUE); } } } - if (p_clreg->num_clcb > 0) - { + if (p_clreg->num_clcb > 0) { /* close all CLCB related to this app */ - for (i= 0; i < BTA_GATTC_CLCB_MAX; i ++) - { - if (p_cb->clcb[i].in_use && (p_cb->clcb[i].p_rcb == p_clreg)) - { + for (i = 0; i < BTA_GATTC_CLCB_MAX; i ++) { + if (p_cb->clcb[i].in_use && (p_cb->clcb[i].p_rcb == p_clreg)) { p_clreg->dereg_pending = TRUE; buf.event = BTA_GATTC_API_CLOSE_EVT; @@ -318,12 +288,10 @@ void bta_gattc_deregister(tBTA_GATTC_CB *p_cb, tBTA_GATTC_RCB *p_clreg) bta_gattc_close(&p_cb->clcb[i], (tBTA_GATTC_DATA *)&buf) ; } } - } - else + } else { bta_gattc_deregister_cmpl(p_clreg); - } - else - { + } + } else { APPL_TRACE_ERROR("bta_gattc_deregister Deregister Failedm unknown client cif"); } } @@ -336,25 +304,20 @@ void bta_gattc_deregister(tBTA_GATTC_CB *p_cb, tBTA_GATTC_RCB *p_clreg) ** Returns void ** *******************************************************************************/ -void bta_gattc_process_api_open (tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA * p_msg) +void bta_gattc_process_api_open (tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA *p_msg) { UINT16 event = ((BT_HDR *)p_msg)->event; tBTA_GATTC_CLCB *p_clcb = NULL; tBTA_GATTC_RCB *p_clreg = bta_gattc_cl_get_regcb(p_msg->api_conn.client_if); UNUSED(p_cb); - if (p_clreg != NULL) - { - if (p_msg->api_conn.is_direct) - { + if (p_clreg != NULL) { + if (p_msg->api_conn.is_direct) { if ((p_clcb = bta_gattc_find_alloc_clcb(p_msg->api_conn.client_if, p_msg->api_conn.remote_bda, - p_msg->api_conn.transport)) != NULL) - { + p_msg->api_conn.transport)) != NULL) { bta_gattc_sm_execute(p_clcb, event, p_msg); - } - else - { + } else { APPL_TRACE_ERROR("No resources to open a new connection."); bta_gattc_send_open_cback(p_clreg, @@ -363,16 +326,12 @@ void bta_gattc_process_api_open (tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA * p_msg) BTA_GATT_INVALID_CONN_ID, p_msg->api_conn.transport, 0); } - } - else - { + } else { bta_gattc_init_bk_conn(&p_msg->api_conn, p_clreg); } - } - else - { + } else { APPL_TRACE_ERROR("bta_gattc_process_api_open Failed, unknown client_if: %d", - p_msg->api_conn.client_if); + p_msg->api_conn.client_if); } } /******************************************************************************* @@ -384,7 +343,7 @@ void bta_gattc_process_api_open (tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA * p_msg) ** Returns void ** *******************************************************************************/ -void bta_gattc_process_api_open_cancel (tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA * p_msg) +void bta_gattc_process_api_open_cancel (tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA *p_msg) { UINT16 event = ((BT_HDR *)p_msg)->event; tBTA_GATTC_CLCB *p_clcb = NULL; @@ -392,29 +351,22 @@ void bta_gattc_process_api_open_cancel (tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA * p tBTA_GATTC cb_data; UNUSED(p_cb); - if (p_msg->api_cancel_conn.is_direct) - { + if (p_msg->api_cancel_conn.is_direct) { if ((p_clcb = bta_gattc_find_clcb_by_cif(p_msg->api_cancel_conn.client_if, - p_msg->api_cancel_conn.remote_bda, - BTA_GATT_TRANSPORT_LE)) != NULL) - { + p_msg->api_cancel_conn.remote_bda, + BTA_GATT_TRANSPORT_LE)) != NULL) { bta_gattc_sm_execute(p_clcb, event, p_msg); - } - else - { + } else { APPL_TRACE_ERROR("No such connection need to be cancelled"); p_clreg = bta_gattc_cl_get_regcb(p_msg->api_cancel_conn.client_if); - if (p_clreg && p_clreg->p_cback) - { + if (p_clreg && p_clreg->p_cback) { cb_data.status = BTA_GATT_ERROR; (*p_clreg->p_cback)(BTA_GATTC_CANCEL_OPEN_EVT, &cb_data); } } - } - else - { + } else { bta_gattc_cancel_bk_conn(&p_msg->api_cancel_conn); } @@ -437,8 +389,7 @@ void bta_gattc_process_enc_cmpl(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA *p_msg) p_clreg = bta_gattc_cl_get_regcb(p_msg->enc_cmpl.client_if); - if (p_clreg && p_clreg->p_cback) - { + if (p_clreg && p_clreg->p_cback) { memset(&cb_data, 0, sizeof(tBTA_GATTC)); cb_data.enc_cmpl.client_if = p_msg->enc_cmpl.client_if; @@ -462,10 +413,11 @@ void bta_gattc_cancel_open_error(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_dat tBTA_GATTC cb_data; UNUSED(p_data); - cb_data.status=BTA_GATT_ERROR; + cb_data.status = BTA_GATT_ERROR; - if ( p_clcb && p_clcb->p_rcb && p_clcb->p_rcb->p_cback ) + if ( p_clcb && p_clcb->p_rcb && p_clcb->p_rcb->p_cback ) { (*p_clcb->p_rcb->p_cback)(BTA_GATTC_CANCEL_OPEN_EVT, &cb_data); + } } /******************************************************************************* @@ -528,20 +480,16 @@ void bta_gattc_open(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) /* open/hold a connection */ if (!GATT_Connect(p_clcb->p_rcb->client_if, p_data->api_conn.remote_bda, - TRUE, p_data->api_conn.transport)) - { + TRUE, p_data->api_conn.transport)) { APPL_TRACE_ERROR("Connection open failure"); bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_OPEN_FAIL_EVT, p_data); - } - else - { + } else { /* a connected remote device */ if (GATT_GetConnIdIfConnected(p_clcb->p_rcb->client_if, p_data->api_conn.remote_bda, &p_clcb->bta_conn_id, - p_data->api_conn.transport)) - { + p_data->api_conn.transport)) { gattc_data.int_conn.hdr.layer_specific = p_clcb->bta_conn_id; bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_CONN_EVT, &gattc_data); @@ -565,30 +513,24 @@ void bta_gattc_init_bk_conn(tBTA_GATTC_API_OPEN *p_data, tBTA_GATTC_RCB *p_clreg tBTA_GATTC_CLCB *p_clcb; tBTA_GATTC_DATA gattc_data; - if (bta_gattc_mark_bg_conn(p_data->client_if, p_data->remote_bda, TRUE, FALSE)) - { + if (bta_gattc_mark_bg_conn(p_data->client_if, p_data->remote_bda, TRUE, FALSE)) { /* always call open to hold a connection */ - if (!GATT_Connect(p_data->client_if, p_data->remote_bda, FALSE, p_data->transport)) - { + if (!GATT_Connect(p_data->client_if, p_data->remote_bda, FALSE, p_data->transport)) { uint8_t *bda = (uint8_t *)p_data->remote_bda; status = BTA_GATT_ERROR; APPL_TRACE_ERROR("%s unable to connect to remote bd_addr:%02x:%02x:%02x:%02x:%02x:%02x", - __func__, bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]); + __func__, bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]); - } - else - { + } else { status = BTA_GATT_OK; /* if is a connected remote device */ if (GATT_GetConnIdIfConnected(p_data->client_if, p_data->remote_bda, &conn_id, - p_data->transport)) - { + p_data->transport)) { if ((p_clcb = bta_gattc_find_alloc_clcb(p_data->client_if, p_data->remote_bda, - BTA_GATT_TRANSPORT_LE)) != NULL) - { + BTA_GATT_TRANSPORT_LE)) != NULL) { gattc_data.hdr.layer_specific = p_clcb->bta_conn_id = conn_id; /* open connection */ @@ -600,10 +542,9 @@ void bta_gattc_init_bk_conn(tBTA_GATTC_API_OPEN *p_data, tBTA_GATTC_RCB *p_clreg } /* open failure, report OPEN_EVT */ - if (status != BTA_GATT_OK) - { + if (status != BTA_GATT_OK) { bta_gattc_send_open_cback(p_clreg, status, p_data->remote_bda, - BTA_GATT_INVALID_CONN_ID, BTA_GATT_TRANSPORT_LE, 0); + BTA_GATT_INVALID_CONN_ID, BTA_GATT_TRANSPORT_LE, 0); } } /******************************************************************************* @@ -622,21 +563,16 @@ void bta_gattc_cancel_bk_conn(tBTA_GATTC_API_CANCEL_OPEN *p_data) cb_data.status = BTA_GATT_ERROR; /* remove the device from the bg connection mask */ - if (bta_gattc_mark_bg_conn(p_data->client_if, p_data->remote_bda, FALSE, FALSE)) - { - if (GATT_CancelConnect(p_data->client_if, p_data->remote_bda, FALSE)) - { + if (bta_gattc_mark_bg_conn(p_data->client_if, p_data->remote_bda, FALSE, FALSE)) { + if (GATT_CancelConnect(p_data->client_if, p_data->remote_bda, FALSE)) { cb_data.status = BTA_GATT_OK; - } - else - { + } else { APPL_TRACE_ERROR("bta_gattc_cancel_bk_conn failed"); } } p_clreg = bta_gattc_cl_get_regcb(p_data->client_if); - if (p_clreg && p_clreg->p_cback) - { + if (p_clreg && p_clreg->p_cback) { (*p_clreg->p_cback)(BTA_GATTC_CANCEL_OPEN_EVT, &cb_data); } @@ -655,8 +591,7 @@ void bta_gattc_cancel_open_ok(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) tBTA_GATTC cb_data; UNUSED(p_data); - if ( p_clcb->p_rcb->p_cback ) - { + if ( p_clcb->p_rcb->p_cback ) { cb_data.status = BTA_GATT_OK; (*p_clcb->p_rcb->p_cback)(BTA_GATTC_CANCEL_OPEN_EVT, &cb_data); } @@ -676,14 +611,10 @@ void bta_gattc_cancel_open(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) { tBTA_GATTC cb_data; - if (GATT_CancelConnect(p_clcb->p_rcb->client_if, p_data->api_cancel_conn.remote_bda, TRUE)) - { + if (GATT_CancelConnect(p_clcb->p_rcb->client_if, p_data->api_cancel_conn.remote_bda, TRUE)) { bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_CANCEL_OPEN_OK_EVT, p_data); - } - else - { - if ( p_clcb->p_rcb->p_cback ) - { + } else { + if ( p_clcb->p_rcb->p_cback ) { cb_data.status = BTA_GATT_ERROR; (*p_clcb->p_rcb->p_cback)(BTA_GATTC_CANCEL_OPEN_EVT, &cb_data); } @@ -701,51 +632,47 @@ void bta_gattc_cancel_open(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) void bta_gattc_conn(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) { tBTA_GATTC_IF gatt_if; - APPL_TRACE_DEBUG("bta_gattc_conn server cache state=%d",p_clcb->p_srcb->state); + APPL_TRACE_DEBUG("bta_gattc_conn server cache state=%d", p_clcb->p_srcb->state); - if (p_data != NULL) - { - APPL_TRACE_DEBUG("bta_gattc_conn conn_id=%d",p_data->hdr.layer_specific); + if (p_data != NULL) { + APPL_TRACE_DEBUG("bta_gattc_conn conn_id=%d", p_data->hdr.layer_specific); p_clcb->bta_conn_id = p_data->int_conn.hdr.layer_specific; GATT_GetConnectionInfor(p_data->hdr.layer_specific, &gatt_if, p_clcb->bda, &p_clcb->transport); } - p_clcb->p_srcb->connected = TRUE; + p_clcb->p_srcb->connected = TRUE; - if (p_clcb->p_srcb->mtu == 0) - p_clcb->p_srcb->mtu = GATT_DEF_BLE_MTU_SIZE; + if (p_clcb->p_srcb->mtu == 0) { + p_clcb->p_srcb->mtu = GATT_DEF_BLE_MTU_SIZE; + } - /* start database cache if needed */ - if (p_clcb->p_srcb->p_srvc_cache == NULL || - p_clcb->p_srcb->state != BTA_GATTC_SERV_IDLE) - { - if (p_clcb->p_srcb->state == BTA_GATTC_SERV_IDLE) - { - p_clcb->p_srcb->state = BTA_GATTC_SERV_LOAD; - bta_gattc_sm_execute(p_clcb, BTA_GATTC_START_CACHE_EVT, NULL); - } - else /* cache is building */ - p_clcb->state = BTA_GATTC_DISCOVER_ST; + /* start database cache if needed */ + if (p_clcb->p_srcb->p_srvc_cache == NULL || + p_clcb->p_srcb->state != BTA_GATTC_SERV_IDLE) { + if (p_clcb->p_srcb->state == BTA_GATTC_SERV_IDLE) { + p_clcb->p_srcb->state = BTA_GATTC_SERV_LOAD; + bta_gattc_sm_execute(p_clcb, BTA_GATTC_START_CACHE_EVT, NULL); + } else { /* cache is building */ + p_clcb->state = BTA_GATTC_DISCOVER_ST; } + } - else - { - /* a pending service handle change indication */ - if (p_clcb->p_srcb->srvc_hdl_chg) - { - p_clcb->p_srcb->srvc_hdl_chg = FALSE; - /* start discovery */ - bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_DISCOVER_EVT, NULL); - } + else { + /* a pending service handle change indication */ + if (p_clcb->p_srcb->srvc_hdl_chg) { + p_clcb->p_srcb->srvc_hdl_chg = FALSE; + /* start discovery */ + bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_DISCOVER_EVT, NULL); } + } - if (p_clcb->p_rcb) - { + if (p_clcb->p_rcb) { /* there is no RM for GATT */ - if (p_clcb->transport == BTA_TRANSPORT_BR_EDR) + if (p_clcb->transport == BTA_TRANSPORT_BR_EDR) { bta_sys_conn_open(BTA_ID_GATTC, BTA_ALL_APP_ID, p_clcb->bda); + } bta_gattc_send_open_cback(p_clcb->p_rcb, BTA_GATT_OK, @@ -753,8 +680,8 @@ void bta_gattc_conn(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) p_clcb->bta_conn_id, p_clcb->transport, p_clcb->p_srcb->mtu); - } } +} /******************************************************************************* ** ** Function bta_gattc_close_fail @@ -768,8 +695,7 @@ void bta_gattc_close_fail(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) { tBTA_GATTC cb_data; - if ( p_clcb->p_rcb->p_cback ) - { + if ( p_clcb->p_rcb->p_cback ) { memset(&cb_data, 0, sizeof(tBTA_GATTC)); cb_data.close.client_if = p_clcb->p_rcb->client_if; cb_data.close.conn_id = p_data->hdr.layer_specific; @@ -796,7 +722,7 @@ void bta_gattc_close(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) tBTA_GATTC_RCB *p_clreg = p_clcb->p_rcb; tBTA_GATTC cb_data; - APPL_TRACE_DEBUG("bta_gattc_close conn_id=%d",p_clcb->bta_conn_id); + APPL_TRACE_DEBUG("bta_gattc_close conn_id=%d", p_clcb->bta_conn_id); cb_data.close.client_if = p_clcb->p_rcb->client_if; cb_data.close.conn_id = p_clcb->bta_conn_id; @@ -804,26 +730,24 @@ void bta_gattc_close(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) cb_data.close.status = p_clcb->status; bdcpy(cb_data.close.remote_bda, p_clcb->bda); - if (p_clcb->transport == BTA_TRANSPORT_BR_EDR) - bta_sys_conn_close( BTA_ID_GATTC ,BTA_ALL_APP_ID, p_clcb->bda); + if (p_clcb->transport == BTA_TRANSPORT_BR_EDR) { + bta_sys_conn_close( BTA_ID_GATTC , BTA_ALL_APP_ID, p_clcb->bda); + } bta_gattc_clcb_dealloc(p_clcb); - if (p_data->hdr.event == BTA_GATTC_API_CLOSE_EVT) - { + if (p_data->hdr.event == BTA_GATTC_API_CLOSE_EVT) { cb_data.close.status = GATT_Disconnect(p_data->hdr.layer_specific); - } - else if (p_data->hdr.event == BTA_GATTC_INT_DISCONN_EVT) - { + } else if (p_data->hdr.event == BTA_GATTC_INT_DISCONN_EVT) { cb_data.close.status = p_data->int_conn.reason; cb_data.close.reason = p_data->int_conn.reason; } - if(p_cback) + if (p_cback) { (* p_cback)(BTA_GATTC_CLOSE_EVT, (tBTA_GATTC *)&cb_data); + } - if (p_clreg->num_clcb == 0 && p_clreg->dereg_pending) - { + if (p_clreg->num_clcb == 0 && p_clreg->dereg_pending) { bta_gattc_deregister_cmpl(p_clreg); } } @@ -841,10 +765,8 @@ void bta_gattc_reset_discover_st(tBTA_GATTC_SERV *p_srcb, tBTA_GATT_STATUS statu tBTA_GATTC_CB *p_cb = &bta_gattc_cb; UINT8 i; - for (i = 0; i < BTA_GATTC_CLCB_MAX; i ++) - { - if (p_cb->clcb[i].p_srcb == p_srcb) - { + for (i = 0; i < BTA_GATTC_CLCB_MAX; i ++) { + if (p_cb->clcb[i].p_srcb == p_srcb) { p_cb->clcb[i].status = status; bta_gattc_sm_execute(&p_cb->clcb[i], BTA_GATTC_DISCOVER_CMPL_EVT, NULL); } @@ -864,16 +786,16 @@ void bta_gattc_disc_close(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) APPL_TRACE_DEBUG("%s: Discovery cancel conn_id=%d", __func__, p_clcb->bta_conn_id); - if (p_clcb->disc_active) + if (p_clcb->disc_active) { bta_gattc_reset_discover_st(p_clcb->p_srcb, BTA_GATT_ERROR); - else + } else { p_clcb->state = BTA_GATTC_CONN_ST; + } // This function only gets called as the result of a BTA_GATTC_API_CLOSE_EVT // while in the BTA_GATTC_DISCOVER_ST state. Once the state changes, the // connection itself still needs to be closed to resolve the original event. - if (p_clcb->state == BTA_GATTC_CONN_ST) - { + if (p_clcb->state == BTA_GATTC_CONN_ST) { APPL_TRACE_DEBUG("State is back to BTA_GATTC_CONN_ST. " "Trigger connection close"); bta_gattc_close(p_clcb, p_data); @@ -897,10 +819,8 @@ void bta_gattc_set_discover_st(tBTA_GATTC_SERV *p_srcb) #if BLE_INCLUDED == TRUE L2CA_EnableUpdateBleConnParams(p_srcb->server_bda, FALSE); #endif - for (i = 0; i < BTA_GATTC_CLCB_MAX; i ++) - { - if (p_cb->clcb[i].p_srcb == p_srcb) - { + for (i = 0; i < BTA_GATTC_CLCB_MAX; i ++) { + if (p_cb->clcb[i].p_srcb == p_srcb) { p_cb->clcb[i].status = BTA_GATT_OK; p_cb->clcb[i].state = BTA_GATTC_DISCOVER_ST; } @@ -938,16 +858,15 @@ void bta_gattc_cfg_mtu(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) { tBTA_GATT_STATUS status; - if (bta_gattc_enqueue(p_clcb, p_data)) - { + if (bta_gattc_enqueue(p_clcb, p_data)) { status = GATTC_ConfigureMTU (p_clcb->bta_conn_id, p_data->api_mtu.mtu); /* if failed, return callback here */ - if (status != GATT_SUCCESS && status != GATT_CMD_STARTED) - { + if (status != GATT_SUCCESS && status != GATT_CMD_STARTED) { /* Dequeue the data, if it was enqueued */ - if (p_clcb->p_q_cmd == p_data) + if (p_clcb->p_q_cmd == p_data) { p_clcb->p_q_cmd = NULL; + } bta_gattc_cmpl_sendmsg(p_clcb->bta_conn_id, GATTC_OPTYPE_CONFIG, status, NULL); } @@ -967,53 +886,49 @@ void bta_gattc_start_discover(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) UNUSED(p_data); APPL_TRACE_DEBUG("bta_gattc_start_discover conn_id=%d p_clcb->p_srcb->state = %d ", - p_clcb->bta_conn_id, p_clcb->p_srcb->state); + p_clcb->bta_conn_id, p_clcb->p_srcb->state); if (((p_clcb->p_q_cmd == NULL || p_clcb->auto_update == BTA_GATTC_REQ_WAITING) && - p_clcb->p_srcb->state == BTA_GATTC_SERV_IDLE) || - p_clcb->p_srcb->state == BTA_GATTC_SERV_DISC) - /* no pending operation, start discovery right away */ + p_clcb->p_srcb->state == BTA_GATTC_SERV_IDLE) || + p_clcb->p_srcb->state == BTA_GATTC_SERV_DISC) + /* no pending operation, start discovery right away */ { p_clcb->auto_update = BTA_GATTC_NO_SCHEDULE; - if (p_clcb->p_srcb != NULL) - { + if (p_clcb->p_srcb != NULL) { /* clear the service change mask */ p_clcb->p_srcb->srvc_hdl_chg = FALSE; p_clcb->p_srcb->update_count = 0; p_clcb->p_srcb->state = BTA_GATTC_SERV_DISC_ACT; - if (p_clcb->transport == BTA_TRANSPORT_LE) + if (p_clcb->transport == BTA_TRANSPORT_LE) { L2CA_EnableUpdateBleConnParams(p_clcb->p_srcb->server_bda, FALSE); + } /* set all srcb related clcb into discovery ST */ bta_gattc_set_discover_st(p_clcb->p_srcb); - if ((p_clcb->status = bta_gattc_init_cache(p_clcb->p_srcb)) == BTA_GATT_OK) - { + if ((p_clcb->status = bta_gattc_init_cache(p_clcb->p_srcb)) == BTA_GATT_OK) { p_clcb->status = bta_gattc_discover_pri_service(p_clcb->bta_conn_id, - p_clcb->p_srcb, GATT_DISC_SRVC_ALL); + p_clcb->p_srcb, GATT_DISC_SRVC_ALL); } - if (p_clcb->status != BTA_GATT_OK) - { + if (p_clcb->status != BTA_GATT_OK) { APPL_TRACE_ERROR("discovery on server failed"); bta_gattc_reset_discover_st(p_clcb->p_srcb, p_clcb->status); - } - else + } else { p_clcb->disc_active = TRUE; - } - else - { + } + } else { APPL_TRACE_ERROR("unknown device, can not start discovery"); } } /* pending operation, wait until it finishes */ - else - { + else { p_clcb->auto_update = BTA_GATTC_DISC_WAITING; - if (p_clcb->p_srcb->state == BTA_GATTC_SERV_IDLE) - p_clcb->state = BTA_GATTC_CONN_ST; /* set clcb state */ + if (p_clcb->p_srcb->state == BTA_GATTC_SERV_IDLE) { + p_clcb->state = BTA_GATTC_CONN_ST; /* set clcb state */ + } } } @@ -1031,22 +946,20 @@ void bta_gattc_disc_cmpl(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) tBTA_GATTC_DATA *p_q_cmd = p_clcb->p_q_cmd; UNUSED(p_data); - APPL_TRACE_DEBUG("bta_gattc_disc_cmpl conn_id=%d",p_clcb->bta_conn_id); + APPL_TRACE_DEBUG("bta_gattc_disc_cmpl conn_id=%d", p_clcb->bta_conn_id); #if BLE_INCLUDED == TRUE - if(p_clcb->transport == BTA_TRANSPORT_LE) + if (p_clcb->transport == BTA_TRANSPORT_LE) { L2CA_EnableUpdateBleConnParams(p_clcb->p_srcb->server_bda, TRUE); + } #endif p_clcb->p_srcb->state = BTA_GATTC_SERV_IDLE; p_clcb->disc_active = FALSE; - if (p_clcb->status != GATT_SUCCESS) - { + if (p_clcb->status != GATT_SUCCESS) { /* clean up cache */ - if(p_clcb->p_srcb && p_clcb->p_srcb->p_srvc_cache) - { - while (!GKI_queue_is_empty(&p_clcb->p_srcb->cache_buffer)) - { + if (p_clcb->p_srcb && p_clcb->p_srcb->p_srvc_cache) { + while (!GKI_queue_is_empty(&p_clcb->p_srcb->cache_buffer)) { GKI_freebuf (GKI_dequeue (&p_clcb->p_srcb->cache_buffer)); } p_clcb->p_srcb->p_srvc_cache = NULL; @@ -1058,14 +971,12 @@ void bta_gattc_disc_cmpl(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) /* release pending attribute list buffer */ utl_freebuf((void **)&p_clcb->p_srcb->p_srvc_list); - if (p_clcb->auto_update == BTA_GATTC_DISC_WAITING) - { + if (p_clcb->auto_update == BTA_GATTC_DISC_WAITING) { /* start discovery again */ bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_DISCOVER_EVT, NULL); } /* get any queued command to proceed */ - else if (p_q_cmd != NULL) - { + else if (p_q_cmd != NULL) { p_clcb->p_q_cmd = NULL; bta_gattc_sm_execute(p_clcb, p_q_cmd->hdr.event, p_q_cmd); @@ -1093,19 +1004,15 @@ void bta_gattc_read(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) tGATT_READ_PARAM read_param; tBTA_GATT_STATUS status; - memset (&read_param, 0 ,sizeof(tGATT_READ_PARAM)); + memset (&read_param, 0 , sizeof(tGATT_READ_PARAM)); - if (bta_gattc_enqueue(p_clcb, p_data)) - { + if (bta_gattc_enqueue(p_clcb, p_data)) { if ((handle = bta_gattc_id2handle(p_clcb->p_srcb, &p_data->api_read.srvc_id, &p_data->api_read.char_id, - p_data->api_read.p_descr_type)) == 0) - { + p_data->api_read.p_descr_type)) == 0) { status = BTA_GATT_ERROR; - } - else - { + } else { read_param.by_handle.handle = handle; read_param.by_handle.auth_req = p_data->api_read.auth_req; @@ -1113,11 +1020,11 @@ void bta_gattc_read(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) } /* read fail */ - if (status != BTA_GATT_OK) - { + if (status != BTA_GATT_OK) { /* Dequeue the data, if it was enqueued */ - if (p_clcb->p_q_cmd == p_data) + if (p_clcb->p_q_cmd == p_data) { p_clcb->p_q_cmd = NULL; + } bta_gattc_cmpl_sendmsg(p_clcb->bta_conn_id, GATTC_OPTYPE_READ, status, NULL); } @@ -1138,43 +1045,34 @@ void bta_gattc_read_multi(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) tGATT_READ_PARAM read_param; tBTA_GATTC_ATTR_ID *p_id; - if (bta_gattc_enqueue(p_clcb, p_data)) - { + if (bta_gattc_enqueue(p_clcb, p_data)) { memset(&read_param, 0, sizeof(tGATT_READ_PARAM)); p_id = p_data->api_read_multi.p_id_list; - for (i = 0; i < p_data->api_read_multi.num_attr && p_id; i ++, p_id ++) - { + for (i = 0; i < p_data->api_read_multi.num_attr && p_id; i ++, p_id ++) { handle = 0; - if (p_id->id_type == BTA_GATT_TYPE_CHAR) - { + if (p_id->id_type == BTA_GATT_TYPE_CHAR) { handle = bta_gattc_id2handle(p_clcb->p_srcb, - &p_id->id_value.char_id.srvc_id, - &p_id->id_value.char_id.char_id, - NULL); - } - else if (p_id->id_type == BTA_GATT_TYPE_CHAR_DESCR) - { + &p_id->id_value.char_id.srvc_id, + &p_id->id_value.char_id.char_id, + NULL); + } else if (p_id->id_type == BTA_GATT_TYPE_CHAR_DESCR) { handle = bta_gattc_id2handle(p_clcb->p_srcb, - &p_id->id_value.char_descr_id.char_id.srvc_id, - &p_id->id_value.char_descr_id.char_id.char_id, - &p_id->id_value.char_descr_id.descr_id); - } - else - { + &p_id->id_value.char_descr_id.char_id.srvc_id, + &p_id->id_value.char_descr_id.char_id.char_id, + &p_id->id_value.char_descr_id.descr_id); + } else { APPL_TRACE_ERROR("invalud ID type: %d", p_id->id_type); } - if (handle == 0) - { + if (handle == 0) { status = BTA_GATT_ERROR; break; } } - if (status == BTA_GATT_OK) - { + if (status == BTA_GATT_OK) { read_param.read_multiple.num_handles = p_data->api_read_multi.num_attr; read_param.read_multiple.auth_req = p_data->api_read_multi.auth_req; @@ -1182,11 +1080,11 @@ void bta_gattc_read_multi(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) } /* read fail */ - if (status != BTA_GATT_OK) - { + if (status != BTA_GATT_OK) { /* Dequeue the data, if it was enqueued */ - if (p_clcb->p_q_cmd == p_data) + if (p_clcb->p_q_cmd == p_data) { p_clcb->p_q_cmd = NULL; + } bta_gattc_cmpl_sendmsg(p_clcb->bta_conn_id, GATTC_OPTYPE_READ, status, NULL); } @@ -1207,34 +1105,31 @@ void bta_gattc_write(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) tGATT_VALUE attr = {0}; tBTA_GATT_STATUS status = BTA_GATT_OK; - if (bta_gattc_enqueue(p_clcb, p_data)) - { + if (bta_gattc_enqueue(p_clcb, p_data)) { if ((handle = bta_gattc_id2handle(p_clcb->p_srcb, &p_data->api_write.srvc_id, &p_data->api_write.char_id, - p_data->api_write.p_descr_type)) == 0) - { + p_data->api_write.p_descr_type)) == 0) { status = BTA_GATT_ERROR; - } - else - { - attr.handle= handle; + } else { + attr.handle = handle; attr.offset = p_data->api_write.offset; attr.len = p_data->api_write.len; attr.auth_req = p_data->api_write.auth_req; - if (p_data->api_write.p_value) + if (p_data->api_write.p_value) { memcpy(attr.value, p_data->api_write.p_value, p_data->api_write.len); + } status = GATTC_Write(p_clcb->bta_conn_id, p_data->api_write.write_type, &attr); } /* write fail */ - if (status != BTA_GATT_OK) - { + if (status != BTA_GATT_OK) { /* Dequeue the data, if it was enqueued */ - if (p_clcb->p_q_cmd == p_data) + if (p_clcb->p_q_cmd == p_data) { p_clcb->p_q_cmd = NULL; + } bta_gattc_cmpl_sendmsg(p_clcb->bta_conn_id, GATTC_OPTYPE_WRITE, status, NULL); } @@ -1252,15 +1147,14 @@ void bta_gattc_execute(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) { tBTA_GATT_STATUS status; - if (bta_gattc_enqueue(p_clcb, p_data)) - { + if (bta_gattc_enqueue(p_clcb, p_data)) { status = GATTC_ExecuteWrite(p_clcb->bta_conn_id, p_data->api_exec.is_execute); - if (status != BTA_GATT_OK) - { + if (status != BTA_GATT_OK) { /* Dequeue the data, if it was enqueued */ - if (p_clcb->p_q_cmd == p_data) + if (p_clcb->p_q_cmd == p_data) { p_clcb->p_q_cmd = NULL; + } bta_gattc_cmpl_sendmsg(p_clcb->bta_conn_id, GATTC_OPTYPE_EXE_WRITE, status, NULL); } @@ -1282,22 +1176,15 @@ void bta_gattc_confirm(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) if ((handle = bta_gattc_id2handle(p_clcb->p_srcb, &p_data->api_confirm.srvc_id, &p_data->api_confirm.char_id, - NULL)) == 0) - { + NULL)) == 0) { APPL_TRACE_ERROR("Can not map service/char ID into valid handle"); - } - else - { + } else { if (GATTC_SendHandleValueConfirm(p_data->api_confirm.hdr.layer_specific, handle) - != GATT_SUCCESS) - { + != GATT_SUCCESS) { APPL_TRACE_ERROR("bta_gattc_confirm to handle [0x%04x] failed", handle); - } - else - { + } else { /* if over BR_EDR, inform PM for mode change */ - if (p_clcb->transport == BTA_TRANSPORT_BR_EDR) - { + if (p_clcb->transport == BTA_TRANSPORT_BR_EDR) { bta_sys_busy(BTA_ID_GATTC, BTA_ALL_APP_ID, p_clcb->bda); bta_sys_idle(BTA_ID_GATTC, BTA_ALL_APP_ID, p_clcb->bda); } @@ -1324,29 +1211,23 @@ void bta_gattc_read_cmpl(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_OP_CMPL *p_data) cb_data.read.status = p_data->status; - if (p_data->p_cmpl != NULL && p_data->status == BTA_GATT_OK) - { + if (p_data->p_cmpl != NULL && p_data->status == BTA_GATT_OK) { if (bta_gattc_handle2id(p_clcb->p_srcb, p_data->p_cmpl->att_value.handle, &cb_data.read.srvc_id, &cb_data.read.char_id, - &cb_data.read.descr_type) == FALSE) - { + &cb_data.read.descr_type) == FALSE) { cb_data.read.status = BTA_GATT_INTERNAL_ERROR; APPL_TRACE_ERROR("can not map to GATT ID. handle = 0x%04x", - p_data->p_cmpl->att_value.handle); - } - else - { + p_data->p_cmpl->att_value.handle); + } else { cb_data.read.status = bta_gattc_pack_read_cb_data(p_clcb->p_srcb, - &cb_data.read.descr_type.uuid, - &p_data->p_cmpl->att_value, - &read_value); + &cb_data.read.descr_type.uuid, + &p_data->p_cmpl->att_value, + &read_value); cb_data.read.p_value = &read_value; } - } - else - { + } else { cb_data.read.srvc_id = p_clcb->p_q_cmd->api_read.srvc_id; cb_data.read.char_id = p_clcb->p_q_cmd->api_read.char_id; if (p_clcb->p_q_cmd->api_read.p_descr_type) @@ -1355,7 +1236,7 @@ void bta_gattc_read_cmpl(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_OP_CMPL *p_data) } event = (p_clcb->p_q_cmd->api_read.p_descr_type == NULL) ? - BTA_GATTC_READ_CHAR_EVT: BTA_GATTC_READ_DESCR_EVT; + BTA_GATTC_READ_CHAR_EVT : BTA_GATTC_READ_DESCR_EVT; cb_data.read.conn_id = p_clcb->bta_conn_id; utl_freebuf((void **)&p_clcb->p_q_cmd); @@ -1381,34 +1262,36 @@ void bta_gattc_write_cmpl(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_OP_CMPL *p_data) cb_data.write.status = p_data->status; - if (p_data->p_cmpl != NULL) - { + if (p_data->p_cmpl != NULL) { bta_gattc_handle2id(p_clcb->p_srcb, p_data->p_cmpl->att_value.handle, &cb_data.write.srvc_id, &cb_data.write.char_id, &cb_data.write.descr_type); - } - else - { + } else { memcpy(&cb_data.write.srvc_id, &p_clcb->p_q_cmd->api_write.srvc_id, - sizeof(tBTA_GATT_SRVC_ID)); + sizeof(tBTA_GATT_SRVC_ID)); memcpy(&cb_data.write.char_id, &p_clcb->p_q_cmd->api_write.char_id, - sizeof(tBTA_GATT_ID)); + sizeof(tBTA_GATT_ID)); if (p_clcb->p_q_cmd->api_write.p_descr_type) memcpy(&cb_data.write.descr_type, p_clcb->p_q_cmd->api_write.p_descr_type, sizeof(tBTA_GATT_ID)); } if (p_clcb->p_q_cmd->api_write.hdr.event == BTA_GATTC_API_WRITE_EVT && - p_clcb->p_q_cmd->api_write.write_type == BTA_GATTC_WRITE_PREPARE) + p_clcb->p_q_cmd->api_write.write_type == BTA_GATTC_WRITE_PREPARE) + { event = BTA_GATTC_PREP_WRITE_EVT; + } else if (p_clcb->p_q_cmd->api_write.p_descr_type == NULL) + { event = BTA_GATTC_WRITE_CHAR_EVT; + } - else + else { event = BTA_GATTC_WRITE_DESCR_EVT; + } utl_freebuf((void **)&p_clcb->p_q_cmd); cb_data.write.conn_id = p_clcb->bta_conn_id; @@ -1457,8 +1340,9 @@ void bta_gattc_cfg_mtu_cmpl(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_OP_CMPL *p_data) utl_freebuf((void **)&p_clcb->p_q_cmd); - if (p_data->p_cmpl && p_data->status == BTA_GATT_OK) + if (p_data->p_cmpl && p_data->status == BTA_GATT_OK) { p_clcb->p_srcb->mtu = p_data->p_cmpl->mtu; + } /* configure MTU complete, callback */ p_clcb->status = p_data->status; @@ -1485,55 +1369,54 @@ void bta_gattc_op_cmpl(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) APPL_TRACE_DEBUG("bta_gattc_op_cmpl op = %d", op); - if (op == GATTC_OPTYPE_INDICATION || op == GATTC_OPTYPE_NOTIFICATION) - { + if (op == GATTC_OPTYPE_INDICATION || op == GATTC_OPTYPE_NOTIFICATION) { APPL_TRACE_ERROR("unexpected operation, ignored"); - } - else if (op >= GATTC_OPTYPE_READ) - { - if (p_clcb->p_q_cmd == NULL) - { + } else if (op >= GATTC_OPTYPE_READ) { + if (p_clcb->p_q_cmd == NULL) { APPL_TRACE_ERROR("No pending command"); return; } - if (p_clcb->p_q_cmd->hdr.event != bta_gattc_opcode_to_int_evt[op - GATTC_OPTYPE_READ]) - { + if (p_clcb->p_q_cmd->hdr.event != bta_gattc_opcode_to_int_evt[op - GATTC_OPTYPE_READ]) { mapped_op = p_clcb->p_q_cmd->hdr.event - BTA_GATTC_API_READ_EVT + GATTC_OPTYPE_READ; - if ( mapped_op > GATTC_OPTYPE_INDICATION) mapped_op = 0; + if ( mapped_op > GATTC_OPTYPE_INDICATION) { + mapped_op = 0; + } #if (BT_TRACE_VERBOSE == TRUE) APPL_TRACE_ERROR("expect op:(%s :0x%04x), receive unexpected operation (%s).", - bta_gattc_op_code_name[mapped_op] , p_clcb->p_q_cmd->hdr.event, - bta_gattc_op_code_name[op]); + bta_gattc_op_code_name[mapped_op] , p_clcb->p_q_cmd->hdr.event, + bta_gattc_op_code_name[op]); #else APPL_TRACE_ERROR("expect op:(%u :0x%04x), receive unexpected operation (%u).", - mapped_op , p_clcb->p_q_cmd->hdr.event, op); + mapped_op , p_clcb->p_q_cmd->hdr.event, op); #endif return; } /* discard responses if service change indication is received before operation completed */ - if (p_clcb->auto_update == BTA_GATTC_DISC_WAITING && p_clcb->p_srcb->srvc_hdl_chg) - { + if (p_clcb->auto_update == BTA_GATTC_DISC_WAITING && p_clcb->p_srcb->srvc_hdl_chg) { APPL_TRACE_DEBUG("Discard all responses when service change indication is received."); p_data->op_cmpl.status = GATT_ERROR; } /* service handle change void the response, discard it */ - if (op == GATTC_OPTYPE_READ) + if (op == GATTC_OPTYPE_READ) { bta_gattc_read_cmpl(p_clcb, &p_data->op_cmpl); + } - else if (op == GATTC_OPTYPE_WRITE) + else if (op == GATTC_OPTYPE_WRITE) { bta_gattc_write_cmpl(p_clcb, &p_data->op_cmpl); + } - else if (op == GATTC_OPTYPE_EXE_WRITE) + else if (op == GATTC_OPTYPE_EXE_WRITE) { bta_gattc_exec_cmpl(p_clcb, &p_data->op_cmpl); + } - else if (op == GATTC_OPTYPE_CONFIG) + else if (op == GATTC_OPTYPE_CONFIG) { bta_gattc_cfg_mtu_cmpl(p_clcb, &p_data->op_cmpl); + } - if (p_clcb->auto_update == BTA_GATTC_DISC_WAITING) - { + if (p_clcb->auto_update == BTA_GATTC_DISC_WAITING) { p_clcb->auto_update = BTA_GATTC_REQ_WAITING; bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_DISCOVER_EVT, NULL); } @@ -1570,9 +1453,8 @@ void bta_gattc_search(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) { tBTA_GATT_STATUS status = GATT_INTERNAL_ERROR; tBTA_GATTC cb_data; - APPL_TRACE_DEBUG("bta_gattc_search conn_id=%d",p_clcb->bta_conn_id); - if (p_clcb->p_srcb && p_clcb->p_srcb->p_srvc_cache) - { + APPL_TRACE_DEBUG("bta_gattc_search conn_id=%d", p_clcb->bta_conn_id); + if (p_clcb->p_srcb && p_clcb->p_srcb->p_srvc_cache) { status = BTA_GATT_OK; /* search the local cache of a server device */ bta_gattc_search_service(p_clcb, p_data->api_search.p_srvc_uuid); @@ -1612,7 +1494,7 @@ void bta_gattc_cache_open(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) bta_gattc_set_discover_st(p_clcb->p_srcb); - APPL_TRACE_DEBUG("bta_gattc_cache_open conn_id=%d",p_clcb->bta_conn_id); + APPL_TRACE_DEBUG("bta_gattc_cache_open conn_id=%d", p_clcb->bta_conn_id); bta_gattc_co_cache_open(p_clcb->p_srcb->server_bda, BTA_GATTC_CI_CACHE_OPEN_EVT, p_clcb->bta_conn_id, FALSE); } @@ -1628,35 +1510,27 @@ void bta_gattc_cache_open(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) void bta_gattc_ci_open(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) { APPL_TRACE_DEBUG("bta_gattc_ci_open conn_id=%d server state=%d" , - p_clcb->bta_conn_id, p_clcb->p_srcb->state); - if (p_clcb->p_srcb->state == BTA_GATTC_SERV_LOAD) - { - if (p_data->ci_open.status == BTA_GATT_OK) - { + p_clcb->bta_conn_id, p_clcb->p_srcb->state); + if (p_clcb->p_srcb->state == BTA_GATTC_SERV_LOAD) { + if (p_data->ci_open.status == BTA_GATT_OK) { p_clcb->p_srcb->attr_index = 0; bta_gattc_co_cache_load(p_clcb->p_srcb->server_bda, BTA_GATTC_CI_CACHE_LOAD_EVT, p_clcb->p_srcb->attr_index, p_clcb->bta_conn_id); - } - else - { + } else { p_clcb->p_srcb->state = BTA_GATTC_SERV_DISC; /* cache open failure, start discovery */ bta_gattc_start_discover(p_clcb, NULL); } } - if (p_clcb->p_srcb->state == BTA_GATTC_SERV_SAVE) - { - if (p_data->ci_open.status == BTA_GATT_OK) - { - if (!bta_gattc_cache_save(p_clcb->p_srcb, p_clcb->bta_conn_id)) - { + if (p_clcb->p_srcb->state == BTA_GATTC_SERV_SAVE) { + if (p_data->ci_open.status == BTA_GATT_OK) { + if (!bta_gattc_cache_save(p_clcb->p_srcb, p_clcb->bta_conn_id)) { p_data->ci_open.status = BTA_GATT_ERROR; } } - if (p_data->ci_open.status != BTA_GATT_OK) - { + if (p_data->ci_open.status != BTA_GATT_OK) { p_clcb->p_srcb->attr_index = 0; bta_gattc_co_cache_close(p_clcb->p_srcb->server_bda, p_clcb->bta_conn_id); bta_gattc_reset_discover_st(p_clcb->p_srcb, p_clcb->status); @@ -1677,23 +1551,19 @@ void bta_gattc_ci_load(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) { APPL_TRACE_DEBUG("bta_gattc_ci_load conn_id=%d load status=%d", - p_clcb->bta_conn_id, p_data->ci_load.status); + p_clcb->bta_conn_id, p_data->ci_load.status); if (p_data->ci_load.status == BTA_GATT_OK || - p_data->ci_load.status == BTA_GATT_MORE) - { + p_data->ci_load.status == BTA_GATT_MORE) { if (p_data->ci_load.num_attr != 0) bta_gattc_rebuild_cache(p_clcb->p_srcb, p_data->ci_load.num_attr, - p_data->ci_load.attr, p_clcb->p_srcb->attr_index); + p_data->ci_load.attr, p_clcb->p_srcb->attr_index); - if (p_data->ci_load.status == BTA_GATT_OK) - { + if (p_data->ci_load.status == BTA_GATT_OK) { p_clcb->p_srcb->attr_index = 0; bta_gattc_reset_discover_st(p_clcb->p_srcb, BTA_GATT_OK); bta_gattc_co_cache_close(p_clcb->p_srcb->server_bda, 0); - } - else /* load more */ - { + } else { /* load more */ p_clcb->p_srcb->attr_index += p_data->ci_load.num_attr; bta_gattc_co_cache_load(p_clcb->p_srcb->server_bda, @@ -1701,9 +1571,7 @@ void bta_gattc_ci_load(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) p_clcb->p_srcb->attr_index, p_clcb->bta_conn_id); } - } - else - { + } else { bta_gattc_co_cache_close(p_clcb->p_srcb->server_bda, 0); p_clcb->p_srcb->state = BTA_GATTC_SERV_DISC; p_clcb->p_srcb->attr_index = 0; @@ -1725,10 +1593,9 @@ void bta_gattc_ci_save(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) UNUSED(p_data); APPL_TRACE_DEBUG("bta_gattc_ci_save conn_id=%d " , - p_clcb->bta_conn_id ); + p_clcb->bta_conn_id ); - if (!bta_gattc_cache_save(p_clcb->p_srcb, p_clcb->bta_conn_id)) - { + if (!bta_gattc_cache_save(p_clcb->p_srcb, p_clcb->bta_conn_id)) { p_clcb->p_srcb->attr_index = 0; bta_gattc_co_cache_close(p_clcb->p_srcb->server_bda, 0); bta_gattc_reset_discover_st(p_clcb->p_srcb, p_clcb->status); @@ -1747,8 +1614,7 @@ void bta_gattc_fail(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) { UNUSED(p_data); - if (p_clcb->status == BTA_GATT_OK) - { + if (p_clcb->status == BTA_GATT_OK) { APPL_TRACE_ERROR("operation not supported at current state [%d]", p_clcb->state); } } @@ -1779,10 +1645,11 @@ static void bta_gattc_deregister_cmpl(tBTA_GATTC_RCB *p_clreg) if (p_cback) /* callback with de-register event */ - (*p_cback)(BTA_GATTC_DEREG_EVT, (tBTA_GATTC *)&cb_data); - - if (bta_gattc_num_reg_app() == 0 && p_cb->state == BTA_GATTC_STATE_DISABLING) { + (*p_cback)(BTA_GATTC_DEREG_EVT, (tBTA_GATTC *)&cb_data); + } + + if (bta_gattc_num_reg_app() == 0 && p_cb->state == BTA_GATTC_STATE_DISABLING) { p_cb->state = BTA_GATTC_STATE_DISABLED; } } @@ -1801,10 +1668,9 @@ static void bta_gattc_conn_cback(tGATT_IF gattc_if, BD_ADDR bda, UINT16 conn_id, { tBTA_GATTC_DATA *p_buf; - if (reason != 0) - { + if (reason != 0) { APPL_TRACE_WARNING("%s() - cif=%d connected=%d conn_id=%d reason=0x%04x", - __FUNCTION__, gattc_if, connected, conn_id, reason); + __FUNCTION__, gattc_if, connected, conn_id, reason); } bt_bdaddr_t bdaddr; @@ -1815,12 +1681,11 @@ static void bta_gattc_conn_cback(tGATT_IF gattc_if, BD_ADDR bda, UINT16 conn_id, else btif_debug_conn_state(bdaddr, BTIF_DEBUG_DISCONNECTED, reason); */ - if ((p_buf = (tBTA_GATTC_DATA *) GKI_getbuf(sizeof(tBTA_GATTC_DATA))) != NULL) - { + if ((p_buf = (tBTA_GATTC_DATA *) GKI_getbuf(sizeof(tBTA_GATTC_DATA))) != NULL) { memset(p_buf, 0, sizeof(tBTA_GATTC_DATA)); - p_buf->int_conn.hdr.event = connected ? BTA_GATTC_INT_CONN_EVT: - BTA_GATTC_INT_DISCONN_EVT; + p_buf->int_conn.hdr.event = connected ? BTA_GATTC_INT_CONN_EVT : + BTA_GATTC_INT_DISCONN_EVT; p_buf->int_conn.hdr.layer_specific = conn_id; p_buf->int_conn.client_if = gattc_if; p_buf->int_conn.role = L2CA_GetBleConnRole(bda); @@ -1846,8 +1711,7 @@ static void bta_gattc_enc_cmpl_cback(tGATT_IF gattc_if, BD_ADDR bda) tBTA_GATTC_DATA *p_buf; tBTA_GATTC_CLCB *p_clcb = NULL; - if ((p_clcb = bta_gattc_find_clcb_by_cif(gattc_if, bda, BTA_GATT_TRANSPORT_LE)) == NULL) - { + if ((p_clcb = bta_gattc_find_clcb_by_cif(gattc_if, bda, BTA_GATT_TRANSPORT_LE)) == NULL) { return; } @@ -1855,16 +1719,14 @@ static void bta_gattc_enc_cmpl_cback(tGATT_IF gattc_if, BD_ADDR bda) /* filter this event just for BTA HH LE GATT client, In the future, if we want to enable encryption complete event for all GATT clients, we can remove this code */ - if (!bta_hh_le_is_hh_gatt_if(gattc_if)) - { + if (!bta_hh_le_is_hh_gatt_if(gattc_if)) { return; } #endif APPL_TRACE_DEBUG("bta_gattc_enc_cmpl_cback: cif = %d", gattc_if); - if ((p_buf = (tBTA_GATTC_DATA *) GKI_getbuf(sizeof(tBTA_GATTC_DATA))) != NULL) - { + if ((p_buf = (tBTA_GATTC_DATA *) GKI_getbuf(sizeof(tBTA_GATTC_DATA))) != NULL) { memset(p_buf, 0, sizeof(tBTA_GATTC_DATA)); p_buf->enc_cmpl.hdr.event = BTA_GATTC_ENC_CMPL_EVT; @@ -1886,7 +1748,7 @@ static void bta_gattc_enc_cmpl_cback(tGATT_IF gattc_if, BD_ADDR bda) ** Returns None. ** *******************************************************************************/ -void bta_gattc_process_api_refresh(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA * p_msg) +void bta_gattc_process_api_refresh(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA *p_msg) { tBTA_GATTC_SERV *p_srvc_cb = bta_gattc_find_srvr_cache(p_msg->api_conn.remote_bda); tBTA_GATTC_CLCB *p_clcb = &bta_gattc_cb.clcb[0]; @@ -1894,30 +1756,25 @@ void bta_gattc_process_api_refresh(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA * p_msg) UINT8 i; UNUSED(p_cb); - if (p_srvc_cb != NULL) - { + if (p_srvc_cb != NULL) { /* try to find a CLCB */ - if (p_srvc_cb->connected && p_srvc_cb->num_clcb != 0) - { - for (i = 0; i < BTA_GATTC_CLCB_MAX; i ++, p_clcb ++) - { - if (p_clcb->in_use && p_clcb->p_srcb == p_srvc_cb) - { + if (p_srvc_cb->connected && p_srvc_cb->num_clcb != 0) { + for (i = 0; i < BTA_GATTC_CLCB_MAX; i ++, p_clcb ++) { + if (p_clcb->in_use && p_clcb->p_srcb == p_srvc_cb) { found = TRUE; break; } } - if (found) - { + if (found) { bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_DISCOVER_EVT, NULL); return; } } /* in all other cases, mark it and delete the cache */ - if (p_srvc_cb->p_srvc_cache != NULL) - { - while (!GKI_queue_is_empty(&p_srvc_cb->cache_buffer)) + if (p_srvc_cb->p_srvc_cache != NULL) { + while (!GKI_queue_is_empty(&p_srvc_cb->cache_buffer)) { GKI_freebuf (GKI_dequeue (&p_srvc_cb->cache_buffer)); + } p_srvc_cb->p_srvc_cache = NULL; } @@ -1953,26 +1810,21 @@ BOOLEAN bta_gattc_process_srvc_chg_ind(UINT16 conn_id, srvc_chg_uuid.uu.uuid16 = GATT_UUID_GATT_SRV_CHGD; if (bta_gattc_uuid_compare(&p_notify->char_id.srvc_id.id.uuid, &gattp_uuid, TRUE) && - bta_gattc_uuid_compare(&p_notify->char_id.char_id.uuid, &srvc_chg_uuid, TRUE)) - { + bta_gattc_uuid_compare(&p_notify->char_id.char_id.uuid, &srvc_chg_uuid, TRUE)) { processed = TRUE; /* mark service handle change pending */ p_srcb->srvc_hdl_chg = TRUE; /* clear up all notification/indication registration */ bta_gattc_clear_notif_registration(conn_id); /* service change indication all received, do discovery update */ - if ( ++ p_srcb->update_count == bta_gattc_num_reg_app()) - { + if ( ++ p_srcb->update_count == bta_gattc_num_reg_app()) { /* not an opened connection; or connection busy */ /* search for first available clcb and start discovery */ - if (p_clcb == NULL || (p_clcb && p_clcb->p_q_cmd != NULL)) - { - for (i = 0 ; i < BTA_GATTC_CLCB_MAX; i ++) - { + if (p_clcb == NULL || (p_clcb && p_clcb->p_q_cmd != NULL)) { + for (i = 0 ; i < BTA_GATTC_CLCB_MAX; i ++) { if (bta_gattc_cb.clcb[i].in_use && - bta_gattc_cb.clcb[i].p_srcb == p_srcb && - bta_gattc_cb.clcb[i].p_q_cmd == NULL) - { + bta_gattc_cb.clcb[i].p_srcb == p_srcb && + bta_gattc_cb.clcb[i].p_q_cmd == NULL) { p_clcb = &bta_gattc_cb.clcb[i]; break; } @@ -1982,13 +1834,13 @@ BOOLEAN bta_gattc_process_srvc_chg_ind(UINT16 conn_id, GATTC_SendHandleValueConfirm(conn_id, handle); /* if connection available, refresh cache by doing discovery now */ - if (p_clcb != NULL) + if (p_clcb != NULL) { bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_DISCOVER_EVT, NULL); + } } /* notify applicationf or service change */ - if (p_clrcb->p_cback != NULL) - { - (* p_clrcb->p_cback)(BTA_GATTC_SRVC_CHG_EVT, (tBTA_GATTC *)p_srcb->server_bda); + if (p_clrcb->p_cback != NULL) { + (* p_clrcb->p_cback)(BTA_GATTC_SRVC_CHG_EVT, (tBTA_GATTC *)p_srcb->server_bda); } } @@ -2011,7 +1863,7 @@ void bta_gattc_proc_other_indication(tBTA_GATTC_CLCB *p_clcb, UINT8 op, { APPL_TRACE_DEBUG("bta_gattc_proc_other_indication check \ p_data->att_value.handle=%d p_data->handle=%d", - p_data->att_value.handle, p_data->handle); + p_data->att_value.handle, p_data->handle); APPL_TRACE_DEBUG("is_notify %d", p_notify->is_notify); p_notify->is_notify = (op == GATTC_OPTYPE_INDICATION) ? FALSE : TRUE; @@ -2020,8 +1872,9 @@ void bta_gattc_proc_other_indication(tBTA_GATTC_CLCB *p_clcb, UINT8 op, memcpy(p_notify->value, p_data->att_value.value, p_data->att_value.len); p_notify->conn_id = p_clcb->bta_conn_id; - if (p_clcb->p_rcb->p_cback) + if (p_clcb->p_rcb->p_cback) { (*p_clcb->p_rcb->p_cback)(BTA_GATTC_NOTIF_EVT, (tBTA_GATTC *)p_notify); + } } /******************************************************************************* @@ -2044,27 +1897,27 @@ void bta_gattc_process_indicate(UINT16 conn_id, tGATTC_OPTYPE op, tGATT_CL_COMPL tBTA_GATTC_IF gatt_if; tBTA_TRANSPORT transport; - if (!GATT_GetConnectionInfor(conn_id, &gatt_if, remote_bda, &transport)) - { + if (!GATT_GetConnectionInfor(conn_id, &gatt_if, remote_bda, &transport)) { APPL_TRACE_ERROR("%s indication/notif for unknown app", __func__); - if (op == GATTC_OPTYPE_INDICATION) + if (op == GATTC_OPTYPE_INDICATION) { GATTC_SendHandleValueConfirm(conn_id, handle); + } return; } - if ((p_clrcb = bta_gattc_cl_get_regcb(gatt_if)) == NULL) - { + if ((p_clrcb = bta_gattc_cl_get_regcb(gatt_if)) == NULL) { APPL_TRACE_ERROR("%s indication/notif for unregistered app", __func__); - if (op == GATTC_OPTYPE_INDICATION) + if (op == GATTC_OPTYPE_INDICATION) { GATTC_SendHandleValueConfirm(conn_id, handle); + } return; } - if ((p_srcb = bta_gattc_find_srcb(remote_bda)) == NULL) - { + if ((p_srcb = bta_gattc_find_srcb(remote_bda)) == NULL) { APPL_TRACE_ERROR("%s indication/notif for unknown device, ignore", __func__); - if (op == GATTC_OPTYPE_INDICATION) + if (op == GATTC_OPTYPE_INDICATION) { GATTC_SendHandleValueConfirm(conn_id, handle); + } return; } @@ -2073,47 +1926,39 @@ void bta_gattc_process_indicate(UINT16 conn_id, tGATTC_OPTYPE op, tGATT_CL_COMPL if (bta_gattc_handle2id(p_srcb, handle, ¬ify.char_id.srvc_id, ¬ify.char_id.char_id, - ¬ify.descr_type)) - { + ¬ify.descr_type)) { /* if non-service change indication/notification, forward to application */ - if (!bta_gattc_process_srvc_chg_ind(conn_id, p_clrcb, p_srcb, p_clcb, ¬ify, handle)) - { + if (!bta_gattc_process_srvc_chg_ind(conn_id, p_clrcb, p_srcb, p_clcb, ¬ify, handle)) { /* if app registered for the notification */ - if (bta_gattc_check_notif_registry(p_clrcb, p_srcb, ¬ify)) - { + if (bta_gattc_check_notif_registry(p_clrcb, p_srcb, ¬ify)) { /* connection not open yet */ - if (p_clcb == NULL) - { - if ((p_clcb = bta_gattc_clcb_alloc(gatt_if, remote_bda, transport)) != NULL) - { + if (p_clcb == NULL) { + if ((p_clcb = bta_gattc_clcb_alloc(gatt_if, remote_bda, transport)) != NULL) { p_clcb->bta_conn_id = conn_id; p_clcb->transport = transport; bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_CONN_EVT, NULL); - } - else - { + } else { APPL_TRACE_ERROR("No resources"); } } - if (p_clcb != NULL) + if (p_clcb != NULL) { bta_gattc_proc_other_indication(p_clcb, op, p_data, ¬ify); + } } /* no one intersted and need ack? */ - else if (op == GATTC_OPTYPE_INDICATION) - { + else if (op == GATTC_OPTYPE_INDICATION) { APPL_TRACE_DEBUG("%s no one interested, ack now", __func__); GATTC_SendHandleValueConfirm(conn_id, handle); } } - } - else - { + } else { APPL_TRACE_ERROR("%s Indi/Notif for Unknown handle[0x%04x], can not find in local cache.", __func__, handle); - if (op == GATTC_OPTYPE_INDICATION) + if (op == GATTC_OPTYPE_INDICATION) { GATTC_SendHandleValueConfirm(conn_id, handle); + } } } /******************************************************************************* @@ -2130,24 +1975,21 @@ static void bta_gattc_cmpl_cback(UINT16 conn_id, tGATTC_OPTYPE op, tGATT_STATUS { tBTA_GATTC_CLCB *p_clcb; APPL_TRACE_DEBUG("bta_gattc_cmpl_cback: conn_id = %d op = %d status = %d", - conn_id, op, status); + conn_id, op, status); /* notification and indication processed right away */ - if (op == GATTC_OPTYPE_NOTIFICATION || op == GATTC_OPTYPE_INDICATION) - { + if (op == GATTC_OPTYPE_NOTIFICATION || op == GATTC_OPTYPE_INDICATION) { bta_gattc_process_indicate(conn_id, op, p_data); return; } /* for all other operation, not expected if w/o connection */ - else if ((p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id)) == NULL) - { + else if ((p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id)) == NULL) { APPL_TRACE_ERROR("bta_gattc_cmpl_cback unknown conn_id = %d, ignore data", conn_id); return; } /* if over BR_EDR, inform PM for mode change */ - if (p_clcb->transport == BTA_TRANSPORT_BR_EDR) - { + if (p_clcb->transport == BTA_TRANSPORT_BR_EDR) { bta_sys_busy(BTA_ID_GATTC, BTA_ALL_APP_ID, p_clcb->bda); bta_sys_idle(BTA_ID_GATTC, BTA_ALL_APP_ID, p_clcb->bda); } @@ -2171,16 +2013,14 @@ static void bta_gattc_cmpl_sendmsg(UINT16 conn_id, tGATTC_OPTYPE op, const UINT16 len = sizeof(tBTA_GATTC_OP_CMPL) + sizeof(tGATT_CL_COMPLETE); tBTA_GATTC_OP_CMPL *p_buf = (tBTA_GATTC_OP_CMPL *) GKI_getbuf(len); - if (p_buf != NULL) - { + if (p_buf != NULL) { memset(p_buf, 0, len); p_buf->hdr.event = BTA_GATTC_OP_CMPL_EVT; p_buf->hdr.layer_specific = conn_id; p_buf->status = status; p_buf->op_code = op; - if (p_data != NULL) - { + if (p_data != NULL) { p_buf->p_cmpl = (tGATT_CL_COMPLETE *)(p_buf + 1); memcpy(p_buf->p_cmpl, p_data, sizeof(tGATT_CL_COMPLETE)); } @@ -2203,10 +2043,8 @@ static void bta_gattc_cong_cback (UINT16 conn_id, BOOLEAN congested) tBTA_GATTC_CLCB *p_clcb; tBTA_GATTC cb_data; - if ((p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id)) != NULL) - { - if (p_clcb->p_rcb->p_cback) - { + if ((p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id)) != NULL) { + if (p_clcb->p_rcb->p_cback) { cb_data.congest.conn_id = conn_id; cb_data.congest.congested = congested; @@ -2232,15 +2070,13 @@ void bta_gattc_init_clcb_conn(UINT8 cif, BD_ADDR remote_bda) UINT16 conn_id; /* should always get the connection ID */ - if (GATT_GetConnIdIfConnected(cif, remote_bda, &conn_id, BTA_GATT_TRANSPORT_LE) == FALSE) - { + if (GATT_GetConnIdIfConnected(cif, remote_bda, &conn_id, BTA_GATT_TRANSPORT_LE) == FALSE) { APPL_TRACE_ERROR("bta_gattc_init_clcb_conn ERROR: not a connected device"); return; } /* initaite a new connection here */ - if ((p_clcb = bta_gattc_clcb_alloc(cif, remote_bda, BTA_GATT_TRANSPORT_LE)) != NULL) - { + if ((p_clcb = bta_gattc_clcb_alloc(cif, remote_bda, BTA_GATT_TRANSPORT_LE)) != NULL) { gattc_data.hdr.layer_specific = p_clcb->bta_conn_id = conn_id; gattc_data.api_conn.client_if = cif; @@ -2248,9 +2084,7 @@ void bta_gattc_init_clcb_conn(UINT8 cif, BD_ADDR remote_bda) gattc_data.api_conn.is_direct = TRUE; bta_gattc_sm_execute(p_clcb, BTA_GATTC_API_OPEN_EVT, &gattc_data); - } - else - { + } else { APPL_TRACE_ERROR("No resources"); } } @@ -2269,12 +2103,9 @@ void bta_gattc_process_listen_all(UINT8 cif) UINT8 i_conn = 0; tBTA_GATTC_CONN *p_conn = &bta_gattc_cb.conn_track[0]; - for (i_conn = 0; i_conn < BTA_GATTC_CONN_MAX; i_conn++, p_conn ++) - { - if (p_conn->in_use ) - { - if (bta_gattc_find_clcb_by_cif(cif, p_conn->remote_bda, BTA_GATT_TRANSPORT_LE) == NULL) - { + for (i_conn = 0; i_conn < BTA_GATTC_CONN_MAX; i_conn++, p_conn ++) { + if (p_conn->in_use ) { + if (bta_gattc_find_clcb_by_cif(cif, p_conn->remote_bda, BTA_GATT_TRANSPORT_LE) == NULL) { bta_gattc_init_clcb_conn(cif, p_conn->remote_bda); } /* else already connected */ @@ -2290,7 +2121,7 @@ void bta_gattc_process_listen_all(UINT8 cif) ** Returns void ** ********************************************************************************/ -void bta_gattc_listen(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA * p_msg) +void bta_gattc_listen(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA *p_msg) { tBTA_GATTC_RCB *p_clreg = bta_gattc_cl_get_regcb(p_msg->api_listen.client_if); tBTA_GATTC cb_data; @@ -2299,51 +2130,42 @@ void bta_gattc_listen(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA * p_msg) cb_data.reg_oper.status = BTA_GATT_ERROR; cb_data.reg_oper.client_if = p_msg->api_listen.client_if; - if (p_clreg == NULL) - { + if (p_clreg == NULL) { APPL_TRACE_ERROR("bta_gattc_listen failed, unknown client_if: %d", - p_msg->api_listen.client_if); + p_msg->api_listen.client_if); return; } /* mark bg conn record */ if (bta_gattc_mark_bg_conn(p_msg->api_listen.client_if, (BD_ADDR_PTR) p_msg->api_listen.remote_bda, p_msg->api_listen.start, - TRUE)) - { + TRUE)) { if (!GATT_Listen(p_msg->api_listen.client_if, p_msg->api_listen.start, - p_msg->api_listen.remote_bda)) - { + p_msg->api_listen.remote_bda)) { APPL_TRACE_ERROR("Listen failure"); (*p_clreg->p_cback)(BTA_GATTC_LISTEN_EVT, &cb_data); - } - else - { + } else { cb_data.status = BTA_GATT_OK; (*p_clreg->p_cback)(BTA_GATTC_LISTEN_EVT, &cb_data); - if (p_msg->api_listen.start) - { + if (p_msg->api_listen.start) { /* if listen to a specific target */ - if (p_msg->api_listen.remote_bda != NULL) - { + if (p_msg->api_listen.remote_bda != NULL) { /* if is a connected remote device */ if (L2CA_GetBleConnRole(p_msg->api_listen.remote_bda) == HCI_ROLE_SLAVE && - bta_gattc_find_clcb_by_cif(p_msg->api_listen.client_if, - p_msg->api_listen.remote_bda, - BTA_GATT_TRANSPORT_LE) == NULL) - { + bta_gattc_find_clcb_by_cif(p_msg->api_listen.client_if, + p_msg->api_listen.remote_bda, + BTA_GATT_TRANSPORT_LE) == NULL) { bta_gattc_init_clcb_conn(p_msg->api_listen.client_if, - p_msg->api_listen.remote_bda); + p_msg->api_listen.remote_bda); } } /* if listen to all */ - else - { + else { LOG_DEBUG("Listen For All now"); /* go through all connected device and send callback for all connected slave connection */ @@ -2363,7 +2185,7 @@ void bta_gattc_listen(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA * p_msg) ** Returns void ** ********************************************************************************/ -void bta_gattc_broadcast(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA * p_msg) +void bta_gattc_broadcast(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA *p_msg) { tBTA_GATTC_RCB *p_clreg = bta_gattc_cl_get_regcb(p_msg->api_listen.client_if); tBTA_GATTC cb_data; @@ -2372,8 +2194,9 @@ void bta_gattc_broadcast(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA * p_msg) cb_data.reg_oper.client_if = p_msg->api_listen.client_if; cb_data.reg_oper.status = BTM_BleBroadcast(p_msg->api_listen.start); - if (p_clreg && p_clreg->p_cback) + if (p_clreg && p_clreg->p_cback) { (*p_clreg->p_cback)(BTA_GATTC_LISTEN_EVT, &cb_data); + } } #endif #endif diff --git a/components/bt/bluedroid/bta/gatt/bta_gattc_api.c b/components/bt/bluedroid/bta/gatt/bta_gattc_api.c old mode 100755 new mode 100644 index 150b14a296..628b83b51b --- a/components/bt/bluedroid/bta/gatt/bta_gattc_api.c +++ b/components/bt/bluedroid/bta/gatt/bta_gattc_api.c @@ -36,8 +36,7 @@ ** Constants *****************************************************************************/ -static const tBTA_SYS_REG bta_gattc_reg = -{ +static const tBTA_SYS_REG bta_gattc_reg = { bta_gattc_hdl_event, BTA_GATTC_Disable }; @@ -58,13 +57,11 @@ void BTA_GATTC_Disable(void) { BT_HDR *p_buf; - if (bta_sys_is_register(BTA_ID_GATTC) == FALSE) - { + if (bta_sys_is_register(BTA_ID_GATTC) == FALSE) { APPL_TRACE_WARNING("GATTC Module not enabled/already disabled\n"); return; } - if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) - { + if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) { p_buf->event = BTA_GATTC_API_DISABLE_EVT; bta_sys_sendmsg(p_buf); } @@ -89,16 +86,15 @@ void BTA_GATTC_AppRegister(tBT_UUID *p_app_uuid, tBTA_GATTC_CBACK *p_client_cb) { tBTA_GATTC_API_REG *p_buf; - if (bta_sys_is_register(BTA_ID_GATTC) == FALSE) - { + if (bta_sys_is_register(BTA_ID_GATTC) == FALSE) { bta_sys_register(BTA_ID_GATTC, &bta_gattc_reg); } - if ((p_buf = (tBTA_GATTC_API_REG *) GKI_getbuf(sizeof(tBTA_GATTC_API_REG))) != NULL) - { + if ((p_buf = (tBTA_GATTC_API_REG *) GKI_getbuf(sizeof(tBTA_GATTC_API_REG))) != NULL) { p_buf->hdr.event = BTA_GATTC_API_REG_EVT; - if (p_app_uuid != NULL) + if (p_app_uuid != NULL) { memcpy(&p_buf->app_uuid, p_app_uuid, sizeof(tBT_UUID)); + } p_buf->p_cback = p_client_cb; bta_sys_sendmsg(p_buf); @@ -122,8 +118,7 @@ void BTA_GATTC_AppDeregister(tBTA_GATTC_IF client_if) { tBTA_GATTC_API_DEREG *p_buf; - if ((p_buf = (tBTA_GATTC_API_DEREG *) GKI_getbuf(sizeof(tBTA_GATTC_API_DEREG))) != NULL) - { + if ((p_buf = (tBTA_GATTC_API_DEREG *) GKI_getbuf(sizeof(tBTA_GATTC_API_DEREG))) != NULL) { p_buf->hdr.event = BTA_GATTC_API_DEREG_EVT; p_buf->client_if = client_if; bta_sys_sendmsg(p_buf); @@ -151,8 +146,7 @@ void BTA_GATTC_Open(tBTA_GATTC_IF client_if, BD_ADDR remote_bda, { tBTA_GATTC_API_OPEN *p_buf; - if ((p_buf = (tBTA_GATTC_API_OPEN *) GKI_getbuf(sizeof(tBTA_GATTC_API_OPEN))) != NULL) - { + if ((p_buf = (tBTA_GATTC_API_OPEN *) GKI_getbuf(sizeof(tBTA_GATTC_API_OPEN))) != NULL) { p_buf->hdr.event = BTA_GATTC_API_OPEN_EVT; p_buf->client_if = client_if; @@ -184,8 +178,7 @@ void BTA_GATTC_CancelOpen(tBTA_GATTC_IF client_if, BD_ADDR remote_bda, BOOLEAN i { tBTA_GATTC_API_CANCEL_OPEN *p_buf; - if ((p_buf = (tBTA_GATTC_API_CANCEL_OPEN *) GKI_getbuf(sizeof(tBTA_GATTC_API_CANCEL_OPEN))) != NULL) - { + if ((p_buf = (tBTA_GATTC_API_CANCEL_OPEN *) GKI_getbuf(sizeof(tBTA_GATTC_API_CANCEL_OPEN))) != NULL) { p_buf->hdr.event = BTA_GATTC_API_CANCEL_OPEN_EVT; p_buf->client_if = client_if; @@ -212,8 +205,7 @@ void BTA_GATTC_Close(UINT16 conn_id) { BT_HDR *p_buf; - if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) - { + if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) { p_buf->event = BTA_GATTC_API_CLOSE_EVT; p_buf->layer_specific = conn_id; @@ -240,8 +232,7 @@ void BTA_GATTC_ConfigureMTU (UINT16 conn_id, UINT16 mtu) { tBTA_GATTC_API_CFG_MTU *p_buf; - if ((p_buf = (tBTA_GATTC_API_CFG_MTU *) GKI_getbuf(sizeof(tBTA_GATTC_API_CFG_MTU))) != NULL) - { + if ((p_buf = (tBTA_GATTC_API_CFG_MTU *) GKI_getbuf(sizeof(tBTA_GATTC_API_CFG_MTU))) != NULL) { p_buf->hdr.event = BTA_GATTC_API_CFG_MTU_EVT; p_buf->hdr.layer_specific = conn_id; @@ -272,20 +263,18 @@ void BTA_GATTC_ServiceSearchRequest (UINT16 conn_id, tBT_UUID *p_srvc_uuid) tBTA_GATTC_API_SEARCH *p_buf; UINT16 len = sizeof(tBTA_GATTC_API_SEARCH) + sizeof(tBT_UUID); - if ((p_buf = (tBTA_GATTC_API_SEARCH *) GKI_getbuf(len)) != NULL) - { + if ((p_buf = (tBTA_GATTC_API_SEARCH *) GKI_getbuf(len)) != NULL) { memset(p_buf, 0, len); p_buf->hdr.event = BTA_GATTC_API_SEARCH_EVT; p_buf->hdr.layer_specific = conn_id; - if (p_srvc_uuid) - { + if (p_srvc_uuid) { p_buf->p_srvc_uuid = (tBT_UUID *)(p_buf + 1); memcpy(p_buf->p_srvc_uuid, p_srvc_uuid, sizeof(tBT_UUID)); - } - else + } else { p_buf->p_srvc_uuid = NULL; + } bta_sys_sendmsg(p_buf); } @@ -312,19 +301,19 @@ void BTA_GATTC_ServiceSearchRequest (UINT16 conn_id, tBT_UUID *p_srvc_uuid) ** *******************************************************************************/ tBTA_GATT_STATUS BTA_GATTC_GetFirstChar (UINT16 conn_id, tBTA_GATT_SRVC_ID *p_srvc_id, - tBT_UUID *p_char_uuid_cond, - tBTA_GATTC_CHAR_ID *p_char_result, - tBTA_GATT_CHAR_PROP *p_property) + tBT_UUID *p_char_uuid_cond, + tBTA_GATTC_CHAR_ID *p_char_result, + tBTA_GATT_CHAR_PROP *p_property) { tBTA_GATT_STATUS status; - if (!p_srvc_id || !p_char_result) + if (!p_srvc_id || !p_char_result) { return BTA_GATT_ILLEGAL_PARAMETER; + } if ((status = bta_gattc_query_cache(conn_id, BTA_GATTC_ATTR_TYPE_CHAR, p_srvc_id, NULL, p_char_uuid_cond, &p_char_result->char_id, (void *)p_property)) - == BTA_GATT_OK) - { + == BTA_GATT_OK) { memcpy(&p_char_result->srvc_id, p_srvc_id, sizeof(tBTA_GATT_SRVC_ID)); } @@ -351,15 +340,16 @@ tBTA_GATT_STATUS BTA_GATTC_GetFirstChar (UINT16 conn_id, tBTA_GATT_SRVC_ID *p_s ** *******************************************************************************/ tBTA_GATT_STATUS BTA_GATTC_GetNextChar (UINT16 conn_id, - tBTA_GATTC_CHAR_ID *p_start_char_id, - tBT_UUID *p_char_uuid_cond, - tBTA_GATTC_CHAR_ID *p_char_result, - tBTA_GATT_CHAR_PROP *p_property) + tBTA_GATTC_CHAR_ID *p_start_char_id, + tBT_UUID *p_char_uuid_cond, + tBTA_GATTC_CHAR_ID *p_char_result, + tBTA_GATT_CHAR_PROP *p_property) { tBTA_GATT_STATUS status; - if (!p_start_char_id || !p_char_result) + if (!p_start_char_id || !p_char_result) { return BTA_GATT_ILLEGAL_PARAMETER; + } if ((status = bta_gattc_query_cache(conn_id, BTA_GATTC_ATTR_TYPE_CHAR, &p_start_char_id->srvc_id, @@ -367,8 +357,7 @@ tBTA_GATT_STATUS BTA_GATTC_GetNextChar (UINT16 conn_id, p_char_uuid_cond, &p_char_result->char_id, (void *) p_property)) - == BTA_GATT_OK) - { + == BTA_GATT_OK) { memcpy(&p_char_result->srvc_id, &p_start_char_id->srvc_id, sizeof(tBTA_GATT_SRVC_ID)); } @@ -393,13 +382,14 @@ tBTA_GATT_STATUS BTA_GATTC_GetNextChar (UINT16 conn_id, ** *******************************************************************************/ tBTA_GATT_STATUS BTA_GATTC_GetFirstCharDescr (UINT16 conn_id, tBTA_GATTC_CHAR_ID *p_char_id, - tBT_UUID *p_descr_uuid_cond, - tBTA_GATTC_CHAR_DESCR_ID *p_descr_result) + tBT_UUID *p_descr_uuid_cond, + tBTA_GATTC_CHAR_DESCR_ID *p_descr_result) { tBTA_GATT_STATUS status; - if (!p_char_id || !p_descr_result) + if (!p_char_id || !p_descr_result) { return BTA_GATT_ILLEGAL_PARAMETER; + } memset(p_descr_result, 0, sizeof(tBTA_GATTC_CHAR_DESCR_ID)); @@ -410,8 +400,7 @@ tBTA_GATT_STATUS BTA_GATTC_GetFirstCharDescr (UINT16 conn_id, tBTA_GATTC_CHAR_I p_descr_uuid_cond, &p_descr_result->char_id.char_id, NULL)) - == BTA_GATT_OK) - { + == BTA_GATT_OK) { memcpy(&p_descr_result->descr_id, &p_descr_result->char_id.char_id, sizeof(tBTA_GATT_ID)); memcpy(&p_descr_result->char_id, p_char_id, sizeof(tBTA_GATTC_CHAR_ID)); } @@ -437,14 +426,15 @@ tBTA_GATT_STATUS BTA_GATTC_GetFirstCharDescr (UINT16 conn_id, tBTA_GATTC_CHAR_I ** *******************************************************************************/ tBTA_GATT_STATUS BTA_GATTC_GetNextCharDescr (UINT16 conn_id, - tBTA_GATTC_CHAR_DESCR_ID *p_start_descr_id, - tBT_UUID *p_descr_uuid_cond, - tBTA_GATTC_CHAR_DESCR_ID *p_descr_result) + tBTA_GATTC_CHAR_DESCR_ID *p_start_descr_id, + tBT_UUID *p_descr_uuid_cond, + tBTA_GATTC_CHAR_DESCR_ID *p_descr_result) { tBTA_GATT_STATUS status; - if (!p_start_descr_id || !p_descr_result) + if (!p_start_descr_id || !p_descr_result) { return BTA_GATT_ILLEGAL_PARAMETER; + } memset(p_descr_result, 0, sizeof(tBTA_GATTC_CHAR_DESCR_ID)); @@ -454,8 +444,7 @@ tBTA_GATT_STATUS BTA_GATTC_GetNextCharDescr (UINT16 conn_id, p_descr_uuid_cond, &p_descr_result->char_id.char_id, (void *)&p_start_descr_id->descr_id)) - == BTA_GATT_OK) - { + == BTA_GATT_OK) { memcpy(&p_descr_result->descr_id, &p_descr_result->char_id.char_id, sizeof(tBTA_GATT_ID)); memcpy(&p_descr_result->char_id, p_start_descr_id, sizeof(tBTA_GATTC_CHAR_ID)); } @@ -482,12 +471,13 @@ tBTA_GATT_STATUS BTA_GATTC_GetNextCharDescr (UINT16 conn_id, ** *******************************************************************************/ tBTA_GATT_STATUS BTA_GATTC_GetFirstIncludedService(UINT16 conn_id, tBTA_GATT_SRVC_ID *p_srvc_id, - tBT_UUID *p_uuid_cond, tBTA_GATTC_INCL_SVC_ID *p_result) + tBT_UUID *p_uuid_cond, tBTA_GATTC_INCL_SVC_ID *p_result) { tBTA_GATT_STATUS status; - if (!p_srvc_id || !p_result) + if (!p_srvc_id || !p_result) { return BTA_GATT_ILLEGAL_PARAMETER; + } if ((status = bta_gattc_query_cache(conn_id, BTA_GATTC_ATTR_TYPE_INCL_SRVC, @@ -496,8 +486,7 @@ tBTA_GATT_STATUS BTA_GATTC_GetFirstIncludedService(UINT16 conn_id, tBTA_GATT_SR p_uuid_cond, &p_result->incl_svc_id.id, (void *)&p_result->incl_svc_id.is_primary)) - == BTA_GATT_OK) - { + == BTA_GATT_OK) { memcpy(&p_result->srvc_id, p_srvc_id, sizeof(tBTA_GATT_SRVC_ID)); } @@ -522,14 +511,15 @@ tBTA_GATT_STATUS BTA_GATTC_GetFirstIncludedService(UINT16 conn_id, tBTA_GATT_SR ** *******************************************************************************/ tBTA_GATT_STATUS BTA_GATTC_GetNextIncludedService(UINT16 conn_id, - tBTA_GATTC_INCL_SVC_ID *p_start_id, - tBT_UUID *p_uuid_cond, - tBTA_GATTC_INCL_SVC_ID *p_result) + tBTA_GATTC_INCL_SVC_ID *p_start_id, + tBT_UUID *p_uuid_cond, + tBTA_GATTC_INCL_SVC_ID *p_result) { tBTA_GATT_STATUS status; - if (!p_start_id || !p_result) + if (!p_start_id || !p_result) { return BTA_GATT_ILLEGAL_PARAMETER; + } if ((status = bta_gattc_query_cache(conn_id, BTA_GATTC_ATTR_TYPE_INCL_SRVC, @@ -538,8 +528,7 @@ tBTA_GATT_STATUS BTA_GATTC_GetNextIncludedService(UINT16 conn_id, p_uuid_cond, &p_result->incl_svc_id.id, (void *)&p_result->incl_svc_id.is_primary)) - == BTA_GATT_OK) - { + == BTA_GATT_OK) { memcpy(&p_result->srvc_id, &p_start_id->srvc_id, sizeof(tBTA_GATT_SRVC_ID)); } @@ -564,8 +553,7 @@ void BTA_GATTC_ReadCharacteristic(UINT16 conn_id, tBTA_GATTC_CHAR_ID *p_char_id, { tBTA_GATTC_API_READ *p_buf; - if ((p_buf = (tBTA_GATTC_API_READ *) GKI_getbuf(sizeof(tBTA_GATTC_API_READ))) != NULL) - { + if ((p_buf = (tBTA_GATTC_API_READ *) GKI_getbuf(sizeof(tBTA_GATTC_API_READ))) != NULL) { memset(p_buf, 0, sizeof(tBTA_GATTC_API_READ)); p_buf->hdr.event = BTA_GATTC_API_READ_EVT; @@ -600,8 +588,7 @@ void BTA_GATTC_ReadCharDescr (UINT16 conn_id, tBTA_GATTC_API_READ *p_buf; UINT16 len = (UINT16)(sizeof(tBTA_GATT_ID) + sizeof(tBTA_GATTC_API_READ)); - if ((p_buf = (tBTA_GATTC_API_READ *) GKI_getbuf(len)) != NULL) - { + if ((p_buf = (tBTA_GATTC_API_READ *) GKI_getbuf(len)) != NULL) { memset(p_buf, 0, sizeof(tBTA_GATTC_API_READ)); p_buf->hdr.event = BTA_GATTC_API_READ_EVT; @@ -641,8 +628,7 @@ void BTA_GATTC_ReadMultiple(UINT16 conn_id, tBTA_GATTC_MULTI *p_read_multi, p_read_multi->num_attr * sizeof(tBTA_GATTC_ATTR_ID)); UINT8 i; - if ((p_buf = (tBTA_GATTC_API_READ_MULTI *) GKI_getbuf(len)) != NULL) - { + if ((p_buf = (tBTA_GATTC_API_READ_MULTI *) GKI_getbuf(len)) != NULL) { memset(p_buf, 0, len); p_buf->hdr.event = BTA_GATTC_API_READ_MULTI_EVT; @@ -651,12 +637,10 @@ void BTA_GATTC_ReadMultiple(UINT16 conn_id, tBTA_GATTC_MULTI *p_read_multi, p_buf->num_attr = p_read_multi->num_attr; - if (p_buf->num_attr > 0) - { + if (p_buf->num_attr > 0) { p_buf->p_id_list = p_value = (tBTA_GATTC_ATTR_ID *)(p_buf + 1); - for (i = 0; i < p_buf->num_attr; i ++, p_value ++) - { + for (i = 0; i < p_buf->num_attr; i ++, p_value ++) { memcpy(p_value, &p_read_multi->id_list[i], sizeof(tBTA_GATTC_ATTR_ID)); } } @@ -690,8 +674,7 @@ void BTA_GATTC_WriteCharValue ( UINT16 conn_id, { tBTA_GATTC_API_WRITE *p_buf; - if ((p_buf = (tBTA_GATTC_API_WRITE *) GKI_getbuf((UINT16)(sizeof(tBTA_GATTC_API_WRITE) + len))) != NULL) - { + if ((p_buf = (tBTA_GATTC_API_WRITE *) GKI_getbuf((UINT16)(sizeof(tBTA_GATTC_API_WRITE) + len))) != NULL) { memset(p_buf, 0, sizeof(tBTA_GATTC_API_WRITE) + len); p_buf->hdr.event = BTA_GATTC_API_WRITE_EVT; @@ -704,8 +687,7 @@ void BTA_GATTC_WriteCharValue ( UINT16 conn_id, p_buf->write_type = write_type; p_buf->len = len; - if (p_value && len > 0) - { + if (p_value && len > 0) { p_buf->p_value = (UINT8 *)(p_buf + 1); memcpy(p_buf->p_value, p_value, len); } @@ -737,11 +719,11 @@ void BTA_GATTC_WriteCharDescr (UINT16 conn_id, tBTA_GATTC_API_WRITE *p_buf; UINT16 len = sizeof(tBTA_GATTC_API_WRITE) + sizeof(tBTA_GATT_ID); - if (p_data != NULL) + if (p_data != NULL) { len += p_data->len; + } - if ((p_buf = (tBTA_GATTC_API_WRITE *) GKI_getbuf(len)) != NULL) - { + if ((p_buf = (tBTA_GATTC_API_WRITE *) GKI_getbuf(len)) != NULL) { memset(p_buf, 0, len); p_buf->hdr.event = BTA_GATTC_API_WRITE_EVT; @@ -754,8 +736,7 @@ void BTA_GATTC_WriteCharDescr (UINT16 conn_id, memcpy(p_buf->p_descr_type, &p_char_descr_id->descr_id, sizeof(tBTA_GATT_ID)); p_buf->write_type = write_type; - if (p_data && p_data->len != 0) - { + if (p_data && p_data->len != 0) { p_buf->p_value = (UINT8 *)(p_buf->p_descr_type + 1); p_buf->len = p_data->len; /* pack the descr data */ @@ -788,8 +769,7 @@ void BTA_GATTC_PrepareWrite (UINT16 conn_id, tBTA_GATTC_CHAR_ID *p_char_id, { tBTA_GATTC_API_WRITE *p_buf; - if ((p_buf = (tBTA_GATTC_API_WRITE *) GKI_getbuf((UINT16)(sizeof(tBTA_GATTC_API_WRITE) + len))) != NULL) - { + if ((p_buf = (tBTA_GATTC_API_WRITE *) GKI_getbuf((UINT16)(sizeof(tBTA_GATTC_API_WRITE) + len))) != NULL) { memset(p_buf, 0, sizeof(tBTA_GATTC_API_WRITE) + len); p_buf->hdr.event = BTA_GATTC_API_WRITE_EVT; @@ -803,8 +783,7 @@ void BTA_GATTC_PrepareWrite (UINT16 conn_id, tBTA_GATTC_CHAR_ID *p_char_id, p_buf->offset = offset; p_buf->len = len; - if (p_value && len > 0) - { + if (p_value && len > 0) { p_buf->p_value = (UINT8 *)(p_buf + 1); memcpy(p_buf->p_value, p_value, len); } @@ -830,8 +809,7 @@ void BTA_GATTC_ExecuteWrite (UINT16 conn_id, BOOLEAN is_execute) { tBTA_GATTC_API_EXEC *p_buf; - if ((p_buf = (tBTA_GATTC_API_EXEC *) GKI_getbuf((UINT16)sizeof(tBTA_GATTC_API_EXEC))) != NULL) - { + if ((p_buf = (tBTA_GATTC_API_EXEC *) GKI_getbuf((UINT16)sizeof(tBTA_GATTC_API_EXEC))) != NULL) { memset(p_buf, 0, sizeof(tBTA_GATTC_API_EXEC)); p_buf->hdr.event = BTA_GATTC_API_EXEC_EVT; @@ -861,10 +839,9 @@ void BTA_GATTC_SendIndConfirm (UINT16 conn_id, tBTA_GATTC_CHAR_ID *p_char_id) tBTA_GATTC_API_CONFIRM *p_buf; APPL_TRACE_API("BTA_GATTC_SendIndConfirm conn_id=%d service uuid1=0x%x char uuid=0x%x", - conn_id, p_char_id->srvc_id.id.uuid.uu.uuid16, p_char_id->char_id.uuid.uu.uuid16); + conn_id, p_char_id->srvc_id.id.uuid.uu.uuid16, p_char_id->char_id.uuid.uu.uuid16); - if ((p_buf = (tBTA_GATTC_API_CONFIRM *) GKI_getbuf(sizeof(tBTA_GATTC_API_CONFIRM))) != NULL) - { + if ((p_buf = (tBTA_GATTC_API_CONFIRM *) GKI_getbuf(sizeof(tBTA_GATTC_API_CONFIRM))) != NULL) { memset(p_buf, 0, sizeof(tBTA_GATTC_API_CONFIRM)); p_buf->hdr.event = BTA_GATTC_API_CONFIRM_EVT; @@ -893,38 +870,31 @@ void BTA_GATTC_SendIndConfirm (UINT16 conn_id, tBTA_GATTC_CHAR_ID *p_char_id) ** *******************************************************************************/ tBTA_GATT_STATUS BTA_GATTC_RegisterForNotifications (tBTA_GATTC_IF client_if, - BD_ADDR bda, - tBTA_GATTC_CHAR_ID *p_char_id) + BD_ADDR bda, + tBTA_GATTC_CHAR_ID *p_char_id) { tBTA_GATTC_RCB *p_clreg; tBTA_GATT_STATUS status = BTA_GATT_ILLEGAL_PARAMETER; UINT8 i; - if (!p_char_id) - { + if (!p_char_id) { APPL_TRACE_ERROR("deregistration failed, unknow char id"); return status; } - if ((p_clreg = bta_gattc_cl_get_regcb(client_if)) != NULL) - { - for (i = 0; i < BTA_GATTC_NOTIF_REG_MAX; i ++) - { + if ((p_clreg = bta_gattc_cl_get_regcb(client_if)) != NULL) { + for (i = 0; i < BTA_GATTC_NOTIF_REG_MAX; i ++) { if ( p_clreg->notif_reg[i].in_use && - !memcmp(p_clreg->notif_reg[i].remote_bda, bda, BD_ADDR_LEN) && - bta_gattc_charid_compare(&p_clreg->notif_reg[i].char_id, p_char_id)) - { + !memcmp(p_clreg->notif_reg[i].remote_bda, bda, BD_ADDR_LEN) && + bta_gattc_charid_compare(&p_clreg->notif_reg[i].char_id, p_char_id)) { APPL_TRACE_WARNING("notification already registered"); status = BTA_GATT_OK; break; } } - if (status != BTA_GATT_OK) - { - for (i = 0; i < BTA_GATTC_NOTIF_REG_MAX; i ++) - { - if (!p_clreg->notif_reg[i].in_use) - { + if (status != BTA_GATT_OK) { + for (i = 0; i < BTA_GATTC_NOTIF_REG_MAX; i ++) { + if (!p_clreg->notif_reg[i].in_use) { memset((void *)&p_clreg->notif_reg[i], 0, sizeof(tBTA_GATTC_NOTIF_REG)); p_clreg->notif_reg[i].in_use = TRUE; @@ -938,15 +908,12 @@ tBTA_GATT_STATUS BTA_GATTC_RegisterForNotifications (tBTA_GATTC_IF client_if, break; } } - if (i == BTA_GATTC_NOTIF_REG_MAX) - { + if (i == BTA_GATTC_NOTIF_REG_MAX) { status = BTA_GATT_NO_RESOURCES; APPL_TRACE_ERROR("Max Notification Reached, registration failed."); } } - } - else - { + } else { APPL_TRACE_ERROR("Client_if: %d Not Registered", client_if); } @@ -967,45 +934,38 @@ tBTA_GATT_STATUS BTA_GATTC_RegisterForNotifications (tBTA_GATTC_IF client_if, ** *******************************************************************************/ tBTA_GATT_STATUS BTA_GATTC_DeregisterForNotifications (tBTA_GATTC_IF client_if, - BD_ADDR bda, - tBTA_GATTC_CHAR_ID *p_char_id) + BD_ADDR bda, + tBTA_GATTC_CHAR_ID *p_char_id) { tBTA_GATTC_RCB *p_clreg; tBTA_GATT_STATUS status = BTA_GATT_ILLEGAL_PARAMETER; UINT8 i; - if (!p_char_id) - { + if (!p_char_id) { APPL_TRACE_ERROR("%s deregistration failed, unknown char id", __func__); return status; } - if ((p_clreg = bta_gattc_cl_get_regcb(client_if)) != NULL) - { - for (i = 0; i < BTA_GATTC_NOTIF_REG_MAX; i ++) - { + if ((p_clreg = bta_gattc_cl_get_regcb(client_if)) != NULL) { + for (i = 0; i < BTA_GATTC_NOTIF_REG_MAX; i ++) { if (p_clreg->notif_reg[i].in_use && - !memcmp(p_clreg->notif_reg[i].remote_bda, bda, BD_ADDR_LEN) && - bta_gattc_charid_compare(&p_clreg->notif_reg[i].char_id, p_char_id)) - { + !memcmp(p_clreg->notif_reg[i].remote_bda, bda, BD_ADDR_LEN) && + bta_gattc_charid_compare(&p_clreg->notif_reg[i].char_id, p_char_id)) { APPL_TRACE_DEBUG("%s deregistered bd_addr:%02x:%02x:%02x:%02x:%02x:%02x", - __func__, bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]); + __func__, bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]); memset(&p_clreg->notif_reg[i], 0, sizeof(tBTA_GATTC_NOTIF_REG)); status = BTA_GATT_OK; break; } } - if (i == BTA_GATTC_NOTIF_REG_MAX) - { + if (i == BTA_GATTC_NOTIF_REG_MAX) { status = BTA_GATT_ERROR; APPL_TRACE_ERROR("%s registration not found bd_addr:%02x:%02x:%02x:%02x:%02x:%02x", - __func__, bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]); + __func__, bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]); } - } - else - { + } else { APPL_TRACE_ERROR("%s client_if: %d not registered bd_addr:%02x:%02x:%02x:%02x:%02x:%02x", - __func__, client_if, bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]); + __func__, client_if, bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]); } return status; @@ -1026,8 +986,7 @@ void BTA_GATTC_Refresh(BD_ADDR remote_bda) { tBTA_GATTC_API_OPEN *p_buf; - if ((p_buf = (tBTA_GATTC_API_OPEN *) GKI_getbuf(sizeof(tBTA_GATTC_API_OPEN))) != NULL) - { + if ((p_buf = (tBTA_GATTC_API_OPEN *) GKI_getbuf(sizeof(tBTA_GATTC_API_OPEN))) != NULL) { p_buf->hdr.event = BTA_GATTC_API_REFRESH_EVT; memcpy(p_buf->remote_bda, remote_bda, BD_ADDR_LEN); @@ -1057,19 +1016,17 @@ void BTA_GATTC_Listen(tBTA_GATTC_IF client_if, BOOLEAN start, BD_ADDR_PTR target { tBTA_GATTC_API_LISTEN *p_buf; - if ((p_buf = (tBTA_GATTC_API_LISTEN *) GKI_getbuf((UINT16)(sizeof(tBTA_GATTC_API_LISTEN) + BD_ADDR_LEN))) != NULL) - { + if ((p_buf = (tBTA_GATTC_API_LISTEN *) GKI_getbuf((UINT16)(sizeof(tBTA_GATTC_API_LISTEN) + BD_ADDR_LEN))) != NULL) { p_buf->hdr.event = BTA_GATTC_API_LISTEN_EVT; p_buf->client_if = client_if; p_buf->start = start; - if (target_bda) - { - p_buf->remote_bda = (UINT8*)(p_buf + 1); + if (target_bda) { + p_buf->remote_bda = (UINT8 *)(p_buf + 1); memcpy(p_buf->remote_bda, target_bda, BD_ADDR_LEN); - } - else + } else { p_buf->remote_bda = NULL; + } bta_sys_sendmsg(p_buf); } @@ -1092,8 +1049,7 @@ void BTA_GATTC_Broadcast(tBTA_GATTC_IF client_if, BOOLEAN start) { tBTA_GATTC_API_LISTEN *p_buf; - if ((p_buf = (tBTA_GATTC_API_LISTEN *) GKI_getbuf((UINT16)(sizeof(tBTA_GATTC_API_LISTEN) + BD_ADDR_LEN))) != NULL) - { + if ((p_buf = (tBTA_GATTC_API_LISTEN *) GKI_getbuf((UINT16)(sizeof(tBTA_GATTC_API_LISTEN) + BD_ADDR_LEN))) != NULL) { p_buf->hdr.event = BTA_GATTC_API_BROADCAST_EVT; p_buf->client_if = client_if; p_buf->start = start; diff --git a/components/bt/bluedroid/bta/gatt/bta_gattc_cache.c b/components/bt/bluedroid/bta/gatt/bta_gattc_cache.c old mode 100755 new mode 100644 index 011e336a9a..bd50064f1d --- a/components/bt/bluedroid/bta/gatt/bta_gattc_cache.c +++ b/components/bt/bluedroid/bta/gatt/bta_gattc_cache.c @@ -50,8 +50,7 @@ static tBTA_GATT_STATUS bta_gattc_sdp_service_disc(UINT16 conn_id, tBTA_GATTC_SE *****************************************************************************/ #if (defined BTA_GATT_DEBUG && BTA_GATT_DEBUG == TRUE) -static char *bta_gattc_attr_type[] = -{ +static char *bta_gattc_attr_type[] = { "I", /* Included Service */ "C", /* Characteristic */ "D" /* Characteristic Descriptor */ @@ -75,22 +74,20 @@ static void bta_gattc_display_cache_server(tBTA_GATTC_CACHE *p_cache) APPL_TRACE_ERROR("<================Start Server Cache =============>"); - while (p_cur_srvc) - { + while (p_cur_srvc) { APPL_TRACE_ERROR("Service[%d]: handle[%d ~ %d] %s[0x%04x] inst[%d]", - i, p_cur_srvc->s_handle, p_cur_srvc->e_handle, - ((p_cur_srvc->service_uuid.id.uuid.len == 2) ? "uuid16" : "uuid128"), - p_cur_srvc->service_uuid.id.uuid.uu.uuid16, - p_cur_srvc->service_uuid.id.inst_id); + i, p_cur_srvc->s_handle, p_cur_srvc->e_handle, + ((p_cur_srvc->service_uuid.id.uuid.len == 2) ? "uuid16" : "uuid128"), + p_cur_srvc->service_uuid.id.uuid.uu.uuid16, + p_cur_srvc->service_uuid.id.inst_id); i ++; p_attr = p_cur_srvc->p_attr; - for (j = 0; p_attr; j ++ ) - { + for (j = 0; p_attr; j ++ ) { APPL_TRACE_ERROR("\t Attr[0x%04x] handle[%d] uuid[0x%04x] inst[%d] type[%s] prop[0x%1x]", - j + 1, p_attr->attr_handle, p_attr->p_uuid->uuid16, p_attr->inst_id, - bta_gattc_attr_type[p_attr->attr_type], p_attr->property); + j + 1, p_attr->attr_handle, p_attr->p_uuid->uuid16, p_attr->inst_id, + bta_gattc_attr_type[p_attr->attr_type], p_attr->property); p_attr = p_attr->p_next; } @@ -116,10 +113,9 @@ static void bta_gattc_display_explore_record(tBTA_GATTC_ATTR_REC *p_rec, UINT8 n tBTA_GATTC_ATTR_REC *pp = p_rec; APPL_TRACE_ERROR("<================Start Explore Queue =============>"); - for (i = 0; i < num_rec; i ++, pp ++) - { + for (i = 0; i < num_rec; i ++, pp ++) { APPL_TRACE_ERROR("\t rec[%d] uuid[0x%04x] s_handle[%d] e_handle[%d] is_primary[%d]", - i + 1, pp->uuid.uu.uuid16, pp->s_handle, pp->e_handle, pp->is_primary); + i + 1, pp->uuid.uu.uuid16, pp->s_handle, pp->e_handle, pp->is_primary); } APPL_TRACE_ERROR("<================ End Explore Queue =============>"); APPL_TRACE_ERROR(" "); @@ -141,14 +137,11 @@ BT_HDR *bta_gattc_alloc_cache_buf(tBTA_GATTC_SERV *p_srvc_cb) { BT_HDR *p_buf; - if ((p_buf = (BT_HDR *)GKI_getpoolbuf(GATT_DB_POOL_ID)) == NULL) - { + if ((p_buf = (BT_HDR *)GKI_getpoolbuf(GATT_DB_POOL_ID)) == NULL) { APPL_TRACE_DEBUG("No resources: GKI buffer allocation failed."); utl_freebuf((void **)&p_srvc_cb->p_srvc_list); p_srvc_cb->free_byte = 0; - } - else - { + } else { memset(p_buf, 0, GKI_get_buf_size(p_buf)); p_srvc_cb->p_free = (UINT8 *) p_buf; p_srvc_cb->free_byte = GKI_get_buf_size(p_buf); @@ -174,29 +167,24 @@ tBTA_GATT_STATUS bta_gattc_init_cache(tBTA_GATTC_SERV *p_srvc_cb) { tBTA_GATT_STATUS status = BTA_GATT_OK; - while (!GKI_queue_is_empty(&p_srvc_cb->cache_buffer)) + while (!GKI_queue_is_empty(&p_srvc_cb->cache_buffer)) { GKI_freebuf (GKI_dequeue (&p_srvc_cb->cache_buffer)); + } utl_freebuf((void **)&p_srvc_cb->p_srvc_list); - if ((p_srvc_cb->p_srvc_list = (tBTA_GATTC_ATTR_REC*)GKI_getbuf(BTA_GATTC_ATTR_LIST_SIZE)) == NULL) - { + if ((p_srvc_cb->p_srvc_list = (tBTA_GATTC_ATTR_REC *)GKI_getbuf(BTA_GATTC_ATTR_LIST_SIZE)) == NULL) { APPL_TRACE_DEBUG("No resources: GKI buffer allocation failed."); status = GATT_NO_RESOURCES; - } - else - { + } else { p_srvc_cb->total_srvc = 0; p_srvc_cb->cur_srvc_idx = - p_srvc_cb->cur_char_idx = - p_srvc_cb->next_avail_idx = 0; + p_srvc_cb->cur_char_idx = + p_srvc_cb->next_avail_idx = 0; - if (bta_gattc_alloc_cache_buf(p_srvc_cb) == NULL) - { + if (bta_gattc_alloc_cache_buf(p_srvc_cb) == NULL) { status = GATT_NO_RESOURCES; - } - else - { + } else { p_srvc_cb->p_cur_srvc = p_srvc_cb->p_srvc_cache = NULL; } } @@ -218,13 +206,14 @@ static UINT8 bta_gattc_get_srvc_inst_id(tBTA_GATTC_SERV *p_srvc_cb, tBT_UUID uui tBTA_GATTC_ATTR_REC *p_srvc_rec; for (i = 0; i < p_srvc_cb->total_srvc; i ++) - /* - for (; i < p_srvc_cb->cur_srvc_idx; i ++)*/ + /* + for (; i < p_srvc_cb->cur_srvc_idx; i ++)*/ { p_srvc_rec = p_srvc_cb->p_srvc_list + i; - if (bta_gattc_uuid_compare(&p_srvc_rec->uuid, &uuid, TRUE)) + if (bta_gattc_uuid_compare(&p_srvc_rec->uuid, &uuid, TRUE)) { inst ++; + } } return inst ; } @@ -245,12 +234,12 @@ static UINT8 bta_gattc_get_char_inst_id(tBTA_GATTC_CACHE *p_service_cache, tBT_U p_attr = p_service_cache->p_attr; - while (p_attr) - { + while (p_attr) { bta_gattc_pack_attr_uuid(p_attr, &attr_uuid); - if (bta_gattc_uuid_compare(&attr_uuid, p_uuid, TRUE)) + if (bta_gattc_uuid_compare(&attr_uuid, p_uuid, TRUE)) { inst ++; + } p_attr = p_attr->p_next; } @@ -271,15 +260,16 @@ static UINT8 bta_gattc_get_char_descr_inst_id(tBTA_GATTC_CACHE_ATTR *p_char_attr UINT8 inst = 0; tBT_UUID attr_uuid; - if (p_char_attr != NULL) + if (p_char_attr != NULL) { p_char_attr = p_char_attr->p_next; + } - while (p_char_attr) - { + while (p_char_attr) { bta_gattc_pack_attr_uuid(p_char_attr, &attr_uuid); - if (bta_gattc_uuid_compare(&attr_uuid, p_uuid, TRUE)) + if (bta_gattc_uuid_compare(&attr_uuid, p_uuid, TRUE)) { inst ++; + } p_char_attr = p_char_attr->p_next; } @@ -296,9 +286,9 @@ static UINT8 bta_gattc_get_char_descr_inst_id(tBTA_GATTC_CACHE_ATTR *p_char_attr ** *******************************************************************************/ static tBTA_GATT_STATUS bta_gattc_add_srvc_to_cache(tBTA_GATTC_SERV *p_srvc_cb, - UINT16 s_handle, UINT16 e_handle, - tBT_UUID *p_uuid, - BOOLEAN is_primary, UINT8 srvc_inst) + UINT16 s_handle, UINT16 e_handle, + tBT_UUID *p_uuid, + BOOLEAN is_primary, UINT8 srvc_inst) { tBTA_GATTC_CACHE *p_new_srvc = NULL; tBTA_GATT_STATUS status = BTA_GATT_OK; @@ -308,10 +298,10 @@ static tBTA_GATT_STATUS bta_gattc_add_srvc_to_cache(tBTA_GATTC_SERV *p_srvc_cb, APPL_TRACE_DEBUG("free byte = %d, req %d bytes.", p_srvc_cb->free_byte, sizeof(tBTA_GATTC_CACHE)) #endif - if (p_srvc_cb->free_byte < sizeof(tBTA_GATTC_CACHE)) - { - if (bta_gattc_alloc_cache_buf(p_srvc_cb) == NULL) + if (p_srvc_cb->free_byte < sizeof(tBTA_GATTC_CACHE)) { + if (bta_gattc_alloc_cache_buf(p_srvc_cb) == NULL) { return GATT_NO_RESOURCES; + } } p_new_srvc = (tBTA_GATTC_CACHE *)p_srvc_cb->p_free; @@ -323,14 +313,16 @@ static tBTA_GATT_STATUS bta_gattc_add_srvc_to_cache(tBTA_GATTC_SERV *p_srvc_cb, p_new_srvc->service_uuid.id.inst_id = srvc_inst; p_new_srvc->p_next = NULL; - if (p_srvc_cb->p_cur_srvc != NULL) + if (p_srvc_cb->p_cur_srvc != NULL) { p_srvc_cb->p_cur_srvc->p_next = p_new_srvc; + } p_srvc_cb->p_cur_srvc = p_new_srvc; p_srvc_cb->p_cur_srvc->p_cur_char = NULL; /* first service */ - if (p_srvc_cb->p_srvc_cache == NULL) + if (p_srvc_cb->p_srvc_cache == NULL) { p_srvc_cb->p_srvc_cache = p_new_srvc; + } /* update buffer managament info */ p_srvc_cb->p_free += sizeof(tBTA_GATTC_CACHE); @@ -349,10 +341,10 @@ static tBTA_GATT_STATUS bta_gattc_add_srvc_to_cache(tBTA_GATTC_SERV *p_srvc_cb, ** *******************************************************************************/ static tBTA_GATT_STATUS bta_gattc_add_attr_to_cache(tBTA_GATTC_SERV *p_srvc_cb, - UINT16 handle, - tBT_UUID *p_uuid, - UINT8 property, - tBTA_GATTC_ATTR_TYPE type) + UINT16 handle, + tBT_UUID *p_uuid, + UINT8 property, + tBTA_GATTC_ATTR_TYPE type) { tBTA_GATTC_CACHE_ATTR *p_attr; tBTA_GATT_STATUS status = BTA_GATT_OK; @@ -365,16 +357,15 @@ static tBTA_GATT_STATUS bta_gattc_add_attr_to_cache(tBTA_GATTC_SERV *p_srvc_cb, APPL_TRACE_DEBUG("free byte = %d, req %d bytes.", p_srvc_cb->free_byte, len); #endif - if (p_srvc_cb->p_cur_srvc == NULL) - { + if (p_srvc_cb->p_cur_srvc == NULL) { APPL_TRACE_ERROR("Illegal action to add char/descr/incl srvc before adding a service!"); return GATT_WRONG_STATE; } - if (p_srvc_cb->free_byte < len) - { - if (bta_gattc_alloc_cache_buf(p_srvc_cb) == NULL) + if (p_srvc_cb->free_byte < len) { + if (bta_gattc_alloc_cache_buf(p_srvc_cb) == NULL) { return GATT_NO_RESOURCES; + } } p_attr = (tBTA_GATTC_CACHE_ATTR *)p_srvc_cb->p_free; @@ -388,36 +379,32 @@ static tBTA_GATT_STATUS bta_gattc_add_attr_to_cache(tBTA_GATTC_SERV *p_srvc_cb, pp = (UINT8 *)p_attr->p_uuid; - if (p_uuid->len == LEN_UUID_16) - { + if (p_uuid->len == LEN_UUID_16) { UINT16_TO_STREAM(pp, p_uuid->uu.uuid16); - } - else if (p_uuid->len == LEN_UUID_128) - { + } else if (p_uuid->len == LEN_UUID_128) { memcpy(pp, p_uuid->uu.uuid128, LEN_UUID_128); } - if (type == BTA_GATTC_ATTR_TYPE_CHAR) - { + if (type == BTA_GATTC_ATTR_TYPE_CHAR) { p_attr->inst_id = bta_gattc_get_char_inst_id(p_srvc_cb->p_cur_srvc, p_uuid); p_srvc_cb->p_cur_srvc->p_cur_char = p_attr; - } - else if (type == BTA_GATTC_ATTR_TYPE_CHAR_DESCR) + } else if (type == BTA_GATTC_ATTR_TYPE_CHAR_DESCR) { p_attr->inst_id = bta_gattc_get_char_descr_inst_id(p_srvc_cb->p_cur_srvc->p_cur_char, p_uuid); - else /* TODO: --->> temp treat included service as single instance */ + } else { /* TODO: --->> temp treat included service as single instance */ p_attr->inst_id = 0; + } /* update service information */ p_srvc_cb->p_free += len; p_srvc_cb->free_byte -= len; /* first attribute within the service, update the attribute pointer */ - if (p_srvc_cb->p_cur_srvc->p_attr == NULL) - { + if (p_srvc_cb->p_cur_srvc->p_attr == NULL) { p_srvc_cb->p_cur_srvc->p_attr = p_attr; } - if (p_srvc_cb->p_cur_srvc->p_last_attr != NULL) + if (p_srvc_cb->p_cur_srvc->p_last_attr != NULL) { p_srvc_cb->p_cur_srvc->p_last_attr->p_next = p_attr; + } p_srvc_cb->p_cur_srvc->p_last_attr = p_attr; @@ -437,20 +424,17 @@ void bta_gattc_get_disc_range(tBTA_GATTC_SERV *p_srvc_cb, UINT16 *p_s_hdl, UINT1 { tBTA_GATTC_ATTR_REC *p_rec = NULL; - if (is_srvc) - { + if (is_srvc) { p_rec = p_srvc_cb->p_srvc_list + p_srvc_cb->cur_srvc_idx; *p_s_hdl = p_rec->s_handle; - } - else - { + } else { p_rec = p_srvc_cb->p_srvc_list + p_srvc_cb->cur_char_idx; *p_s_hdl = p_rec->s_handle + 1; } *p_e_hdl = p_rec->e_handle; #if (defined BTA_GATT_DEBUG && BTA_GATT_DEBUG == TRUE) - APPL_TRACE_DEBUG("discover range [%d ~ %d]",p_rec->s_handle, p_rec->e_handle); + APPL_TRACE_DEBUG("discover range [%d ~ %d]", p_rec->s_handle, p_rec->e_handle); #endif return; } @@ -464,17 +448,17 @@ void bta_gattc_get_disc_range(tBTA_GATTC_SERV *p_srvc_cb, UINT16 *p_s_hdl, UINT1 ** *******************************************************************************/ tBTA_GATT_STATUS bta_gattc_discover_pri_service(UINT16 conn_id, tBTA_GATTC_SERV *p_server_cb, - UINT8 disc_type) + UINT8 disc_type) { tBTA_GATTC_CLCB *p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id); tBTA_GATT_STATUS status = BTA_GATT_ERROR; - if (p_clcb) - { - if (p_clcb->transport == BTA_TRANSPORT_LE) + if (p_clcb) { + if (p_clcb->transport == BTA_TRANSPORT_LE) { status = bta_gattc_discover_procedure(conn_id, p_server_cb, disc_type); - else + } else { status = bta_gattc_sdp_service_disc(conn_id, p_server_cb); + } } return status; @@ -489,27 +473,24 @@ tBTA_GATT_STATUS bta_gattc_discover_pri_service(UINT16 conn_id, tBTA_GATTC_SERV ** *******************************************************************************/ tBTA_GATT_STATUS bta_gattc_discover_procedure(UINT16 conn_id, tBTA_GATTC_SERV *p_server_cb, - UINT8 disc_type) + UINT8 disc_type) { tGATT_DISC_PARAM param; BOOLEAN is_service = TRUE; memset(¶m, 0, sizeof(tGATT_DISC_PARAM)); - if (disc_type == GATT_DISC_SRVC_ALL || disc_type == GATT_DISC_SRVC_BY_UUID) - { + if (disc_type == GATT_DISC_SRVC_ALL || disc_type == GATT_DISC_SRVC_BY_UUID) { param.s_handle = 1; param.e_handle = 0xFFFF; - } - else - { - if (disc_type == GATT_DISC_CHAR_DSCPT) + } else { + if (disc_type == GATT_DISC_CHAR_DSCPT) { is_service = FALSE; + } bta_gattc_get_disc_range(p_server_cb, ¶m.s_handle, ¶m.e_handle, is_service); - if (param.s_handle > param.e_handle) - { + if (param.s_handle > param.e_handle) { return GATT_ERROR; } } @@ -557,8 +538,9 @@ void bta_gattc_start_disc_char_dscp(UINT16 conn_id, tBTA_GATTC_SERV *p_srvc_cb) { APPL_TRACE_DEBUG("starting discover characteristics descriptor"); - if (bta_gattc_discover_procedure(conn_id, p_srvc_cb, GATT_DISC_CHAR_DSCPT) != 0) + if (bta_gattc_discover_procedure(conn_id, p_srvc_cb, GATT_DISC_CHAR_DSCPT) != 0) { bta_gattc_char_dscpt_disc_cmpl(conn_id, p_srvc_cb); + } } /******************************************************************************* @@ -579,22 +561,19 @@ static void bta_gattc_explore_srvc(UINT16 conn_id, tBTA_GATTC_SERV *p_srvc_cb) p_srvc_cb->cur_char_idx = p_srvc_cb->next_avail_idx = p_srvc_cb->total_srvc; - if (p_clcb == NULL) - { + if (p_clcb == NULL) { APPL_TRACE_ERROR("unknown connection ID"); return; } /* start expore a service if there is service not been explored */ - if (p_srvc_cb->cur_srvc_idx < p_srvc_cb->total_srvc) - { + if (p_srvc_cb->cur_srvc_idx < p_srvc_cb->total_srvc) { /* add the first service into cache */ if (bta_gattc_add_srvc_to_cache (p_srvc_cb, p_rec->s_handle, p_rec->e_handle, &p_rec->uuid, p_rec->is_primary, - p_rec->srvc_inst_id) == 0) - { + p_rec->srvc_inst_id) == 0) { /* start discovering included services */ bta_gattc_start_disc_include_srvc(conn_id, p_srvc_cb); return; @@ -641,8 +620,7 @@ static void bta_gattc_char_disc_cmpl(UINT16 conn_id, tBTA_GATTC_SERV *p_srvc_cb) tBTA_GATTC_ATTR_REC *p_rec = p_srvc_cb->p_srvc_list + p_srvc_cb->cur_char_idx; /* if there are characteristic needs to be explored */ - if (p_srvc_cb->total_char > 0) - { + if (p_srvc_cb->total_char > 0) { /* add the first characteristic into cache */ bta_gattc_add_attr_to_cache (p_srvc_cb, p_rec->s_handle, @@ -652,9 +630,7 @@ static void bta_gattc_char_disc_cmpl(UINT16 conn_id, tBTA_GATTC_SERV *p_srvc_cb) /* start discoverying characteristic descriptor , if failed, disc for next char*/ bta_gattc_start_disc_char_dscp(conn_id, p_srvc_cb); - } - else /* otherwise start with next service */ - { + } else { /* otherwise start with next service */ p_srvc_cb->cur_srvc_idx ++; bta_gattc_explore_srvc (conn_id, p_srvc_cb); @@ -673,8 +649,7 @@ static void bta_gattc_char_dscpt_disc_cmpl(UINT16 conn_id, tBTA_GATTC_SERV *p_sr { tBTA_GATTC_ATTR_REC *p_rec = NULL; - if (-- p_srvc_cb->total_char > 0) - { + if (-- p_srvc_cb->total_char > 0) { p_rec = p_srvc_cb->p_srvc_list + (++ p_srvc_cb->cur_char_idx); /* add the next characteristic into cache */ bta_gattc_add_attr_to_cache (p_srvc_cb, @@ -685,9 +660,8 @@ static void bta_gattc_char_dscpt_disc_cmpl(UINT16 conn_id, tBTA_GATTC_SERV *p_sr /* start discoverying next characteristic for char descriptor */ bta_gattc_start_disc_char_dscp(conn_id, p_srvc_cb); - } - else - /* all characteristic has been explored, start with next service if any */ + } else + /* all characteristic has been explored, start with next service if any */ { #if (defined BTA_GATT_DEBUG && BTA_GATT_DEBUG == TRUE) APPL_TRACE_ERROR("all char has been explored"); @@ -705,20 +679,15 @@ static BOOLEAN bta_gattc_srvc_in_list(tBTA_GATTC_SERV *p_srvc_cb, UINT16 s_handl BOOLEAN exist_srvc = FALSE; UNUSED(uuid); - if (!GATT_HANDLE_IS_VALID(s_handle) || !GATT_HANDLE_IS_VALID(e_handle)) - { + if (!GATT_HANDLE_IS_VALID(s_handle) || !GATT_HANDLE_IS_VALID(e_handle)) { APPL_TRACE_ERROR("invalid included service handle: [0x%04x ~ 0x%04x]", s_handle, e_handle); exist_srvc = TRUE; - } - else - { - for (i = 0; i < p_srvc_cb->next_avail_idx; i ++) - { + } else { + for (i = 0; i < p_srvc_cb->next_avail_idx; i ++) { p_rec = p_srvc_cb->p_srvc_list + i; /* a new service should not have any overlap with other service handle range */ - if (p_rec->s_handle == s_handle || p_rec->e_handle == e_handle) - { + if (p_rec->s_handle == s_handle || p_rec->e_handle == e_handle) { exist_srvc = TRUE; break; } @@ -736,18 +705,17 @@ static BOOLEAN bta_gattc_srvc_in_list(tBTA_GATTC_SERV *p_srvc_cb, UINT16 s_handl ** *******************************************************************************/ static tBTA_GATT_STATUS bta_gattc_add_srvc_to_list(tBTA_GATTC_SERV *p_srvc_cb, - UINT16 s_handle, UINT16 e_handle, - tBT_UUID uuid, BOOLEAN is_primary) + UINT16 s_handle, UINT16 e_handle, + tBT_UUID uuid, BOOLEAN is_primary) { tBTA_GATTC_ATTR_REC *p_rec = NULL; tBTA_GATT_STATUS status = BTA_GATT_OK; - if (p_srvc_cb->p_srvc_list && p_srvc_cb->next_avail_idx < BTA_GATTC_MAX_CACHE_CHAR) - { + if (p_srvc_cb->p_srvc_list && p_srvc_cb->next_avail_idx < BTA_GATTC_MAX_CACHE_CHAR) { p_rec = p_srvc_cb->p_srvc_list + p_srvc_cb->next_avail_idx; APPL_TRACE_DEBUG("%s handle=%d, service type=0x%04x", - __func__, s_handle, uuid.uu.uuid16); + __func__, s_handle, uuid.uu.uuid16); p_rec->s_handle = s_handle; p_rec->e_handle = e_handle; @@ -757,9 +725,8 @@ static tBTA_GATT_STATUS bta_gattc_add_srvc_to_list(tBTA_GATTC_SERV *p_srvc_cb, p_srvc_cb->total_srvc ++; p_srvc_cb->next_avail_idx ++; - } - else - { /* allocate bigger buffer ?? */ + } else { + /* allocate bigger buffer ?? */ status = GATT_DB_FULL; APPL_TRACE_ERROR("service not added, no resources or wrong state"); @@ -776,19 +743,16 @@ static tBTA_GATT_STATUS bta_gattc_add_srvc_to_list(tBTA_GATTC_SERV *p_srvc_cb, ** *******************************************************************************/ static tBTA_GATT_STATUS bta_gattc_add_char_to_list(tBTA_GATTC_SERV *p_srvc_cb, - UINT16 decl_handle, UINT16 value_handle, - tBT_UUID uuid, UINT8 property) + UINT16 decl_handle, UINT16 value_handle, + tBT_UUID uuid, UINT8 property) { tBTA_GATTC_ATTR_REC *p_rec = NULL; tBTA_GATT_STATUS status = BTA_GATT_OK; - if (p_srvc_cb->p_srvc_list == NULL) - { + if (p_srvc_cb->p_srvc_list == NULL) { APPL_TRACE_ERROR("No service available, unexpected char discovery result"); status = BTA_GATT_INTERNAL_ERROR; - } - else if (p_srvc_cb->next_avail_idx < BTA_GATTC_MAX_CACHE_CHAR) - { + } else if (p_srvc_cb->next_avail_idx < BTA_GATTC_MAX_CACHE_CHAR) { p_rec = p_srvc_cb->p_srvc_list + p_srvc_cb->next_avail_idx; @@ -800,15 +764,12 @@ static tBTA_GATT_STATUS bta_gattc_add_char_to_list(tBTA_GATTC_SERV *p_srvc_cb, memcpy(&p_rec->uuid, &uuid, sizeof(tBT_UUID)); /* update the endind handle of pervious characteristic if available */ - if (p_srvc_cb->total_char > 1) - { + if (p_srvc_cb->total_char > 1) { p_rec -= 1; p_rec->e_handle = decl_handle - 1; } p_srvc_cb->next_avail_idx ++; - } - else - { + } else { APPL_TRACE_ERROR("char not added, no resources"); /* allocate bigger buffer ?? */ status = BTA_GATT_DB_FULL; @@ -833,44 +794,36 @@ void bta_gattc_sdp_callback (UINT16 sdp_status) UINT16 start_handle = 0, end_handle = 0; tBTA_GATTC_SERV *p_srvc_cb = bta_gattc_find_scb_by_cid(bta_gattc_cb.sdp_conn_id); - if(((sdp_status == SDP_SUCCESS) || (sdp_status == SDP_DB_FULL)) && p_srvc_cb != NULL) - { - do - { + if (((sdp_status == SDP_SUCCESS) || (sdp_status == SDP_DB_FULL)) && p_srvc_cb != NULL) { + do { /* find a service record, report it */ p_sdp_rec = SDP_FindServiceInDb(bta_gattc_cb.p_sdp_db, 0, p_sdp_rec); - if (p_sdp_rec) - { - if (SDP_FindServiceUUIDInRec(p_sdp_rec, &service_uuid)) - { + if (p_sdp_rec) { + if (SDP_FindServiceUUIDInRec(p_sdp_rec, &service_uuid)) { - if (SDP_FindProtocolListElemInRec(p_sdp_rec, UUID_PROTOCOL_ATT, &pe)) - { + if (SDP_FindProtocolListElemInRec(p_sdp_rec, UUID_PROTOCOL_ATT, &pe)) { start_handle = (UINT16) pe.params[0]; end_handle = (UINT16) pe.params[1]; #if (defined BTA_GATT_DEBUG && BTA_GATT_DEBUG == TRUE) APPL_TRACE_EVENT("Found ATT service [0x%04x] handle[0x%04x ~ 0x%04x]", - service_uuid.uu.uuid16, start_handle, end_handle); + service_uuid.uu.uuid16, start_handle, end_handle); #endif - if (GATT_HANDLE_IS_VALID(start_handle) && GATT_HANDLE_IS_VALID(end_handle)&& - p_srvc_cb != NULL) - { + if (GATT_HANDLE_IS_VALID(start_handle) && GATT_HANDLE_IS_VALID(end_handle) && + p_srvc_cb != NULL) { /* discover services result, add services into a service list */ bta_gattc_add_srvc_to_list(p_srvc_cb, start_handle, end_handle, service_uuid, TRUE); - } - else - { + } else { APPL_TRACE_ERROR("invalid start_handle = %d end_handle = %d", - start_handle, end_handle); + start_handle, end_handle); } - } + } } @@ -880,9 +833,9 @@ void bta_gattc_sdp_callback (UINT16 sdp_status) if ( p_srvc_cb != NULL) /* start discover primary service */ - bta_gattc_explore_srvc(bta_gattc_cb.sdp_conn_id, p_srvc_cb); - else { + bta_gattc_explore_srvc(bta_gattc_cb.sdp_conn_id, p_srvc_cb); + } else { APPL_TRACE_ERROR("GATT service discovery is done on unknown connection"); } @@ -911,27 +864,23 @@ static tBTA_GATT_STATUS bta_gattc_sdp_service_disc(UINT16 conn_id, tBTA_GATTC_SE uuid.len = LEN_UUID_16; uuid.uu.uuid16 = UUID_PROTOCOL_ATT; - if((bta_gattc_cb.p_sdp_db = (tSDP_DISCOVERY_DB *)GKI_getbuf(BTA_GATT_SDP_DB_SIZE)) != NULL) - { + if ((bta_gattc_cb.p_sdp_db = (tSDP_DISCOVERY_DB *)GKI_getbuf(BTA_GATT_SDP_DB_SIZE)) != NULL) { attr_list[0] = ATTR_ID_SERVICE_CLASS_ID_LIST; attr_list[1] = ATTR_ID_PROTOCOL_DESC_LIST; SDP_InitDiscoveryDb (bta_gattc_cb.p_sdp_db, BTA_GATT_SDP_DB_SIZE, 1, &uuid, num_attrs, attr_list); - if(!SDP_ServiceSearchAttributeRequest (p_server_cb->server_bda, - bta_gattc_cb.p_sdp_db, &bta_gattc_sdp_callback)) - { + if (!SDP_ServiceSearchAttributeRequest (p_server_cb->server_bda, + bta_gattc_cb.p_sdp_db, &bta_gattc_sdp_callback)) { GKI_freebuf(bta_gattc_cb.p_sdp_db); bta_gattc_cb.p_sdp_db = NULL; - } - else - { + } else { bta_gattc_cb.sdp_conn_id = conn_id; status = BTA_GATT_OK; } - } - return status; + } + return status; } /******************************************************************************* ** @@ -945,112 +894,108 @@ static tBTA_GATT_STATUS bta_gattc_sdp_service_disc(UINT16 conn_id, tBTA_GATTC_SE *******************************************************************************/ void bta_gattc_disc_res_cback (UINT16 conn_id, tGATT_DISC_TYPE disc_type, tGATT_DISC_RES *p_data) { - tBTA_GATTC_SERV * p_srvc_cb = NULL; + tBTA_GATTC_SERV *p_srvc_cb = NULL; BOOLEAN pri_srvc; tBTA_GATTC_CLCB *p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id); p_srvc_cb = bta_gattc_find_scb_by_cid(conn_id); - if (p_srvc_cb != NULL && p_clcb != NULL && p_clcb->state == BTA_GATTC_DISCOVER_ST) - { - switch (disc_type) - { - case GATT_DISC_SRVC_ALL: - /* discover services result, add services into a service list */ + if (p_srvc_cb != NULL && p_clcb != NULL && p_clcb->state == BTA_GATTC_DISCOVER_ST) { + switch (disc_type) { + case GATT_DISC_SRVC_ALL: + /* discover services result, add services into a service list */ + bta_gattc_add_srvc_to_list(p_srvc_cb, + p_data->handle, + p_data->value.group_value.e_handle, + p_data->value.group_value.service_type, + TRUE); + + break; + case GATT_DISC_SRVC_BY_UUID: + bta_gattc_add_srvc_to_list(p_srvc_cb, + p_data->handle, + p_data->value.group_value.e_handle, + p_data->value.group_value.service_type, + TRUE); + break; + + case GATT_DISC_INC_SRVC: + /* add included service into service list if it's secondary or it never showed up + in the primary service search */ + pri_srvc = bta_gattc_srvc_in_list(p_srvc_cb, + p_data->value.incl_service.s_handle, + p_data->value.incl_service.e_handle, + p_data->value.incl_service.service_type); + + if (!pri_srvc) bta_gattc_add_srvc_to_list(p_srvc_cb, - p_data->handle, - p_data->value.group_value.e_handle, - p_data->value.group_value.service_type, - TRUE); + p_data->value.incl_service.s_handle, + p_data->value.incl_service.e_handle, + p_data->value.incl_service.service_type, + FALSE); + /* add into database */ + bta_gattc_add_attr_to_cache(p_srvc_cb, + p_data->handle, + &p_data->value.incl_service.service_type, + pri_srvc, + BTA_GATTC_ATTR_TYPE_INCL_SRVC); + break; - break; - case GATT_DISC_SRVC_BY_UUID: - bta_gattc_add_srvc_to_list(p_srvc_cb, - p_data->handle, - p_data->value.group_value.e_handle, - p_data->value.group_value.service_type, - TRUE); - break; + case GATT_DISC_CHAR: + /* add char value into database */ + bta_gattc_add_char_to_list(p_srvc_cb, + p_data->handle, + p_data->value.dclr_value.val_handle, + p_data->value.dclr_value.char_uuid, + p_data->value.dclr_value.char_prop); + break; - case GATT_DISC_INC_SRVC: - /* add included service into service list if it's secondary or it never showed up - in the primary service search */ - pri_srvc = bta_gattc_srvc_in_list(p_srvc_cb, - p_data->value.incl_service.s_handle, - p_data->value.incl_service.e_handle, - p_data->value.incl_service.service_type); - - if (!pri_srvc) - bta_gattc_add_srvc_to_list(p_srvc_cb, - p_data->value.incl_service.s_handle, - p_data->value.incl_service.e_handle, - p_data->value.incl_service.service_type, - FALSE); - /* add into database */ - bta_gattc_add_attr_to_cache(p_srvc_cb, - p_data->handle, - &p_data->value.incl_service.service_type, - pri_srvc, - BTA_GATTC_ATTR_TYPE_INCL_SRVC); - break; - - case GATT_DISC_CHAR: - /* add char value into database */ - bta_gattc_add_char_to_list(p_srvc_cb, - p_data->handle, - p_data->value.dclr_value.val_handle, - p_data->value.dclr_value.char_uuid, - p_data->value.dclr_value.char_prop); - break; - - case GATT_DISC_CHAR_DSCPT: - bta_gattc_add_attr_to_cache(p_srvc_cb, p_data->handle, &p_data->type, 0, - BTA_GATTC_ATTR_TYPE_CHAR_DESCR); - break; + case GATT_DISC_CHAR_DSCPT: + bta_gattc_add_attr_to_cache(p_srvc_cb, p_data->handle, &p_data->type, 0, + BTA_GATTC_ATTR_TYPE_CHAR_DESCR); + break; } } } void bta_gattc_disc_cmpl_cback (UINT16 conn_id, tGATT_DISC_TYPE disc_type, tGATT_STATUS status) { - tBTA_GATTC_SERV * p_srvc_cb; + tBTA_GATTC_SERV *p_srvc_cb; tBTA_GATTC_CLCB *p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id); - if ( p_clcb && (status != GATT_SUCCESS || p_clcb->status != GATT_SUCCESS) ) - { - if (p_clcb->status == GATT_SUCCESS) + if ( p_clcb && (status != GATT_SUCCESS || p_clcb->status != GATT_SUCCESS) ) { + if (p_clcb->status == GATT_SUCCESS) { p_clcb->status = status; + } bta_gattc_sm_execute(p_clcb, BTA_GATTC_DISCOVER_CMPL_EVT, NULL); return; } p_srvc_cb = bta_gattc_find_scb_by_cid(conn_id); - if (p_srvc_cb != NULL) - { - switch (disc_type) - { - case GATT_DISC_SRVC_ALL: - case GATT_DISC_SRVC_BY_UUID: + if (p_srvc_cb != NULL) { + switch (disc_type) { + case GATT_DISC_SRVC_ALL: + case GATT_DISC_SRVC_BY_UUID: #if (defined BTA_GATT_DEBUG && BTA_GATT_DEBUG == TRUE) - bta_gattc_display_explore_record(p_srvc_cb->p_srvc_list, p_srvc_cb->next_avail_idx); + bta_gattc_display_explore_record(p_srvc_cb->p_srvc_list, p_srvc_cb->next_avail_idx); #endif - bta_gattc_explore_srvc(conn_id, p_srvc_cb); - break; + bta_gattc_explore_srvc(conn_id, p_srvc_cb); + break; - case GATT_DISC_INC_SRVC: - bta_gattc_incl_srvc_disc_cmpl(conn_id, p_srvc_cb); + case GATT_DISC_INC_SRVC: + bta_gattc_incl_srvc_disc_cmpl(conn_id, p_srvc_cb); - break; + break; - case GATT_DISC_CHAR: + case GATT_DISC_CHAR: #if (defined BTA_GATT_DEBUG && BTA_GATT_DEBUG == TRUE) - bta_gattc_display_explore_record(p_srvc_cb->p_srvc_list, p_srvc_cb->next_avail_idx); + bta_gattc_display_explore_record(p_srvc_cb->p_srvc_list, p_srvc_cb->next_avail_idx); #endif - bta_gattc_char_disc_cmpl(conn_id, p_srvc_cb); - break; + bta_gattc_char_disc_cmpl(conn_id, p_srvc_cb); + break; - case GATT_DISC_CHAR_DSCPT: - bta_gattc_char_dscpt_disc_cmpl(conn_id, p_srvc_cb); - break; + case GATT_DISC_CHAR_DSCPT: + bta_gattc_char_dscpt_disc_cmpl(conn_id, p_srvc_cb); + break; } } } @@ -1073,70 +1018,55 @@ UINT16 bta_gattc_id2handle(tBTA_GATTC_SERV *p_srcb, tBTA_GATT_SRVC_ID *p_service tBT_UUID attr_uuid; BOOLEAN char_map = FALSE, done = FALSE; - while (p_service_id && p_cache && !done) - { + while (p_service_id && p_cache && !done) { #if (defined BTA_GATT_DEBUG && BTA_GATT_DEBUG == TRUE) APPL_TRACE_DEBUG("Service: handle[%d] uuid[0x%04x] inst[%d]", - p_cache->s_handle, p_cache->service_uuid.id.uuid.uu.uuid16, - p_cache->service_uuid.id.inst_id); + p_cache->s_handle, p_cache->service_uuid.id.uuid.uu.uuid16, + p_cache->service_uuid.id.inst_id); #endif p_attr = p_cache->p_attr; - if (bta_gattc_srvcid_compare(p_service_id, &p_cache->service_uuid)) - { - for (j = 0; p_attr; j ++) - { + if (bta_gattc_srvcid_compare(p_service_id, &p_cache->service_uuid)) { + for (j = 0; p_attr; j ++) { #if (defined BTA_GATT_DEBUG && BTA_GATT_DEBUG == TRUE) APPL_TRACE_DEBUG("\t Attr[0x%04x] handle[0x%04x] uuid[0x%04x] inst[%d] type[%d]", - j + 1, p_attr->attr_handle, p_attr->p_uuid->uuid16, - p_attr->inst_id, p_attr->attr_type); + j + 1, p_attr->attr_handle, p_attr->p_uuid->uuid16, + p_attr->inst_id, p_attr->attr_type); #endif bta_gattc_pack_attr_uuid(p_attr, &attr_uuid); if (bta_gattc_uuid_compare(&p_char_id->uuid, &attr_uuid, TRUE) && - p_char_id->inst_id == p_attr->inst_id) - { - if (p_descr_uuid == NULL) - { + p_char_id->inst_id == p_attr->inst_id) { + if (p_descr_uuid == NULL) { handle = p_attr->attr_handle; done = TRUE; break; - } - else - { + } else { #if (defined BTA_GATT_DEBUG && BTA_GATT_DEBUG == TRUE) APPL_TRACE_DEBUG("found matching characteristic for the descriptor"); #endif char_map = TRUE; } - } - else if (char_map == TRUE) - { - if (p_attr->attr_type == BTA_GATTC_ATTR_TYPE_CHAR_DESCR) - { + } else if (char_map == TRUE) { + if (p_attr->attr_type == BTA_GATTC_ATTR_TYPE_CHAR_DESCR) { if (p_descr_uuid != NULL && - bta_gattc_uuid_compare(&p_descr_uuid->uuid, &attr_uuid, TRUE) && - p_descr_uuid->inst_id == p_attr->inst_id) - { + bta_gattc_uuid_compare(&p_descr_uuid->uuid, &attr_uuid, TRUE) && + p_descr_uuid->inst_id == p_attr->inst_id) { #if (defined BTA_GATT_DEBUG && BTA_GATT_DEBUG == TRUE) APPL_TRACE_DEBUG("found descriptor!!"); #endif handle = p_attr->attr_handle; done = TRUE; break; - } - else - { + } else { #if (defined BTA_GATT_DEBUG && BTA_GATT_DEBUG == TRUE) APPL_TRACE_DEBUG("descriptor UUID not matching"); #endif } - } - else /* another char */ - { + } else { /* another char */ #if (defined BTA_GATT_DEBUG && BTA_GATT_DEBUG == TRUE) - APPL_TRACE_DEBUG("no matching descptr found!!start of next characteristic"); + APPL_TRACE_DEBUG("no matching descptr found!!start of next characteristic"); #endif char_map = FALSE; done = TRUE; @@ -1172,58 +1102,48 @@ BOOLEAN bta_gattc_handle2id(tBTA_GATTC_SERV *p_srcb, UINT16 handle, tBTA_GATT_SR memset(p_char_id, 0, sizeof(tBTA_GATT_ID)); memset(p_descr_type, 0, sizeof(tBTA_GATT_ID)); - while (p_cache) - { + while (p_cache) { #if (defined BTA_GATT_DEBUG && BTA_GATT_DEBUG == TRUE) APPL_TRACE_DEBUG("Service: handle[%d] uuid[0x%04x] inst[%d]", - p_cache->s_handle, p_cache->service_uuid.id.uuid.uu.uuid16, - p_cache->service_uuid.id.inst_id); + p_cache->s_handle, p_cache->service_uuid.id.uuid.uu.uuid16, + p_cache->service_uuid.id.inst_id); #endif /* a service found */ - if (p_cache->s_handle == handle) - { + if (p_cache->s_handle == handle) { memcpy(p_service_id, &p_cache->service_uuid, sizeof(tBTA_GATT_SRVC_ID)); return TRUE; - } - else /* start looking for attributes within the service */ - { + } else { /* start looking for attributes within the service */ p_attr = p_cache->p_attr; - for (j = 0; p_attr; j ++) - { + for (j = 0; p_attr; j ++) { #if (defined BTA_GATT_DEBUG && BTA_GATT_DEBUG == TRUE) APPL_TRACE_DEBUG("\t Attr[0x%04x] handle[0x%04x] uuid[0x%04x] inst[%d] type[%d]", - j + 1, p_attr->attr_handle, p_attr->p_uuid->uuid16, - p_attr->inst_id, p_attr->attr_type); + j + 1, p_attr->attr_handle, p_attr->p_uuid->uuid16, + p_attr->inst_id, p_attr->attr_type); #endif - if (p_attr->attr_type == BTA_GATTC_ATTR_TYPE_CHAR) + if (p_attr->attr_type == BTA_GATTC_ATTR_TYPE_CHAR) { p_char = p_attr; + } - if (handle == p_attr->attr_handle) - { + if (handle == p_attr->attr_handle) { memcpy(p_service_id, &p_cache->service_uuid, sizeof(tBTA_GATT_SRVC_ID)); - if (p_attr->attr_type == BTA_GATTC_ATTR_TYPE_CHAR_DESCR) - { + if (p_attr->attr_type == BTA_GATTC_ATTR_TYPE_CHAR_DESCR) { bta_gattc_pack_attr_uuid(p_attr, &p_descr_type->uuid); p_descr_type->inst_id = p_attr->inst_id; - if (p_char != NULL) - { + if (p_char != NULL) { bta_gattc_pack_attr_uuid(p_char, &p_char_id->uuid); p_char_id->inst_id = p_char->inst_id; - } - else - { + } else { APPL_TRACE_ERROR("descptr does not belong to any chracteristic"); } - } - else - /* is a characterisitc value or included service */ + } else + /* is a characterisitc value or included service */ { bta_gattc_pack_attr_uuid(p_attr, &p_char_id->uuid); - p_char_id->inst_id =p_attr->inst_id; + p_char_id->inst_id = p_attr->inst_id; } return TRUE; } @@ -1251,23 +1171,20 @@ void bta_gattc_search_service(tBTA_GATTC_CLCB *p_clcb, tBT_UUID *p_uuid) tBTA_GATTC_CACHE *p_cache = p_srcb->p_srvc_cache; tBTA_GATTC cb_data; - while (p_cache) - { - if (bta_gattc_uuid_compare(p_uuid, &p_cache->service_uuid.id.uuid, FALSE)) - { + while (p_cache) { + if (bta_gattc_uuid_compare(p_uuid, &p_cache->service_uuid.id.uuid, FALSE)) { #if (defined BTA_GATT_DEBUG && BTA_GATT_DEBUG == TRUE) APPL_TRACE_DEBUG("found service [0x%04x], inst[%d] handle [%d]", - p_cache->service_uuid.id.uuid.uu.uuid16, - p_cache->service_uuid.id.inst_id, - p_cache->s_handle); + p_cache->service_uuid.id.uuid.uu.uuid16, + p_cache->service_uuid.id.inst_id, + p_cache->s_handle); #endif - if (p_clcb->p_rcb->p_cback) - { + if (p_clcb->p_rcb->p_cback) { memset(&cb_data, 0, sizeof(tBTA_GATTC)); cb_data.srvc_res.conn_id = p_clcb->bta_conn_id; memcpy(&cb_data.srvc_res.service_uuid, &p_cache->service_uuid, - sizeof(tBTA_GATT_SRVC_ID)); + sizeof(tBTA_GATT_SRVC_ID)); (* p_clcb->p_rcb->p_cback)(BTA_GATTC_SEARCH_RES_EVT, &cb_data); } @@ -1288,12 +1205,12 @@ void bta_gattc_search_service(tBTA_GATTC_CLCB *p_clcb, tBT_UUID *p_uuid) ** *******************************************************************************/ static tBTA_GATT_STATUS bta_gattc_find_record(tBTA_GATTC_SERV *p_srcb, - tBTA_GATTC_ATTR_TYPE attr_type, - tBTA_GATT_SRVC_ID *p_service_id, - tBTA_GATT_ID *p_start_rec, - tBT_UUID * p_uuid_cond, - tBTA_GATT_ID *p_result, - void *p_param) + tBTA_GATTC_ATTR_TYPE attr_type, + tBTA_GATT_SRVC_ID *p_service_id, + tBTA_GATT_ID *p_start_rec, + tBT_UUID *p_uuid_cond, + tBTA_GATT_ID *p_result, + void *p_param) { tBTA_GATTC_CACHE *p_cache = p_srcb->p_srvc_cache; tBTA_GATT_STATUS status = BTA_GATT_ERROR; @@ -1302,90 +1219,69 @@ static tBTA_GATT_STATUS bta_gattc_find_record(tBTA_GATTC_SERV *p_srcb, BOOLEAN char_found = FALSE, descr_found = FALSE; tBTA_GATT_ID *p_descr_id = (tBTA_GATT_ID *)p_param;; - for (i = 0; p_cache && status != BTA_GATT_OK; i ++) - { - if (bta_gattc_srvcid_compare(p_service_id, &p_cache->service_uuid)) - { + for (i = 0; p_cache && status != BTA_GATT_OK; i ++) { + if (bta_gattc_srvcid_compare(p_service_id, &p_cache->service_uuid)) { #if (defined BTA_GATT_DEBUG && BTA_GATT_DEBUG == TRUE) APPL_TRACE_DEBUG("found matching service [0x%04x], inst[%d]", - p_cache->service_uuid.id.uuid.uu.uuid16, - p_cache->service_uuid.id.inst_id); + p_cache->service_uuid.id.uuid.uu.uuid16, + p_cache->service_uuid.id.inst_id); #endif p_attr = p_cache->p_attr; - for (j = 0; p_attr; j ++) - { + for (j = 0; p_attr; j ++) { #if (defined BTA_GATT_DEBUG && BTA_GATT_DEBUG == TRUE) APPL_TRACE_DEBUG("\t Attr[%d] handle[0x%04x] uuid[0x%04x] inst[%d] type[%d]", - j + 1, p_attr->attr_handle, - p_attr->p_uuid->uuid16, - p_attr->inst_id, - p_attr->attr_type); + j + 1, p_attr->attr_handle, + p_attr->p_uuid->uuid16, + p_attr->inst_id, + p_attr->attr_type); #endif bta_gattc_pack_attr_uuid(p_attr, &p_result->uuid); - if (p_start_rec != NULL && char_found == FALSE) - { + if (p_start_rec != NULL && char_found == FALSE) { /* find the starting record first */ if (bta_gattc_uuid_compare(&p_start_rec->uuid, &p_result->uuid, FALSE) && - p_start_rec->inst_id == p_attr->inst_id && - (attr_type == p_attr->attr_type || - /* find descriptor would look for characteristic first */ - (attr_type == BTA_GATTC_ATTR_TYPE_CHAR_DESCR && - p_attr->attr_type == BTA_GATTC_ATTR_TYPE_CHAR))) - { + p_start_rec->inst_id == p_attr->inst_id && + (attr_type == p_attr->attr_type || + /* find descriptor would look for characteristic first */ + (attr_type == BTA_GATTC_ATTR_TYPE_CHAR_DESCR && + p_attr->attr_type == BTA_GATTC_ATTR_TYPE_CHAR))) { char_found = TRUE; } - } - else - { + } else { /* if looking for descriptor, here is the where the descrptor to be found */ - if (attr_type == BTA_GATTC_ATTR_TYPE_CHAR_DESCR) - { + if (attr_type == BTA_GATTC_ATTR_TYPE_CHAR_DESCR) { /* next characeteristic already, return error */ - if (p_attr->attr_type != BTA_GATTC_ATTR_TYPE_CHAR_DESCR) - { + if (p_attr->attr_type != BTA_GATTC_ATTR_TYPE_CHAR_DESCR) { break; - } - else - { + } else { /* find starting descriptor */ - if (p_descr_id != NULL && !descr_found) - { + if (p_descr_id != NULL && !descr_found) { if (bta_gattc_uuid_compare(&p_descr_id->uuid, &p_result->uuid, TRUE) - && p_descr_id->inst_id == p_attr->inst_id) - { + && p_descr_id->inst_id == p_attr->inst_id) { descr_found = TRUE; } - } - else - { + } else { /* with matching descriptor */ - if (bta_gattc_uuid_compare(p_uuid_cond, &p_result->uuid, FALSE)) - { + if (bta_gattc_uuid_compare(p_uuid_cond, &p_result->uuid, FALSE)) { p_result->inst_id = p_attr->inst_id; status = BTA_GATT_OK; break; } } } - } - else - { + } else { if (bta_gattc_uuid_compare(p_uuid_cond, &p_result->uuid, FALSE) && - attr_type == p_attr->attr_type) - { + attr_type == p_attr->attr_type) { #if (defined BTA_GATT_DEBUG && BTA_GATT_DEBUG == TRUE) APPL_TRACE_DEBUG("found char handle mapping characteristic"); #endif p_result->inst_id = p_attr->inst_id; - if (p_param != NULL) - { + if (p_param != NULL) { if (attr_type == BTA_GATTC_ATTR_TYPE_CHAR || - attr_type == BTA_GATTC_ATTR_TYPE_INCL_SRVC) - { + attr_type == BTA_GATTC_ATTR_TYPE_INCL_SRVC) { *(tBTA_GATT_CHAR_PROP *)p_param = p_attr->property; } } @@ -1398,8 +1294,7 @@ static tBTA_GATT_STATUS bta_gattc_find_record(tBTA_GATTC_SERV *p_srcb, p_attr = p_attr->p_next; } #if (defined BTA_GATT_DEBUG && BTA_GATT_DEBUG == TRUE) - if (status) - { + if (status) { APPL_TRACE_ERROR("In the given service, can not find matching record"); } #endif @@ -1441,14 +1336,11 @@ tBTA_GATT_STATUS bta_gattc_query_cache(UINT16 conn_id, tBTA_GATTC_CLCB *p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id); tBTA_GATT_STATUS status = BTA_GATT_ILLEGAL_PARAMETER; - if (p_clcb != NULL ) - { - if (p_clcb->state == BTA_GATTC_CONN_ST) - { + if (p_clcb != NULL ) { + if (p_clcb->state == BTA_GATTC_CONN_ST) { if (p_clcb->p_srcb && - !p_clcb->p_srcb->p_srvc_list && /* no active discovery */ - p_clcb->p_srcb->p_srvc_cache) - { + !p_clcb->p_srcb->p_srvc_list && /* no active discovery */ + p_clcb->p_srcb->p_srvc_cache) { status = bta_gattc_find_record(p_clcb->p_srcb, query_type, p_srvc_id, @@ -1456,22 +1348,16 @@ tBTA_GATT_STATUS bta_gattc_query_cache(UINT16 conn_id, p_uuid_cond, p_output, p_param); - } - else - { + } else { status = BTA_GATT_ERROR; APPL_TRACE_ERROR("No server cache available"); } - } - else - { + } else { APPL_TRACE_ERROR("server cache not available, CLCB state = %d", p_clcb->state); status = (p_clcb->state == BTA_GATTC_DISCOVER_ST) ? BTA_GATT_BUSY : BTA_GATT_ERROR; } - } - else - { + } else { APPL_TRACE_ERROR("Unknown conn ID: %d", conn_id); } @@ -1494,43 +1380,38 @@ void bta_gattc_rebuild_cache(tBTA_GATTC_SERV *p_srvc_cb, UINT16 num_attr, { /* first attribute loading, initialize buffer */ APPL_TRACE_ERROR("bta_gattc_rebuild_cache"); - if (attr_index == 0) - { - while (!GKI_queue_is_empty(&p_srvc_cb->cache_buffer)) + if (attr_index == 0) { + while (!GKI_queue_is_empty(&p_srvc_cb->cache_buffer)) { GKI_freebuf (GKI_dequeue (&p_srvc_cb->cache_buffer)); - - if (bta_gattc_alloc_cache_buf(p_srvc_cb) == NULL) - { - APPL_TRACE_ERROR("allocate cache buffer failed, no resources"); } - else - { + + if (bta_gattc_alloc_cache_buf(p_srvc_cb) == NULL) { + APPL_TRACE_ERROR("allocate cache buffer failed, no resources"); + } else { p_srvc_cb->p_cur_srvc = p_srvc_cb->p_srvc_cache = NULL; } } - while (num_attr > 0 && p_attr != NULL) - { - switch (p_attr->attr_type) - { - case BTA_GATTC_ATTR_TYPE_SRVC: - bta_gattc_add_srvc_to_cache(p_srvc_cb, - p_attr->s_handle, - p_attr->e_handle, - &p_attr->uuid, - p_attr->is_primary, - p_attr->id); - break; + while (num_attr > 0 && p_attr != NULL) { + switch (p_attr->attr_type) { + case BTA_GATTC_ATTR_TYPE_SRVC: + bta_gattc_add_srvc_to_cache(p_srvc_cb, + p_attr->s_handle, + p_attr->e_handle, + &p_attr->uuid, + p_attr->is_primary, + p_attr->id); + break; - case BTA_GATTC_ATTR_TYPE_CHAR: - case BTA_GATTC_ATTR_TYPE_CHAR_DESCR: - case BTA_GATTC_ATTR_TYPE_INCL_SRVC: - bta_gattc_add_attr_to_cache(p_srvc_cb, - p_attr->s_handle, - &p_attr->uuid, - p_attr->prop, - p_attr->attr_type); - break; + case BTA_GATTC_ATTR_TYPE_CHAR: + case BTA_GATTC_ATTR_TYPE_CHAR_DESCR: + case BTA_GATTC_ATTR_TYPE_INCL_SRVC: + bta_gattc_add_attr_to_cache(p_srvc_cb, + p_attr->s_handle, + &p_attr->uuid, + p_attr->prop, + p_attr->attr_type); + break; } p_attr ++; num_attr --; @@ -1577,10 +1458,8 @@ BOOLEAN bta_gattc_cache_save(tBTA_GATTC_SERV *p_srvc_cb, UINT16 conn_id) tBTA_GATTC_CACHE_ATTR *p_attr; tBT_UUID uuid; - while (p_cur_srvc && i < BTA_GATTC_NV_LOAD_MAX) - { - if (offset ++ >= p_srvc_cb->attr_index) - { + while (p_cur_srvc && i < BTA_GATTC_NV_LOAD_MAX) { + if (offset ++ >= p_srvc_cb->attr_index) { bta_gattc_fill_nv_attr(&nv_attr[i++], BTA_GATTC_ATTR_TYPE_SRVC, p_cur_srvc->s_handle, @@ -1593,16 +1472,11 @@ BOOLEAN bta_gattc_cache_save(tBTA_GATTC_SERV *p_srvc_cb, UINT16 conn_id) p_attr = p_cur_srvc->p_attr; - for (; p_attr && i < BTA_GATTC_NV_LOAD_MAX ; offset ++, p_attr = p_attr->p_next) - { - if (offset >= p_srvc_cb->attr_index) - { - if ((uuid.len = p_attr->uuid_len) == LEN_UUID_16) - { + for (; p_attr && i < BTA_GATTC_NV_LOAD_MAX ; offset ++, p_attr = p_attr->p_next) { + if (offset >= p_srvc_cb->attr_index) { + if ((uuid.len = p_attr->uuid_len) == LEN_UUID_16) { uuid.uu.uuid16 = p_attr->p_uuid->uuid16; - } - else - { + } else { memcpy(uuid.uu.uuid128, p_attr->p_uuid->uuid128, LEN_UUID_128); } @@ -1619,17 +1493,14 @@ BOOLEAN bta_gattc_cache_save(tBTA_GATTC_SERV *p_srvc_cb, UINT16 conn_id) p_cur_srvc = p_cur_srvc->p_next; } - if (i > 0) - { + if (i > 0) { bta_gattc_co_cache_save(p_srvc_cb->server_bda, BTA_GATTC_CI_CACHE_SAVE_EVT, i, nv_attr, p_srvc_cb->attr_index, conn_id); p_srvc_cb->attr_index += i; return TRUE; - } - else - { + } else { return FALSE; } } diff --git a/components/bt/bluedroid/bta/gatt/bta_gattc_ci.c b/components/bt/bluedroid/bta/gatt/bta_gattc_ci.c old mode 100755 new mode 100644 index f6d9347a70..295c251bb4 --- a/components/bt/bluedroid/bta/gatt/bta_gattc_ci.c +++ b/components/bt/bluedroid/bta/gatt/bta_gattc_ci.c @@ -54,8 +54,7 @@ void bta_gattc_ci_cache_open(BD_ADDR server_bda, UINT16 evt, tBTA_GATT_STATUS st tBTA_GATTC_CI_EVT *p_evt; UNUSED(server_bda); - if ((p_evt = (tBTA_GATTC_CI_EVT *) GKI_getbuf(sizeof(tBTA_GATTC_CI_EVT))) != NULL) - { + if ((p_evt = (tBTA_GATTC_CI_EVT *) GKI_getbuf(sizeof(tBTA_GATTC_CI_EVT))) != NULL) { p_evt->hdr.event = evt; p_evt->hdr.layer_specific = conn_id; @@ -87,8 +86,7 @@ void bta_gattc_ci_cache_load(BD_ADDR server_bda, UINT16 evt, UINT16 num_attr, tBTA_GATTC_CI_LOAD *p_evt; UNUSED(server_bda); - if ((p_evt = (tBTA_GATTC_CI_LOAD *) GKI_getbuf(sizeof(tBTA_GATTC_CI_LOAD))) != NULL) - { + if ((p_evt = (tBTA_GATTC_CI_LOAD *) GKI_getbuf(sizeof(tBTA_GATTC_CI_LOAD))) != NULL) { memset(p_evt, 0, sizeof(tBTA_GATTC_CI_LOAD)); p_evt->hdr.event = evt; @@ -97,8 +95,7 @@ void bta_gattc_ci_cache_load(BD_ADDR server_bda, UINT16 evt, UINT16 num_attr, p_evt->status = status; p_evt->num_attr = (num_attr > BTA_GATTC_NV_LOAD_MAX) ? BTA_GATTC_NV_LOAD_MAX : num_attr; - if (p_evt->num_attr > 0 && p_attr != NULL) - { + if (p_evt->num_attr > 0 && p_attr != NULL) { memcpy(p_evt->attr, p_attr, p_evt->num_attr * sizeof(tBTA_GATTC_NV_ATTR)); } @@ -128,8 +125,7 @@ void bta_gattc_ci_cache_save(BD_ADDR server_bda, UINT16 evt, tBTA_GATT_STATUS st tBTA_GATTC_CI_EVT *p_evt; UNUSED(server_bda); - if ((p_evt = (tBTA_GATTC_CI_EVT *) GKI_getbuf(sizeof(tBTA_GATTC_CI_EVT))) != NULL) - { + if ((p_evt = (tBTA_GATTC_CI_EVT *) GKI_getbuf(sizeof(tBTA_GATTC_CI_EVT))) != NULL) { p_evt->hdr.event = evt; p_evt->hdr.layer_specific = conn_id; diff --git a/components/bt/bluedroid/bta/gatt/bta_gattc_main.c b/components/bt/bluedroid/bta/gatt/bta_gattc_main.c old mode 100755 new mode 100644 index bb45445a4f..f13e3f0a1b --- a/components/bt/bluedroid/bta/gatt/bta_gattc_main.c +++ b/components/bt/bluedroid/bta/gatt/bta_gattc_main.c @@ -38,8 +38,7 @@ /* state machine action enumeration list */ -enum -{ +enum { BTA_GATTC_OPEN, BTA_GATTC_OPEN_FAIL, BTA_GATTC_OPEN_ERROR, @@ -77,8 +76,7 @@ enum typedef void (*tBTA_GATTC_ACTION)(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data); /* action function list */ -const tBTA_GATTC_ACTION bta_gattc_action[] = -{ +const tBTA_GATTC_ACTION bta_gattc_action[] = { bta_gattc_open, bta_gattc_open_fail, bta_gattc_open_error, @@ -118,149 +116,144 @@ const tBTA_GATTC_ACTION bta_gattc_action[] = #define BTA_GATTC_NUM_COLS 2 /* number of columns in state tables */ /* state table for idle state */ -static const UINT8 bta_gattc_st_idle[][BTA_GATTC_NUM_COLS] = -{ -/* Event Action 1 Next state */ -/* BTA_GATTC_API_OPEN_EVT */ {BTA_GATTC_OPEN, BTA_GATTC_W4_CONN_ST}, -/* BTA_GATTC_INT_OPEN_FAIL_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST}, -/* BTA_GATTC_API_CANCEL_OPEN_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST}, -/* BTA_GATTC_INT_CANCEL_OPEN_OK_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST}, +static const UINT8 bta_gattc_st_idle[][BTA_GATTC_NUM_COLS] = { + /* Event Action 1 Next state */ + /* BTA_GATTC_API_OPEN_EVT */ {BTA_GATTC_OPEN, BTA_GATTC_W4_CONN_ST}, + /* BTA_GATTC_INT_OPEN_FAIL_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST}, + /* BTA_GATTC_API_CANCEL_OPEN_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST}, + /* BTA_GATTC_INT_CANCEL_OPEN_OK_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST}, -/* BTA_GATTC_API_READ_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_IDLE_ST}, -/* BTA_GATTC_API_WRITE_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_IDLE_ST}, -/* BTA_GATTC_API_EXEC_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_IDLE_ST}, -/* BTA_GATTC_API_CFG_MTU_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST}, + /* BTA_GATTC_API_READ_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_IDLE_ST}, + /* BTA_GATTC_API_WRITE_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_IDLE_ST}, + /* BTA_GATTC_API_EXEC_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_IDLE_ST}, + /* BTA_GATTC_API_CFG_MTU_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST}, -/* BTA_GATTC_API_CLOSE_EVT */ {BTA_GATTC_CLOSE_FAIL, BTA_GATTC_IDLE_ST}, + /* BTA_GATTC_API_CLOSE_EVT */ {BTA_GATTC_CLOSE_FAIL, BTA_GATTC_IDLE_ST}, -/* BTA_GATTC_API_SEARCH_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_IDLE_ST}, -/* BTA_GATTC_API_CONFIRM_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_IDLE_ST}, -/* BTA_GATTC_API_READ_MULTI_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_IDLE_ST}, -/* BTA_GATTC_API_REFRESH_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST}, + /* BTA_GATTC_API_SEARCH_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_IDLE_ST}, + /* BTA_GATTC_API_CONFIRM_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_IDLE_ST}, + /* BTA_GATTC_API_READ_MULTI_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_IDLE_ST}, + /* BTA_GATTC_API_REFRESH_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST}, -/* BTA_GATTC_INT_CONN_EVT */ {BTA_GATTC_CONN, BTA_GATTC_CONN_ST}, -/* BTA_GATTC_INT_DISCOVER_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST}, -/* BTA_GATTC_DISCOVER_CMPL_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST}, -/* BTA_GATTC_OP_CMPL_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST}, -/* BTA_GATTC_INT_DISCONN_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST}, + /* BTA_GATTC_INT_CONN_EVT */ {BTA_GATTC_CONN, BTA_GATTC_CONN_ST}, + /* BTA_GATTC_INT_DISCOVER_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST}, + /* BTA_GATTC_DISCOVER_CMPL_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST}, + /* BTA_GATTC_OP_CMPL_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST}, + /* BTA_GATTC_INT_DISCONN_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST}, -/* ===> for cache loading, saving */ -/* BTA_GATTC_START_CACHE_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST}, -/* BTA_GATTC_CI_CACHE_OPEN_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST}, -/* BTA_GATTC_CI_CACHE_LOAD_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST}, -/* BTA_GATTC_CI_CACHE_SAVE_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST} + /* ===> for cache loading, saving */ + /* BTA_GATTC_START_CACHE_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST}, + /* BTA_GATTC_CI_CACHE_OPEN_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST}, + /* BTA_GATTC_CI_CACHE_LOAD_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST}, + /* BTA_GATTC_CI_CACHE_SAVE_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST} }; /* state table for wait for open state */ -static const UINT8 bta_gattc_st_w4_conn[][BTA_GATTC_NUM_COLS] = -{ -/* Event Action 1 Next state */ -/* BTA_GATTC_API_OPEN_EVT */ {BTA_GATTC_OPEN, BTA_GATTC_W4_CONN_ST}, -/* BTA_GATTC_INT_OPEN_FAIL_EVT */ {BTA_GATTC_OPEN_FAIL, BTA_GATTC_IDLE_ST}, -/* BTA_GATTC_API_CANCEL_OPEN_EVT */ {BTA_GATTC_CANCEL_OPEN, BTA_GATTC_W4_CONN_ST}, -/* BTA_GATTC_INT_CANCEL_OPEN_OK_EVT */ {BTA_GATTC_CANCEL_OPEN_OK, BTA_GATTC_IDLE_ST}, +static const UINT8 bta_gattc_st_w4_conn[][BTA_GATTC_NUM_COLS] = { + /* Event Action 1 Next state */ + /* BTA_GATTC_API_OPEN_EVT */ {BTA_GATTC_OPEN, BTA_GATTC_W4_CONN_ST}, + /* BTA_GATTC_INT_OPEN_FAIL_EVT */ {BTA_GATTC_OPEN_FAIL, BTA_GATTC_IDLE_ST}, + /* BTA_GATTC_API_CANCEL_OPEN_EVT */ {BTA_GATTC_CANCEL_OPEN, BTA_GATTC_W4_CONN_ST}, + /* BTA_GATTC_INT_CANCEL_OPEN_OK_EVT */ {BTA_GATTC_CANCEL_OPEN_OK, BTA_GATTC_IDLE_ST}, -/* BTA_GATTC_API_READ_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_W4_CONN_ST}, -/* BTA_GATTC_API_WRITE_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_W4_CONN_ST}, -/* BTA_GATTC_API_EXEC_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_W4_CONN_ST}, -/* BTA_GATTC_API_CFG_MTU_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_W4_CONN_ST}, + /* BTA_GATTC_API_READ_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_W4_CONN_ST}, + /* BTA_GATTC_API_WRITE_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_W4_CONN_ST}, + /* BTA_GATTC_API_EXEC_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_W4_CONN_ST}, + /* BTA_GATTC_API_CFG_MTU_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_W4_CONN_ST}, -/* BTA_GATTC_API_CLOSE_EVT */ {BTA_GATTC_CANCEL_OPEN, BTA_GATTC_W4_CONN_ST}, + /* BTA_GATTC_API_CLOSE_EVT */ {BTA_GATTC_CANCEL_OPEN, BTA_GATTC_W4_CONN_ST}, -/* BTA_GATTC_API_SEARCH_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_W4_CONN_ST}, -/* BTA_GATTC_API_CONFIRM_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_W4_CONN_ST}, -/* BTA_GATTC_API_READ_MULTI_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_W4_CONN_ST}, -/* BTA_GATTC_API_REFRESH_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_W4_CONN_ST}, + /* BTA_GATTC_API_SEARCH_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_W4_CONN_ST}, + /* BTA_GATTC_API_CONFIRM_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_W4_CONN_ST}, + /* BTA_GATTC_API_READ_MULTI_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_W4_CONN_ST}, + /* BTA_GATTC_API_REFRESH_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_W4_CONN_ST}, -/* BTA_GATTC_INT_CONN_EVT */ {BTA_GATTC_CONN, BTA_GATTC_CONN_ST}, -/* BTA_GATTC_INT_DISCOVER_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_W4_CONN_ST}, -/* BTA_GATTC_DISCOVER_CMPL_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_W4_CONN_ST}, -/* BTA_GATTC_OP_CMPL_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_W4_CONN_ST}, -/* BTA_GATTC_INT_DISCONN_EVT */ {BTA_GATTC_OPEN_FAIL, BTA_GATTC_IDLE_ST}, + /* BTA_GATTC_INT_CONN_EVT */ {BTA_GATTC_CONN, BTA_GATTC_CONN_ST}, + /* BTA_GATTC_INT_DISCOVER_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_W4_CONN_ST}, + /* BTA_GATTC_DISCOVER_CMPL_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_W4_CONN_ST}, + /* BTA_GATTC_OP_CMPL_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_W4_CONN_ST}, + /* BTA_GATTC_INT_DISCONN_EVT */ {BTA_GATTC_OPEN_FAIL, BTA_GATTC_IDLE_ST}, -/* ===> for cache loading, saving */ -/* BTA_GATTC_START_CACHE_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_W4_CONN_ST}, -/* BTA_GATTC_CI_CACHE_OPEN_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_W4_CONN_ST}, -/* BTA_GATTC_CI_CACHE_LOAD_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_W4_CONN_ST}, -/* BTA_GATTC_CI_CACHE_SAVE_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_W4_CONN_ST} + /* ===> for cache loading, saving */ + /* BTA_GATTC_START_CACHE_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_W4_CONN_ST}, + /* BTA_GATTC_CI_CACHE_OPEN_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_W4_CONN_ST}, + /* BTA_GATTC_CI_CACHE_LOAD_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_W4_CONN_ST}, + /* BTA_GATTC_CI_CACHE_SAVE_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_W4_CONN_ST} }; /* state table for open state */ -static const UINT8 bta_gattc_st_connected[][BTA_GATTC_NUM_COLS] = -{ -/* Event Action 1 Next state */ -/* BTA_GATTC_API_OPEN_EVT */ {BTA_GATTC_OPEN, BTA_GATTC_CONN_ST}, -/* BTA_GATTC_INT_OPEN_FAIL_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_CONN_ST}, -/* BTA_GATTC_API_CANCEL_OPEN_EVT */ {BTA_GATTC_CANCEL_OPEN_ERROR, BTA_GATTC_CONN_ST}, -/* BTA_GATTC_INT_CANCEL_OPEN_OK_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_CONN_ST}, +static const UINT8 bta_gattc_st_connected[][BTA_GATTC_NUM_COLS] = { + /* Event Action 1 Next state */ + /* BTA_GATTC_API_OPEN_EVT */ {BTA_GATTC_OPEN, BTA_GATTC_CONN_ST}, + /* BTA_GATTC_INT_OPEN_FAIL_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_CONN_ST}, + /* BTA_GATTC_API_CANCEL_OPEN_EVT */ {BTA_GATTC_CANCEL_OPEN_ERROR, BTA_GATTC_CONN_ST}, + /* BTA_GATTC_INT_CANCEL_OPEN_OK_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_CONN_ST}, -/* BTA_GATTC_API_READ_EVT */ {BTA_GATTC_READ, BTA_GATTC_CONN_ST}, -/* BTA_GATTC_API_WRITE_EVT */ {BTA_GATTC_WRITE, BTA_GATTC_CONN_ST}, -/* BTA_GATTC_API_EXEC_EVT */ {BTA_GATTC_EXEC, BTA_GATTC_CONN_ST}, -/* BTA_GATTC_API_CFG_MTU_EVT */ {BTA_GATTC_CFG_MTU, BTA_GATTC_CONN_ST}, + /* BTA_GATTC_API_READ_EVT */ {BTA_GATTC_READ, BTA_GATTC_CONN_ST}, + /* BTA_GATTC_API_WRITE_EVT */ {BTA_GATTC_WRITE, BTA_GATTC_CONN_ST}, + /* BTA_GATTC_API_EXEC_EVT */ {BTA_GATTC_EXEC, BTA_GATTC_CONN_ST}, + /* BTA_GATTC_API_CFG_MTU_EVT */ {BTA_GATTC_CFG_MTU, BTA_GATTC_CONN_ST}, -/* BTA_GATTC_API_CLOSE_EVT */ {BTA_GATTC_CLOSE, BTA_GATTC_IDLE_ST}, + /* BTA_GATTC_API_CLOSE_EVT */ {BTA_GATTC_CLOSE, BTA_GATTC_IDLE_ST}, -/* BTA_GATTC_API_SEARCH_EVT */ {BTA_GATTC_SEARCH, BTA_GATTC_CONN_ST}, -/* BTA_GATTC_API_CONFIRM_EVT */ {BTA_GATTC_CONFIRM, BTA_GATTC_CONN_ST}, -/* BTA_GATTC_API_READ_MULTI_EVT */ {BTA_GATTC_READ_MULTI, BTA_GATTC_CONN_ST}, -/* BTA_GATTC_API_REFRESH_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_CONN_ST}, + /* BTA_GATTC_API_SEARCH_EVT */ {BTA_GATTC_SEARCH, BTA_GATTC_CONN_ST}, + /* BTA_GATTC_API_CONFIRM_EVT */ {BTA_GATTC_CONFIRM, BTA_GATTC_CONN_ST}, + /* BTA_GATTC_API_READ_MULTI_EVT */ {BTA_GATTC_READ_MULTI, BTA_GATTC_CONN_ST}, + /* BTA_GATTC_API_REFRESH_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_CONN_ST}, -/* BTA_GATTC_INT_CONN_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_CONN_ST}, -/* BTA_GATTC_INT_DISCOVER_EVT */ {BTA_GATTC_START_DISCOVER, BTA_GATTC_DISCOVER_ST}, -/* BTA_GATTC_DISCOVER_CMPL_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_CONN_ST}, -/* BTA_GATTC_OP_CMPL_EVT */ {BTA_GATTC_OP_CMPL, BTA_GATTC_CONN_ST}, + /* BTA_GATTC_INT_CONN_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_CONN_ST}, + /* BTA_GATTC_INT_DISCOVER_EVT */ {BTA_GATTC_START_DISCOVER, BTA_GATTC_DISCOVER_ST}, + /* BTA_GATTC_DISCOVER_CMPL_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_CONN_ST}, + /* BTA_GATTC_OP_CMPL_EVT */ {BTA_GATTC_OP_CMPL, BTA_GATTC_CONN_ST}, -/* BTA_GATTC_INT_DISCONN_EVT */ {BTA_GATTC_CLOSE, BTA_GATTC_IDLE_ST}, + /* BTA_GATTC_INT_DISCONN_EVT */ {BTA_GATTC_CLOSE, BTA_GATTC_IDLE_ST}, -/* ===> for cache loading, saving */ -/* BTA_GATTC_START_CACHE_EVT */ {BTA_GATTC_CACHE_OPEN, BTA_GATTC_DISCOVER_ST}, -/* BTA_GATTC_CI_CACHE_OPEN_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_CONN_ST}, -/* BTA_GATTC_CI_CACHE_LOAD_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_CONN_ST}, -/* BTA_GATTC_CI_CACHE_SAVE_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_CONN_ST} + /* ===> for cache loading, saving */ + /* BTA_GATTC_START_CACHE_EVT */ {BTA_GATTC_CACHE_OPEN, BTA_GATTC_DISCOVER_ST}, + /* BTA_GATTC_CI_CACHE_OPEN_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_CONN_ST}, + /* BTA_GATTC_CI_CACHE_LOAD_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_CONN_ST}, + /* BTA_GATTC_CI_CACHE_SAVE_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_CONN_ST} }; /* state table for discover state */ -static const UINT8 bta_gattc_st_discover[][BTA_GATTC_NUM_COLS] = -{ -/* Event Action 1 Next state */ -/* BTA_GATTC_API_OPEN_EVT */ {BTA_GATTC_OPEN, BTA_GATTC_DISCOVER_ST}, -/* BTA_GATTC_INT_OPEN_FAIL_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_DISCOVER_ST}, -/* BTA_GATTC_API_CANCEL_OPEN_EVT */ {BTA_GATTC_CANCEL_OPEN_ERROR, BTA_GATTC_DISCOVER_ST}, -/* BTA_GATTC_INT_CANCEL_OPEN_OK_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_DISCOVER_ST}, +static const UINT8 bta_gattc_st_discover[][BTA_GATTC_NUM_COLS] = { + /* Event Action 1 Next state */ + /* BTA_GATTC_API_OPEN_EVT */ {BTA_GATTC_OPEN, BTA_GATTC_DISCOVER_ST}, + /* BTA_GATTC_INT_OPEN_FAIL_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_DISCOVER_ST}, + /* BTA_GATTC_API_CANCEL_OPEN_EVT */ {BTA_GATTC_CANCEL_OPEN_ERROR, BTA_GATTC_DISCOVER_ST}, + /* BTA_GATTC_INT_CANCEL_OPEN_OK_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_DISCOVER_ST}, -/* BTA_GATTC_API_READ_EVT */ {BTA_GATTC_Q_CMD, BTA_GATTC_DISCOVER_ST}, -/* BTA_GATTC_API_WRITE_EVT */ {BTA_GATTC_Q_CMD, BTA_GATTC_DISCOVER_ST}, -/* BTA_GATTC_API_EXEC_EVT */ {BTA_GATTC_Q_CMD, BTA_GATTC_DISCOVER_ST}, -/* BTA_GATTC_API_CFG_MTU_EVT */ {BTA_GATTC_Q_CMD, BTA_GATTC_DISCOVER_ST}, + /* BTA_GATTC_API_READ_EVT */ {BTA_GATTC_Q_CMD, BTA_GATTC_DISCOVER_ST}, + /* BTA_GATTC_API_WRITE_EVT */ {BTA_GATTC_Q_CMD, BTA_GATTC_DISCOVER_ST}, + /* BTA_GATTC_API_EXEC_EVT */ {BTA_GATTC_Q_CMD, BTA_GATTC_DISCOVER_ST}, + /* BTA_GATTC_API_CFG_MTU_EVT */ {BTA_GATTC_Q_CMD, BTA_GATTC_DISCOVER_ST}, -/* BTA_GATTC_API_CLOSE_EVT */ {BTA_GATTC_DISC_CLOSE, BTA_GATTC_DISCOVER_ST}, + /* BTA_GATTC_API_CLOSE_EVT */ {BTA_GATTC_DISC_CLOSE, BTA_GATTC_DISCOVER_ST}, -/* BTA_GATTC_API_SEARCH_EVT */ {BTA_GATTC_Q_CMD, BTA_GATTC_DISCOVER_ST}, -/* BTA_GATTC_API_CONFIRM_EVT */ {BTA_GATTC_CONFIRM, BTA_GATTC_DISCOVER_ST}, -/* BTA_GATTC_API_READ_MULTI_EVT */ {BTA_GATTC_Q_CMD, BTA_GATTC_DISCOVER_ST}, -/* BTA_GATTC_API_REFRESH_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_DISCOVER_ST}, + /* BTA_GATTC_API_SEARCH_EVT */ {BTA_GATTC_Q_CMD, BTA_GATTC_DISCOVER_ST}, + /* BTA_GATTC_API_CONFIRM_EVT */ {BTA_GATTC_CONFIRM, BTA_GATTC_DISCOVER_ST}, + /* BTA_GATTC_API_READ_MULTI_EVT */ {BTA_GATTC_Q_CMD, BTA_GATTC_DISCOVER_ST}, + /* BTA_GATTC_API_REFRESH_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_DISCOVER_ST}, -/* BTA_GATTC_INT_CONN_EVT */ {BTA_GATTC_CONN, BTA_GATTC_DISCOVER_ST}, -/* BTA_GATTC_INT_DISCOVER_EVT */ {BTA_GATTC_RESTART_DISCOVER, BTA_GATTC_DISCOVER_ST}, -/* BTA_GATTC_DISCOVER_CMPL_EVT */ {BTA_GATTC_DISC_CMPL, BTA_GATTC_CONN_ST}, -/* BTA_GATTC_OP_CMPL_EVT */ {BTA_GATTC_IGNORE_OP_CMPL, BTA_GATTC_DISCOVER_ST}, -/* BTA_GATTC_INT_DISCONN_EVT */ {BTA_GATTC_CLOSE, BTA_GATTC_IDLE_ST}, + /* BTA_GATTC_INT_CONN_EVT */ {BTA_GATTC_CONN, BTA_GATTC_DISCOVER_ST}, + /* BTA_GATTC_INT_DISCOVER_EVT */ {BTA_GATTC_RESTART_DISCOVER, BTA_GATTC_DISCOVER_ST}, + /* BTA_GATTC_DISCOVER_CMPL_EVT */ {BTA_GATTC_DISC_CMPL, BTA_GATTC_CONN_ST}, + /* BTA_GATTC_OP_CMPL_EVT */ {BTA_GATTC_IGNORE_OP_CMPL, BTA_GATTC_DISCOVER_ST}, + /* BTA_GATTC_INT_DISCONN_EVT */ {BTA_GATTC_CLOSE, BTA_GATTC_IDLE_ST}, -/* ===> for cache loading, saving */ -/* BTA_GATTC_START_CACHE_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_DISCOVER_ST}, -/* BTA_GATTC_CI_CACHE_OPEN_EVT */ {BTA_GATTC_CI_OPEN, BTA_GATTC_DISCOVER_ST}, -/* BTA_GATTC_CI_CACHE_LOAD_EVT */ {BTA_GATTC_CI_LOAD, BTA_GATTC_DISCOVER_ST}, -/* BTA_GATTC_CI_CACHE_SAVE_EVT */ {BTA_GATTC_CI_SAVE, BTA_GATTC_DISCOVER_ST} + /* ===> for cache loading, saving */ + /* BTA_GATTC_START_CACHE_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_DISCOVER_ST}, + /* BTA_GATTC_CI_CACHE_OPEN_EVT */ {BTA_GATTC_CI_OPEN, BTA_GATTC_DISCOVER_ST}, + /* BTA_GATTC_CI_CACHE_LOAD_EVT */ {BTA_GATTC_CI_LOAD, BTA_GATTC_DISCOVER_ST}, + /* BTA_GATTC_CI_CACHE_SAVE_EVT */ {BTA_GATTC_CI_SAVE, BTA_GATTC_DISCOVER_ST} }; /* type for state table */ typedef const UINT8 (*tBTA_GATTC_ST_TBL)[BTA_GATTC_NUM_COLS]; /* state table */ -const tBTA_GATTC_ST_TBL bta_gattc_st_tbl[] = -{ +const tBTA_GATTC_ST_TBL bta_gattc_st_tbl[] = { bta_gattc_st_idle, bta_gattc_st_w4_conn, bta_gattc_st_connected, @@ -302,9 +295,9 @@ BOOLEAN bta_gattc_sm_execute(tBTA_GATTC_CLCB *p_clcb, UINT16 event, tBTA_GATTC_D tBTA_GATTC_STATE in_state = p_clcb->state; UINT16 in_event = event; APPL_TRACE_DEBUG("bta_gattc_sm_execute: State 0x%02x [%s], Event 0x%x[%s]", in_state, - gattc_state_code(in_state), - in_event, - gattc_evt_code(in_event)); + gattc_state_code(in_state), + in_event, + gattc_evt_code(in_event)); #endif @@ -317,10 +310,8 @@ BOOLEAN bta_gattc_sm_execute(tBTA_GATTC_CLCB *p_clcb, UINT16 event, tBTA_GATTC_D p_clcb->state = state_table[event][BTA_GATTC_NEXT_STATE]; /* execute action functions */ - for (i = 0; i < BTA_GATTC_ACTIONS; i++) - { - if ((action = state_table[event][i]) != BTA_GATTC_IGNORE) - { + for (i = 0; i < BTA_GATTC_ACTIONS; i++) { + if ((action = state_table[event][i]) != BTA_GATTC_IGNORE) { (*bta_gattc_action[action])(p_clcb, p_data); if (p_clcb->p_q_cmd == p_data) { /* buffer is queued, don't free in the bta dispatcher. @@ -328,20 +319,17 @@ BOOLEAN bta_gattc_sm_execute(tBTA_GATTC_CLCB *p_clcb, UINT16 event, tBTA_GATTC_D */ rt = FALSE; } - } - else - { + } else { break; } } #if BTA_GATT_DEBUG == TRUE - if (in_state != p_clcb->state) - { + if (in_state != p_clcb->state) { APPL_TRACE_DEBUG("GATTC State Change: [%s] -> [%s] after Event [%s]", - gattc_state_code(in_state), - gattc_state_code(p_clcb->state), - gattc_evt_code(in_event)); + gattc_state_code(in_state), + gattc_state_code(p_clcb->state), + gattc_evt_code(in_event)); } #endif return rt; @@ -366,68 +354,65 @@ BOOLEAN bta_gattc_hdl_event(BT_HDR *p_msg) #if BTA_GATT_DEBUG == TRUE APPL_TRACE_DEBUG("bta_gattc_hdl_event: Event [%s]\n", gattc_evt_code(p_msg->event)); #endif - switch (p_msg->event) - { - case BTA_GATTC_API_DISABLE_EVT: - bta_gattc_disable(p_cb); - break; + switch (p_msg->event) { + case BTA_GATTC_API_DISABLE_EVT: + bta_gattc_disable(p_cb); + break; - case BTA_GATTC_API_REG_EVT: - bta_gattc_register(p_cb, (tBTA_GATTC_DATA *) p_msg); - break; + case BTA_GATTC_API_REG_EVT: + bta_gattc_register(p_cb, (tBTA_GATTC_DATA *) p_msg); + break; - case BTA_GATTC_INT_START_IF_EVT: - bta_gattc_start_if(p_cb, (tBTA_GATTC_DATA *) p_msg); - break; + case BTA_GATTC_INT_START_IF_EVT: + bta_gattc_start_if(p_cb, (tBTA_GATTC_DATA *) p_msg); + break; - case BTA_GATTC_API_DEREG_EVT: - p_clreg = bta_gattc_cl_get_regcb(((tBTA_GATTC_DATA *)p_msg)->api_dereg.client_if); - bta_gattc_deregister(p_cb, p_clreg); - break; + case BTA_GATTC_API_DEREG_EVT: + p_clreg = bta_gattc_cl_get_regcb(((tBTA_GATTC_DATA *)p_msg)->api_dereg.client_if); + bta_gattc_deregister(p_cb, p_clreg); + break; - case BTA_GATTC_API_OPEN_EVT: - bta_gattc_process_api_open(p_cb, (tBTA_GATTC_DATA *) p_msg); - break; + case BTA_GATTC_API_OPEN_EVT: + bta_gattc_process_api_open(p_cb, (tBTA_GATTC_DATA *) p_msg); + break; - case BTA_GATTC_API_CANCEL_OPEN_EVT: - bta_gattc_process_api_open_cancel(p_cb, (tBTA_GATTC_DATA *) p_msg); - break; + case BTA_GATTC_API_CANCEL_OPEN_EVT: + bta_gattc_process_api_open_cancel(p_cb, (tBTA_GATTC_DATA *) p_msg); + break; - case BTA_GATTC_API_REFRESH_EVT: - bta_gattc_process_api_refresh(p_cb, (tBTA_GATTC_DATA *) p_msg); - break; + case BTA_GATTC_API_REFRESH_EVT: + bta_gattc_process_api_refresh(p_cb, (tBTA_GATTC_DATA *) p_msg); + break; #if BLE_INCLUDED == TRUE - case BTA_GATTC_API_LISTEN_EVT: - bta_gattc_listen(p_cb, (tBTA_GATTC_DATA *) p_msg); - break; - case BTA_GATTC_API_BROADCAST_EVT: - bta_gattc_broadcast(p_cb, (tBTA_GATTC_DATA *) p_msg); - break; + case BTA_GATTC_API_LISTEN_EVT: + bta_gattc_listen(p_cb, (tBTA_GATTC_DATA *) p_msg); + break; + case BTA_GATTC_API_BROADCAST_EVT: + bta_gattc_broadcast(p_cb, (tBTA_GATTC_DATA *) p_msg); + break; #endif - case BTA_GATTC_ENC_CMPL_EVT: - bta_gattc_process_enc_cmpl(p_cb, (tBTA_GATTC_DATA *) p_msg); - break; + case BTA_GATTC_ENC_CMPL_EVT: + bta_gattc_process_enc_cmpl(p_cb, (tBTA_GATTC_DATA *) p_msg); + break; - default: - if (p_msg->event == BTA_GATTC_INT_CONN_EVT) - p_clcb = bta_gattc_find_int_conn_clcb((tBTA_GATTC_DATA *) p_msg); - else if (p_msg->event == BTA_GATTC_INT_DISCONN_EVT) - p_clcb = bta_gattc_find_int_disconn_clcb((tBTA_GATTC_DATA *) p_msg); - else - p_clcb = bta_gattc_find_clcb_by_conn_id(p_msg->layer_specific); + default: + if (p_msg->event == BTA_GATTC_INT_CONN_EVT) { + p_clcb = bta_gattc_find_int_conn_clcb((tBTA_GATTC_DATA *) p_msg); + } else if (p_msg->event == BTA_GATTC_INT_DISCONN_EVT) { + p_clcb = bta_gattc_find_int_disconn_clcb((tBTA_GATTC_DATA *) p_msg); + } else { + p_clcb = bta_gattc_find_clcb_by_conn_id(p_msg->layer_specific); + } - if (p_clcb != NULL) - { - rt = bta_gattc_sm_execute(p_clcb, p_msg->event, (tBTA_GATTC_DATA *) p_msg); - } - else - { - APPL_TRACE_DEBUG("Ignore unknown conn ID: %d\n", p_msg->layer_specific); - } + if (p_clcb != NULL) { + rt = bta_gattc_sm_execute(p_clcb, p_msg->event, (tBTA_GATTC_DATA *) p_msg); + } else { + APPL_TRACE_DEBUG("Ignore unknown conn ID: %d\n", p_msg->layer_specific); + } - break; + break; } @@ -451,64 +436,63 @@ BOOLEAN bta_gattc_hdl_event(BT_HDR *p_msg) *******************************************************************************/ static char *gattc_evt_code(tBTA_GATTC_INT_EVT evt_code) { - switch (evt_code) - { - case BTA_GATTC_API_OPEN_EVT: - return "BTA_GATTC_API_OPEN_EVT"; - case BTA_GATTC_INT_OPEN_FAIL_EVT: - return "BTA_GATTC_INT_OPEN_FAIL_EVT"; - case BTA_GATTC_API_CANCEL_OPEN_EVT: - return "BTA_GATTC_API_CANCEL_OPEN_EVT"; - case BTA_GATTC_INT_CANCEL_OPEN_OK_EVT: - return "BTA_GATTC_INT_CANCEL_OPEN_OK_EVT"; - case BTA_GATTC_API_READ_EVT: - return "BTA_GATTC_API_READ_EVT"; - case BTA_GATTC_API_WRITE_EVT: - return "BTA_GATTC_API_WRITE_EVT"; - case BTA_GATTC_API_EXEC_EVT: - return "BTA_GATTC_API_EXEC_EVT"; - case BTA_GATTC_API_CLOSE_EVT: - return "BTA_GATTC_API_CLOSE_EVT"; - case BTA_GATTC_API_SEARCH_EVT: - return "BTA_GATTC_API_SEARCH_EVT"; - case BTA_GATTC_API_CONFIRM_EVT: - return "BTA_GATTC_API_CONFIRM_EVT"; - case BTA_GATTC_API_READ_MULTI_EVT: - return "BTA_GATTC_API_READ_MULTI_EVT"; - case BTA_GATTC_INT_CONN_EVT: - return "BTA_GATTC_INT_CONN_EVT"; - case BTA_GATTC_INT_DISCOVER_EVT: - return "BTA_GATTC_INT_DISCOVER_EVT"; - case BTA_GATTC_DISCOVER_CMPL_EVT: - return "BTA_GATTC_DISCOVER_CMPL_EVT"; - case BTA_GATTC_OP_CMPL_EVT: - return "BTA_GATTC_OP_CMPL_EVT"; - case BTA_GATTC_INT_DISCONN_EVT: - return "BTA_GATTC_INT_DISCONN_EVT"; - case BTA_GATTC_START_CACHE_EVT: - return "BTA_GATTC_START_CACHE_EVT"; - case BTA_GATTC_CI_CACHE_OPEN_EVT: - return "BTA_GATTC_CI_CACHE_OPEN_EVT"; - case BTA_GATTC_CI_CACHE_LOAD_EVT: - return "BTA_GATTC_CI_CACHE_LOAD_EVT"; - case BTA_GATTC_CI_CACHE_SAVE_EVT: - return "BTA_GATTC_CI_CACHE_SAVE_EVT"; - case BTA_GATTC_INT_START_IF_EVT: - return "BTA_GATTC_INT_START_IF_EVT"; - case BTA_GATTC_API_REG_EVT: - return "BTA_GATTC_API_REG_EVT"; - case BTA_GATTC_API_DEREG_EVT: - return "BTA_GATTC_API_DEREG_EVT"; - case BTA_GATTC_API_REFRESH_EVT: - return "BTA_GATTC_API_REFRESH_EVT"; - case BTA_GATTC_API_LISTEN_EVT: - return "BTA_GATTC_API_LISTEN_EVT"; - case BTA_GATTC_API_DISABLE_EVT: - return "BTA_GATTC_API_DISABLE_EVT"; - case BTA_GATTC_API_CFG_MTU_EVT: - return "BTA_GATTC_API_CFG_MTU_EVT"; - default: - return "unknown GATTC event code"; + switch (evt_code) { + case BTA_GATTC_API_OPEN_EVT: + return "BTA_GATTC_API_OPEN_EVT"; + case BTA_GATTC_INT_OPEN_FAIL_EVT: + return "BTA_GATTC_INT_OPEN_FAIL_EVT"; + case BTA_GATTC_API_CANCEL_OPEN_EVT: + return "BTA_GATTC_API_CANCEL_OPEN_EVT"; + case BTA_GATTC_INT_CANCEL_OPEN_OK_EVT: + return "BTA_GATTC_INT_CANCEL_OPEN_OK_EVT"; + case BTA_GATTC_API_READ_EVT: + return "BTA_GATTC_API_READ_EVT"; + case BTA_GATTC_API_WRITE_EVT: + return "BTA_GATTC_API_WRITE_EVT"; + case BTA_GATTC_API_EXEC_EVT: + return "BTA_GATTC_API_EXEC_EVT"; + case BTA_GATTC_API_CLOSE_EVT: + return "BTA_GATTC_API_CLOSE_EVT"; + case BTA_GATTC_API_SEARCH_EVT: + return "BTA_GATTC_API_SEARCH_EVT"; + case BTA_GATTC_API_CONFIRM_EVT: + return "BTA_GATTC_API_CONFIRM_EVT"; + case BTA_GATTC_API_READ_MULTI_EVT: + return "BTA_GATTC_API_READ_MULTI_EVT"; + case BTA_GATTC_INT_CONN_EVT: + return "BTA_GATTC_INT_CONN_EVT"; + case BTA_GATTC_INT_DISCOVER_EVT: + return "BTA_GATTC_INT_DISCOVER_EVT"; + case BTA_GATTC_DISCOVER_CMPL_EVT: + return "BTA_GATTC_DISCOVER_CMPL_EVT"; + case BTA_GATTC_OP_CMPL_EVT: + return "BTA_GATTC_OP_CMPL_EVT"; + case BTA_GATTC_INT_DISCONN_EVT: + return "BTA_GATTC_INT_DISCONN_EVT"; + case BTA_GATTC_START_CACHE_EVT: + return "BTA_GATTC_START_CACHE_EVT"; + case BTA_GATTC_CI_CACHE_OPEN_EVT: + return "BTA_GATTC_CI_CACHE_OPEN_EVT"; + case BTA_GATTC_CI_CACHE_LOAD_EVT: + return "BTA_GATTC_CI_CACHE_LOAD_EVT"; + case BTA_GATTC_CI_CACHE_SAVE_EVT: + return "BTA_GATTC_CI_CACHE_SAVE_EVT"; + case BTA_GATTC_INT_START_IF_EVT: + return "BTA_GATTC_INT_START_IF_EVT"; + case BTA_GATTC_API_REG_EVT: + return "BTA_GATTC_API_REG_EVT"; + case BTA_GATTC_API_DEREG_EVT: + return "BTA_GATTC_API_DEREG_EVT"; + case BTA_GATTC_API_REFRESH_EVT: + return "BTA_GATTC_API_REFRESH_EVT"; + case BTA_GATTC_API_LISTEN_EVT: + return "BTA_GATTC_API_LISTEN_EVT"; + case BTA_GATTC_API_DISABLE_EVT: + return "BTA_GATTC_API_DISABLE_EVT"; + case BTA_GATTC_API_CFG_MTU_EVT: + return "BTA_GATTC_API_CFG_MTU_EVT"; + default: + return "unknown GATTC event code"; } } @@ -523,18 +507,17 @@ static char *gattc_evt_code(tBTA_GATTC_INT_EVT evt_code) *******************************************************************************/ static char *gattc_state_code(tBTA_GATTC_STATE state_code) { - switch (state_code) - { - case BTA_GATTC_IDLE_ST: - return "GATTC_IDLE_ST"; - case BTA_GATTC_W4_CONN_ST: - return "GATTC_W4_CONN_ST"; - case BTA_GATTC_CONN_ST: - return "GATTC_CONN_ST"; - case BTA_GATTC_DISCOVER_ST: - return "GATTC_DISCOVER_ST"; - default: - return "unknown GATTC state code"; + switch (state_code) { + case BTA_GATTC_IDLE_ST: + return "GATTC_IDLE_ST"; + case BTA_GATTC_W4_CONN_ST: + return "GATTC_W4_CONN_ST"; + case BTA_GATTC_CONN_ST: + return "GATTC_CONN_ST"; + case BTA_GATTC_DISCOVER_ST: + return "GATTC_DISCOVER_ST"; + default: + return "unknown GATTC state code"; } } diff --git a/components/bt/bluedroid/bta/gatt/bta_gattc_utils.c b/components/bt/bluedroid/bta/gatt/bta_gattc_utils.c old mode 100755 new mode 100644 index 3d99f6e671..0a020d3d63 --- a/components/bt/bluedroid/bta/gatt/bta_gattc_utils.c +++ b/components/bt/bluedroid/bta/gatt/bta_gattc_utils.c @@ -43,9 +43,10 @@ static const UINT8 base_uuid[LEN_UUID_128] = {0xFB, 0x34, 0x9B, 0x5F, 0x80, 0x00, 0x00, 0x80, - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; -static const BD_ADDR dummy_bda = {0,0,0,0,0,0}; +static const BD_ADDR dummy_bda = {0, 0, 0, 0, 0, 0}; /******************************************************************************* ** @@ -79,40 +80,37 @@ BOOLEAN bta_gattc_uuid_compare (tBT_UUID *p_src, tBT_UUID *p_tar, BOOLEAN is_pre UINT8 *ps, *pt; /* any of the UUID is unspecified */ - if (p_src == 0 || p_tar == 0) - { - if (is_precise) + if (p_src == 0 || p_tar == 0) { + if (is_precise) { return FALSE; - else + } else { return TRUE; + } } /* If both are 16-bit, we can do a simple compare */ - if (p_src->len == 2 && p_tar->len == 2) - { + if (p_src->len == 2 && p_tar->len == 2) { return p_src->uu.uuid16 == p_tar->uu.uuid16; } /* One or both of the UUIDs is 128-bit */ - if (p_src->len == LEN_UUID_16) - { + if (p_src->len == LEN_UUID_16) { /* convert a 16 bits UUID to 128 bits value */ bta_gatt_convert_uuid16_to_uuid128(su, p_src->uu.uuid16); ps = su; - } - else + } else { ps = p_src->uu.uuid128; + } - if (p_tar->len == LEN_UUID_16) - { + if (p_tar->len == LEN_UUID_16) { /* convert a 16 bits UUID to 128 bits value */ bta_gatt_convert_uuid16_to_uuid128(tu, p_tar->uu.uuid16); pt = tu; - } - else + } else { pt = p_tar->uu.uuid128; + } - return(memcmp(ps, pt, LEN_UUID_128) == 0); + return (memcmp(ps, pt, LEN_UUID_128) == 0); } /******************************************************************************* @@ -124,16 +122,16 @@ BOOLEAN bta_gattc_uuid_compare (tBT_UUID *p_src, tBT_UUID *p_tar, BOOLEAN is_pre ** Returns pointer to the regcb ** *******************************************************************************/ -tBTA_GATTC_RCB * bta_gattc_cl_get_regcb(UINT8 client_if) +tBTA_GATTC_RCB *bta_gattc_cl_get_regcb(UINT8 client_if) { UINT8 i = 0; tBTA_GATTC_RCB *p_clrcb = &bta_gattc_cb.cl_rcb[0]; - for (i = 0; i < BTA_GATTC_CL_MAX; i ++, p_clrcb ++) - { + for (i = 0; i < BTA_GATTC_CL_MAX; i ++, p_clrcb ++) { if (p_clrcb->in_use && - p_clrcb->client_if == client_if) + p_clrcb->client_if == client_if) { return p_clrcb; + } } return NULL; } @@ -150,10 +148,10 @@ UINT8 bta_gattc_num_reg_app(void) { UINT8 i = 0, j = 0; - for (i = 0; i < BTA_GATTC_CL_MAX; i ++) - { - if (bta_gattc_cb.cl_rcb[i].in_use) + for (i = 0; i < BTA_GATTC_CL_MAX; i ++) { + if (bta_gattc_cb.cl_rcb[i].in_use) { j ++; + } } return j; } @@ -166,19 +164,19 @@ UINT8 bta_gattc_num_reg_app(void) ** Returns pointer to the clcb ** *******************************************************************************/ -tBTA_GATTC_CLCB * bta_gattc_find_clcb_by_cif (UINT8 client_if, BD_ADDR remote_bda, - tBTA_TRANSPORT transport) +tBTA_GATTC_CLCB *bta_gattc_find_clcb_by_cif (UINT8 client_if, BD_ADDR remote_bda, + tBTA_TRANSPORT transport) { tBTA_GATTC_CLCB *p_clcb = &bta_gattc_cb.clcb[0]; UINT8 i; - for (i = 0; i < BTA_GATTC_CLCB_MAX; i ++, p_clcb ++) - { + for (i = 0; i < BTA_GATTC_CLCB_MAX; i ++, p_clcb ++) { if (p_clcb->in_use && - p_clcb->p_rcb->client_if == client_if && - p_clcb->transport == transport && - bdcmp(p_clcb->bda, remote_bda) == 0) + p_clcb->p_rcb->client_if == client_if && + p_clcb->transport == transport && + bdcmp(p_clcb->bda, remote_bda) == 0) { return p_clcb; + } } return NULL; } @@ -191,16 +189,16 @@ tBTA_GATTC_CLCB * bta_gattc_find_clcb_by_cif (UINT8 client_if, BD_ADDR remote_bd ** Returns pointer to the clcb ** *******************************************************************************/ -tBTA_GATTC_CLCB * bta_gattc_find_clcb_by_conn_id (UINT16 conn_id) +tBTA_GATTC_CLCB *bta_gattc_find_clcb_by_conn_id (UINT16 conn_id) { tBTA_GATTC_CLCB *p_clcb = &bta_gattc_cb.clcb[0]; UINT8 i; - for (i = 0; i < BTA_GATTC_CLCB_MAX; i ++, p_clcb ++) - { + for (i = 0; i < BTA_GATTC_CLCB_MAX; i ++, p_clcb ++) { if (p_clcb->in_use && - p_clcb->bta_conn_id == conn_id) + p_clcb->bta_conn_id == conn_id) { return p_clcb; + } } return NULL; } @@ -214,18 +212,16 @@ tBTA_GATTC_CLCB * bta_gattc_find_clcb_by_conn_id (UINT16 conn_id) ** Returns pointer to the clcb ** *******************************************************************************/ -tBTA_GATTC_CLCB * bta_gattc_clcb_alloc(tBTA_GATTC_IF client_if, BD_ADDR remote_bda, - tBTA_TRANSPORT transport) +tBTA_GATTC_CLCB *bta_gattc_clcb_alloc(tBTA_GATTC_IF client_if, BD_ADDR remote_bda, + tBTA_TRANSPORT transport) { UINT8 i_clcb = 0; tBTA_GATTC_CLCB *p_clcb = NULL; - for (i_clcb = 0; i_clcb < BTA_GATTC_CLCB_MAX; i_clcb++) - { - if (!bta_gattc_cb.clcb[i_clcb].in_use) - { + for (i_clcb = 0; i_clcb < BTA_GATTC_CLCB_MAX; i_clcb++) { + if (!bta_gattc_cb.clcb[i_clcb].in_use) { #if BTA_GATT_DEBUG == TRUE - APPL_TRACE_DEBUG("bta_gattc_clcb_alloc: found clcb[%d] available",i_clcb); + APPL_TRACE_DEBUG("bta_gattc_clcb_alloc: found clcb[%d] available", i_clcb); #endif p_clcb = &bta_gattc_cb.clcb[i_clcb]; p_clcb->in_use = TRUE; @@ -235,16 +231,14 @@ tBTA_GATTC_CLCB * bta_gattc_clcb_alloc(tBTA_GATTC_IF client_if, BD_ADDR remote_b p_clcb->p_rcb = bta_gattc_cl_get_regcb(client_if); - if ((p_clcb->p_srcb = bta_gattc_find_srcb(remote_bda)) == NULL) + if ((p_clcb->p_srcb = bta_gattc_find_srcb(remote_bda)) == NULL) { p_clcb->p_srcb = bta_gattc_srcb_alloc(remote_bda); + } - if (p_clcb->p_rcb != NULL && p_clcb->p_srcb != NULL) - { + if (p_clcb->p_rcb != NULL && p_clcb->p_srcb != NULL) { p_clcb->p_srcb->num_clcb ++; p_clcb->p_rcb->num_clcb ++; - } - else - { + } else { /* release this clcb if clcb or srcb allocation failed */ p_clcb->in_use = FALSE; p_clcb = NULL; @@ -264,12 +258,11 @@ tBTA_GATTC_CLCB * bta_gattc_clcb_alloc(tBTA_GATTC_IF client_if, BD_ADDR remote_b ** *******************************************************************************/ tBTA_GATTC_CLCB *bta_gattc_find_alloc_clcb(tBTA_GATTC_IF client_if, BD_ADDR remote_bda, - tBTA_TRANSPORT transport) + tBTA_TRANSPORT transport) { tBTA_GATTC_CLCB *p_clcb ; - if ((p_clcb = bta_gattc_find_clcb_by_cif(client_if, remote_bda, transport)) == NULL) - { + if ((p_clcb = bta_gattc_find_clcb_by_cif(client_if, remote_bda, transport)) == NULL) { p_clcb = bta_gattc_clcb_alloc(client_if, remote_bda, transport); } return p_clcb; @@ -288,18 +281,18 @@ void bta_gattc_clcb_dealloc(tBTA_GATTC_CLCB *p_clcb) { tBTA_GATTC_SERV *p_srcb = NULL; - if (p_clcb) - { + if (p_clcb) { p_srcb = p_clcb->p_srcb; - if (p_srcb->num_clcb) + if (p_srcb->num_clcb) { p_srcb->num_clcb --; + } - if (p_clcb->p_rcb->num_clcb) + if (p_clcb->p_rcb->num_clcb) { p_clcb->p_rcb->num_clcb --; + } /* if the srcb is no longer needed, reset the state */ - if ( p_srcb->num_clcb == 0) - { + if ( p_srcb->num_clcb == 0) { p_srcb->connected = FALSE; p_srcb->state = BTA_GATTC_SERV_IDLE; p_srcb->mtu = 0; @@ -308,9 +301,7 @@ void bta_gattc_clcb_dealloc(tBTA_GATTC_CLCB *p_clcb) utl_freebuf((void **)&p_clcb->p_q_cmd); memset(p_clcb, 0, sizeof(tBTA_GATTC_CLCB)); - } - else - { + } else { APPL_TRACE_ERROR("bta_gattc_clcb_dealloc p_clcb=NULL"); } } @@ -324,15 +315,15 @@ void bta_gattc_clcb_dealloc(tBTA_GATTC_CLCB *p_clcb) ** Returns pointer to the server cache. ** *******************************************************************************/ -tBTA_GATTC_SERV * bta_gattc_find_srcb(BD_ADDR bda) +tBTA_GATTC_SERV *bta_gattc_find_srcb(BD_ADDR bda) { tBTA_GATTC_SERV *p_srcb = &bta_gattc_cb.known_server[0]; UINT8 i; - for (i = 0; i < BTA_GATTC_KNOWN_SR_MAX; i ++, p_srcb ++) - { - if (p_srcb->in_use && bdcmp(p_srcb->server_bda, bda) == 0) + for (i = 0; i < BTA_GATTC_KNOWN_SR_MAX; i ++, p_srcb ++) { + if (p_srcb->in_use && bdcmp(p_srcb->server_bda, bda) == 0) { return p_srcb; + } } return NULL; } @@ -346,15 +337,15 @@ tBTA_GATTC_SERV * bta_gattc_find_srcb(BD_ADDR bda) ** Returns pointer to the server cache. ** *******************************************************************************/ -tBTA_GATTC_SERV * bta_gattc_find_srvr_cache(BD_ADDR bda) +tBTA_GATTC_SERV *bta_gattc_find_srvr_cache(BD_ADDR bda) { tBTA_GATTC_SERV *p_srcb = &bta_gattc_cb.known_server[0]; UINT8 i; - for (i = 0; i < BTA_GATTC_KNOWN_SR_MAX; i ++, p_srcb ++) - { - if (bdcmp(p_srcb->server_bda, bda) == 0) + for (i = 0; i < BTA_GATTC_KNOWN_SR_MAX; i ++, p_srcb ++) { + if (bdcmp(p_srcb->server_bda, bda) == 0) { return p_srcb; + } } return NULL; } @@ -367,14 +358,15 @@ tBTA_GATTC_SERV * bta_gattc_find_srvr_cache(BD_ADDR bda) ** Returns pointer to the server cache. ** *******************************************************************************/ -tBTA_GATTC_SERV * bta_gattc_find_scb_by_cid (UINT16 conn_id) +tBTA_GATTC_SERV *bta_gattc_find_scb_by_cid (UINT16 conn_id) { tBTA_GATTC_CLCB *p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id); - if (p_clcb) + if (p_clcb) { return p_clcb->p_srcb; - else + } else { return NULL; + } } /******************************************************************************* ** @@ -385,36 +377,33 @@ tBTA_GATTC_SERV * bta_gattc_find_scb_by_cid (UINT16 conn_id) ** Returns pointer to the server cache. ** *******************************************************************************/ -tBTA_GATTC_SERV * bta_gattc_srcb_alloc(BD_ADDR bda) +tBTA_GATTC_SERV *bta_gattc_srcb_alloc(BD_ADDR bda) { tBTA_GATTC_SERV *p_tcb = &bta_gattc_cb.known_server[0], - *p_recycle = NULL; + *p_recycle = NULL; BOOLEAN found = FALSE; UINT8 i; - for (i = 0; i < BTA_GATTC_KNOWN_SR_MAX; i ++, p_tcb ++) - { - if (!p_tcb->in_use) - { + for (i = 0; i < BTA_GATTC_KNOWN_SR_MAX; i ++, p_tcb ++) { + if (!p_tcb->in_use) { found = TRUE; break; - } - else if (!p_tcb->connected) - { + } else if (!p_tcb->connected) { p_recycle = p_tcb; } } /* if not found, try to recycle one known device */ - if (!found && !p_recycle) + if (!found && !p_recycle) { p_tcb = NULL; - else if (!found && p_recycle) + } else if (!found && p_recycle) { p_tcb = p_recycle; + } - if (p_tcb != NULL) - { - while (!GKI_queue_is_empty(&p_tcb->cache_buffer)) + if (p_tcb != NULL) { + while (!GKI_queue_is_empty(&p_tcb->cache_buffer)) { GKI_freebuf (GKI_dequeue (&p_tcb->cache_buffer)); + } utl_freebuf((void **)&p_tcb->p_srvc_list); memset(p_tcb, 0 , sizeof(tBTA_GATTC_SERV)); @@ -436,16 +425,13 @@ tBTA_GATTC_SERV * bta_gattc_srcb_alloc(BD_ADDR bda) BOOLEAN bta_gattc_enqueue(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) { - if (p_clcb->p_q_cmd == NULL) - { - p_clcb->p_q_cmd = p_data; - } - else - { - APPL_TRACE_ERROR("already has a pending command!!"); - /* skip the callback now. ----- need to send callback ? */ - } - return (p_clcb->p_q_cmd != NULL) ? TRUE : FALSE; + if (p_clcb->p_q_cmd == NULL) { + p_clcb->p_q_cmd = p_data; + } else { + APPL_TRACE_ERROR("already has a pending command!!"); + /* skip the callback now. ----- need to send callback ? */ + } + return (p_clcb->p_q_cmd != NULL) ? TRUE : FALSE; } @@ -466,12 +452,9 @@ void bta_gattc_pack_attr_uuid(tBTA_GATTC_CACHE_ATTR *p_attr, tBT_UUID *p_uuid) p_uuid->len = p_attr->uuid_len; - if (p_attr->uuid_len == LEN_UUID_16) - { + if (p_attr->uuid_len == LEN_UUID_16) { STREAM_TO_UINT16(p_uuid->uu.uuid16, pp); - } - else - { + } else { memcpy(p_uuid->uu.uuid128, pp, LEN_UUID_128); } @@ -494,12 +477,9 @@ void bta_gattc_cpygattid(tBTA_GATT_ID *p_des, tBTA_GATT_ID *p_src) p_des->uuid.len = p_src->uuid.len; - if (p_des->uuid.len == LEN_UUID_16) - { + if (p_des->uuid.len == LEN_UUID_16) { p_des->uuid.uu.uuid16 = p_src->uuid.uu.uuid16; - } - else if (p_des->uuid.len == LEN_UUID_128) - { + } else if (p_des->uuid.len == LEN_UUID_128) { memcpy(p_des->uuid.uu.uuid128, p_src->uuid.uu.uuid128, LEN_UUID_128); } } @@ -515,10 +495,11 @@ void bta_gattc_cpygattid(tBTA_GATT_ID *p_des, tBTA_GATT_ID *p_src) BOOLEAN bta_gattc_gattid_compare(tBTA_GATT_ID *p_src, tBTA_GATT_ID *p_tar) { if (p_src->inst_id == p_tar->inst_id && - bta_gattc_uuid_compare (&p_src->uuid, &p_tar->uuid, TRUE )) + bta_gattc_uuid_compare (&p_src->uuid, &p_tar->uuid, TRUE )) { return TRUE; - else + } else { return FALSE; + } } /******************************************************************************* @@ -533,10 +514,11 @@ BOOLEAN bta_gattc_gattid_compare(tBTA_GATT_ID *p_src, tBTA_GATT_ID *p_tar) BOOLEAN bta_gattc_srvcid_compare(tBTA_GATT_SRVC_ID *p_src, tBTA_GATT_SRVC_ID *p_tar) { if (p_src->is_primary == p_tar->is_primary && - bta_gattc_gattid_compare (&p_src->id, &p_tar->id)) + bta_gattc_gattid_compare (&p_src->id, &p_tar->id)) { return TRUE; - else + } else { return FALSE; + } } /******************************************************************************* ** @@ -550,10 +532,11 @@ BOOLEAN bta_gattc_srvcid_compare(tBTA_GATT_SRVC_ID *p_src, tBTA_GATT_SRVC_ID *p_ BOOLEAN bta_gattc_charid_compare(tBTA_GATTC_CHAR_ID *p_src, tBTA_GATTC_CHAR_ID *p_tar) { if (bta_gattc_gattid_compare (&p_src->char_id, &p_tar->char_id) && - bta_gattc_srvcid_compare (&p_src->srvc_id, &p_tar->srvc_id)) + bta_gattc_srvcid_compare (&p_src->srvc_id, &p_tar->srvc_id)) { return TRUE; - else + } else { return FALSE; + } } /******************************************************************************* @@ -570,12 +553,10 @@ BOOLEAN bta_gattc_check_notif_registry(tBTA_GATTC_RCB *p_clreg, tBTA_GATTC_SERV { UINT8 i; - for (i = 0 ; i < BTA_GATTC_NOTIF_REG_MAX; i ++) - { + for (i = 0 ; i < BTA_GATTC_NOTIF_REG_MAX; i ++) { if (p_clreg->notif_reg[i].in_use && - bdcmp(p_clreg->notif_reg[i].remote_bda, p_srcb->server_bda) == 0 && - bta_gattc_charid_compare (&p_clreg->notif_reg[i].char_id, &p_notify->char_id)) - { + bdcmp(p_clreg->notif_reg[i].remote_bda, p_srcb->server_bda) == 0 && + bta_gattc_charid_compare (&p_clreg->notif_reg[i].char_id, &p_notify->char_id)) { APPL_TRACE_DEBUG("Notification registered!"); return TRUE; } @@ -600,20 +581,16 @@ void bta_gattc_clear_notif_registration(UINT16 conn_id) UINT8 i; tGATT_TRANSPORT transport; - if (GATT_GetConnectionInfor(conn_id, &gatt_if, remote_bda, &transport)) - { - if ((p_clrcb = bta_gattc_cl_get_regcb(gatt_if)) != NULL) - { - for (i = 0 ; i < BTA_GATTC_NOTIF_REG_MAX; i ++) - { + if (GATT_GetConnectionInfor(conn_id, &gatt_if, remote_bda, &transport)) { + if ((p_clrcb = bta_gattc_cl_get_regcb(gatt_if)) != NULL) { + for (i = 0 ; i < BTA_GATTC_NOTIF_REG_MAX; i ++) { if (p_clrcb->notif_reg[i].in_use && - !bdcmp(p_clrcb->notif_reg[i].remote_bda, remote_bda)) + !bdcmp(p_clrcb->notif_reg[i].remote_bda, remote_bda)) { memset(&p_clrcb->notif_reg[i], 0, sizeof(tBTA_GATTC_NOTIF_REG)); + } } } - } - else - { + } else { APPL_TRACE_ERROR("can not clear indication/notif registration for unknown app"); } return; @@ -629,9 +606,9 @@ void bta_gattc_clear_notif_registration(UINT16 conn_id) ** *******************************************************************************/ tBTA_GATT_STATUS bta_gattc_pack_read_cb_data(tBTA_GATTC_SERV *p_srcb, - tBT_UUID *p_descr_uuid, - tGATT_VALUE *p_attr, - tBTA_GATT_READ_VAL *p_value) + tBT_UUID *p_descr_uuid, + tGATT_VALUE *p_attr, + tBTA_GATT_READ_VAL *p_value) { UINT8 i = 0, *pp = p_attr->value; tBT_UUID uuid = {LEN_UUID_16, {GATT_UUID_CHAR_AGG_FORMAT}}; @@ -639,18 +616,15 @@ tBTA_GATT_STATUS bta_gattc_pack_read_cb_data(tBTA_GATTC_SERV *p_srcb, tBTA_GATT_STATUS status = BTA_GATT_OK; /* GATT_UUID_CHAR_AGG_FORMAT */ - if (bta_gattc_uuid_compare (&uuid, p_descr_uuid, TRUE)) - { - while (p_attr->len >= 2 && i < BTA_GATTC_MULTI_MAX) - { + if (bta_gattc_uuid_compare (&uuid, p_descr_uuid, TRUE)) { + while (p_attr->len >= 2 && i < BTA_GATTC_MULTI_MAX) { STREAM_TO_UINT16(handle, pp); if (bta_gattc_handle2id(p_srcb, handle, &p_value->aggre_value.pre_format[i].char_id.srvc_id, &p_value->aggre_value.pre_format[i].char_id.char_id, - &p_value->aggre_value.pre_format[i].descr_id) == FALSE) - { + &p_value->aggre_value.pre_format[i].descr_id) == FALSE) { status = BTA_GATT_INTERNAL_ERROR; APPL_TRACE_ERROR("can not map to GATT ID. handle = 0x%04x", handle); break; @@ -659,9 +633,7 @@ tBTA_GATT_STATUS bta_gattc_pack_read_cb_data(tBTA_GATTC_SERV *p_srcb, p_attr->len -= 2; } p_value->aggre_value.num_pres_fmt = i; - } - else - { + } else { /* all others, take as raw format */ p_value->unformat.len = p_attr->len; p_value->unformat.p_value = p_attr->value; @@ -685,59 +657,52 @@ BOOLEAN bta_gattc_mark_bg_conn (tBTA_GATTC_IF client_if, BD_ADDR_PTR remote_bda UINT8 i = 0; tBTA_GATTC_CIF_MASK *p_cif_mask; - for (i = 0; i < BTA_GATTC_KNOWN_SR_MAX; i ++, p_bg_tck ++) - { + for (i = 0; i < BTA_GATTC_KNOWN_SR_MAX; i ++, p_bg_tck ++) { if (p_bg_tck->in_use && - ((remote_bda_ptr != NULL && bdcmp(p_bg_tck->remote_bda, remote_bda_ptr) == 0) || - (remote_bda_ptr == NULL && bdcmp(p_bg_tck->remote_bda, dummy_bda) == 0))) - { - p_cif_mask = is_listen ? &p_bg_tck->cif_adv_mask : &p_bg_tck->cif_mask; + ((remote_bda_ptr != NULL && bdcmp(p_bg_tck->remote_bda, remote_bda_ptr) == 0) || + (remote_bda_ptr == NULL && bdcmp(p_bg_tck->remote_bda, dummy_bda) == 0))) { + p_cif_mask = is_listen ? &p_bg_tck->cif_adv_mask : &p_bg_tck->cif_mask; if (add) /* mask on the cif bit */ - *p_cif_mask |= (1 <<(client_if - 1)); - else { - if (client_if != 0) - *p_cif_mask &= (~(1 <<(client_if - 1))); - else + *p_cif_mask |= (1 << (client_if - 1)); + } else { + if (client_if != 0) { + *p_cif_mask &= (~(1 << (client_if - 1))); + } else { *p_cif_mask = 0; + } } /* no BG connection for this device, make it available */ - if (p_bg_tck->cif_mask == 0 && p_bg_tck->cif_adv_mask == 0) - { + if (p_bg_tck->cif_mask == 0 && p_bg_tck->cif_adv_mask == 0) { memset(p_bg_tck, 0, sizeof(tBTA_GATTC_BG_TCK)); } return TRUE; } } - if (!add) - { - if (remote_bda_ptr) - { - // bdstr_t bdstr = {0}; - char bdstr[18] = {0}; + if (!add) { + if (remote_bda_ptr) { + // bdstr_t bdstr = {0}; + char bdstr[18] = {0}; APPL_TRACE_ERROR("%s unable to find the bg connection mask for: %s", __func__, - bdaddr_to_string((bt_bdaddr_t *)remote_bda_ptr, bdstr, sizeof(bdstr))); + bdaddr_to_string((bt_bdaddr_t *)remote_bda_ptr, bdstr, sizeof(bdstr))); } return FALSE; - } - else /* adding a new device mask */ - { + } else { /* adding a new device mask */ for (i = 0, p_bg_tck = &bta_gattc_cb.bg_track[0]; - i < BTA_GATTC_KNOWN_SR_MAX; i ++, p_bg_tck ++) - { - if (!p_bg_tck->in_use) - { + i < BTA_GATTC_KNOWN_SR_MAX; i ++, p_bg_tck ++) { + if (!p_bg_tck->in_use) { p_bg_tck->in_use = TRUE; - if (remote_bda_ptr) + if (remote_bda_ptr) { bdcpy(p_bg_tck->remote_bda, remote_bda_ptr); - else + } else { bdcpy(p_bg_tck->remote_bda, dummy_bda); + } p_cif_mask = is_listen ? &p_bg_tck->cif_adv_mask : &p_bg_tck->cif_mask; - *p_cif_mask = (1 <<(client_if - 1)); + *p_cif_mask = (1 << (client_if - 1)); return TRUE; } } @@ -760,19 +725,19 @@ BOOLEAN bta_gattc_check_bg_conn (tBTA_GATTC_IF client_if, BD_ADDR remote_bda, U UINT8 i = 0; BOOLEAN is_bg_conn = FALSE; - for (i = 0; i < BTA_GATTC_KNOWN_SR_MAX && !is_bg_conn; i ++, p_bg_tck ++) - { + for (i = 0; i < BTA_GATTC_KNOWN_SR_MAX && !is_bg_conn; i ++, p_bg_tck ++) { if (p_bg_tck->in_use && - (bdcmp(p_bg_tck->remote_bda, remote_bda) == 0 || - bdcmp(p_bg_tck->remote_bda, dummy_bda) == 0)) - { - if (((p_bg_tck->cif_mask &(1 <<(client_if - 1))) != 0) && - role == HCI_ROLE_MASTER) + (bdcmp(p_bg_tck->remote_bda, remote_bda) == 0 || + bdcmp(p_bg_tck->remote_bda, dummy_bda) == 0)) { + if (((p_bg_tck->cif_mask & (1 << (client_if - 1))) != 0) && + role == HCI_ROLE_MASTER) { is_bg_conn = TRUE; + } - if (((p_bg_tck->cif_adv_mask &(1 <<(client_if - 1))) != 0) && - role == HCI_ROLE_SLAVE) + if (((p_bg_tck->cif_adv_mask & (1 << (client_if - 1))) != 0) && + role == HCI_ROLE_SLAVE) { is_bg_conn = TRUE; + } } } return is_bg_conn; @@ -792,8 +757,7 @@ void bta_gattc_send_open_cback( tBTA_GATTC_RCB *p_clreg, tBTA_GATT_STATUS status { tBTA_GATTC cb_data; - if (p_clreg->p_cback) - { + if (p_clreg->p_cback) { memset(&cb_data, 0, sizeof(tBTA_GATTC)); cb_data.open.status = status; @@ -815,17 +779,15 @@ void bta_gattc_send_open_cback( tBTA_GATTC_RCB *p_clreg, tBTA_GATT_STATUS status ** Returns pointer to the clcb ** *******************************************************************************/ -tBTA_GATTC_CONN * bta_gattc_conn_alloc(BD_ADDR remote_bda) +tBTA_GATTC_CONN *bta_gattc_conn_alloc(BD_ADDR remote_bda) { UINT8 i_conn = 0; tBTA_GATTC_CONN *p_conn = &bta_gattc_cb.conn_track[0]; - for (i_conn = 0; i_conn < BTA_GATTC_CONN_MAX; i_conn++, p_conn ++) - { - if (!p_conn->in_use) - { + for (i_conn = 0; i_conn < BTA_GATTC_CONN_MAX; i_conn++, p_conn ++) { + if (!p_conn->in_use) { #if BTA_GATT_DEBUG == TRUE - APPL_TRACE_DEBUG("bta_gattc_conn_alloc: found conn_track[%d] available",i_conn); + APPL_TRACE_DEBUG("bta_gattc_conn_alloc: found conn_track[%d] available", i_conn); #endif p_conn->in_use = TRUE; bdcpy(p_conn->remote_bda, remote_bda); @@ -844,17 +806,15 @@ tBTA_GATTC_CONN * bta_gattc_conn_alloc(BD_ADDR remote_bda) ** Returns pointer to the clcb ** *******************************************************************************/ -tBTA_GATTC_CONN * bta_gattc_conn_find(BD_ADDR remote_bda) +tBTA_GATTC_CONN *bta_gattc_conn_find(BD_ADDR remote_bda) { UINT8 i_conn = 0; tBTA_GATTC_CONN *p_conn = &bta_gattc_cb.conn_track[0]; - for (i_conn = 0; i_conn < BTA_GATTC_CONN_MAX; i_conn++, p_conn ++) - { - if (p_conn->in_use && bdcmp(remote_bda, p_conn->remote_bda) == 0) - { + for (i_conn = 0; i_conn < BTA_GATTC_CONN_MAX; i_conn++, p_conn ++) { + if (p_conn->in_use && bdcmp(remote_bda, p_conn->remote_bda) == 0) { #if BTA_GATT_DEBUG == TRUE - APPL_TRACE_DEBUG("bta_gattc_conn_find: found conn_track[%d] matched",i_conn); + APPL_TRACE_DEBUG("bta_gattc_conn_find: found conn_track[%d] matched", i_conn); #endif return p_conn; } @@ -872,12 +832,11 @@ tBTA_GATTC_CONN * bta_gattc_conn_find(BD_ADDR remote_bda) ** Returns pointer to the clcb ** *******************************************************************************/ -tBTA_GATTC_CONN * bta_gattc_conn_find_alloc(BD_ADDR remote_bda) +tBTA_GATTC_CONN *bta_gattc_conn_find_alloc(BD_ADDR remote_bda) { tBTA_GATTC_CONN *p_conn = bta_gattc_conn_find (remote_bda); - if (p_conn == NULL) - { + if (p_conn == NULL) { p_conn = bta_gattc_conn_alloc(remote_bda); } return p_conn; @@ -896,8 +855,7 @@ BOOLEAN bta_gattc_conn_dealloc(BD_ADDR remote_bda) { tBTA_GATTC_CONN *p_conn = bta_gattc_conn_find (remote_bda); - if (p_conn != NULL) - { + if (p_conn != NULL) { p_conn->in_use = FALSE; memset(p_conn->remote_bda, 0, BD_ADDR_LEN); return TRUE; @@ -914,24 +872,23 @@ BOOLEAN bta_gattc_conn_dealloc(BD_ADDR remote_bda) ** Returns pointer to the clcb ** *******************************************************************************/ -tBTA_GATTC_CLCB * bta_gattc_find_int_conn_clcb(tBTA_GATTC_DATA *p_msg) +tBTA_GATTC_CLCB *bta_gattc_find_int_conn_clcb(tBTA_GATTC_DATA *p_msg) { tBTA_GATTC_CLCB *p_clcb = NULL; - if (p_msg->int_conn.role == HCI_ROLE_SLAVE) + if (p_msg->int_conn.role == HCI_ROLE_SLAVE) { bta_gattc_conn_find_alloc(p_msg->int_conn.remote_bda); + } /* try to locate a logic channel */ if ((p_clcb = bta_gattc_find_clcb_by_cif(p_msg->int_conn.client_if, - p_msg->int_conn.remote_bda, - p_msg->int_conn.transport)) == NULL) - { + p_msg->int_conn.remote_bda, + p_msg->int_conn.transport)) == NULL) { /* for a background connection or listening connection */ if (/*p_msg->int_conn.role == HCI_ROLE_SLAVE || */ bta_gattc_check_bg_conn(p_msg->int_conn.client_if, p_msg->int_conn.remote_bda, - p_msg->int_conn.role)) - { + p_msg->int_conn.role)) { /* allocate a new channel */ p_clcb = bta_gattc_clcb_alloc(p_msg->int_conn.client_if, p_msg->int_conn.remote_bda, @@ -950,22 +907,20 @@ tBTA_GATTC_CLCB * bta_gattc_find_int_conn_clcb(tBTA_GATTC_DATA *p_msg) ** Returns pointer to the clcb ** *******************************************************************************/ -tBTA_GATTC_CLCB * bta_gattc_find_int_disconn_clcb(tBTA_GATTC_DATA *p_msg) +tBTA_GATTC_CLCB *bta_gattc_find_int_disconn_clcb(tBTA_GATTC_DATA *p_msg) { tBTA_GATTC_CLCB *p_clcb = NULL; bta_gattc_conn_dealloc(p_msg->int_conn.remote_bda); - if ((p_clcb = bta_gattc_find_clcb_by_conn_id(p_msg->int_conn.hdr.layer_specific)) == NULL) - { + if ((p_clcb = bta_gattc_find_clcb_by_conn_id(p_msg->int_conn.hdr.layer_specific)) == NULL) { /* connection attempt failed, send connection callback event */ p_clcb = bta_gattc_find_clcb_by_cif(p_msg->int_conn.client_if, p_msg->int_conn.remote_bda, p_msg->int_conn.transport); } - if (p_clcb == NULL) - { + if (p_clcb == NULL) { APPL_TRACE_DEBUG(" disconnection ID: [%d] not used by BTA", - p_msg->int_conn.hdr.layer_specific); + p_msg->int_conn.hdr.layer_specific); } return p_clcb; } diff --git a/components/bt/bluedroid/bta/gatt/bta_gatts_act.c b/components/bt/bluedroid/bta/gatt/bta_gatts_act.c old mode 100755 new mode 100644 index 5ff5062739..7197120220 --- a/components/bt/bluedroid/bta/gatt/bta_gatts_act.c +++ b/components/bt/bluedroid/bta/gatt/bta_gatts_act.c @@ -39,18 +39,17 @@ static void bta_gatts_nv_save_cback(BOOLEAN is_saved, tGATTS_HNDL_RANGE *p_hndl_range); static BOOLEAN bta_gatts_nv_srv_chg_cback(tGATTS_SRV_CHG_CMD cmd, tGATTS_SRV_CHG_REQ *p_req, - tGATTS_SRV_CHG_RSP *p_rsp); + tGATTS_SRV_CHG_RSP *p_rsp); static void bta_gatts_conn_cback (tGATT_IF gatt_if, BD_ADDR bda, UINT16 conn_id, - BOOLEAN connected, tGATT_DISCONN_REASON reason, - tGATT_TRANSPORT transport); + BOOLEAN connected, tGATT_DISCONN_REASON reason, + tGATT_TRANSPORT transport); static void bta_gatts_send_request_cback (UINT16 conn_id, - UINT32 trans_id, - tGATTS_REQ_TYPE req_type, tGATTS_DATA *p_data); + UINT32 trans_id, + tGATTS_REQ_TYPE req_type, tGATTS_DATA *p_data); static void bta_gatts_cong_cback (UINT16 conn_id, BOOLEAN congested); -static tGATT_CBACK bta_gatts_cback = -{ +static tGATT_CBACK bta_gatts_cback = { bta_gatts_conn_cback, NULL, NULL, @@ -60,8 +59,7 @@ static tGATT_CBACK bta_gatts_cback = bta_gatts_cong_cback }; -tGATT_APPL_INFO bta_gatts_nv_cback = -{ +tGATT_APPL_INFO bta_gatts_nv_cback = { bta_gatts_nv_save_cback, bta_gatts_nv_srv_chg_cback }; @@ -93,7 +91,7 @@ static void bta_gatts_nv_save_cback(BOOLEAN is_add, tGATTS_HNDL_RANGE *p_hndl_ra ** *******************************************************************************/ static BOOLEAN bta_gatts_nv_srv_chg_cback(tGATTS_SRV_CHG_CMD cmd, - tGATTS_SRV_CHG_REQ *p_req, tGATTS_SRV_CHG_RSP *p_rsp) + tGATTS_SRV_CHG_REQ *p_req, tGATTS_SRV_CHG_RSP *p_rsp) { return bta_gatts_co_srv_chg((tBTA_GATTS_SRV_CHG_CMD) cmd, (tBTA_GATTS_SRV_CHG_REQ *) p_req, @@ -112,21 +110,17 @@ static BOOLEAN bta_gatts_nv_srv_chg_cback(tGATTS_SRV_CHG_CMD cmd, *******************************************************************************/ void bta_gatts_enable(tBTA_GATTS_CB *p_cb) { - UINT8 index=0; + UINT8 index = 0; tBTA_GATTS_HNDL_RANGE handle_range; - if (p_cb->enabled) - { + if (p_cb->enabled) { APPL_TRACE_DEBUG("GATTS already enabled."); - } - else - { + } else { memset(p_cb, 0, sizeof(tBTA_GATTS_CB)); p_cb->enabled = TRUE; - while ( bta_gatts_co_load_handle_range(index, &handle_range)) - { + while ( bta_gatts_co_load_handle_range(index, &handle_range)) { GATTS_AddHandleRange((tGATTS_HNDL_RANGE *)&handle_range); memset(&handle_range, 0, sizeof(tGATTS_HNDL_RANGE)); index++; @@ -134,8 +128,7 @@ void bta_gatts_enable(tBTA_GATTS_CB *p_cb) APPL_TRACE_DEBUG("bta_gatts_enable: num of handle range added=%d", index); - if (!GATTS_NVRegister(&bta_gatts_nv_cback)) - { + if (!GATTS_NVRegister(&bta_gatts_nv_cback)) { APPL_TRACE_ERROR("BTA GATTS NV register failed."); } } @@ -154,19 +147,14 @@ void bta_gatts_api_disable(tBTA_GATTS_CB *p_cb) { UINT8 i; - if (p_cb->enabled) - { - for (i = 0; i < BTA_GATTS_MAX_APP_NUM; i ++) - { - if (p_cb->rcb[i].in_use) - { + if (p_cb->enabled) { + for (i = 0; i < BTA_GATTS_MAX_APP_NUM; i ++) { + if (p_cb->rcb[i].in_use) { GATT_Deregister(p_cb->rcb[i].gatt_if); } } memset(p_cb, 0, sizeof(tBTA_GATTS_CB)); - } - else - { + } else { APPL_TRACE_ERROR("GATTS not enabled"); } } @@ -187,17 +175,13 @@ void bta_gatts_register(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg) tBTA_GATT_STATUS status = BTA_GATT_OK; UINT8 i, first_unuse = 0xff; - if (p_cb->enabled == FALSE) - { + if (p_cb->enabled == FALSE) { bta_gatts_enable(p_cb); } - for (i = 0; i < BTA_GATTS_MAX_APP_NUM; i ++) - { - if (p_cb->rcb[i].in_use) - { - if (bta_gatts_uuid_compare(p_cb->rcb[i].app_uuid, p_msg->api_reg.app_uuid)) - { + for (i = 0; i < BTA_GATTS_MAX_APP_NUM; i ++) { + if (p_cb->rcb[i].in_use) { + if (bta_gatts_uuid_compare(p_cb->rcb[i].app_uuid, p_msg->api_reg.app_uuid)) { APPL_TRACE_ERROR("application already registered.\n"); status = BTA_GATT_DUP_REG; break; @@ -205,12 +189,9 @@ void bta_gatts_register(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg) } } - if (status == BTA_GATT_OK) - { - for (i = 0; i < BTA_GATTS_MAX_APP_NUM; i ++) - { - if (first_unuse == 0xff && !p_cb->rcb[i].in_use) - { + if (status == BTA_GATT_OK) { + for (i = 0; i < BTA_GATTS_MAX_APP_NUM; i ++) { + if (first_unuse == 0xff && !p_cb->rcb[i].in_use) { first_unuse = i; break; } @@ -220,48 +201,40 @@ void bta_gatts_register(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg) // btla-specific ++ memcpy(&cb_data.reg_oper.uuid, &p_msg->api_reg.app_uuid, sizeof(tBT_UUID)); // btla-specific -- - if (first_unuse != 0xff) - { + if (first_unuse != 0xff) { APPL_TRACE_VERBOSE("register application first_unuse rcb_idx = %d", first_unuse); p_cb->rcb[first_unuse].in_use = TRUE; p_cb->rcb[first_unuse].p_cback = p_msg->api_reg.p_cback; memcpy(&p_cb->rcb[first_unuse].app_uuid, &p_msg->api_reg.app_uuid, sizeof(tBT_UUID)); cb_data.reg_oper.server_if = - p_cb->rcb[first_unuse].gatt_if = - GATT_Register(&p_msg->api_reg.app_uuid, &bta_gatts_cback); - if ( !p_cb->rcb[first_unuse].gatt_if) - { + p_cb->rcb[first_unuse].gatt_if = + GATT_Register(&p_msg->api_reg.app_uuid, &bta_gatts_cback); + if ( !p_cb->rcb[first_unuse].gatt_if) { status = BTA_GATT_NO_RESOURCES; - } - else - { + } else { if ((p_buf = - (tBTA_GATTS_INT_START_IF *) GKI_getbuf(sizeof(tBTA_GATTS_INT_START_IF))) != NULL) - { + (tBTA_GATTS_INT_START_IF *) GKI_getbuf(sizeof(tBTA_GATTS_INT_START_IF))) != NULL) { p_buf->hdr.event = BTA_GATTS_INT_START_IF_EVT; p_buf->server_if = p_cb->rcb[first_unuse].gatt_if; bta_sys_sendmsg(p_buf); - } - else - { + } else { status = BTA_GATT_NO_RESOURCES; memset( &p_cb->rcb[first_unuse], 0 , sizeof(tBTA_GATTS_RCB)); } } - } - else - { + } else { status = BTA_GATT_NO_RESOURCES; } } cb_data.reg_oper.status = status; - if (p_msg->api_reg.p_cback) + if (p_msg->api_reg.p_cback) { (*p_msg->api_reg.p_cback)(BTA_GATTS_REG_EVT, &cb_data); + } - LOG_ERROR("status=%x\n",status); + LOG_ERROR("status=%x\n", status); } @@ -278,14 +251,11 @@ void bta_gatts_start_if(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg) { UNUSED(p_cb); - if (bta_gatts_find_app_rcb_by_app_if(p_msg->int_start_if.server_if)) - { + if (bta_gatts_find_app_rcb_by_app_if(p_msg->int_start_if.server_if)) { GATT_StartIf(p_msg->int_start_if.server_if); - } - else - { + } else { APPL_TRACE_ERROR("Unable to start app.: Unknown interface =%d", - p_msg->int_start_if.server_if ); + p_msg->int_start_if.server_if ); } } /******************************************************************************* @@ -307,10 +277,8 @@ void bta_gatts_deregister(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg) cb_data.reg_oper.server_if = p_msg->api_dereg.server_if; cb_data.reg_oper.status = status; - for (i = 0; i < BTA_GATTS_MAX_APP_NUM; i ++) - { - if (p_cb->rcb[i].in_use && p_cb->rcb[i].gatt_if == p_msg->api_dereg.server_if) - { + for (i = 0; i < BTA_GATTS_MAX_APP_NUM; i ++) { + if (p_cb->rcb[i].in_use && p_cb->rcb[i].gatt_if == p_msg->api_dereg.server_if) { p_cback = p_cb->rcb[i].p_cback; status = BTA_GATT_OK; @@ -324,12 +292,9 @@ void bta_gatts_deregister(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg) } } - if (p_cback) - { + if (p_cback) { (*p_cback)(BTA_GATTS_DEREG_EVT, &cb_data); - } - else - { + } else { APPL_TRACE_ERROR("application not registered."); } } @@ -342,7 +307,7 @@ void bta_gatts_deregister(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg) ** Returns none. ** *******************************************************************************/ -void bta_gatts_create_srvc(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg) +void bta_gatts_create_srvc(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg) { UINT8 rcb_idx; tBTA_GATTS cb_data; @@ -355,10 +320,8 @@ void bta_gatts_create_srvc(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg) APPL_TRACE_DEBUG("create service rcb_idx = %d", rcb_idx); - if (rcb_idx != BTA_GATTS_INVALID_APP) - { - if ((srvc_idx = bta_gatts_alloc_srvc_cb(p_cb, rcb_idx)) != BTA_GATTS_INVALID_APP) - { + if (rcb_idx != BTA_GATTS_INVALID_APP) { + if ((srvc_idx = bta_gatts_alloc_srvc_cb(p_cb, rcb_idx)) != BTA_GATTS_INVALID_APP) { /* create the service now */ service_id = GATTS_CreateService (p_cb->rcb[rcb_idx].gatt_if, &p_msg->api_create_svc.service_uuid, @@ -366,10 +329,9 @@ void bta_gatts_create_srvc(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg) p_msg->api_create_svc.num_handle, p_msg->api_create_svc.is_pri); - if (service_id != 0) - { + if (service_id != 0) { memcpy(&p_cb->srvc_cb[srvc_idx].service_uuid, - &p_msg->api_create_svc.service_uuid, sizeof(tBT_UUID)); + &p_msg->api_create_svc.service_uuid, sizeof(tBT_UUID)); p_cb->srvc_cb[srvc_idx].service_id = service_id; p_cb->srvc_cb[srvc_idx].inst_num = p_msg->api_create_svc.inst; p_cb->srvc_cb[srvc_idx].idx = srvc_idx; @@ -380,23 +342,20 @@ void bta_gatts_create_srvc(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg) cb_data.create.is_primary = p_msg->api_create_svc.is_pri; // btla-specific -- cb_data.create.server_if = p_cb->rcb[rcb_idx].gatt_if; - } - else - { + } else { cb_data.status = BTA_GATT_ERROR; memset(&p_cb->srvc_cb[srvc_idx], 0, sizeof(tBTA_GATTS_SRVC_CB)); APPL_TRACE_ERROR("service creation failed."); } // btla-specific ++ memcpy(&cb_data.create.uuid, &p_msg->api_create_svc.service_uuid, sizeof(tBT_UUID)); - cb_data.create.svc_instance= p_msg->api_create_svc.inst; + cb_data.create.svc_instance = p_msg->api_create_svc.inst; // btla-specific -- } - if (p_cb->rcb[rcb_idx].p_cback) + if (p_cb->rcb[rcb_idx].p_cback) { (* p_cb->rcb[rcb_idx].p_cback)(BTA_GATTS_CREATE_EVT, &cb_data); - } - else /* application not registered */ - { + } + } else { /* application not registered */ APPL_TRACE_ERROR("Application not registered"); } } @@ -409,7 +368,7 @@ void bta_gatts_create_srvc(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg) ** Returns none. ** *******************************************************************************/ -void bta_gatts_add_include_srvc(tBTA_GATTS_SRVC_CB *p_srvc_cb,tBTA_GATTS_DATA * p_msg) +void bta_gatts_add_include_srvc(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA *p_msg) { tBTA_GATTS_RCB *p_rcb = &bta_gatts_cb.rcb[p_srvc_cb->rcb_idx]; UINT16 attr_id = 0; @@ -422,17 +381,15 @@ void bta_gatts_add_include_srvc(tBTA_GATTS_SRVC_CB *p_srvc_cb,tBTA_GATTS_DATA * cb_data.add_result.service_id = p_msg->api_add_incl_srvc.hdr.layer_specific; cb_data.add_result.attr_id = attr_id; - if (attr_id) - { + if (attr_id) { cb_data.add_result.status = BTA_GATT_OK; - } - else - { + } else { cb_data.add_result.status = BTA_GATT_ERROR; } - if (p_rcb->p_cback) + if (p_rcb->p_cback) { (*p_rcb->p_cback)(BTA_GATTS_ADD_INCL_SRVC_EVT, &cb_data); + } } /******************************************************************************* ** @@ -443,7 +400,7 @@ void bta_gatts_add_include_srvc(tBTA_GATTS_SRVC_CB *p_srvc_cb,tBTA_GATTS_DATA * ** Returns none. ** *******************************************************************************/ -void bta_gatts_add_char(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p_msg) +void bta_gatts_add_char(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA *p_msg) { tBTA_GATTS_RCB *p_rcb = &bta_gatts_cb.rcb[p_srvc_cb->rcb_idx]; UINT16 attr_id = 0; @@ -460,17 +417,15 @@ void bta_gatts_add_char(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p_msg) memcpy(&cb_data.add_result.char_uuid, &p_msg->api_add_char.char_uuid, sizeof(tBT_UUID)); // btla-specific -- - if (attr_id) - { + if (attr_id) { cb_data.add_result.status = BTA_GATT_OK; - } - else - { + } else { cb_data.add_result.status = BTA_GATT_ERROR; } - if (p_rcb->p_cback) + if (p_rcb->p_cback) { (*p_rcb->p_cback)(BTA_GATTS_ADD_CHAR_EVT, &cb_data); + } } /******************************************************************************* ** @@ -481,15 +436,15 @@ void bta_gatts_add_char(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p_msg) ** Returns none. ** *******************************************************************************/ -void bta_gatts_add_char_descr(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p_msg) +void bta_gatts_add_char_descr(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA *p_msg) { tBTA_GATTS_RCB *p_rcb = &bta_gatts_cb.rcb[p_srvc_cb->rcb_idx]; UINT16 attr_id = 0; tBTA_GATTS cb_data; attr_id = GATTS_AddCharDescriptor(p_msg->api_add_char_descr.hdr.layer_specific, - p_msg->api_add_char_descr.perm, - &p_msg->api_add_char_descr.descr_uuid); + p_msg->api_add_char_descr.perm, + &p_msg->api_add_char_descr.descr_uuid); cb_data.add_result.server_if = p_rcb->gatt_if; cb_data.add_result.service_id = p_msg->api_add_incl_srvc.hdr.layer_specific; @@ -498,17 +453,15 @@ void bta_gatts_add_char_descr(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p memcpy(&cb_data.add_result.char_uuid, &p_msg->api_add_char_descr.descr_uuid, sizeof(tBT_UUID)); // btla-specific -- - if (attr_id) - { + if (attr_id) { cb_data.add_result.status = BTA_GATT_OK; - } - else - { + } else { cb_data.add_result.status = BTA_GATT_ERROR; } - if (p_rcb->p_cback) + if (p_rcb->p_cback) { (*p_rcb->p_cback)(BTA_GATTS_ADD_CHAR_DESCR_EVT, &cb_data); + } } /******************************************************************************* @@ -520,7 +473,7 @@ void bta_gatts_add_char_descr(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p ** Returns none. ** *******************************************************************************/ -void bta_gatts_delete_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p_msg) +void bta_gatts_delete_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA *p_msg) { tBTA_GATTS_RCB *p_rcb = &bta_gatts_cb.rcb[p_srvc_cb->rcb_idx]; tBTA_GATTS cb_data; @@ -530,18 +483,16 @@ void bta_gatts_delete_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p if (GATTS_DeleteService(p_rcb->gatt_if, &p_srvc_cb->service_uuid, - p_srvc_cb->inst_num)) - { + p_srvc_cb->inst_num)) { cb_data.srvc_oper.status = BTA_GATT_OK; memset(p_srvc_cb, 0, sizeof(tBTA_GATTS_SRVC_CB)); - } - else - { + } else { cb_data.srvc_oper.status = BTA_GATT_ERROR; } - if (p_rcb->p_cback) + if (p_rcb->p_cback) { (*p_rcb->p_cback)(BTA_GATTS_DELELTE_EVT, &cb_data); + } } /******************************************************************************* @@ -553,7 +504,7 @@ void bta_gatts_delete_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p ** Returns none. ** *******************************************************************************/ -void bta_gatts_start_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p_msg) +void bta_gatts_start_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA *p_msg) { tBTA_GATTS_RCB *p_rcb = &bta_gatts_cb.rcb[p_srvc_cb->rcb_idx]; tBTA_GATTS cb_data; @@ -563,18 +514,16 @@ void bta_gatts_start_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p_ if (GATTS_StartService(p_rcb->gatt_if, p_srvc_cb->service_id, - p_msg->api_start.transport) == GATT_SUCCESS) - { + p_msg->api_start.transport) == GATT_SUCCESS) { APPL_TRACE_DEBUG("bta_gatts_start_service service_id= %d", p_srvc_cb->service_id); cb_data.srvc_oper.status = BTA_GATT_OK; - } - else - { + } else { cb_data.srvc_oper.status = BTA_GATT_ERROR; } - if (p_rcb->p_cback) + if (p_rcb->p_cback) { (*p_rcb->p_cback)(BTA_GATTS_START_EVT, &cb_data); + } } /******************************************************************************* @@ -586,7 +535,7 @@ void bta_gatts_start_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p_ ** Returns none. ** *******************************************************************************/ -void bta_gatts_stop_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p_msg) +void bta_gatts_stop_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA *p_msg) { tBTA_GATTS_RCB *p_rcb = &bta_gatts_cb.rcb[p_srvc_cb->rcb_idx]; tBTA_GATTS cb_data; @@ -598,8 +547,9 @@ void bta_gatts_stop_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p_m cb_data.srvc_oper.status = BTA_GATT_OK; APPL_TRACE_ERROR("bta_gatts_stop_service service_id= %d", p_srvc_cb->service_id); - if (p_rcb->p_cback) + if (p_rcb->p_cback) { (*p_rcb->p_cback)(BTA_GATTS_STOP_EVT, &cb_data); + } } /******************************************************************************* @@ -611,15 +561,14 @@ void bta_gatts_stop_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p_m ** Returns none. ** *******************************************************************************/ -void bta_gatts_send_rsp (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg) +void bta_gatts_send_rsp (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg) { UNUSED(p_cb); if (GATTS_SendRsp (p_msg->api_rsp.hdr.layer_specific, - p_msg->api_rsp.trans_id, - p_msg->api_rsp.status, - (tGATTS_RSP *)p_msg->api_rsp.p_rsp) != GATT_SUCCESS) - { + p_msg->api_rsp.trans_id, + p_msg->api_rsp.status, + (tGATTS_RSP *)p_msg->api_rsp.p_rsp) != GATT_SUCCESS) { APPL_TRACE_ERROR("Sending response failed\n"); } @@ -633,7 +582,7 @@ void bta_gatts_send_rsp (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg) ** Returns none. ** *******************************************************************************/ -void bta_gatts_indicate_handle (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg) +void bta_gatts_indicate_handle (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg) { tBTA_GATTS_SRVC_CB *p_srvc_cb; tBTA_GATTS_RCB *p_rcb = NULL; @@ -645,11 +594,9 @@ void bta_gatts_indicate_handle (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg) p_srvc_cb = bta_gatts_find_srvc_cb_by_attr_id (p_cb, p_msg->api_indicate.attr_id); - if (p_srvc_cb ) - { + if (p_srvc_cb ) { if (GATT_GetConnectionInfor(p_msg->api_indicate.hdr.layer_specific, - &gatt_if, remote_bda, &transport)) - { + &gatt_if, remote_bda, &transport)) { p_rcb = bta_gatts_find_app_rcb_by_app_if(gatt_if); if (p_msg->api_indicate.need_confirm) @@ -665,31 +612,25 @@ void bta_gatts_indicate_handle (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg) p_msg->api_indicate.value); /* if over BR_EDR, inform PM for mode change */ - if (transport == BTA_TRANSPORT_BR_EDR) - { + if (transport == BTA_TRANSPORT_BR_EDR) { bta_sys_busy(BTA_ID_GATTS, BTA_ALL_APP_ID, remote_bda); bta_sys_idle(BTA_ID_GATTS, BTA_ALL_APP_ID, remote_bda); } - } - else - { + } else { APPL_TRACE_ERROR("Unknown connection ID: %d fail sending notification", - p_msg->api_indicate.hdr.layer_specific); + p_msg->api_indicate.hdr.layer_specific); } if ((status != GATT_SUCCESS || !p_msg->api_indicate.need_confirm) && - p_rcb && p_cb->rcb[p_srvc_cb->rcb_idx].p_cback) - { + p_rcb && p_cb->rcb[p_srvc_cb->rcb_idx].p_cback) { cb_data.req_data.status = status; cb_data.req_data.conn_id = p_msg->api_indicate.hdr.layer_specific; (*p_rcb->p_cback)(BTA_GATTS_CONF_EVT, &cb_data); } - } - else - { + } else { APPL_TRACE_ERROR("Not an registered servce attribute ID: 0x%04x", - p_msg->api_indicate.attr_id); + p_msg->api_indicate.attr_id); } } @@ -703,35 +644,31 @@ void bta_gatts_indicate_handle (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg) ** Returns none. ** *******************************************************************************/ -void bta_gatts_open (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg) +void bta_gatts_open (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg) { - tBTA_GATTS_RCB *p_rcb=NULL; - tBTA_GATT_STATUS status= BTA_GATT_ERROR; + tBTA_GATTS_RCB *p_rcb = NULL; + tBTA_GATT_STATUS status = BTA_GATT_ERROR; UINT16 conn_id; UNUSED(p_cb); - if ((p_rcb = bta_gatts_find_app_rcb_by_app_if(p_msg->api_open.server_if)) != NULL) - { + if ((p_rcb = bta_gatts_find_app_rcb_by_app_if(p_msg->api_open.server_if)) != NULL) { /* should always get the connection ID */ if (GATT_Connect(p_rcb->gatt_if, p_msg->api_open.remote_bda, - p_msg->api_open.is_direct, p_msg->api_open.transport)) - { + p_msg->api_open.is_direct, p_msg->api_open.transport)) { status = BTA_GATT_OK; if (GATT_GetConnIdIfConnected(p_rcb->gatt_if, p_msg->api_open.remote_bda, - &conn_id, p_msg->api_open.transport)) - { + &conn_id, p_msg->api_open.transport)) { status = BTA_GATT_ALREADY_OPEN; } } - } - else - { + } else { APPL_TRACE_ERROR("Inavlide server_if=%d", p_msg->api_open.server_if); } - if (p_rcb && p_rcb->p_cback) + if (p_rcb && p_rcb->p_cback) { (*p_rcb->p_cback)(BTA_GATTS_OPEN_EVT, (tBTA_GATTS *)&status); + } } /******************************************************************************* @@ -743,31 +680,26 @@ void bta_gatts_open (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg) ** Returns none. ** *******************************************************************************/ -void bta_gatts_cancel_open (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg) +void bta_gatts_cancel_open (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg) { tBTA_GATTS_RCB *p_rcb; - tBTA_GATT_STATUS status= BTA_GATT_ERROR; + tBTA_GATT_STATUS status = BTA_GATT_ERROR; UNUSED(p_cb); - if ((p_rcb = bta_gatts_find_app_rcb_by_app_if(p_msg->api_cancel_open.server_if)) != NULL) - { + if ((p_rcb = bta_gatts_find_app_rcb_by_app_if(p_msg->api_cancel_open.server_if)) != NULL) { if (!GATT_CancelConnect(p_rcb->gatt_if, p_msg->api_cancel_open.remote_bda, - p_msg->api_cancel_open.is_direct)) - { + p_msg->api_cancel_open.is_direct)) { APPL_TRACE_ERROR("bta_gatts_cancel_open failed for open request"); + } else { + status = BTA_GATT_OK; } - else - { - status= BTA_GATT_OK; - } - } - else - { + } else { APPL_TRACE_ERROR("Inavlide server_if=%d", p_msg->api_cancel_open.server_if); } - if (p_rcb && p_rcb->p_cback) + if (p_rcb && p_rcb->p_cback) { (*p_rcb->p_cback)(BTA_GATTS_CANCEL_OPEN_EVT, (tBTA_GATTS *)&status); + } } /******************************************************************************* ** @@ -778,39 +710,33 @@ void bta_gatts_cancel_open (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg) ** Returns none. ** *******************************************************************************/ -void bta_gatts_close (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg) +void bta_gatts_close (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg) { tBTA_GATTS_RCB *p_rcb; - tBTA_GATT_STATUS status= BTA_GATT_ERROR; + tBTA_GATT_STATUS status = BTA_GATT_ERROR; tGATT_IF gatt_if; BD_ADDR remote_bda; tBTA_GATT_TRANSPORT transport; UNUSED(p_cb); - if (GATT_GetConnectionInfor(p_msg->hdr.layer_specific, &gatt_if, remote_bda, &transport)) - { - if (GATT_Disconnect(p_msg->hdr.layer_specific) != GATT_SUCCESS) - { + if (GATT_GetConnectionInfor(p_msg->hdr.layer_specific, &gatt_if, remote_bda, &transport)) { + if (GATT_Disconnect(p_msg->hdr.layer_specific) != GATT_SUCCESS) { APPL_TRACE_ERROR("bta_gatts_close fail conn_id=%d", p_msg->hdr.layer_specific); - } - else - { - status= BTA_GATT_OK; + } else { + status = BTA_GATT_OK; } p_rcb = bta_gatts_find_app_rcb_by_app_if(gatt_if); - if (p_rcb && p_rcb->p_cback) - { - if (transport == BTA_TRANSPORT_BR_EDR) - bta_sys_conn_close( BTA_ID_GATTS ,BTA_ALL_APP_ID, remote_bda); + if (p_rcb && p_rcb->p_cback) { + if (transport == BTA_TRANSPORT_BR_EDR) { + bta_sys_conn_close( BTA_ID_GATTS , BTA_ALL_APP_ID, remote_bda); + } (*p_rcb->p_cback)(BTA_GATTS_CLOSE_EVT, (tBTA_GATTS *)&status); } - } - else - { + } else { APPL_TRACE_ERROR("Unknown connection ID: %d", p_msg->hdr.layer_specific); } @@ -824,7 +750,7 @@ void bta_gatts_close (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg) ** Returns none. ** *******************************************************************************/ -void bta_gatts_listen(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg) +void bta_gatts_listen(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg) { tBTA_GATTS_RCB *p_rcb = bta_gatts_find_app_rcb_by_app_if(p_msg->api_listen.server_if); tBTA_GATTS cb_data; @@ -833,22 +759,21 @@ void bta_gatts_listen(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg) cb_data.reg_oper.status = BTA_GATT_OK; cb_data.reg_oper.server_if = p_msg->api_listen.server_if; - if (p_rcb == NULL) - { + if (p_rcb == NULL) { APPL_TRACE_ERROR("Unknown GATTS application"); return; } if (!GATT_Listen(p_msg->api_listen.server_if, p_msg->api_listen.start, - p_msg->api_listen.remote_bda)) - { + p_msg->api_listen.remote_bda)) { cb_data.status = BTA_GATT_ERROR; APPL_TRACE_ERROR("bta_gatts_listen Listen failed"); } - if (p_rcb->p_cback) + if (p_rcb->p_cback) { (*p_rcb->p_cback)(BTA_GATTS_LISTEN_EVT, &cb_data); + } } /******************************************************************************* @@ -861,8 +786,8 @@ void bta_gatts_listen(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg) ** *******************************************************************************/ static void bta_gatts_send_request_cback (UINT16 conn_id, - UINT32 trans_id, - tGATTS_REQ_TYPE req_type, tGATTS_DATA *p_data) + UINT32 trans_id, + tGATTS_REQ_TYPE req_type, tGATTS_DATA *p_data) { tBTA_GATTS cb_data; tBTA_GATTS_RCB *p_rcb; @@ -871,18 +796,15 @@ static void bta_gatts_send_request_cback (UINT16 conn_id, memset(&cb_data, 0 , sizeof(tBTA_GATTS)); - if (GATT_GetConnectionInfor(conn_id, &gatt_if, cb_data.req_data.remote_bda, &transport)) - { + if (GATT_GetConnectionInfor(conn_id, &gatt_if, cb_data.req_data.remote_bda, &transport)) { p_rcb = bta_gatts_find_app_rcb_by_app_if(gatt_if); APPL_TRACE_DEBUG ("bta_gatts_send_request_cback conn_id=%d trans_id=%d req_type=%d", - conn_id, trans_id, req_type); + conn_id, trans_id, req_type); - if (p_rcb && p_rcb->p_cback) - { + if (p_rcb && p_rcb->p_cback) { /* if over BR_EDR, inform PM for mode change */ - if (transport == BTA_TRANSPORT_BR_EDR) - { + if (transport == BTA_TRANSPORT_BR_EDR) { bta_sys_busy(BTA_ID_GATTS, BTA_ALL_APP_ID, cb_data.req_data.remote_bda); bta_sys_idle(BTA_ID_GATTS, BTA_ALL_APP_ID, cb_data.req_data.remote_bda); } @@ -892,14 +814,10 @@ static void bta_gatts_send_request_cback (UINT16 conn_id, cb_data.req_data.p_data = (tBTA_GATTS_REQ_DATA *)p_data; (*p_rcb->p_cback)(req_type, &cb_data); - } - else - { + } else { APPL_TRACE_ERROR("connection request on gatt_if[%d] is not interested", gatt_if); } - } - else - { + } else { APPL_TRACE_ERROR("request received on unknown connectino ID: %d", conn_id); } } @@ -918,13 +836,13 @@ static void bta_gatts_conn_cback (tGATT_IF gatt_if, BD_ADDR bda, UINT16 conn_id, tGATT_TRANSPORT transport) { tBTA_GATTS cb_data; - UINT8 evt = connected ? BTA_GATTS_CONNECT_EVT: BTA_GATTS_DISCONNECT_EVT; + UINT8 evt = connected ? BTA_GATTS_CONNECT_EVT : BTA_GATTS_DISCONNECT_EVT; tBTA_GATTS_RCB *p_reg; APPL_TRACE_DEBUG ("bta_gatts_conn_cback gatt_if=%d conn_id=%d connected=%d reason = 0x%04d", - gatt_if, conn_id, connected, reason); + gatt_if, conn_id, connected, reason); APPL_TRACE_DEBUG("bta_gatts_conn_cback bda :%02x-%02x-%02x-%02x-%02x-%02x ", - bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]); + bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]); bt_bdaddr_t bdaddr; bdcpy(bdaddr.address, bda); @@ -936,15 +854,14 @@ static void bta_gatts_conn_cback (tGATT_IF gatt_if, BD_ADDR bda, UINT16 conn_id, */ p_reg = bta_gatts_find_app_rcb_by_app_if(gatt_if); - if (p_reg && p_reg->p_cback) - { + if (p_reg && p_reg->p_cback) { /* there is no RM for GATT */ - if (transport == BTA_TRANSPORT_BR_EDR) - { - if (connected) + if (transport == BTA_TRANSPORT_BR_EDR) { + if (connected) { bta_sys_conn_open(BTA_ID_GATTS, BTA_ALL_APP_ID, bda); - else - bta_sys_conn_close( BTA_ID_GATTS ,BTA_ALL_APP_ID, bda); + } else { + bta_sys_conn_close( BTA_ID_GATTS , BTA_ALL_APP_ID, bda); + } } cb_data.conn.conn_id = conn_id; @@ -953,10 +870,8 @@ static void bta_gatts_conn_cback (tGATT_IF gatt_if, BD_ADDR bda, UINT16 conn_id, cb_data.conn.transport = transport; memcpy(cb_data.conn.remote_bda, bda, BD_ADDR_LEN); (*p_reg->p_cback)(evt, &cb_data); - } - else - { - APPL_TRACE_ERROR("bta_gatts_conn_cback server_if=%d not found",gatt_if); + } else { + APPL_TRACE_ERROR("bta_gatts_conn_cback server_if=%d not found", gatt_if); } } @@ -976,12 +891,10 @@ static void bta_gatts_cong_cback (UINT16 conn_id, BOOLEAN congested) tBTA_GATT_TRANSPORT transport; tBTA_GATTS cb_data; - if (GATT_GetConnectionInfor(conn_id, &gatt_if, cb_data.req_data.remote_bda, &transport)) - { + if (GATT_GetConnectionInfor(conn_id, &gatt_if, cb_data.req_data.remote_bda, &transport)) { p_rcb = bta_gatts_find_app_rcb_by_app_if(gatt_if); - if (p_rcb && p_rcb->p_cback) - { + if (p_rcb && p_rcb->p_cback) { cb_data.congest.conn_id = conn_id; cb_data.congest.congested = congested; diff --git a/components/bt/bluedroid/bta/gatt/bta_gatts_api.c b/components/bt/bluedroid/bta/gatt/bta_gatts_api.c old mode 100755 new mode 100644 index 7f0954e4fa..757ab8ff08 --- a/components/bt/bluedroid/bta/gatt/bta_gatts_api.c +++ b/components/bt/bluedroid/bta/gatt/bta_gatts_api.c @@ -36,8 +36,7 @@ ** Constants *****************************************************************************/ -static const tBTA_SYS_REG bta_gatts_reg = -{ +static const tBTA_SYS_REG bta_gatts_reg = { bta_gatts_hdl_event, BTA_GATTS_Disable }; @@ -57,14 +56,12 @@ void BTA_GATTS_Disable(void) { BT_HDR *p_buf; - if (bta_sys_is_register(BTA_ID_GATTS) == FALSE) - { + if (bta_sys_is_register(BTA_ID_GATTS) == FALSE) { APPL_TRACE_WARNING("GATTS Module not enabled/already disabled"); return; } - if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) - { + if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) { p_buf->event = BTA_GATTS_API_DISABLE_EVT; bta_sys_sendmsg(p_buf); } @@ -90,17 +87,16 @@ void BTA_GATTS_AppRegister(tBT_UUID *p_app_uuid, tBTA_GATTS_CBACK *p_cback) tBTA_GATTS_API_REG *p_buf; /* register with BTA system manager */ - if (bta_sys_is_register(BTA_ID_GATTS) == FALSE) - { + if (bta_sys_is_register(BTA_ID_GATTS) == FALSE) { bta_sys_register(BTA_ID_GATTS, &bta_gatts_reg); } - if ((p_buf = (tBTA_GATTS_API_REG *) GKI_getbuf(sizeof(tBTA_GATTS_API_REG))) != NULL) - { + if ((p_buf = (tBTA_GATTS_API_REG *) GKI_getbuf(sizeof(tBTA_GATTS_API_REG))) != NULL) { p_buf->hdr.event = BTA_GATTS_API_REG_EVT; - if (p_app_uuid != NULL) + if (p_app_uuid != NULL) { memcpy(&p_buf->app_uuid, p_app_uuid, sizeof(tBT_UUID)); + } p_buf->p_cback = p_cback; bta_sys_sendmsg(p_buf); @@ -125,8 +121,7 @@ void BTA_GATTS_AppDeregister(tBTA_GATTS_IF server_if) { tBTA_GATTS_API_DEREG *p_buf; - if ((p_buf = (tBTA_GATTS_API_DEREG *) GKI_getbuf(sizeof(tBTA_GATTS_API_DEREG))) != NULL) - { + if ((p_buf = (tBTA_GATTS_API_DEREG *) GKI_getbuf(sizeof(tBTA_GATTS_API_DEREG))) != NULL) { p_buf->hdr.event = BTA_GATTS_API_DEREG_EVT; p_buf->server_if = server_if; @@ -159,15 +154,14 @@ void BTA_GATTS_CreateService(tBTA_GATTS_IF server_if, tBT_UUID *p_service_uuid, { tBTA_GATTS_API_CREATE_SRVC *p_buf; - if ((p_buf = (tBTA_GATTS_API_CREATE_SRVC *) GKI_getbuf(sizeof(tBTA_GATTS_API_CREATE_SRVC))) != NULL) - { + if ((p_buf = (tBTA_GATTS_API_CREATE_SRVC *) GKI_getbuf(sizeof(tBTA_GATTS_API_CREATE_SRVC))) != NULL) { p_buf->hdr.event = BTA_GATTS_API_CREATE_SRVC_EVT; p_buf->server_if = server_if; p_buf->inst = inst; memcpy(&p_buf->service_uuid, p_service_uuid, sizeof(tBT_UUID)); p_buf->num_handle = num_handle; - p_buf->is_pri = is_primary; + p_buf->is_pri = is_primary; bta_sys_sendmsg(p_buf); } @@ -193,9 +187,8 @@ void BTA_GATTS_AddIncludeService(UINT16 service_id, UINT16 included_service_id) tBTA_GATTS_API_ADD_INCL_SRVC *p_buf; if ((p_buf = - (tBTA_GATTS_API_ADD_INCL_SRVC *) GKI_getbuf(sizeof(tBTA_GATTS_API_ADD_INCL_SRVC))) - != NULL) - { + (tBTA_GATTS_API_ADD_INCL_SRVC *) GKI_getbuf(sizeof(tBTA_GATTS_API_ADD_INCL_SRVC))) + != NULL) { p_buf->hdr.event = BTA_GATTS_API_ADD_INCL_SRVC_EVT; p_buf->hdr.layer_specific = service_id; @@ -226,8 +219,7 @@ void BTA_GATTS_AddCharacteristic (UINT16 service_id, tBT_UUID *p_char_uuid, { tBTA_GATTS_API_ADD_CHAR *p_buf; - if ((p_buf = (tBTA_GATTS_API_ADD_CHAR *) GKI_getbuf(sizeof(tBTA_GATTS_API_ADD_CHAR))) != NULL) - { + if ((p_buf = (tBTA_GATTS_API_ADD_CHAR *) GKI_getbuf(sizeof(tBTA_GATTS_API_ADD_CHAR))) != NULL) { memset(p_buf, 0, sizeof(tBTA_GATTS_API_ADD_CHAR)); p_buf->hdr.event = BTA_GATTS_API_ADD_CHAR_EVT; @@ -235,8 +227,7 @@ void BTA_GATTS_AddCharacteristic (UINT16 service_id, tBT_UUID *p_char_uuid, p_buf->perm = perm; p_buf->property = property; - if (p_char_uuid) - { + if (p_char_uuid) { memcpy(&p_buf->char_uuid, p_char_uuid, sizeof(tBT_UUID)); } bta_sys_sendmsg(p_buf); @@ -262,22 +253,20 @@ void BTA_GATTS_AddCharacteristic (UINT16 service_id, tBT_UUID *p_char_uuid, *******************************************************************************/ void BTA_GATTS_AddCharDescriptor (UINT16 service_id, tBTA_GATT_PERM perm, - tBT_UUID * p_descr_uuid) + tBT_UUID *p_descr_uuid) { tBTA_GATTS_API_ADD_DESCR *p_buf; UINT16 len = sizeof(tBTA_GATTS_API_ADD_DESCR); - if ((p_buf = (tBTA_GATTS_API_ADD_DESCR *) GKI_getbuf(len)) != NULL) - { + if ((p_buf = (tBTA_GATTS_API_ADD_DESCR *) GKI_getbuf(len)) != NULL) { memset(p_buf, 0, len); p_buf->hdr.event = BTA_GATTS_API_ADD_DESCR_EVT; p_buf->hdr.layer_specific = service_id; p_buf->perm = perm; - if (p_descr_uuid) - { + if (p_descr_uuid) { memcpy(&p_buf->descr_uuid, p_descr_uuid, sizeof(tBT_UUID)); } bta_sys_sendmsg(p_buf); @@ -302,8 +291,7 @@ void BTA_GATTS_DeleteService(UINT16 service_id) { BT_HDR *p_buf; - if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) - { + if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) { p_buf->event = BTA_GATTS_API_DEL_SRVC_EVT; p_buf->layer_specific = service_id; @@ -330,8 +318,7 @@ void BTA_GATTS_StartService(UINT16 service_id, tBTA_GATT_TRANSPORT sup_transpor { tBTA_GATTS_API_START *p_buf; - if ((p_buf = (tBTA_GATTS_API_START *) GKI_getbuf(sizeof(tBTA_GATTS_API_START))) != NULL) - { + if ((p_buf = (tBTA_GATTS_API_START *) GKI_getbuf(sizeof(tBTA_GATTS_API_START))) != NULL) { p_buf->hdr.event = BTA_GATTS_API_START_SRVC_EVT; p_buf->hdr.layer_specific = service_id; @@ -357,8 +344,7 @@ void BTA_GATTS_StopService(UINT16 service_id) { BT_HDR *p_buf; - if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) - { + if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) { p_buf->event = BTA_GATTS_API_STOP_SRVC_EVT; p_buf->layer_specific = service_id; @@ -375,7 +361,7 @@ void BTA_GATTS_StopService(UINT16 service_id) ** Description This function is called to read a characteristics descriptor. ** ** Parameters bda - remote device bd address to indicate. -** attr_id - attribute ID to indicate. +** attr_id - attribute ID to indicate. ** data_len - indicate data length. ** p_data: data to indicate. ** need_confirm - if this indication expects a confirmation or not. @@ -389,8 +375,7 @@ void BTA_GATTS_HandleValueIndication (UINT16 conn_id, UINT16 attr_id, UINT16 dat tBTA_GATTS_API_INDICATION *p_buf; UINT16 len = sizeof(tBTA_GATTS_API_INDICATION); - if ((p_buf = (tBTA_GATTS_API_INDICATION *) GKI_getbuf(len)) != NULL) - { + if ((p_buf = (tBTA_GATTS_API_INDICATION *) GKI_getbuf(len)) != NULL) { memset(p_buf, 0, len); p_buf->hdr.event = BTA_GATTS_API_INDICATION_EVT; @@ -398,8 +383,7 @@ void BTA_GATTS_HandleValueIndication (UINT16 conn_id, UINT16 attr_id, UINT16 dat p_buf->attr_id = attr_id; p_buf->need_confirm = need_confirm; - if (data_len > 0 && p_data != NULL) - { + if (data_len > 0 && p_data != NULL) { p_buf->len = data_len; memcpy(p_buf->value, p_data, data_len); @@ -429,8 +413,7 @@ void BTA_GATTS_SendRsp (UINT16 conn_id, UINT32 trans_id, tBTA_GATTS_API_RSP *p_buf; UINT16 len = sizeof(tBTA_GATTS_API_RSP) + sizeof(tBTA_GATTS_RSP); - if ((p_buf = (tBTA_GATTS_API_RSP *) GKI_getbuf(len)) != NULL) - { + if ((p_buf = (tBTA_GATTS_API_RSP *) GKI_getbuf(len)) != NULL) { memset(p_buf, 0, len); p_buf->hdr.event = BTA_GATTS_API_RSP_EVT; @@ -438,8 +421,7 @@ void BTA_GATTS_SendRsp (UINT16 conn_id, UINT32 trans_id, p_buf->trans_id = trans_id; p_buf->status = status; - if (p_msg != NULL) - { + if (p_msg != NULL) { p_buf->p_rsp = (tBTA_GATTS_RSP *)(p_buf + 1); memcpy(p_buf->p_rsp, p_msg, sizeof(tBTA_GATTS_RSP)); } @@ -472,8 +454,7 @@ void BTA_GATTS_Open(tBTA_GATTS_IF server_if, BD_ADDR remote_bda, BOOLEAN is_dire { tBTA_GATTS_API_OPEN *p_buf; - if ((p_buf = (tBTA_GATTS_API_OPEN *) GKI_getbuf(sizeof(tBTA_GATTS_API_OPEN))) != NULL) - { + if ((p_buf = (tBTA_GATTS_API_OPEN *) GKI_getbuf(sizeof(tBTA_GATTS_API_OPEN))) != NULL) { p_buf->hdr.event = BTA_GATTS_API_OPEN_EVT; p_buf->server_if = server_if; p_buf->is_direct = is_direct; @@ -504,8 +485,7 @@ void BTA_GATTS_CancelOpen(tBTA_GATTS_IF server_if, BD_ADDR remote_bda, BOOLEAN i { tBTA_GATTS_API_CANCEL_OPEN *p_buf; - if ((p_buf = (tBTA_GATTS_API_CANCEL_OPEN *) GKI_getbuf(sizeof(tBTA_GATTS_API_CANCEL_OPEN))) != NULL) - { + if ((p_buf = (tBTA_GATTS_API_CANCEL_OPEN *) GKI_getbuf(sizeof(tBTA_GATTS_API_CANCEL_OPEN))) != NULL) { p_buf->hdr.event = BTA_GATTS_API_CANCEL_OPEN_EVT; p_buf->server_if = server_if; p_buf->is_direct = is_direct; @@ -530,8 +510,7 @@ void BTA_GATTS_Close(UINT16 conn_id) { BT_HDR *p_buf; - if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) - { + if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) { p_buf->event = BTA_GATTS_API_CLOSE_EVT; p_buf->layer_specific = conn_id; bta_sys_sendmsg(p_buf); @@ -558,20 +537,18 @@ void BTA_GATTS_Listen(tBTA_GATTS_IF server_if, BOOLEAN start, BD_ADDR_PTR target { tBTA_GATTS_API_LISTEN *p_buf; - if ((p_buf = (tBTA_GATTS_API_LISTEN *) GKI_getbuf((UINT16)(sizeof(tBTA_GATTS_API_LISTEN) + BD_ADDR_LEN))) != NULL) - { + if ((p_buf = (tBTA_GATTS_API_LISTEN *) GKI_getbuf((UINT16)(sizeof(tBTA_GATTS_API_LISTEN) + BD_ADDR_LEN))) != NULL) { p_buf->hdr.event = BTA_GATTS_API_LISTEN_EVT; p_buf->server_if = server_if; p_buf->start = start; - if (target_bda) - { - p_buf->remote_bda = (UINT8*)(p_buf + 1); + if (target_bda) { + p_buf->remote_bda = (UINT8 *)(p_buf + 1); memcpy(p_buf->remote_bda, target_bda, BD_ADDR_LEN); - } - else + } else { p_buf->remote_bda = NULL; + } bta_sys_sendmsg(p_buf); } diff --git a/components/bt/bluedroid/bta/gatt/bta_gatts_main.c b/components/bt/bluedroid/bta/gatt/bta_gatts_main.c old mode 100755 new mode 100644 index c682a85394..d59115d42d --- a/components/bt/bluedroid/bta/gatt/bta_gatts_main.c +++ b/components/bt/bluedroid/bta/gatt/bta_gatts_main.c @@ -35,8 +35,7 @@ typedef void (*tBTA_GATTS_SRVC_ACT)(tBTA_GATTS_SRVC_CB *p_rcb, tBTA_GATTS_DATA *p_data); /* service building action function list */ -const tBTA_GATTS_SRVC_ACT bta_gatts_srvc_build_act[] = -{ +const tBTA_GATTS_SRVC_ACT bta_gatts_srvc_build_act[] = { bta_gatts_add_include_srvc, bta_gatts_add_char, bta_gatts_add_char_descr, @@ -65,75 +64,71 @@ BOOLEAN bta_gatts_hdl_event(BT_HDR *p_msg) tBTA_GATTS_CB *p_cb = &bta_gatts_cb; tBTA_GATTS_SRVC_CB *p_srvc_cb = NULL; - switch (p_msg->event) - { - case BTA_GATTS_API_DISABLE_EVT: - bta_gatts_api_disable(p_cb); - break; + switch (p_msg->event) { + case BTA_GATTS_API_DISABLE_EVT: + bta_gatts_api_disable(p_cb); + break; - case BTA_GATTS_API_REG_EVT: - bta_gatts_register(p_cb, (tBTA_GATTS_DATA *) p_msg); - break; + case BTA_GATTS_API_REG_EVT: + bta_gatts_register(p_cb, (tBTA_GATTS_DATA *) p_msg); + break; - case BTA_GATTS_INT_START_IF_EVT: - bta_gatts_start_if(p_cb, (tBTA_GATTS_DATA *) p_msg); - break; + case BTA_GATTS_INT_START_IF_EVT: + bta_gatts_start_if(p_cb, (tBTA_GATTS_DATA *) p_msg); + break; - case BTA_GATTS_API_DEREG_EVT: - bta_gatts_deregister(p_cb, (tBTA_GATTS_DATA *) p_msg); - break; + case BTA_GATTS_API_DEREG_EVT: + bta_gatts_deregister(p_cb, (tBTA_GATTS_DATA *) p_msg); + break; - case BTA_GATTS_API_CREATE_SRVC_EVT: - bta_gatts_create_srvc(p_cb, (tBTA_GATTS_DATA *) p_msg); - break; + case BTA_GATTS_API_CREATE_SRVC_EVT: + bta_gatts_create_srvc(p_cb, (tBTA_GATTS_DATA *) p_msg); + break; - case BTA_GATTS_API_INDICATION_EVT: - bta_gatts_indicate_handle(p_cb,(tBTA_GATTS_DATA *) p_msg); - break; + case BTA_GATTS_API_INDICATION_EVT: + bta_gatts_indicate_handle(p_cb, (tBTA_GATTS_DATA *) p_msg); + break; - case BTA_GATTS_API_OPEN_EVT: - bta_gatts_open(p_cb,(tBTA_GATTS_DATA *) p_msg); - break; + case BTA_GATTS_API_OPEN_EVT: + bta_gatts_open(p_cb, (tBTA_GATTS_DATA *) p_msg); + break; - case BTA_GATTS_API_CANCEL_OPEN_EVT: - bta_gatts_cancel_open(p_cb,(tBTA_GATTS_DATA *) p_msg); - break; + case BTA_GATTS_API_CANCEL_OPEN_EVT: + bta_gatts_cancel_open(p_cb, (tBTA_GATTS_DATA *) p_msg); + break; - case BTA_GATTS_API_CLOSE_EVT: - bta_gatts_close(p_cb,(tBTA_GATTS_DATA *) p_msg); - break; + case BTA_GATTS_API_CLOSE_EVT: + bta_gatts_close(p_cb, (tBTA_GATTS_DATA *) p_msg); + break; - case BTA_GATTS_API_RSP_EVT: - bta_gatts_send_rsp(p_cb,(tBTA_GATTS_DATA *) p_msg); - break; + case BTA_GATTS_API_RSP_EVT: + bta_gatts_send_rsp(p_cb, (tBTA_GATTS_DATA *) p_msg); + break; - case BTA_GATTS_API_LISTEN_EVT: - bta_gatts_listen(p_cb,(tBTA_GATTS_DATA *) p_msg); - break; + case BTA_GATTS_API_LISTEN_EVT: + bta_gatts_listen(p_cb, (tBTA_GATTS_DATA *) p_msg); + break; - case BTA_GATTS_API_ADD_INCL_SRVC_EVT: - case BTA_GATTS_API_ADD_CHAR_EVT: - case BTA_GATTS_API_ADD_DESCR_EVT: - case BTA_GATTS_API_DEL_SRVC_EVT: - case BTA_GATTS_API_START_SRVC_EVT: - case BTA_GATTS_API_STOP_SRVC_EVT: + case BTA_GATTS_API_ADD_INCL_SRVC_EVT: + case BTA_GATTS_API_ADD_CHAR_EVT: + case BTA_GATTS_API_ADD_DESCR_EVT: + case BTA_GATTS_API_DEL_SRVC_EVT: + case BTA_GATTS_API_START_SRVC_EVT: + case BTA_GATTS_API_STOP_SRVC_EVT: - p_srvc_cb = bta_gatts_find_srvc_cb_by_srvc_id(p_cb, - ((tBTA_GATTS_DATA *)p_msg)->api_add_incl_srvc.hdr.layer_specific); + p_srvc_cb = bta_gatts_find_srvc_cb_by_srvc_id(p_cb, + ((tBTA_GATTS_DATA *)p_msg)->api_add_incl_srvc.hdr.layer_specific); - if (p_srvc_cb != NULL) - { - bta_gatts_srvc_build_act[p_msg->event - BTA_GATTS_API_ADD_INCL_SRVC_EVT](p_srvc_cb, (tBTA_GATTS_DATA *) p_msg); - } - else - { - APPL_TRACE_ERROR("service not created"); - } - break; + if (p_srvc_cb != NULL) { + bta_gatts_srvc_build_act[p_msg->event - BTA_GATTS_API_ADD_INCL_SRVC_EVT](p_srvc_cb, (tBTA_GATTS_DATA *) p_msg); + } else { + APPL_TRACE_ERROR("service not created"); + } + break; - default: - break; + default: + break; } diff --git a/components/bt/bluedroid/bta/gatt/bta_gatts_utils.c b/components/bt/bluedroid/bta/gatt/bta_gatts_utils.c old mode 100755 new mode 100644 index c5deef3024..b79bdd0bcb --- a/components/bt/bluedroid/bta/gatt/bta_gatts_utils.c +++ b/components/bt/bluedroid/bta/gatt/bta_gatts_utils.c @@ -33,7 +33,8 @@ #include "bta_gatts_int.h" static const UINT8 base_uuid[LEN_UUID_128] = {0xFB, 0x34, 0x9B, 0x5F, 0x80, 0x00, 0x00, 0x80, - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; /******************************************************************************* ** @@ -65,10 +66,8 @@ UINT8 bta_gatts_alloc_srvc_cb(tBTA_GATTS_CB *p_cb, UINT8 rcb_idx) { UINT8 i; - for (i = 0; i < BTA_GATTS_MAX_SRVC_NUM; i ++) - { - if (!p_cb->srvc_cb[i].in_use) - { + for (i = 0; i < BTA_GATTS_MAX_SRVC_NUM; i ++) { + if (!p_cb->srvc_cb[i].in_use) { p_cb->srvc_cb[i].in_use = TRUE; p_cb->srvc_cb[i].rcb_idx = rcb_idx; return i; @@ -91,10 +90,10 @@ tBTA_GATTS_RCB *bta_gatts_find_app_rcb_by_app_if(tBTA_GATTS_IF server_if) UINT8 i; tBTA_GATTS_RCB *p_reg; - for (i = 0, p_reg = bta_gatts_cb.rcb; i < BTA_GATTS_MAX_APP_NUM; i ++, p_reg++) - { - if (p_reg->in_use && p_reg->gatt_if == server_if) + for (i = 0, p_reg = bta_gatts_cb.rcb; i < BTA_GATTS_MAX_APP_NUM; i ++, p_reg++) { + if (p_reg->in_use && p_reg->gatt_if == server_if) { return p_reg; + } } return NULL; } @@ -113,10 +112,10 @@ UINT8 bta_gatts_find_app_rcb_idx_by_app_if(tBTA_GATTS_CB *p_cb, tBTA_GATTS_IF se { UINT8 i; - for (i = 0; i < BTA_GATTS_MAX_APP_NUM; i ++) - { - if (p_cb->rcb[i].in_use && p_cb->rcb[i].gatt_if == server_if) + for (i = 0; i < BTA_GATTS_MAX_APP_NUM; i ++) { + if (p_cb->rcb[i].in_use && p_cb->rcb[i].gatt_if == server_if) { return i; + } } return BTA_GATTS_INVALID_APP; } @@ -129,15 +128,13 @@ UINT8 bta_gatts_find_app_rcb_idx_by_app_if(tBTA_GATTS_CB *p_cb, tBTA_GATTS_IF se ** Returns pointer to the rcb. ** *******************************************************************************/ -tBTA_GATTS_SRVC_CB * bta_gatts_find_srvc_cb_by_srvc_id(tBTA_GATTS_CB *p_cb, UINT16 service_id) +tBTA_GATTS_SRVC_CB *bta_gatts_find_srvc_cb_by_srvc_id(tBTA_GATTS_CB *p_cb, UINT16 service_id) { UINT8 i; APPL_TRACE_DEBUG("bta_gatts_find_srvc_cb_by_srvc_id service_id=%d", service_id); - for (i = 0; i < BTA_GATTS_MAX_SRVC_NUM; i ++) - { + for (i = 0; i < BTA_GATTS_MAX_SRVC_NUM; i ++) { if (p_cb->srvc_cb[i].in_use && - p_cb->srvc_cb[i].service_id == service_id) - { + p_cb->srvc_cb[i].service_id == service_id) { APPL_TRACE_DEBUG("bta_gatts_find_srvc_cb_by_srvc_id found service cb index =%d", i); return &p_cb->srvc_cb[i]; } @@ -153,12 +150,11 @@ tBTA_GATTS_SRVC_CB * bta_gatts_find_srvc_cb_by_srvc_id(tBTA_GATTS_CB *p_cb, UINT ** Returns pointer to the rcb. ** *******************************************************************************/ -tBTA_GATTS_SRVC_CB * bta_gatts_find_srvc_cb_by_attr_id(tBTA_GATTS_CB *p_cb, UINT16 attr_id) +tBTA_GATTS_SRVC_CB *bta_gatts_find_srvc_cb_by_attr_id(tBTA_GATTS_CB *p_cb, UINT16 attr_id) { UINT8 i; - for (i = 0; i < (BTA_GATTS_MAX_SRVC_NUM); i ++) - { + for (i = 0; i < (BTA_GATTS_MAX_SRVC_NUM); i ++) { if (/* middle service */ (i < (BTA_GATTS_MAX_SRVC_NUM - 1) && p_cb->srvc_cb[i].in_use && @@ -173,8 +169,7 @@ tBTA_GATTS_SRVC_CB * bta_gatts_find_srvc_cb_by_attr_id(tBTA_GATTS_CB *p_cb, UINT /* last service incb */ (i == (BTA_GATTS_MAX_SRVC_NUM - 1) && attr_id >= p_cb->srvc_cb[i].service_id) - ) - { + ) { return &p_cb->srvc_cb[i]; } } @@ -195,37 +190,33 @@ BOOLEAN bta_gatts_uuid_compare(tBT_UUID tar, tBT_UUID src) UINT8 *ps, *pt; /* any of the UUID is unspecified */ - if (src.len == 0 || tar.len == 0) - { + if (src.len == 0 || tar.len == 0) { return TRUE; } /* If both are 16-bit, we can do a simple compare */ - if (src.len == 2 && tar.len == 2) - { + if (src.len == 2 && tar.len == 2) { return src.uu.uuid16 == tar.uu.uuid16; } /* One or both of the UUIDs is 128-bit */ - if (src.len == LEN_UUID_16) - { + if (src.len == LEN_UUID_16) { /* convert a 16 bits UUID to 128 bits value */ bta_gatt_convert_uuid16_to_uuid128(su, src.uu.uuid16); ps = su; - } - else + } else { ps = src.uu.uuid128; + } - if (tar.len == LEN_UUID_16) - { + if (tar.len == LEN_UUID_16) { /* convert a 16 bits UUID to 128 bits value */ bta_gatt_convert_uuid16_to_uuid128(tu, tar.uu.uuid16); pt = tu; - } - else + } else { pt = tar.uu.uuid128; + } - return(memcmp(ps, pt, LEN_UUID_128) == 0); + return (memcmp(ps, pt, LEN_UUID_128) == 0); } diff --git a/components/bt/bluedroid/bta/hh/bta_hh_act.c b/components/bt/bluedroid/bta/hh/bta_hh_act.c index fdcc998211..e874ed3109 100644 --- a/components/bt/bluedroid/bta/hh/bta_hh_act.c +++ b/components/bt/bluedroid/bta/hh/bta_hh_act.c @@ -44,12 +44,12 @@ ** Local Function prototypes *****************************************************************************/ static void bta_hh_cback (UINT8 dev_handle, BD_ADDR addr, UINT8 event, - UINT32 data, BT_HDR *pdata); + UINT32 data, BT_HDR *pdata); static tBTA_HH_STATUS bta_hh_get_trans_status(UINT32 result); #if BTA_HH_DEBUG -static char* bta_hh_get_w4_event(UINT16 event); -static char * bta_hh_hid_event_name(UINT16 event); +static char *bta_hh_get_w4_event(UINT16 event); +static char *bta_hh_hid_event_name(UINT16 event); #endif /***************************************************************************** @@ -78,31 +78,28 @@ void bta_hh_api_enable(tBTA_HH_DATA *p_data) HID_HostSetSecurityLevel("", p_data->api_enable.sec_mask); /* Register with L2CAP */ - if ( HID_HostRegister (bta_hh_cback) == HID_SUCCESS) - { + if ( HID_HostRegister (bta_hh_cback) == HID_SUCCESS) { /* store parameters */ bta_hh_cb.p_cback = p_data->api_enable.p_cback; status = BTA_HH_OK; /* initialize device CB */ - for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx ++) - { + for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx ++) { bta_hh_cb.kdev[xx].state = BTA_HH_IDLE_ST; bta_hh_cb.kdev[xx].hid_handle = BTA_HH_INVALID_HANDLE; bta_hh_cb.kdev[xx].index = xx; } /* initialize control block map */ - for (xx = 0; xx < BTA_HH_MAX_KNOWN; xx ++) + for (xx = 0; xx < BTA_HH_MAX_KNOWN; xx ++) { bta_hh_cb.cb_index[xx] = BTA_HH_IDX_INVALID; + } } #if (BTA_HH_LE_INCLUDED == TRUE) - if (status == BTA_HH_OK) - { + if (status == BTA_HH_OK) { bta_hh_le_enable(); - } - else + } else #endif /* signal BTA call back event */ (* bta_hh_cb.p_cback)(BTA_HH_ENABLE_EVT, (tBTA_HH *)&status); @@ -122,27 +119,23 @@ void bta_hh_api_disable(void) UINT8 xx; /* service is not enabled */ - if (bta_hh_cb.p_cback == NULL) + if (bta_hh_cb.p_cback == NULL) { return; + } /* no live connection, signal DISC_CMPL_EVT directly */ - if (!bta_hh_cb.cnt_num) - { + if (!bta_hh_cb.cnt_num) { bta_hh_disc_cmpl(); - } - else /* otherwise, disconnect all live connections */ - { + } else { /* otherwise, disconnect all live connections */ bta_hh_cb.w4_disable = TRUE; - for(xx = 0; xx < BTA_HH_MAX_DEVICE; xx ++) - { + for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx ++) { /* send API_CLOSE event to every connected device */ - if ( bta_hh_cb.kdev[xx].state == BTA_HH_CONN_ST ) - { + if ( bta_hh_cb.kdev[xx].state == BTA_HH_CONN_ST ) { /* disconnect all connected devices */ bta_hh_sm_execute(&bta_hh_cb.kdev[xx], - BTA_HH_API_CLOSE_EVT, - NULL); + BTA_HH_API_CLOSE_EVT, + NULL); } } } @@ -165,8 +158,9 @@ void bta_hh_disc_cmpl(void) tBTA_HH_STATUS status = BTA_HH_OK; /* Deregister with lower layer */ - if (HID_HostDeregister() != HID_SUCCESS) + if (HID_HostDeregister() != HID_SUCCESS) { status = BTA_HH_ERR; + } #if (BTA_HH_LE_INCLUDED == TRUE) bta_hh_le_deregister(); @@ -186,67 +180,59 @@ void bta_hh_disc_cmpl(void) ** *******************************************************************************/ static void bta_hh_sdp_cback(UINT16 result, UINT16 attr_mask, - tHID_DEV_SDP_INFO *sdp_rec ) + tHID_DEV_SDP_INFO *sdp_rec ) { tBTA_HH_DEV_CB *p_cb = bta_hh_cb.p_cur; UINT8 hdl = 0; tBTA_HH_STATUS status = BTA_HH_ERR_SDP; /* make sure sdp succeeded and hh has not been disabled */ - if ((result == SDP_SUCCESS) && (p_cb != NULL)) - { + if ((result == SDP_SUCCESS) && (p_cb != NULL)) { /* security is required for the connection, add attr_mask bit*/ - if (p_cb->sec_mask) + if (p_cb->sec_mask) { attr_mask |= HID_SEC_REQUIRED; + } #if BTA_HH_DEBUG APPL_TRACE_EVENT("bta_hh_sdp_cback: p_cb: %d result 0x%02x, \ attr_mask 0x%02x, handle %x", \ - p_cb, result, attr_mask,p_cb->hid_handle); + p_cb, result, attr_mask, p_cb->hid_handle); #endif /* check to see type of device is supported , and should not been added before */ - if (bta_hh_tod_spt(p_cb, sdp_rec->sub_class)) - { + if (bta_hh_tod_spt(p_cb, sdp_rec->sub_class)) { /* if not added before */ - if (p_cb->hid_handle == BTA_HH_INVALID_HANDLE) - { + if (p_cb->hid_handle == BTA_HH_INVALID_HANDLE) { /* add device/update attr_mask information */ - if(HID_HostAddDev (p_cb->addr, attr_mask, &hdl) == HID_SUCCESS) - { + if (HID_HostAddDev (p_cb->addr, attr_mask, &hdl) == HID_SUCCESS) { status = BTA_HH_OK; /* update cb_index[] map */ bta_hh_cb.cb_index[hdl] = p_cb->index; - } - else - { + } else { p_cb->app_id = 0; } - } - else - { + } else { hdl = p_cb->hid_handle; } /* else : incoming connection after SDP should update the SDP information as well */ - if (p_cb->app_id != 0) - { + if (p_cb->app_id != 0) { /* update cb information with attr_mask, dscp_info etc. */ bta_hh_add_device_to_list(p_cb, hdl, attr_mask, - &sdp_rec->dscp_info, - sdp_rec->sub_class, - sdp_rec->ssr_max_latency, - sdp_rec->ssr_min_tout, - p_cb->app_id); + &sdp_rec->dscp_info, + sdp_rec->sub_class, + sdp_rec->ssr_max_latency, + sdp_rec->ssr_min_tout, + p_cb->app_id); p_cb->dscp_info.ctry_code = sdp_rec->ctry_code; status = BTA_HH_OK; } - } - else /* type of device is not supported */ + } else { /* type of device is not supported */ status = BTA_HH_ERR_TOD_UNSPT; + } } /* free disc_db when SDP is completed */ @@ -280,41 +266,32 @@ static void bta_hh_di_sdp_cback(UINT16 result) * set to 0xffff and we will allow the connection to go through. Spec mandates that DI * record be set, but many HID devices do not set this. So for IOP purposes, we allow the * connection to go through and update the DI record to invalid DI entry.*/ - if (((result == SDP_SUCCESS) || (result == SDP_NO_RECS_MATCH)) && (p_cb != NULL)) - { - if(result == SDP_SUCCESS && SDP_GetNumDiRecords(bta_hh_cb.p_disc_db) != 0) - { + if (((result == SDP_SUCCESS) || (result == SDP_NO_RECS_MATCH)) && (p_cb != NULL)) { + if (result == SDP_SUCCESS && SDP_GetNumDiRecords(bta_hh_cb.p_disc_db) != 0) { /* always update information with primary DI record */ - if (SDP_GetDiRecord(1, &di_rec, bta_hh_cb.p_disc_db) == SDP_SUCCESS) - { + if (SDP_GetDiRecord(1, &di_rec, bta_hh_cb.p_disc_db) == SDP_SUCCESS) { bta_hh_update_di_info(p_cb, di_rec.rec.vendor, di_rec.rec.product, di_rec.rec.version, 0); } - } - else /* no DI recrod available */ - { + } else { /* no DI recrod available */ bta_hh_update_di_info(p_cb, BTA_HH_VENDOR_ID_INVALID, 0, 0, 0); } if ((ret = HID_HostGetSDPRecord(p_cb->addr, - bta_hh_cb.p_disc_db, - p_bta_hh_cfg->sdp_db_size, - bta_hh_sdp_cback)) == HID_SUCCESS) - { + bta_hh_cb.p_disc_db, + p_bta_hh_cfg->sdp_db_size, + bta_hh_sdp_cback)) == HID_SUCCESS) { status = BTA_HH_OK; - } - else - { + } else { #if BTA_HH_DEBUG APPL_TRACE_DEBUG ("bta_hh_di_sdp_cback: HID_HostGetSDPRecord failed: Status 0x%2x", - ret); + ret); #endif } } - if (status != BTA_HH_OK) - { + if (status != BTA_HH_OK) { utl_freebuf((void **)&bta_hh_cb.p_disc_db); /* send SDP_CMPL_EVT into state machine */ bta_hh_sm_execute(p_cb, BTA_HH_SDP_CMPL_EVT, (tBTA_HH_DATA *)&status); @@ -346,25 +323,21 @@ void bta_hh_start_sdp(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) bta_hh_cb.p_cur = p_cb; #if (BTA_HH_LE_INCLUDED == TRUE) - if (bta_hh_is_le_device(p_cb, p_data->api_conn.bd_addr)) - { + if (bta_hh_is_le_device(p_cb, p_data->api_conn.bd_addr)) { bta_hh_le_open_conn(p_cb, p_data->api_conn.bd_addr); return; } #endif /* if previously virtually cabled device, skip SDP */ - if (p_cb->app_id) - { + if (p_cb->app_id) { status = BTA_HH_OK; #if BTA_HH_DEBUG APPL_TRACE_DEBUG("bta_hh_start_sdp:: skip SDP for known devices"); #endif - if (p_cb->hid_handle == BTA_HH_INVALID_HANDLE) - { + if (p_cb->hid_handle == BTA_HH_INVALID_HANDLE) { if (HID_HostAddDev (p_cb->addr, p_cb->attr_mask, &hdl) \ - == HID_SUCCESS) - { + == HID_SUCCESS) { /* update device CB with newly register device handle */ bta_hh_add_device_to_list(p_cb, hdl, p_cb->attr_mask, NULL, p_cb->sub_class, @@ -373,46 +346,42 @@ void bta_hh_start_sdp(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) p_cb->app_id); /* update cb_index[] map */ bta_hh_cb.cb_index[hdl] = p_cb->index; - } - else + } else { status = BTA_HH_ERR_NO_RES; + } } bta_hh_sm_execute(p_cb, BTA_HH_SDP_CMPL_EVT, (tBTA_HH_DATA *)&status); return; } /* GetSDPRecord. at one time only one SDP precedure can be active */ - else if (!bta_hh_cb.p_disc_db) - { + else if (!bta_hh_cb.p_disc_db) { bta_hh_cb.p_disc_db = (tSDP_DISCOVERY_DB *) GKI_getbuf(p_bta_hh_cfg->sdp_db_size); - if (bta_hh_cb.p_disc_db == NULL) - { + if (bta_hh_cb.p_disc_db == NULL) { status = BTA_HH_ERR_NO_RES; - } - else - { + } else { bta_hh_cb.p_cur = p_cb; /* do DI discovery first */ if (SDP_DiDiscover(p_data->api_conn.bd_addr, - bta_hh_cb.p_disc_db, - p_bta_hh_cfg->sdp_db_size, - bta_hh_di_sdp_cback) != SDP_SUCCESS) - { + bta_hh_cb.p_disc_db, + p_bta_hh_cfg->sdp_db_size, + bta_hh_di_sdp_cback) != SDP_SUCCESS) { #if BTA_HH_DEBUG APPL_TRACE_DEBUG ("bta_hh_start_sdp: SDP_DiDiscover failed: \ - Status 0x%2X",status); + Status 0x%2X", status); #endif status = BTA_HH_ERR_SDP; utl_freebuf((void **)&bta_hh_cb.p_disc_db); - } - else + } else { status = BTA_HH_OK; + } } } - if (status != BTA_HH_OK) + if (status != BTA_HH_OK) { bta_hh_sm_execute(p_cb, BTA_HH_SDP_CMPL_EVT, (tBTA_HH_DATA *)&status); + } return; @@ -434,7 +403,7 @@ void bta_hh_sdp_cmpl(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) tBTA_HH_STATUS status = p_data->status; #if BTA_HH_DEBUG - APPL_TRACE_DEBUG ("bta_hh_sdp_cmpl: status 0x%2X",p_data->status); + APPL_TRACE_DEBUG ("bta_hh_sdp_cmpl: status 0x%2X", p_data->status); #endif /* initialize call back data */ @@ -443,48 +412,39 @@ void bta_hh_sdp_cmpl(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) bdcpy(conn_dat.bda, p_cb->addr); /* if SDP compl success */ - if ( status == BTA_HH_OK) - { + if ( status == BTA_HH_OK) { /* not incoming connection doing SDP, initiate a HID connection */ - if (!p_cb->incoming_conn) - { + if (!p_cb->incoming_conn) { tHID_STATUS ret; /* set security level */ HID_HostSetSecurityLevel("", p_cb->sec_mask); /* open HID connection */ - if ((ret = HID_HostOpenDev (p_cb->hid_handle)) != HID_SUCCESS) - { + if ((ret = HID_HostOpenDev (p_cb->hid_handle)) != HID_SUCCESS) { #if BTA_HH_DEBUG APPL_TRACE_DEBUG ("bta_hh_sdp_cmpl: HID_HostOpenDev failed: \ - Status 0x%2X",ret); + Status 0x%2X", ret); #endif /* open fail, remove device from management device list */ HID_HostRemoveDev( p_cb->hid_handle); status = BTA_HH_ERR; - } - else - { + } else { status = BTA_HH_OK; } - } - else /* incoming connection SDP finish */ - { + } else { /* incoming connection SDP finish */ bta_hh_sm_execute(p_cb, BTA_HH_OPEN_CMPL_EVT, NULL); } } - if (status != BTA_HH_OK) - { + if (status != BTA_HH_OK) { /* Check if this was incoming connection request from an unknown device **and connection failed due to missing HID Device SDP UUID **In above condition, disconnect the link as well as remove the **device from list of HID devices*/ if ((status == BTA_HH_ERR_SDP) && - (p_cb->incoming_conn) &&(p_cb->app_id == 0)) - { + (p_cb->incoming_conn) && (p_cb->app_id == 0)) { APPL_TRACE_DEBUG ("bta_hh_sdp_cmpl:SDP failed for incoming conn :hndl %d", - p_cb->incoming_hid_handle); + p_cb->incoming_hid_handle); HID_HostRemoveDev( p_cb->incoming_hid_handle); } conn_dat.status = status; @@ -494,8 +454,7 @@ void bta_hh_sdp_cmpl(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) bta_hh_sm_execute(p_cb, BTA_HH_API_CLOSE_EVT, NULL); /* if this is an outgoing connection to an unknown device, clean up cb */ - if (p_cb->app_id == 0 && !p_cb->incoming_conn) - { + if (p_cb->app_id == 0 && !p_cb->incoming_conn) { /* clean up device control block */ bta_hh_clean_up_kdev(p_cb); } @@ -522,19 +481,20 @@ void bta_hh_api_disc_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) tHID_STATUS status; #if BTA_HH_LE_INCLUDED == TRUE - if (p_cb->is_le_device) + if (p_cb->is_le_device) { bta_hh_le_api_disc_act(p_cb); - else + } else #endif { /* found an active connection */ - disc_dat.handle = p_data ?(UINT8)p_data->hdr.layer_specific :p_cb->hid_handle; + disc_dat.handle = p_data ? (UINT8)p_data->hdr.layer_specific : p_cb->hid_handle; disc_dat.status = BTA_HH_ERR; status = HID_HostCloseDev(disc_dat.handle); - if (status) + if (status) { (* bta_hh_cb.p_cback)(BTA_HH_CLOSE_EVT, (tBTA_HH *)&disc_dat); + } } return; @@ -554,7 +514,7 @@ void bta_hh_open_cmpl_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) { tBTA_HH_CONN conn ; UINT8 dev_handle = p_data ? (UINT8)p_data->hid_cback.hdr.layer_specific : \ - p_cb->hid_handle; + p_cb->hid_handle; memset((void *)&conn, 0, sizeof (tBTA_HH_CONN)); conn.handle = dev_handle; @@ -565,7 +525,7 @@ void bta_hh_open_cmpl_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) /* initialize device driver */ bta_hh_co_open(p_cb->hid_handle, p_cb->sub_class, - p_cb->attr_mask, p_cb->app_id); + p_cb->attr_mask, p_cb->app_id); #if (BTA_HH_LE_INCLUDED == TRUE) conn.status = p_cb->status; @@ -576,32 +536,28 @@ void bta_hh_open_cmpl_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) #endif { /* inform role manager */ - bta_sys_conn_open( BTA_ID_HH ,p_cb->app_id, p_cb->addr); + bta_sys_conn_open( BTA_ID_HH , p_cb->app_id, p_cb->addr); } /* set protocol mode when not default report mode */ if ( p_cb->mode != BTA_HH_PROTO_RPT_MODE #if (BTA_HH_LE_INCLUDED == TRUE) - && !p_cb->is_le_device + && !p_cb->is_le_device #endif - ) - { + ) { if ((HID_HostWriteDev(dev_handle, HID_TRANS_SET_PROTOCOL, HID_PAR_PROTOCOL_BOOT_MODE, 0, - 0, NULL)) != HID_SUCCESS) - { + 0, NULL)) != HID_SUCCESS) { /* HID connection is up, while SET_PROTO fail */ conn.status = BTA_HH_ERR_PROTO; (* bta_hh_cb.p_cback)(BTA_HH_OPEN_EVT, (tBTA_HH *)&conn); - } - else - { + } else { conn.status = BTA_HH_OK; p_cb->w4_evt = BTA_HH_OPEN_EVT; } - } - else + } else { (* bta_hh_cb.p_cback)(BTA_HH_OPEN_EVT, (tBTA_HH *)&conn); + } p_cb->incoming_conn = FALSE; p_cb->incoming_hid_handle = BTA_HH_INVALID_HANDLE; @@ -622,20 +578,18 @@ void bta_hh_open_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) tBTA_HH_API_CONN conn_data; UINT8 dev_handle = p_data ? (UINT8)p_data->hid_cback.hdr.layer_specific : \ - p_cb->hid_handle; + p_cb->hid_handle; #if BTA_HH_DEBUG APPL_TRACE_EVENT ("bta_hh_open_act: Device[%d] connected", dev_handle); #endif /* SDP has been done */ - if (p_cb->app_id != 0) - { + if (p_cb->app_id != 0) { bta_hh_sm_execute(p_cb, BTA_HH_OPEN_CMPL_EVT, p_data); - } - else - /* app_id == 0 indicates an incoming conenction request arrives without SDP - performed, do it first */ + } else + /* app_id == 0 indicates an incoming conenction request arrives without SDP + performed, do it first */ { p_cb->incoming_conn = TRUE; /* store the handle here in case sdp fails - need to disconnect */ @@ -660,13 +614,13 @@ void bta_hh_open_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) ** Returns void ** *******************************************************************************/ -void bta_hh_data_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA * p_data) +void bta_hh_data_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) { BT_HDR *pdata = p_data->hid_cback.p_data; UINT8 *p_rpt = (UINT8 *)(pdata + 1) + pdata->offset; bta_hh_co_data((UINT8)p_data->hid_cback.hdr.layer_specific, p_rpt, pdata->len, - p_cb->mode, p_cb->sub_class, p_cb->dscp_info.ctry_code, p_cb->addr, p_cb->app_id); + p_cb->mode, p_cb->sub_class, p_cb->dscp_info.ctry_code, p_cb->addr, p_cb->app_id); utl_freebuf((void **)&pdata); } @@ -682,7 +636,7 @@ void bta_hh_data_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA * p_data) ** Returns void ** *******************************************************************************/ -void bta_hh_handsk_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA * p_data) +void bta_hh_handsk_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) { tBTA_HH_CBDATA cback_data ; tBTA_HH_HSDATA hs_data; @@ -690,55 +644,55 @@ void bta_hh_handsk_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA * p_data) #if BTA_HH_DEBUG APPL_TRACE_DEBUG("HANDSHAKE received for: event = %s data= %d", - bta_hh_get_w4_event(p_cb->w4_evt), p_data->hid_cback.data); + bta_hh_get_w4_event(p_cb->w4_evt), p_data->hid_cback.data); #endif memset(&hs_data, 0, sizeof(tBTA_HH_HSDATA)); memset(&cback_data, 0, sizeof(tBTA_HH_CBDATA)); - switch (p_cb->w4_evt) - { - /* GET_ transsaction, handshake indicate unsupported request */ - case BTA_HH_GET_PROTO_EVT: - hs_data.rsp_data.proto_mode = BTA_HH_PROTO_UNKNOWN; - /* fall through */ - case BTA_HH_GET_RPT_EVT: - case BTA_HH_GET_IDLE_EVT : - hs_data.handle = p_cb->hid_handle; - /* if handshake gives an OK code for these transaction, fill in UNSUPT */ - if ((hs_data.status = bta_hh_get_trans_status(p_data->hid_cback.data)) == BTA_HH_OK) - hs_data.status = BTA_HH_HS_TRANS_NOT_SPT; + switch (p_cb->w4_evt) { + /* GET_ transsaction, handshake indicate unsupported request */ + case BTA_HH_GET_PROTO_EVT: + hs_data.rsp_data.proto_mode = BTA_HH_PROTO_UNKNOWN; + /* fall through */ + case BTA_HH_GET_RPT_EVT: + case BTA_HH_GET_IDLE_EVT : + hs_data.handle = p_cb->hid_handle; + /* if handshake gives an OK code for these transaction, fill in UNSUPT */ + if ((hs_data.status = bta_hh_get_trans_status(p_data->hid_cback.data)) == BTA_HH_OK) { + hs_data.status = BTA_HH_HS_TRANS_NOT_SPT; + } - (* bta_hh_cb.p_cback)(p_cb->w4_evt, (tBTA_HH *)&hs_data); - p_cb->w4_evt = 0; - break; + (* bta_hh_cb.p_cback)(p_cb->w4_evt, (tBTA_HH *)&hs_data); + p_cb->w4_evt = 0; + break; - /* acknoledgement from HID device for SET_ transaction */ - case BTA_HH_SET_RPT_EVT: - case BTA_HH_SET_PROTO_EVT: - case BTA_HH_SET_IDLE_EVT : - cback_data.handle = p_cb->hid_handle; - cback_data.status = bta_hh_get_trans_status(p_data->hid_cback.data); - (* bta_hh_cb.p_cback)(p_cb->w4_evt, (tBTA_HH *)&cback_data); - p_cb->w4_evt = 0; - break; + /* acknoledgement from HID device for SET_ transaction */ + case BTA_HH_SET_RPT_EVT: + case BTA_HH_SET_PROTO_EVT: + case BTA_HH_SET_IDLE_EVT : + cback_data.handle = p_cb->hid_handle; + cback_data.status = bta_hh_get_trans_status(p_data->hid_cback.data); + (* bta_hh_cb.p_cback)(p_cb->w4_evt, (tBTA_HH *)&cback_data); + p_cb->w4_evt = 0; + break; - /* SET_PROTOCOL when open connection */ - case BTA_HH_OPEN_EVT: - conn.status =p_data->hid_cback.data ? BTA_HH_ERR_PROTO: BTA_HH_OK; - conn.handle = p_cb->hid_handle; - bdcpy(conn.bda, p_cb->addr); - (* bta_hh_cb.p_cback)(p_cb->w4_evt, (tBTA_HH *)&conn); + /* SET_PROTOCOL when open connection */ + case BTA_HH_OPEN_EVT: + conn.status = p_data->hid_cback.data ? BTA_HH_ERR_PROTO : BTA_HH_OK; + conn.handle = p_cb->hid_handle; + bdcpy(conn.bda, p_cb->addr); + (* bta_hh_cb.p_cback)(p_cb->w4_evt, (tBTA_HH *)&conn); #if BTA_HH_DEBUG - bta_hh_trace_dev_db(); + bta_hh_trace_dev_db(); #endif - p_cb->w4_evt = 0; - break; + p_cb->w4_evt = 0; + break; - default: - /* unknow transaction handshake response */ - APPL_TRACE_DEBUG("unknown transaction type"); - break; + default: + /* unknow transaction handshake response */ + APPL_TRACE_DEBUG("unknown transaction type"); + break; } /* transaction achknoledgement received, inform PM for mode change */ @@ -755,7 +709,7 @@ void bta_hh_handsk_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA * p_data) ** Returns void ** *******************************************************************************/ -void bta_hh_ctrl_dat_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA * p_data) +void bta_hh_ctrl_dat_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) { BT_HDR *pdata = p_data->hid_cback.p_data; UINT8 *data = (UINT8 *)(pdata + 1) + pdata->offset; @@ -763,13 +717,12 @@ void bta_hh_ctrl_dat_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA * p_data) #if BTA_HH_DEBUG APPL_TRACE_DEBUG("Ctrl DATA received w4: event[%s]", - bta_hh_get_w4_event(p_cb->w4_evt)); + bta_hh_get_w4_event(p_cb->w4_evt)); #endif hs_data.status = BTA_HH_OK; hs_data.handle = p_cb->hid_handle; - switch (p_cb->w4_evt) - { + switch (p_cb->w4_evt) { case BTA_HH_GET_IDLE_EVT: hs_data.rsp_data.idle_rate = *data; break; @@ -778,24 +731,24 @@ void bta_hh_ctrl_dat_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA * p_data) break; case BTA_HH_GET_PROTO_EVT: /* match up BTE/BTA report/boot mode def*/ - hs_data.rsp_data.proto_mode = ((*data) == HID_PAR_PROTOCOL_REPORT)? \ - BTA_HH_PROTO_RPT_MODE : BTA_HH_PROTO_BOOT_MODE; + hs_data.rsp_data.proto_mode = ((*data) == HID_PAR_PROTOCOL_REPORT) ? \ + BTA_HH_PROTO_RPT_MODE : BTA_HH_PROTO_BOOT_MODE; #if BTA_HH_DEBUG APPL_TRACE_DEBUG("GET_PROTOCOL Mode = [%s]", - (hs_data.rsp_data.proto_mode == BTA_HH_PROTO_RPT_MODE)? "Report" : "Boot"); + (hs_data.rsp_data.proto_mode == BTA_HH_PROTO_RPT_MODE) ? "Report" : "Boot"); #endif break; /* should not expect control DATA for SET_ transaction */ case BTA_HH_SET_PROTO_EVT: - /* fall through */ + /* fall through */ case BTA_HH_SET_RPT_EVT: - /* fall through */ + /* fall through */ case BTA_HH_SET_IDLE_EVT : - /* fall through */ + /* fall through */ default: #if BTA_HH_DEBUG APPL_TRACE_DEBUG("invalid transaction type for DATA payload: 4_evt[%s]", - bta_hh_get_w4_event(p_cb->w4_evt)); + bta_hh_get_w4_event(p_cb->w4_evt)); #endif break; } @@ -828,14 +781,14 @@ void bta_hh_open_failure(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) UINT32 reason = p_data->hid_cback.data; /* Reason for closing (32-bit) */ memset(&conn_dat, 0, sizeof(tBTA_HH_CONN)); - conn_dat.handle = p_cb->hid_handle; - conn_dat.status = (reason == HID_ERR_AUTH_FAILED) ? - BTA_HH_ERR_AUTH_FAILED : BTA_HH_ERR; - bdcpy(conn_dat.bda, p_cb->addr); - HID_HostCloseDev(p_cb->hid_handle); + conn_dat.handle = p_cb->hid_handle; + conn_dat.status = (reason == HID_ERR_AUTH_FAILED) ? + BTA_HH_ERR_AUTH_FAILED : BTA_HH_ERR; + bdcpy(conn_dat.bda, p_cb->addr); + HID_HostCloseDev(p_cb->hid_handle); - /* Report OPEN fail event */ - (*bta_hh_cb.p_cback)(BTA_HH_OPEN_EVT, (tBTA_HH *)&conn_dat); + /* Report OPEN fail event */ + (*bta_hh_cb.p_cback)(BTA_HH_OPEN_EVT, (tBTA_HH *)&conn_dat); #if BTA_HH_DEBUG bta_hh_trace_dev_db(); @@ -845,8 +798,7 @@ void bta_hh_open_failure(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) p_cb->w4_evt = 0; /* if no connection is active and HH disable is signaled, disable service */ - if (bta_hh_cb.cnt_num == 0 && bta_hh_cb.w4_disable) - { + if (bta_hh_cb.cnt_num == 0 && bta_hh_cb.w4_disable) { bta_hh_disc_cmpl(); } @@ -875,10 +827,9 @@ void bta_hh_close_act (tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) disc_dat.status = p_data->hid_cback.data; /* Check reason for closing */ - if ((reason & (HID_L2CAP_CONN_FAIL|HID_L2CAP_REQ_FAIL)) || /* Failure to initialize connection (page timeout or l2cap error) */ - (reason == HID_ERR_AUTH_FAILED) || /* Authenication error (while initiating) */ - (reason == HID_ERR_L2CAP_FAILED)) /* Failure creating l2cap connection */ - { + if ((reason & (HID_L2CAP_CONN_FAIL | HID_L2CAP_REQ_FAIL)) || /* Failure to initialize connection (page timeout or l2cap error) */ + (reason == HID_ERR_AUTH_FAILED) || /* Authenication error (while initiating) */ + (reason == HID_ERR_L2CAP_FAILED)) { /* Failure creating l2cap connection */ /* Failure in opening connection */ conn_dat.handle = p_cb->hid_handle; conn_dat.status = (reason == HID_ERR_AUTH_FAILED) ? BTA_HH_ERR_AUTH_FAILED : BTA_HH_ERR; @@ -894,23 +845,22 @@ void bta_hh_close_act (tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) return; } /* otherwise report CLOSE/VC_UNPLUG event */ - else - { + else { /* finaliza device driver */ bta_hh_co_close(p_cb->hid_handle, p_cb->app_id); /* inform role manager */ - bta_sys_conn_close( BTA_ID_HH ,p_cb->app_id, p_cb->addr); + bta_sys_conn_close( BTA_ID_HH , p_cb->app_id, p_cb->addr); /* update total conn number */ bta_hh_cb.cnt_num --; - if (disc_dat.status) + if (disc_dat.status) { disc_dat.status = BTA_HH_ERR; + } (*bta_hh_cb.p_cback)(event, (tBTA_HH *)&disc_dat); /* if virtually unplug, remove device */ - if (p_cb->vp ) - { + if (p_cb->vp ) { HID_HostRemoveDev( p_cb->hid_handle); bta_hh_clean_up_kdev(p_cb); } @@ -925,8 +875,7 @@ void bta_hh_close_act (tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) p_cb->w4_evt = 0; /* if no connection is active and HH disable is signaled, disable service */ - if (bta_hh_cb.cnt_num == 0 && bta_hh_cb.w4_disable) - { + if (bta_hh_cb.cnt_num == 0 && bta_hh_cb.w4_disable) { bta_hh_disc_cmpl(); } @@ -948,13 +897,11 @@ void bta_hh_get_dscp_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) UNUSED(p_data); #if (BTA_HH_LE_INCLUDED == TRUE) - if (p_cb->is_le_device) - { + if (p_cb->is_le_device) { bta_hh_le_get_dscp_act(p_cb); - } - else + } else #endif - (*bta_hh_cb.p_cback)(BTA_HH_GET_DSCP_EVT, (tBTA_HH *)&p_cb->dscp_info); + (*bta_hh_cb.p_cback)(BTA_HH_GET_DSCP_EVT, (tBTA_HH *)&p_cb->dscp_info); } /******************************************************************************* @@ -976,57 +923,50 @@ void bta_hh_maint_dev_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) dev_info.status = BTA_HH_ERR; dev_info.handle = BTA_HH_INVALID_HANDLE; - switch (p_dev_info->sub_event) - { + switch (p_dev_info->sub_event) { case BTA_HH_ADD_DEV_EVT: /* add a device */ bdcpy(dev_info.bda, p_dev_info->bda); /* initialize callback data */ - if (p_cb->hid_handle == BTA_HH_INVALID_HANDLE) - { + if (p_cb->hid_handle == BTA_HH_INVALID_HANDLE) { #if (BTA_HH_LE_INCLUDED == TRUE) - if (bta_hh_is_le_device(p_cb, p_data->api_conn.bd_addr)) - { + if (bta_hh_is_le_device(p_cb, p_data->api_conn.bd_addr)) { dev_info.handle = bta_hh_le_add_device(p_cb, p_dev_info); dev_info.status = BTA_HH_OK; - } - else + } else #endif - if (HID_HostAddDev(p_dev_info->bda, p_dev_info->attr_mask, &dev_handle)\ - == HID_SUCCESS) - { - dev_info.handle = dev_handle; - dev_info.status = BTA_HH_OK; + if (HID_HostAddDev(p_dev_info->bda, p_dev_info->attr_mask, &dev_handle)\ + == HID_SUCCESS) { + dev_info.handle = dev_handle; + dev_info.status = BTA_HH_OK; #if (defined BTA_HH_LE_INCLUDED && BTA_HH_LE_INCLUDED == TRUE) - /* update DI information */ - bta_hh_update_di_info(p_cb, - p_dev_info->dscp_info.vendor_id, - p_dev_info->dscp_info.product_id, - p_dev_info->dscp_info.version, - p_dev_info->dscp_info.flag); + /* update DI information */ + bta_hh_update_di_info(p_cb, + p_dev_info->dscp_info.vendor_id, + p_dev_info->dscp_info.product_id, + p_dev_info->dscp_info.version, + p_dev_info->dscp_info.flag); #else - bta_hh_update_di_info(p_cb, - p_dev_info->dscp_info.vendor_id, - p_dev_info->dscp_info.product_id, - p_dev_info->dscp_info.version, - 0); + bta_hh_update_di_info(p_cb, + p_dev_info->dscp_info.vendor_id, + p_dev_info->dscp_info.product_id, + p_dev_info->dscp_info.version, + 0); #endif - /* add to BTA device list */ - bta_hh_add_device_to_list(p_cb, dev_handle, - p_dev_info->attr_mask, - &p_dev_info->dscp_info.descriptor, - p_dev_info->sub_class, - p_dev_info->dscp_info.ssr_max_latency, - p_dev_info->dscp_info.ssr_min_tout, - p_dev_info->app_id); - /* update cb_index[] map */ - bta_hh_cb.cb_index[dev_handle] = p_cb->index; - } - } - else /* device already been added */ - { + /* add to BTA device list */ + bta_hh_add_device_to_list(p_cb, dev_handle, + p_dev_info->attr_mask, + &p_dev_info->dscp_info.descriptor, + p_dev_info->sub_class, + p_dev_info->dscp_info.ssr_max_latency, + p_dev_info->dscp_info.ssr_min_tout, + p_dev_info->app_id); + /* update cb_index[] map */ + bta_hh_cb.cb_index[dev_handle] = p_cb->index; + } + } else { /* device already been added */ dev_info.handle = p_cb->hid_handle; dev_info.status = BTA_HH_OK; } @@ -1040,17 +980,14 @@ void bta_hh_maint_dev_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) bdcpy(dev_info.bda, p_cb->addr); #if BTA_HH_LE_INCLUDED == TRUE - if (p_cb->is_le_device) - { + if (p_cb->is_le_device) { bta_hh_le_remove_dev_bg_conn(p_cb); bta_hh_sm_execute(p_cb, BTA_HH_API_CLOSE_EVT, NULL); bta_hh_clean_up_kdev(p_cb); - } - else + } else #endif { - if(HID_HostRemoveDev( dev_info.handle ) == HID_SUCCESS) - { + if (HID_HostRemoveDev( dev_info.handle ) == HID_SUCCESS) { dev_info.status = BTA_HH_OK; /* remove from known device list in BTA */ @@ -1079,91 +1016,83 @@ void bta_hh_write_dev_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) { tBTA_HH_CBDATA cbdata = {BTA_HH_OK, 0}; UINT16 event = (p_data->api_sndcmd.t_type - BTA_HH_FST_BTE_TRANS_EVT) + - BTA_HH_FST_TRANS_CB_EVT; + BTA_HH_FST_TRANS_CB_EVT; #if BTA_HH_LE_INCLUDED == TRUE - if (p_cb->is_le_device) + if (p_cb->is_le_device) { bta_hh_le_write_dev_act(p_cb, p_data); - else + } else #endif { - cbdata.handle = p_cb->hid_handle; + cbdata.handle = p_cb->hid_handle; - /* match up BTE/BTA report/boot mode def */ - if (p_data->api_sndcmd.t_type == HID_TRANS_SET_PROTOCOL) - { - p_data->api_sndcmd.param = ( p_data->api_sndcmd.param == BTA_HH_PROTO_RPT_MODE) ?\ - HID_PAR_PROTOCOL_REPORT :HID_PAR_PROTOCOL_BOOT_MODE; - } - - if (HID_HostWriteDev (p_cb->hid_handle, - p_data->api_sndcmd.t_type, - p_data->api_sndcmd.param, - p_data->api_sndcmd.data, - p_data->api_sndcmd.rpt_id, - p_data->api_sndcmd.p_data) != HID_SUCCESS) - { - APPL_TRACE_ERROR("HID_HostWriteDev Error "); - cbdata.status = BTA_HH_ERR; - - if (p_data->api_sndcmd.t_type != HID_TRANS_CONTROL && - p_data->api_sndcmd.t_type != HID_TRANS_DATA) - (* bta_hh_cb.p_cback)(event, (tBTA_HH *)&cbdata); - else if (p_data->api_sndcmd.param == BTA_HH_CTRL_VIRTUAL_CABLE_UNPLUG) - (* bta_hh_cb.p_cback)(BTA_HH_VC_UNPLUG_EVT, (tBTA_HH *)&cbdata); - } - else - { - - switch(p_data->api_sndcmd.t_type) - { - case HID_TRANS_SET_PROTOCOL: - /* fall through */ - case HID_TRANS_GET_REPORT: - /* fall through */ - case HID_TRANS_SET_REPORT: - /* fall through */ - case HID_TRANS_GET_PROTOCOL: - /* fall through */ - case HID_TRANS_GET_IDLE: - /* fall through */ - case HID_TRANS_SET_IDLE:/* set w4_handsk event name for callback function use */ - p_cb->w4_evt = event; - break; - case HID_TRANS_DATA: /* output report */ - /* fall through */ - case HID_TRANS_CONTROL: - /* no handshake event will be generated */ - /* if VC_UNPLUG is issued, set flag */ - if (p_data->api_sndcmd.param == BTA_HH_CTRL_VIRTUAL_CABLE_UNPLUG) - p_cb->vp = TRUE; - - break; - /* currently not expected */ - case HID_TRANS_DATAC: - default: - APPL_TRACE_DEBUG("bta_hh_write_dev_act:: cmd type = %d", - p_data->api_sndcmd.t_type); - break; + /* match up BTE/BTA report/boot mode def */ + if (p_data->api_sndcmd.t_type == HID_TRANS_SET_PROTOCOL) { + p_data->api_sndcmd.param = ( p_data->api_sndcmd.param == BTA_HH_PROTO_RPT_MODE) ? \ + HID_PAR_PROTOCOL_REPORT : HID_PAR_PROTOCOL_BOOT_MODE; } - /* if not control type transaction, notify PM for energy control */ - if (p_data->api_sndcmd.t_type != HID_TRANS_CONTROL) - { - /* inform PM for mode change */ - bta_sys_busy(BTA_ID_HH, p_cb->app_id, p_cb->addr); - bta_sys_idle(BTA_ID_HH, p_cb->app_id, p_cb->addr); + if (HID_HostWriteDev (p_cb->hid_handle, + p_data->api_sndcmd.t_type, + p_data->api_sndcmd.param, + p_data->api_sndcmd.data, + p_data->api_sndcmd.rpt_id, + p_data->api_sndcmd.p_data) != HID_SUCCESS) { + APPL_TRACE_ERROR("HID_HostWriteDev Error "); + cbdata.status = BTA_HH_ERR; + + if (p_data->api_sndcmd.t_type != HID_TRANS_CONTROL && + p_data->api_sndcmd.t_type != HID_TRANS_DATA) { + (* bta_hh_cb.p_cback)(event, (tBTA_HH *)&cbdata); + } else if (p_data->api_sndcmd.param == BTA_HH_CTRL_VIRTUAL_CABLE_UNPLUG) { + (* bta_hh_cb.p_cback)(BTA_HH_VC_UNPLUG_EVT, (tBTA_HH *)&cbdata); + } + } else { + + switch (p_data->api_sndcmd.t_type) { + case HID_TRANS_SET_PROTOCOL: + /* fall through */ + case HID_TRANS_GET_REPORT: + /* fall through */ + case HID_TRANS_SET_REPORT: + /* fall through */ + case HID_TRANS_GET_PROTOCOL: + /* fall through */ + case HID_TRANS_GET_IDLE: + /* fall through */ + case HID_TRANS_SET_IDLE:/* set w4_handsk event name for callback function use */ + p_cb->w4_evt = event; + break; + case HID_TRANS_DATA: /* output report */ + /* fall through */ + case HID_TRANS_CONTROL: + /* no handshake event will be generated */ + /* if VC_UNPLUG is issued, set flag */ + if (p_data->api_sndcmd.param == BTA_HH_CTRL_VIRTUAL_CABLE_UNPLUG) { + p_cb->vp = TRUE; + } + + break; + /* currently not expected */ + case HID_TRANS_DATAC: + default: + APPL_TRACE_DEBUG("bta_hh_write_dev_act:: cmd type = %d", + p_data->api_sndcmd.t_type); + break; + } + + /* if not control type transaction, notify PM for energy control */ + if (p_data->api_sndcmd.t_type != HID_TRANS_CONTROL) { + /* inform PM for mode change */ + bta_sys_busy(BTA_ID_HH, p_cb->app_id, p_cb->addr); + bta_sys_idle(BTA_ID_HH, p_cb->app_id, p_cb->addr); + } else if (p_data->api_sndcmd.param == BTA_HH_CTRL_SUSPEND) { + bta_sys_sco_close(BTA_ID_HH, p_cb->app_id, p_cb->addr); + } else if (p_data->api_sndcmd.param == BTA_HH_CTRL_EXIT_SUSPEND) { + bta_sys_busy(BTA_ID_HH, p_cb->app_id, p_cb->addr); + } } - else if (p_data->api_sndcmd.param == BTA_HH_CTRL_SUSPEND) - { - bta_sys_sco_close(BTA_ID_HH, p_cb->app_id, p_cb->addr); - } - else if (p_data->api_sndcmd.param == BTA_HH_CTRL_EXIT_SUSPEND) - { - bta_sys_busy(BTA_ID_HH, p_cb->app_id, p_cb->addr); - } - } } return; @@ -1183,7 +1112,7 @@ void bta_hh_write_dev_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) ** *******************************************************************************/ static void bta_hh_cback (UINT8 dev_handle, BD_ADDR addr, UINT8 event, - UINT32 data, BT_HDR *pdata) + UINT32 data, BT_HDR *pdata) { tBTA_HH_CBACK_DATA *p_buf = NULL; UINT16 sm_event = BTA_HH_INVALID_EVT; @@ -1193,8 +1122,7 @@ static void bta_hh_cback (UINT8 dev_handle, BD_ADDR addr, UINT8 event, APPL_TRACE_DEBUG("bta_hh_cback::HID_event [%s]", bta_hh_hid_event_name(event)); #endif - switch (event) - { + switch (event) { case HID_HDEV_EVT_OPEN: sm_event = BTA_HH_INT_OPEN_EVT; break; @@ -1218,21 +1146,18 @@ static void bta_hh_cback (UINT8 dev_handle, BD_ADDR addr, UINT8 event, utl_freebuf((void **)&pdata); break; case HID_HDEV_EVT_VC_UNPLUG: - for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx++) - { - if (bta_hh_cb.kdev[xx].hid_handle == dev_handle) - { - bta_hh_cb.kdev[xx].vp = TRUE; - break; + for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx++) { + if (bta_hh_cb.kdev[xx].hid_handle == dev_handle) { + bta_hh_cb.kdev[xx].vp = TRUE; + break; } } break; } if (sm_event != BTA_HH_INVALID_EVT && - (p_buf = (tBTA_HH_CBACK_DATA *)GKI_getbuf(sizeof(tBTA_HH_CBACK_DATA) + - sizeof(BT_HDR))) != NULL) - { + (p_buf = (tBTA_HH_CBACK_DATA *)GKI_getbuf(sizeof(tBTA_HH_CBACK_DATA) + + sizeof(BT_HDR))) != NULL) { p_buf->hdr.event = sm_event; p_buf->hdr.layer_specific = (UINT16)dev_handle; p_buf->data = data; @@ -1253,8 +1178,7 @@ static void bta_hh_cback (UINT8 dev_handle, BD_ADDR addr, UINT8 event, *******************************************************************************/ static tBTA_HH_STATUS bta_hh_get_trans_status(UINT32 result) { - switch(result) - { + switch (result) { case HID_PAR_HANDSHAKE_RSP_SUCCESS : /* (0) */ return BTA_HH_OK; case HID_PAR_HANDSHAKE_RSP_NOT_READY : /* (1) */ @@ -1274,10 +1198,9 @@ static tBTA_HH_STATUS bta_hh_get_trans_status(UINT32 result) *****************************************************************************/ #if (defined BTA_HH_DEBUG && BTA_HH_DEBUG == TRUE) -static char* bta_hh_get_w4_event(UINT16 event) +static char *bta_hh_get_w4_event(UINT16 event) { - switch (event) - { + switch (event) { case BTA_HH_GET_RPT_EVT: return "BTA_HH_GET_RPT_EVT"; case BTA_HH_SET_RPT_EVT: @@ -1298,10 +1221,9 @@ static char* bta_hh_get_w4_event(UINT16 event) } -static char * bta_hh_hid_event_name(UINT16 event) +static char *bta_hh_hid_event_name(UINT16 event) { - switch (event) - { + switch (event) { case HID_HDEV_EVT_OPEN: return "HID_HDEV_EVT_OPEN"; case HID_HDEV_EVT_CLOSE: diff --git a/components/bt/bluedroid/bta/hh/bta_hh_api.c b/components/bt/bluedroid/bta/hh/bta_hh_api.c index 1fdbc29284..efc00561c7 100644 --- a/components/bt/bluedroid/bta/hh/bta_hh_api.c +++ b/components/bt/bluedroid/bta/hh/bta_hh_api.c @@ -42,8 +42,7 @@ ** Constants *****************************************************************************/ -static const tBTA_SYS_REG bta_hh_reg = -{ +static const tBTA_SYS_REG bta_hh_reg = { bta_hh_hdl_event, BTA_HhDisable }; @@ -71,8 +70,7 @@ void BTA_HhEnable(tBTA_SEC sec_mask, tBTA_HH_CBACK *p_cback) LOG_INFO("%s sec_mask:0x%x p_cback:%p", __func__, sec_mask, p_cback); p_buf = (tBTA_HH_API_ENABLE *)GKI_getbuf((UINT16)sizeof(tBTA_HH_API_ENABLE)); - if (p_buf != NULL) - { + if (p_buf != NULL) { memset(p_buf, 0, sizeof(tBTA_HH_API_ENABLE)); p_buf->hdr.event = BTA_HH_API_ENABLE_EVT; @@ -98,8 +96,7 @@ void BTA_HhDisable(void) BT_HDR *p_buf; bta_sys_deregister(BTA_ID_HH); - if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR))) != NULL) - { + if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR))) != NULL) { p_buf->event = BTA_HH_API_DISABLE_EVT; bta_sys_sendmsg(p_buf); } @@ -118,8 +115,7 @@ void BTA_HhClose(UINT8 dev_handle) { BT_HDR *p_buf; - if ((p_buf = (BT_HDR *)GKI_getbuf((UINT16)sizeof(BT_HDR))) != NULL) - { + if ((p_buf = (BT_HDR *)GKI_getbuf((UINT16)sizeof(BT_HDR))) != NULL) { memset(p_buf, 0, sizeof(BT_HDR)); p_buf->event = BTA_HH_API_CLOSE_EVT; p_buf->layer_specific = (UINT16) dev_handle; @@ -144,8 +140,7 @@ void BTA_HhOpen(BD_ADDR dev_bda, tBTA_HH_PROTO_MODE mode, tBTA_SEC sec_mask) p_buf = (tBTA_HH_API_CONN *)GKI_getbuf((UINT16)sizeof(tBTA_HH_API_CONN)); - if (p_buf!= NULL) - { + if (p_buf != NULL) { memset((void *)p_buf, 0, sizeof(tBTA_HH_API_CONN)); p_buf->hdr.event = BTA_HH_API_OPEN_EVT; @@ -155,9 +150,7 @@ void BTA_HhOpen(BD_ADDR dev_bda, tBTA_HH_PROTO_MODE mode, tBTA_SEC sec_mask) bdcpy(p_buf->bd_addr, dev_bda); bta_sys_sendmsg((void *)p_buf); - } - else - { + } else { APPL_TRACE_ERROR("No resource to send HID host Connect request."); } } @@ -173,8 +166,7 @@ static void bta_hh_snd_write_dev(UINT8 dev_handle, UINT8 t_type, UINT8 param, tBTA_HH_CMD_DATA *p_buf; UINT16 len = (UINT16) (sizeof(tBTA_HH_CMD_DATA) ); - if ((p_buf = (tBTA_HH_CMD_DATA *)GKI_getbuf(len))!= NULL) - { + if ((p_buf = (tBTA_HH_CMD_DATA *)GKI_getbuf(len)) != NULL) { memset(p_buf, 0, sizeof(tBTA_HH_CMD_DATA)); p_buf->hdr.event = BTA_HH_API_WRITE_DEV_EVT; @@ -218,7 +210,7 @@ void BTA_HhGetReport(UINT8 dev_handle, tBTA_HH_RPT_TYPE r_type, UINT8 rpt_id, UI UINT8 param = (buf_size) ? (r_type | 0x08) : r_type; bta_hh_snd_write_dev(dev_handle, HID_TRANS_GET_REPORT, param, - buf_size, rpt_id, NULL); + buf_size, rpt_id, NULL); } /******************************************************************************* ** @@ -232,7 +224,7 @@ void BTA_HhGetReport(UINT8 dev_handle, tBTA_HH_RPT_TYPE r_type, UINT8 rpt_id, UI void BTA_HhSetProtoMode(UINT8 dev_handle, tBTA_HH_PROTO_MODE p_type) { bta_hh_snd_write_dev(dev_handle, HID_TRANS_SET_PROTOCOL, (UINT8)p_type, - 0, 0, NULL); + 0, 0, NULL); } /******************************************************************************* ** @@ -309,8 +301,7 @@ void BTA_HhSendData(UINT8 dev_handle, BD_ADDR dev_bda, BT_HDR *p_data) { UNUSED(dev_bda); #if (defined BTA_HH_LE_INCLUDED && BTA_HH_LE_INCLUDED == TRUE) - if (p_data->layer_specific != BTA_HH_RPTT_OUTPUT) - { + if (p_data->layer_specific != BTA_HH_RPTT_OUTPUT) { APPL_TRACE_ERROR("ERROR! Wrong report type! Write Command only valid for output report!"); return; } @@ -331,8 +322,7 @@ void BTA_HhGetDscpInfo(UINT8 dev_handle) { BT_HDR *p_buf; - if ((p_buf = (BT_HDR *)GKI_getbuf((UINT16)sizeof(BT_HDR))) != NULL) - { + if ((p_buf = (BT_HDR *)GKI_getbuf((UINT16)sizeof(BT_HDR))) != NULL) { memset(p_buf, 0, sizeof(BT_HDR)); p_buf->event = BTA_HH_API_GET_DSCP_EVT; p_buf->layer_specific = (UINT16) dev_handle; @@ -361,8 +351,7 @@ void BTA_HhAddDev(BD_ADDR bda, tBTA_HH_ATTR_MASK attr_mask, UINT8 sub_class, p_buf = (tBTA_HH_MAINT_DEV *)GKI_getbuf(len); - if (p_buf != NULL) - { + if (p_buf != NULL) { memset(p_buf, 0, sizeof(tBTA_HH_MAINT_DEV)); p_buf->hdr.event = BTA_HH_API_MAINT_DEV_EVT; @@ -375,14 +364,11 @@ void BTA_HhAddDev(BD_ADDR bda, tBTA_HH_ATTR_MASK attr_mask, UINT8 sub_class, bdcpy(p_buf->bda, bda); memcpy(&p_buf->dscp_info, &dscp_info, sizeof(tBTA_HH_DEV_DSCP_INFO)); - if ( dscp_info.descriptor.dl_len != 0 && dscp_info.descriptor.dsc_list) - { + if ( dscp_info.descriptor.dl_len != 0 && dscp_info.descriptor.dsc_list) { p_buf->dscp_info.descriptor.dl_len = dscp_info.descriptor.dl_len; p_buf->dscp_info.descriptor.dsc_list = (UINT8 *)(p_buf + 1); memcpy(p_buf->dscp_info.descriptor.dsc_list, dscp_info.descriptor.dsc_list, dscp_info.descriptor.dl_len); - } - else - { + } else { p_buf->dscp_info.descriptor.dsc_list = NULL; p_buf->dscp_info.descriptor.dl_len = 0; } @@ -405,8 +391,7 @@ void BTA_HhRemoveDev(UINT8 dev_handle ) p_buf = (tBTA_HH_MAINT_DEV *)GKI_getbuf((UINT16)sizeof(tBTA_HH_MAINT_DEV)); - if (p_buf != NULL) - { + if (p_buf != NULL) { memset(p_buf, 0, sizeof(tBTA_HH_MAINT_DEV)); p_buf->hdr.event = BTA_HH_API_MAINT_DEV_EVT; @@ -434,8 +419,7 @@ void BTA_HhUpdateLeScanParam(UINT8 dev_handle, UINT16 scan_int, UINT16 scan_win) p_buf = (tBTA_HH_SCPP_UPDATE *)GKI_getbuf((UINT16)sizeof(tBTA_HH_SCPP_UPDATE)); - if (p_buf != NULL) - { + if (p_buf != NULL) { memset(p_buf, 0, sizeof(tBTA_HH_SCPP_UPDATE)); p_buf->hdr.event = BTA_HH_API_SCPP_UPDATE_EVT; @@ -469,14 +453,12 @@ void BTA_HhParseBootRpt(tBTA_HH_BOOT_RPT *p_data, UINT8 *p_report, { p_data->dev_type = BTA_HH_DEVT_UNKNOWN; - if (p_report) - { + if (p_report) { /* first byte is report ID */ - switch (p_report[0]) - { + switch (p_report[0]) { case BTA_HH_KEYBD_RPT_ID: /* key board report ID */ p_data->dev_type = p_report[0]; - bta_hh_parse_keybd_rpt(p_data, p_report + 1, (UINT16)(report_len -1)); + bta_hh_parse_keybd_rpt(p_data, p_report + 1, (UINT16)(report_len - 1)); break; case BTA_HH_MOUSE_RPT_ID: /* mouse report ID */ diff --git a/components/bt/bluedroid/bta/hh/bta_hh_cfg.c b/components/bt/bluedroid/bta/hh/bta_hh_cfg.c index e3ffefe9b6..5cdc0b7287 100644 --- a/components/bt/bluedroid/bta/hh/bta_hh_cfg.c +++ b/components/bt/bluedroid/bta/hh/bta_hh_cfg.c @@ -37,11 +37,10 @@ /* The type of devices supported by BTA HH and corresponding application ID */ -tBTA_HH_SPT_TOD p_devt_list[BTA_HH_MAX_DEVT_SPT] = -{ +tBTA_HH_SPT_TOD p_devt_list[BTA_HH_MAX_DEVT_SPT] = { {BTA_HH_DEVT_MIC, BTA_HH_APP_ID_MI}, {BTA_HH_DEVT_KBD, BTA_HH_APP_ID_KB}, - {BTA_HH_DEVT_KBD|BTA_HH_DEVT_MIC, BTA_HH_APP_ID_KB}, + {BTA_HH_DEVT_KBD | BTA_HH_DEVT_MIC, BTA_HH_APP_ID_KB}, {BTA_HH_DEVT_RMC, BTA_HH_APP_ID_RMC}, {BTA_HH_DEVT_RMC | BTA_HH_DEVT_KBD, BTA_HH_APP_ID_RMC}, {BTA_HH_DEVT_MIC | BTA_HH_DEVT_DGT, BTA_HH_APP_ID_MI}, @@ -51,12 +50,11 @@ tBTA_HH_SPT_TOD p_devt_list[BTA_HH_MAX_DEVT_SPT] = }; -const tBTA_HH_CFG bta_hh_cfg = -{ +const tBTA_HH_CFG bta_hh_cfg = { BTA_HH_MAX_DEVT_SPT, /* number of supported type of devices */ p_devt_list, /* ToD & AppID list */ BTA_HH_DISC_BUF_SIZE /* HH SDP discovery database size */ }; -tBTA_HH_CFG *p_bta_hh_cfg = (tBTA_HH_CFG *)&bta_hh_cfg; +tBTA_HH_CFG *p_bta_hh_cfg = (tBTA_HH_CFG *) &bta_hh_cfg; diff --git a/components/bt/bluedroid/bta/hh/bta_hh_int.h b/components/bt/bluedroid/bta/hh/bta_hh_int.h index c85b20fcbb..a5374dac01 100644 --- a/components/bt/bluedroid/bta/hh/bta_hh_int.h +++ b/components/bt/bluedroid/bta/hh/bta_hh_int.h @@ -42,8 +42,7 @@ #endif /* state machine events, these events are handled by the state machine */ -enum -{ +enum { BTA_HH_API_OPEN_EVT = BTA_SYS_EVT_START(BTA_ID_HH), BTA_HH_API_CLOSE_EVT, BTA_HH_INT_OPEN_EVT, @@ -87,23 +86,21 @@ typedef UINT16 tBTA_HH_INT_EVT; /* HID host internal events */ #define BTA_HH_REMOVE_DEV 1 /* state machine states */ -enum -{ +enum { BTA_HH_NULL_ST, BTA_HH_IDLE_ST, BTA_HH_W4_CONN_ST, BTA_HH_CONN_ST #if (defined BTA_HH_LE_INCLUDED && BTA_HH_LE_INCLUDED == TRUE) - ,BTA_HH_W4_SEC + , BTA_HH_W4_SEC #endif - ,BTA_HH_INVALID_ST /* Used to check invalid states before executing SM function */ + , BTA_HH_INVALID_ST /* Used to check invalid states before executing SM function */ }; typedef UINT8 tBTA_HH_STATE; /* data structure used to send a command/data to HID device */ -typedef struct -{ +typedef struct { BT_HDR hdr; UINT8 t_type; UINT8 param; @@ -113,36 +110,32 @@ typedef struct #endif UINT16 data; BT_HDR *p_data; -}tBTA_HH_CMD_DATA; +} tBTA_HH_CMD_DATA; /* data type for BTA_HH_API_ENABLE_EVT */ -typedef struct -{ +typedef struct { BT_HDR hdr; UINT8 sec_mask; - UINT8 service_name[BTA_SERVICE_NAME_LEN+1]; + UINT8 service_name[BTA_SERVICE_NAME_LEN + 1]; tBTA_HH_CBACK *p_cback; } tBTA_HH_API_ENABLE; -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR bd_addr; UINT8 sec_mask; tBTA_HH_PROTO_MODE mode; -}tBTA_HH_API_CONN; +} tBTA_HH_API_CONN; /* internal event data from BTE HID callback */ -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR addr; UINT32 data; BT_HDR *p_data; -}tBTA_HH_CBACK_DATA; +} tBTA_HH_CBACK_DATA; -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR bda; UINT16 attr_mask; @@ -150,27 +143,24 @@ typedef struct UINT8 sub_class; UINT8 app_id; tBTA_HH_DEV_DSCP_INFO dscp_info; -}tBTA_HH_MAINT_DEV; +} tBTA_HH_MAINT_DEV; #if BTA_HH_LE_INCLUDED == TRUE -typedef struct -{ +typedef struct { BT_HDR hdr; UINT16 conn_id; tBTA_GATT_REASON reason; /* disconnect reason code, not useful when connect event is reported */ -}tBTA_HH_LE_CLOSE; +} tBTA_HH_LE_CLOSE; -typedef struct -{ +typedef struct { BT_HDR hdr; UINT16 scan_int; UINT16 scan_win; -}tBTA_HH_SCPP_UPDATE; +} tBTA_HH_SCPP_UPDATE; #endif /* union of all event data types */ -typedef union -{ +typedef union { BT_HDR hdr; tBTA_HH_API_ENABLE api_enable; tBTA_HH_API_CONN api_conn; @@ -187,8 +177,7 @@ typedef union } tBTA_HH_DATA; #if (defined BTA_HH_LE_INCLUDED && BTA_HH_LE_INCLUDED == TRUE) -typedef struct -{ +typedef struct { UINT8 index; BOOLEAN in_use; UINT8 inst_id; /* share service instance ID and report instance ID, as @@ -199,14 +188,13 @@ typedef struct UINT8 rpt_id; BOOLEAN client_cfg_exist; UINT16 client_cfg_value; -}tBTA_HH_LE_RPT; +} tBTA_HH_LE_RPT; #ifndef BTA_HH_LE_RPT_MAX #define BTA_HH_LE_RPT_MAX 20 #endif -typedef struct -{ +typedef struct { BOOLEAN in_use; tBTA_HH_LE_RPT report[BTA_HH_LE_RPT_MAX]; @@ -221,7 +209,7 @@ typedef struct UINT16 ext_rpt_ref; tBTA_HH_DEV_DESCR descriptor; -}tBTA_HH_LE_HID_SRVC; +} tBTA_HH_LE_HID_SRVC; #ifndef BTA_HH_LE_HID_SRVC_MAX #define BTA_HH_LE_HID_SRVC_MAX 1 @@ -237,8 +225,7 @@ typedef struct #endif /* device control block */ -typedef struct -{ +typedef struct { tBTA_HH_DEV_DSCP_INFO dscp_info; /* report descriptor and DI information */ BD_ADDR addr; /* BD-Addr of the HID device */ UINT16 attr_mask; /* attribute mask */ @@ -285,8 +272,7 @@ typedef struct } tBTA_HH_DEV_CB; /* key board parsing control block */ -typedef struct -{ +typedef struct { BOOLEAN mod_key[4]; /* ctrl, shift(upper), Alt, GUI */ BOOLEAN num_lock; BOOLEAN caps_lock; @@ -296,14 +282,13 @@ typedef struct /****************************************************************************** ** Main Control Block *******************************************************************************/ -typedef struct -{ +typedef struct { tBTA_HH_KB_CB kb_cb; /* key board control block, suppose BTA will connect to only one keyboard at the same time */ tBTA_HH_DEV_CB kdev[BTA_HH_MAX_DEVICE]; /* device control block */ - tBTA_HH_DEV_CB* p_cur; /* current device control + tBTA_HH_DEV_CB *p_cur; /* current device control block idx, used in sdp */ UINT8 cb_index[BTA_HH_MAX_KNOWN]; /* maintain a CB index map to dev handle */ @@ -312,7 +297,7 @@ typedef struct tBTA_GATTC_IF gatt_if; #endif tBTA_HH_CBACK *p_cback; /* Application callbacks */ - tSDP_DISCOVERY_DB* p_disc_db; + tSDP_DISCOVERY_DB *p_disc_db; UINT8 trace_level; /* tracing level */ UINT8 cnt_num; /* connected device number */ BOOLEAN w4_disable; /* w4 disable flag */ @@ -340,8 +325,8 @@ extern void bta_hh_sm_execute(tBTA_HH_DEV_CB *p_cb, UINT16 event, extern void bta_hh_api_disc_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data); extern void bta_hh_open_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data); extern void bta_hh_close_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data); -extern void bta_hh_data_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA * p_data); -extern void bta_hh_ctrl_dat_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA * p_data); +extern void bta_hh_data_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data); +extern void bta_hh_ctrl_dat_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data); extern void bta_hh_start_sdp(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data); extern void bta_hh_sdp_cmpl(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data); extern void bta_hh_write_dev_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data); @@ -354,10 +339,10 @@ extern void bta_hh_open_failure(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data); /* utility functions */ extern UINT8 bta_hh_find_cb(BD_ADDR bda); extern void bta_hh_parse_keybd_rpt(tBTA_HH_BOOT_RPT *p_kb_data, - UINT8 *p_report, UINT16 report_len); + UINT8 *p_report, UINT16 report_len); extern void bta_hh_parse_mice_rpt(tBTA_HH_BOOT_RPT *p_kb_data, UINT8 *p_report, UINT16 report_len); -extern BOOLEAN bta_hh_tod_spt(tBTA_HH_DEV_CB *p_cb,UINT8 sub_class); +extern BOOLEAN bta_hh_tod_spt(tBTA_HH_DEV_CB *p_cb, UINT8 sub_class); extern void bta_hh_clean_up_kdev(tBTA_HH_DEV_CB *p_cb); extern void bta_hh_add_device_to_list(tBTA_HH_DEV_CB *p_cb, UINT8 handle, @@ -365,7 +350,7 @@ extern void bta_hh_add_device_to_list(tBTA_HH_DEV_CB *p_cb, UINT8 handle, tHID_DEV_DSCP_INFO *p_dscp_info, UINT8 sub_class, UINT16 max_latency, UINT16 min_tout, UINT8 app_id); extern void bta_hh_update_di_info(tBTA_HH_DEV_CB *p_cb, UINT16 vendor_id, UINT16 product_id, - UINT16 version, UINT8 flag); + UINT16 version, UINT8 flag); extern void bta_hh_cleanup_disable(tBTA_HH_STATUS status); extern UINT8 bta_hh_dev_handle_to_cb_idx(UINT8 dev_handle); diff --git a/components/bt/bluedroid/bta/hh/bta_hh_le.c b/components/bt/bluedroid/bta/hh/bta_hh_le.c index 48b0610723..b8d8a4e6ed 100644 --- a/components/bt/bluedroid/bta/hh/bta_hh_le.c +++ b/components/bt/bluedroid/bta/hh/bta_hh_le.c @@ -53,8 +53,7 @@ #define BTA_HH_SCPP_INST_DEF 0 #define BTA_HH_LE_DISC_CHAR_NUM 8 -static const UINT16 bta_hh_le_disc_char_uuid[BTA_HH_LE_DISC_CHAR_NUM] = -{ +static const UINT16 bta_hh_le_disc_char_uuid[BTA_HH_LE_DISC_CHAR_NUM] = { GATT_UUID_HID_INFORMATION, GATT_UUID_HID_REPORT_MAP, GATT_UUID_HID_CONTROL_POINT, @@ -66,8 +65,7 @@ static const UINT16 bta_hh_le_disc_char_uuid[BTA_HH_LE_DISC_CHAR_NUM] = }; #define BTA_LE_HID_RTP_UUID_MAX 5 -static const UINT16 bta_hh_uuid_to_rtp_type[BTA_LE_HID_RTP_UUID_MAX][2] = -{ +static const UINT16 bta_hh_uuid_to_rtp_type[BTA_LE_HID_RTP_UUID_MAX][2] = { {GATT_UUID_HID_REPORT, BTA_HH_RPTT_INPUT}, {GATT_UUID_HID_BT_KB_INPUT, BTA_HH_RPTT_INPUT}, {GATT_UUID_HID_BT_KB_OUTPUT, BTA_HH_RPTT_OUTPUT}, @@ -91,8 +89,7 @@ static void bta_hh_process_cache_rpt (tBTA_HH_DEV_CB *p_cb, #define BTA_HH_LE_SRVC_DEF 0 #if BTA_HH_DEBUG == TRUE -static const char *bta_hh_le_rpt_name[4] = -{ +static const char *bta_hh_le_rpt_name[4] = { "UNKNOWN", "INPUT", "OUTPUT", @@ -113,46 +110,46 @@ static void bta_hh_le_hid_report_dbg(tBTA_HH_DEV_CB *p_cb) { UINT8 i , j; tBTA_HH_LE_RPT *p_rpt; - char * rpt_name; + char *rpt_name; APPL_TRACE_DEBUG("HID Report DB"); - for (i = 0; i < BTA_HH_LE_HID_SRVC_MAX; i ++) - { - if (p_cb->hid_srvc[i].in_use) - { + for (i = 0; i < BTA_HH_LE_HID_SRVC_MAX; i ++) { + if (p_cb->hid_srvc[i].in_use) { p_rpt = &p_cb->hid_srvc[i].report[0]; APPL_TRACE_DEBUG("\t HID serivce inst: %d", i); - for (j = 0; j < BTA_HH_LE_RPT_MAX; j ++, p_rpt++) - { + for (j = 0; j < BTA_HH_LE_RPT_MAX; j ++, p_rpt++) { rpt_name = "Unknown"; - if (p_rpt->in_use) - { - if (p_rpt->uuid == GATT_UUID_HID_REPORT) + if (p_rpt->in_use) { + if (p_rpt->uuid == GATT_UUID_HID_REPORT) { rpt_name = "Report"; - if (p_rpt->uuid == GATT_UUID_HID_BT_KB_INPUT) + } + if (p_rpt->uuid == GATT_UUID_HID_BT_KB_INPUT) { rpt_name = "Boot KB Input"; - if (p_rpt->uuid == GATT_UUID_HID_BT_KB_OUTPUT) + } + if (p_rpt->uuid == GATT_UUID_HID_BT_KB_OUTPUT) { rpt_name = "Boot KB Output"; - if (p_rpt->uuid == GATT_UUID_HID_BT_MOUSE_INPUT) + } + if (p_rpt->uuid == GATT_UUID_HID_BT_MOUSE_INPUT) { rpt_name = "Boot MI Input"; + } APPL_TRACE_DEBUG("\t\t [%s- 0x%04x] [Type: %s], [ReportID: %d] [inst_id: %d] [Clt_cfg: %d]", - rpt_name, - p_rpt->uuid , - ((p_rpt->rpt_type < 4) ? bta_hh_le_rpt_name[p_rpt->rpt_type] : "UNKNOWN"), - p_rpt->rpt_id, - p_rpt->inst_id, - p_rpt->client_cfg_value); - } - else + rpt_name, + p_rpt->uuid , + ((p_rpt->rpt_type < 4) ? bta_hh_le_rpt_name[p_rpt->rpt_type] : "UNKNOWN"), + p_rpt->rpt_id, + p_rpt->inst_id, + p_rpt->client_cfg_value); + } else { break; + } } - } - else + } else { break; + } } } @@ -167,32 +164,31 @@ static void bta_hh_le_hid_report_dbg(tBTA_HH_DEV_CB *p_cb) *******************************************************************************/ static char *bta_hh_uuid_to_str(UINT16 uuid) { - switch(uuid) - { - case GATT_UUID_HID_INFORMATION: - return "GATT_UUID_HID_INFORMATION"; - case GATT_UUID_HID_REPORT_MAP: - return "GATT_UUID_HID_REPORT_MAP"; - case GATT_UUID_HID_CONTROL_POINT: - return "GATT_UUID_HID_CONTROL_POINT"; - case GATT_UUID_HID_REPORT: - return "GATT_UUID_HID_REPORT"; - case GATT_UUID_HID_PROTO_MODE: - return "GATT_UUID_HID_PROTO_MODE"; - case GATT_UUID_HID_BT_KB_INPUT: - return "GATT_UUID_HID_BT_KB_INPUT"; - case GATT_UUID_HID_BT_KB_OUTPUT: - return "GATT_UUID_HID_BT_KB_OUTPUT"; - case GATT_UUID_HID_BT_MOUSE_INPUT: - return "GATT_UUID_HID_BT_MOUSE_INPUT"; - case GATT_UUID_CHAR_CLIENT_CONFIG: - return "GATT_UUID_CHAR_CLIENT_CONFIG"; - case GATT_UUID_EXT_RPT_REF_DESCR: - return "GATT_UUID_EXT_RPT_REF_DESCR"; - case GATT_UUID_RPT_REF_DESCR: - return "GATT_UUID_RPT_REF_DESCR"; - default: - return "Unknown UUID"; + switch (uuid) { + case GATT_UUID_HID_INFORMATION: + return "GATT_UUID_HID_INFORMATION"; + case GATT_UUID_HID_REPORT_MAP: + return "GATT_UUID_HID_REPORT_MAP"; + case GATT_UUID_HID_CONTROL_POINT: + return "GATT_UUID_HID_CONTROL_POINT"; + case GATT_UUID_HID_REPORT: + return "GATT_UUID_HID_REPORT"; + case GATT_UUID_HID_PROTO_MODE: + return "GATT_UUID_HID_PROTO_MODE"; + case GATT_UUID_HID_BT_KB_INPUT: + return "GATT_UUID_HID_BT_KB_INPUT"; + case GATT_UUID_HID_BT_KB_OUTPUT: + return "GATT_UUID_HID_BT_KB_OUTPUT"; + case GATT_UUID_HID_BT_MOUSE_INPUT: + return "GATT_UUID_HID_BT_MOUSE_INPUT"; + case GATT_UUID_CHAR_CLIENT_CONFIG: + return "GATT_UUID_CHAR_CLIENT_CONFIG"; + case GATT_UUID_EXT_RPT_REF_DESCR: + return "GATT_UUID_EXT_RPT_REF_DESCR"; + case GATT_UUID_RPT_REF_DESCR: + return "GATT_UUID_RPT_REF_DESCR"; + default: + return "Unknown UUID"; } } @@ -210,13 +206,14 @@ static char *bta_hh_uuid_to_str(UINT16 uuid) void bta_hh_le_enable(void) { char app_name[LEN_UUID_128 + 1]; - tBT_UUID app_uuid = {LEN_UUID_128,{0}}; + tBT_UUID app_uuid = {LEN_UUID_128, {0}}; UINT8 xx; bta_hh_cb.gatt_if = BTA_GATTS_INVALID_IF; - for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx ++) + for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx ++) { bta_hh_cb.le_cb_index[xx] = BTA_HH_IDX_INVALID; + } memset (app_name, 0, LEN_UUID_128 + 1); strncpy(app_name, "BTA HH OVER LE", LEN_UUID_128); @@ -241,13 +238,12 @@ void bta_hh_le_register_cmpl(tBTA_GATTC_REG *p_reg) { tBTA_HH_STATUS status = BTA_HH_ERR; - if (p_reg->status == BTA_GATT_OK) - { + if (p_reg->status == BTA_GATT_OK) { bta_hh_cb.gatt_if = p_reg->client_if; status = BTA_HH_OK; - } - else + } else { bta_hh_cb.gatt_if = BTA_GATTS_INVALID_IF; + } /* signal BTA call back event */ (* bta_hh_cb.p_cback)(BTA_HH_ENABLE_EVT, (tBTA_HH *)&status); @@ -312,13 +308,10 @@ BOOLEAN bta_hh_le_add_hid_srvc_entry(tBTA_HH_DEV_CB *p_dev_cb, UINT8 idx) { BOOLEAN added = FALSE; - if (idx < BTA_HH_LE_HID_SRVC_MAX) - { + if (idx < BTA_HH_LE_HID_SRVC_MAX) { p_dev_cb->hid_srvc[idx].in_use = TRUE; added = TRUE; - } - else - { + } else { APPL_TRACE_ERROR("DB full,max HID service entry!"); } return added; @@ -397,15 +390,15 @@ void bta_hh_le_fill_16bits_char_id(UINT8 inst_id, UINT16 char_uuid, ** Description Utility function find a device control block by connection ID. ** *******************************************************************************/ -tBTA_HH_DEV_CB * bta_hh_le_find_dev_cb_by_conn_id(UINT16 conn_id) +tBTA_HH_DEV_CB *bta_hh_le_find_dev_cb_by_conn_id(UINT16 conn_id) { UINT8 i; tBTA_HH_DEV_CB *p_dev_cb = &bta_hh_cb.kdev[0]; - for (i = 0; i < BTA_HH_MAX_DEVICE; i ++, p_dev_cb ++) - { - if (p_dev_cb->in_use && p_dev_cb->conn_id == conn_id) + for (i = 0; i < BTA_HH_MAX_DEVICE; i ++, p_dev_cb ++) { + if (p_dev_cb->in_use && p_dev_cb->conn_id == conn_id) { return p_dev_cb; + } } return NULL; } @@ -417,16 +410,16 @@ tBTA_HH_DEV_CB * bta_hh_le_find_dev_cb_by_conn_id(UINT16 conn_id) ** Description Utility function find a device control block by BD address. ** *******************************************************************************/ -tBTA_HH_DEV_CB * bta_hh_le_find_dev_cb_by_bda(BD_ADDR bda) +tBTA_HH_DEV_CB *bta_hh_le_find_dev_cb_by_bda(BD_ADDR bda) { UINT8 i; tBTA_HH_DEV_CB *p_dev_cb = &bta_hh_cb.kdev[0]; - for (i = 0; i < BTA_HH_MAX_DEVICE; i ++, p_dev_cb ++) - { + for (i = 0; i < BTA_HH_MAX_DEVICE; i ++, p_dev_cb ++) { if (p_dev_cb->in_use && - memcmp(p_dev_cb->addr, bda, BD_ADDR_LEN) == 0) + memcmp(p_dev_cb->addr, bda, BD_ADDR_LEN) == 0) { return p_dev_cb; + } } return NULL; } @@ -442,11 +435,9 @@ UINT8 bta_hh_le_find_service_inst_by_battery_inst_id(tBTA_HH_DEV_CB *p_cb, UINT8 { UINT8 i; - for (i = 0; i < BTA_HH_LE_HID_SRVC_MAX; i ++) - { + for (i = 0; i < BTA_HH_LE_HID_SRVC_MAX; i ++) { if (p_cb->hid_srvc[i].in_use && - p_cb->hid_srvc[i].incl_srvc_inst == ba_inst_id) - { + p_cb->hid_srvc[i].incl_srvc_inst == ba_inst_id) { return i; } } @@ -461,30 +452,28 @@ UINT8 bta_hh_le_find_service_inst_by_battery_inst_id(tBTA_HH_DEV_CB *p_cb, UINT8 ** instance ID ** *******************************************************************************/ -tBTA_HH_LE_RPT * bta_hh_le_find_report_entry(tBTA_HH_DEV_CB *p_cb, - UINT8 srvc_inst_id, /* service instance ID */ - UINT16 rpt_uuid, - UINT8 char_inst_id) +tBTA_HH_LE_RPT *bta_hh_le_find_report_entry(tBTA_HH_DEV_CB *p_cb, + UINT8 srvc_inst_id, /* service instance ID */ + UINT16 rpt_uuid, + UINT8 char_inst_id) { UINT8 i; UINT8 hid_inst_id = srvc_inst_id; tBTA_HH_LE_RPT *p_rpt; - if (rpt_uuid == GATT_UUID_BATTERY_LEVEL) - { + if (rpt_uuid == GATT_UUID_BATTERY_LEVEL) { hid_inst_id = bta_hh_le_find_service_inst_by_battery_inst_id(p_cb, srvc_inst_id); - if (hid_inst_id == BTA_HH_IDX_INVALID) + if (hid_inst_id == BTA_HH_IDX_INVALID) { return NULL; + } } p_rpt = &p_cb->hid_srvc[hid_inst_id].report[0]; - for (i = 0; i < BTA_HH_LE_RPT_MAX; i ++, p_rpt ++) - { + for (i = 0; i < BTA_HH_LE_RPT_MAX; i ++, p_rpt ++) { if (p_rpt->uuid == rpt_uuid && - p_rpt->inst_id == BTA_HH_LE_RPT_INST_ID_MAP(srvc_inst_id, char_inst_id)) - { + p_rpt->inst_id == BTA_HH_LE_RPT_INST_ID_MAP(srvc_inst_id, char_inst_id)) { return p_rpt; } @@ -502,8 +491,8 @@ tBTA_HH_LE_RPT * bta_hh_le_find_report_entry(tBTA_HH_DEV_CB *p_cb, ** Returns void ** *******************************************************************************/ -tBTA_HH_LE_RPT * bta_hh_le_find_rpt_by_idtype(tBTA_HH_LE_RPT*p_head, UINT8 mode, - tBTA_HH_RPT_TYPE r_type, UINT8 rpt_id) +tBTA_HH_LE_RPT *bta_hh_le_find_rpt_by_idtype(tBTA_HH_LE_RPT *p_head, UINT8 mode, + tBTA_HH_RPT_TYPE r_type, UINT8 rpt_id) { tBTA_HH_LE_RPT *p_rpt = p_head; UINT8 i; @@ -512,20 +501,21 @@ tBTA_HH_LE_RPT * bta_hh_le_find_rpt_by_idtype(tBTA_HH_LE_RPT*p_head, UINT8 mode, APPL_TRACE_DEBUG("bta_hh_le_find_rpt_by_idtype: r_type: %d rpt_id: %d", r_type, rpt_id); #endif - for (i = 0 ; i < BTA_HH_LE_RPT_MAX; i ++, p_rpt++) - { - if (p_rpt->in_use && p_rpt->rpt_id == rpt_id && r_type == p_rpt->rpt_type) - { + for (i = 0 ; i < BTA_HH_LE_RPT_MAX; i ++, p_rpt++) { + if (p_rpt->in_use && p_rpt->rpt_id == rpt_id && r_type == p_rpt->rpt_type) { /* return battery report w/o condition */ - if (p_rpt->uuid == GATT_UUID_BATTERY_LEVEL) + if (p_rpt->uuid == GATT_UUID_BATTERY_LEVEL) { return p_rpt; + } - if (mode == BTA_HH_PROTO_RPT_MODE && p_rpt->uuid == GATT_UUID_HID_REPORT) + if (mode == BTA_HH_PROTO_RPT_MODE && p_rpt->uuid == GATT_UUID_HID_REPORT) { return p_rpt; + } - if ( mode ==BTA_HH_PROTO_BOOT_MODE && - (p_rpt->uuid >= GATT_UUID_HID_BT_KB_INPUT && p_rpt->uuid <= GATT_UUID_HID_BT_MOUSE_INPUT)) + if ( mode == BTA_HH_PROTO_BOOT_MODE && + (p_rpt->uuid >= GATT_UUID_HID_BT_KB_INPUT && p_rpt->uuid <= GATT_UUID_HID_BT_MOUSE_INPUT)) { return p_rpt; + } } } return NULL; @@ -538,32 +528,29 @@ tBTA_HH_LE_RPT * bta_hh_le_find_rpt_by_idtype(tBTA_HH_LE_RPT*p_head, UINT8 mode, ** Description find or allocate a report entry in the HID service report list. ** *******************************************************************************/ -tBTA_HH_LE_RPT * bta_hh_le_find_alloc_report_entry(tBTA_HH_DEV_CB *p_cb, - UINT8 srvc_inst_id, - UINT16 rpt_uuid, - UINT8 inst_id, - UINT8 prop) +tBTA_HH_LE_RPT *bta_hh_le_find_alloc_report_entry(tBTA_HH_DEV_CB *p_cb, + UINT8 srvc_inst_id, + UINT16 rpt_uuid, + UINT8 inst_id, + UINT8 prop) { UINT8 i, hid_inst_id = srvc_inst_id; tBTA_HH_LE_RPT *p_rpt; - if (rpt_uuid == GATT_UUID_BATTERY_LEVEL) - { + if (rpt_uuid == GATT_UUID_BATTERY_LEVEL) { hid_inst_id = bta_hh_le_find_service_inst_by_battery_inst_id(p_cb, srvc_inst_id); - if (hid_inst_id == BTA_HH_IDX_INVALID) + if (hid_inst_id == BTA_HH_IDX_INVALID) { return NULL; + } } p_rpt = &p_cb->hid_srvc[hid_inst_id].report[0]; - for (i = 0; i < BTA_HH_LE_RPT_MAX; i ++, p_rpt ++) - { + for (i = 0; i < BTA_HH_LE_RPT_MAX; i ++, p_rpt ++) { if (!p_rpt->in_use || - (p_rpt->uuid == rpt_uuid && - p_rpt->inst_id == BTA_HH_LE_RPT_INST_ID_MAP(srvc_inst_id, inst_id))) - { - if (!p_rpt->in_use) - { + (p_rpt->uuid == rpt_uuid && + p_rpt->inst_id == BTA_HH_LE_RPT_INST_ID_MAP(srvc_inst_id, inst_id))) { + if (!p_rpt->in_use) { p_rpt->in_use = TRUE; p_rpt->index = i; p_rpt->inst_id = BTA_HH_LE_RPT_INST_ID_MAP(srvc_inst_id, inst_id); @@ -571,17 +558,17 @@ tBTA_HH_LE_RPT * bta_hh_le_find_alloc_report_entry(tBTA_HH_DEV_CB *p_cb, p_rpt->uuid = rpt_uuid; /* assign report type */ - for (i = 0; i < BTA_LE_HID_RTP_UUID_MAX; i ++) - { - if (bta_hh_uuid_to_rtp_type[i][0] == rpt_uuid) - { + for (i = 0; i < BTA_LE_HID_RTP_UUID_MAX; i ++) { + if (bta_hh_uuid_to_rtp_type[i][0] == rpt_uuid) { p_rpt->rpt_type = (tBTA_HH_RPT_TYPE)bta_hh_uuid_to_rtp_type[i][1]; - if (rpt_uuid == GATT_UUID_HID_BT_KB_INPUT || rpt_uuid == GATT_UUID_HID_BT_KB_OUTPUT) + if (rpt_uuid == GATT_UUID_HID_BT_KB_INPUT || rpt_uuid == GATT_UUID_HID_BT_KB_OUTPUT) { p_rpt->rpt_id = BTA_HH_KEYBD_RPT_ID; + } - if (rpt_uuid == GATT_UUID_HID_BT_MOUSE_INPUT) + if (rpt_uuid == GATT_UUID_HID_BT_MOUSE_INPUT) { p_rpt->rpt_id = BTA_HH_MOUSE_RPT_ID; + } break; } @@ -601,7 +588,7 @@ tBTA_HH_LE_RPT * bta_hh_le_find_alloc_report_entry(tBTA_HH_DEV_CB *p_cb, ** *******************************************************************************/ tBTA_HH_STATUS bta_hh_le_read_char_dscrpt(tBTA_HH_DEV_CB *p_cb, UINT16 srvc_uuid, UINT8 srvc_inst_id, - UINT16 char_uuid, UINT8 char_inst_id, UINT16 char_descp_uuid) + UINT16 char_uuid, UINT8 char_inst_id, UINT16 char_descp_uuid) { tBTA_GATTC_CHAR_ID char_id; tBT_UUID descr_uuid; @@ -616,21 +603,18 @@ tBTA_HH_STATUS bta_hh_le_read_char_dscrpt(tBTA_HH_DEV_CB *p_cb, UINT16 srvc_uuid /* find the report reference descriptor */ if (BTA_GATTC_GetFirstCharDescr(p_cb->conn_id, - &char_id, - &descr_uuid, - &descr_id) == BTA_GATT_OK) - { + &char_id, + &descr_uuid, + &descr_id) == BTA_GATT_OK) { BTA_GATTC_ReadCharDescr(p_cb->conn_id, &descr_id, BTA_GATT_AUTH_REQ_NONE); status = BTA_HH_OK; - } - else - { + } else { #if BTA_HH_DEBUG == TRUE - LOG_WARN("%s No descriptor exists: %s(0x%04x)", __func__, - bta_hh_uuid_to_str(char_descp_uuid), char_descp_uuid); + LOG_WARN("%s No descriptor exists: %s(0x%04x)", __func__, + bta_hh_uuid_to_str(char_descp_uuid), char_descp_uuid); #endif } return status; @@ -648,24 +632,20 @@ void bta_hh_le_read_rpt_ref_descr(tBTA_HH_DEV_CB *p_dev_cb, tBTA_HH_LE_RPT *p_rp BOOLEAN started = FALSE; UINT16 srvc_uuid, char_uuid; - while (p_rpt != NULL) - { - if(!p_rpt->in_use) + while (p_rpt != NULL) { + if (!p_rpt->in_use) { break; + } - if (p_rpt->rpt_type == BTA_HH_RPTT_INPUT) - { + if (p_rpt->rpt_type == BTA_HH_RPTT_INPUT) { /* is battery report */ - if (p_rpt->uuid == GATT_UUID_BATTERY_LEVEL) - { + if (p_rpt->uuid == GATT_UUID_BATTERY_LEVEL) { #if BTA_HH_DEBUG == TRUE APPL_TRACE_DEBUG("read battery level report reference descriptor"); #endif srvc_uuid = UUID_SERVCLASS_BATTERY; char_uuid = GATT_UUID_BATTERY_LEVEL; - } - else - { + } else { #if BTA_HH_DEBUG == TRUE APPL_TRACE_DEBUG("read HID report reference descriptor"); #endif @@ -674,28 +654,27 @@ void bta_hh_le_read_rpt_ref_descr(tBTA_HH_DEV_CB *p_dev_cb, tBTA_HH_LE_RPT *p_rp } if (bta_hh_le_read_char_dscrpt(p_dev_cb, - srvc_uuid, - BTA_HH_LE_RPT_GET_SRVC_INST_ID(p_rpt->inst_id), - char_uuid, - BTA_HH_LE_RPT_GET_RPT_INST_ID(p_rpt->inst_id), - GATT_UUID_RPT_REF_DESCR) - == BTA_HH_OK) - { + srvc_uuid, + BTA_HH_LE_RPT_GET_SRVC_INST_ID(p_rpt->inst_id), + char_uuid, + BTA_HH_LE_RPT_GET_RPT_INST_ID(p_rpt->inst_id), + GATT_UUID_RPT_REF_DESCR) + == BTA_HH_OK) { started = TRUE; break; } } - if (p_rpt->index == BTA_HH_LE_RPT_MAX - 1) + if (p_rpt->index == BTA_HH_LE_RPT_MAX - 1) { break; + } p_rpt ++; } /* if no report reference descriptor */ - if (!started) - { + if (!started) { /* explore next char */ bta_hh_le_search_hid_chars(p_dev_cb); } @@ -718,15 +697,15 @@ void bta_hh_le_save_rpt_ref(tBTA_HH_DEV_CB *p_dev_cb, tBTA_HH_LE_RPT *p_rpt, /* if the length of the descriptor value is right, parse it */ if (p_data->status == BTA_GATT_OK && - p_data->p_value && p_data->p_value->unformat.len == 2) - { + p_data->p_value && p_data->p_value->unformat.len == 2) { pp = p_data->p_value->unformat.p_value; STREAM_TO_UINT8(p_rpt->rpt_id, pp); STREAM_TO_UINT8(p_rpt->rpt_type, pp); - if (p_rpt->rpt_type > BTA_HH_RPTT_FEATURE) /* invalid report type */ + if (p_rpt->rpt_type > BTA_HH_RPTT_FEATURE) { /* invalid report type */ p_rpt->rpt_type = BTA_HH_RPTT_RESRV; + } #if BTA_HH_DEBUG == TRUE APPL_TRACE_DEBUG("report ID: %d", p_rpt->rpt_id); @@ -740,9 +719,7 @@ void bta_hh_le_save_rpt_ref(tBTA_HH_DEV_CB *p_dev_cb, tBTA_HH_LE_RPT *p_rpt, bta_hh_le_co_rpt_info(p_dev_cb->addr, &rpt_entry, p_dev_cb->app_id); - } - else if (p_data->status == BTA_GATT_INSUF_AUTHENTICATION) - { + } else if (p_data->status == BTA_GATT_INSUF_AUTHENTICATION) { /* close connection right away */ p_dev_cb->status = BTA_HH_ERR_AUTH_FAILED; /* close the connection and report service discovery complete with error */ @@ -750,10 +727,11 @@ void bta_hh_le_save_rpt_ref(tBTA_HH_DEV_CB *p_dev_cb, tBTA_HH_LE_RPT *p_rpt, return; } - if (p_rpt->index < BTA_HH_LE_RPT_MAX - 1) + if (p_rpt->index < BTA_HH_LE_RPT_MAX - 1) { p_rpt ++; - else + } else { p_rpt = NULL; + } /* read next report reference descriptor */ bta_hh_le_read_rpt_ref_descr(p_dev_cb, p_rpt); @@ -777,14 +755,13 @@ void bta_hh_le_save_ext_rpt_ref(tBTA_HH_DEV_CB *p_dev_cb, /* if the length of the descriptor value is right, parse it assume it's a 16 bits UUID */ if (p_data->status == BTA_GATT_OK && - p_data->p_value && p_data->p_value->unformat.len == 2) - { + p_data->p_value && p_data->p_value->unformat.len == 2) { pp = p_data->p_value->unformat.p_value; STREAM_TO_UINT16(p_dev_cb->hid_srvc[p_dev_cb->cur_srvc_index].ext_rpt_ref, pp); #if BTA_HH_DEBUG == TRUE APPL_TRACE_DEBUG("External Report Reference UUID 0x%04x", - p_dev_cb->hid_srvc[p_dev_cb->cur_srvc_index].ext_rpt_ref); + p_dev_cb->hid_srvc[p_dev_cb->cur_srvc_index].ext_rpt_ref); #endif } bta_hh_le_search_hid_chars(p_dev_cb); @@ -813,60 +790,50 @@ void bta_hh_le_register_input_notif(tBTA_HH_DEV_CB *p_dev_cb, UINT8 srvc_inst, APPL_TRACE_DEBUG("bta_hh_le_register_input_notif mode: %d", proto_mode); #endif - for (i = 0; i < BTA_HH_LE_RPT_MAX; i ++, p_rpt ++) - { - if (p_rpt->rpt_type == BTA_HH_RPTT_INPUT) - { - if (p_rpt->uuid == GATT_UUID_BATTERY_LEVEL) + for (i = 0; i < BTA_HH_LE_RPT_MAX; i ++, p_rpt ++) { + if (p_rpt->rpt_type == BTA_HH_RPTT_INPUT) { + if (p_rpt->uuid == GATT_UUID_BATTERY_LEVEL) { srvc_uuid = UUID_SERVCLASS_BATTERY; - else + } else { srvc_uuid = UUID_SERVCLASS_LE_HID; + } bta_hh_le_fill_16bits_srvc_id(TRUE, BTA_HH_LE_RPT_GET_SRVC_INST_ID(p_rpt->inst_id), srvc_uuid, &char_id.srvc_id); bta_hh_le_fill_16bits_char_id(BTA_HH_LE_RPT_GET_RPT_INST_ID(p_rpt->inst_id), p_rpt->uuid, &char_id.char_id); - if (register_ba && p_rpt->uuid == GATT_UUID_BATTERY_LEVEL) - { + if (register_ba && p_rpt->uuid == GATT_UUID_BATTERY_LEVEL) { BTA_GATTC_RegisterForNotifications(bta_hh_cb.gatt_if, p_dev_cb->addr, &char_id); } /* boot mode, deregister report input notification */ - else if (proto_mode == BTA_HH_PROTO_BOOT_MODE) - { + else if (proto_mode == BTA_HH_PROTO_BOOT_MODE) { if (p_rpt->uuid == GATT_UUID_HID_REPORT && - p_rpt->client_cfg_value == BTA_GATT_CLT_CONFIG_NOTIFICATION) - { + p_rpt->client_cfg_value == BTA_GATT_CLT_CONFIG_NOTIFICATION) { APPL_TRACE_DEBUG("---> Deregister Report ID: %d", p_rpt->rpt_id); BTA_GATTC_DeregisterForNotifications(bta_hh_cb.gatt_if, - p_dev_cb->addr, - &char_id); + p_dev_cb->addr, + &char_id); } /* register boot reports notification */ else if (p_rpt->uuid == GATT_UUID_HID_BT_KB_INPUT || - p_rpt->uuid == GATT_UUID_HID_BT_MOUSE_INPUT) - { + p_rpt->uuid == GATT_UUID_HID_BT_MOUSE_INPUT) { APPL_TRACE_DEBUG("<--- Register Boot Report ID: %d", p_rpt->rpt_id); BTA_GATTC_RegisterForNotifications(bta_hh_cb.gatt_if, p_dev_cb->addr, &char_id); } - } - else if (proto_mode == BTA_HH_PROTO_RPT_MODE) - { + } else if (proto_mode == BTA_HH_PROTO_RPT_MODE) { if ((p_rpt->uuid == GATT_UUID_HID_BT_KB_INPUT || - p_rpt->uuid == GATT_UUID_HID_BT_MOUSE_INPUT) && - p_rpt->client_cfg_value == BTA_GATT_CLT_CONFIG_NOTIFICATION) - { + p_rpt->uuid == GATT_UUID_HID_BT_MOUSE_INPUT) && + p_rpt->client_cfg_value == BTA_GATT_CLT_CONFIG_NOTIFICATION) { APPL_TRACE_DEBUG("---> Deregister Boot Report ID: %d", p_rpt->rpt_id); BTA_GATTC_DeregisterForNotifications(bta_hh_cb.gatt_if, - p_dev_cb->addr, - &char_id); - } - else if (p_rpt->uuid == GATT_UUID_HID_REPORT && - p_rpt->client_cfg_value == BTA_GATT_CLT_CONFIG_NOTIFICATION) - { + p_dev_cb->addr, + &char_id); + } else if (p_rpt->uuid == GATT_UUID_HID_REPORT && + p_rpt->client_cfg_value == BTA_GATT_CLT_CONFIG_NOTIFICATION) { APPL_TRACE_DEBUG("<--- Register Report ID: %d", p_rpt->rpt_id); BTA_GATTC_RegisterForNotifications(bta_hh_cb.gatt_if, p_dev_cb->addr, @@ -888,8 +855,7 @@ void bta_hh_le_register_input_notif(tBTA_HH_DEV_CB *p_dev_cb, UINT8 srvc_inst, *******************************************************************************/ void bta_hh_le_open_cmpl(tBTA_HH_DEV_CB *p_cb) { - if ( p_cb->disc_active == BTA_HH_LE_DISC_NONE) - { + if ( p_cb->disc_active == BTA_HH_LE_DISC_NONE) { #if BTA_HH_DEBUG bta_hh_le_hid_report_dbg(p_cb); #endif @@ -897,8 +863,7 @@ void bta_hh_le_open_cmpl(tBTA_HH_DEV_CB *p_cb) bta_hh_sm_execute(p_cb, BTA_HH_OPEN_CMPL_EVT, NULL); #if (BTA_HH_LE_RECONN == TRUE) - if (p_cb->status == BTA_HH_OK) - { + if (p_cb->status == BTA_HH_OK) { bta_hh_le_add_dev_bg_conn(p_cb, TRUE); } #endif @@ -938,13 +903,12 @@ BOOLEAN bta_hh_le_write_char_clt_cfg(tBTA_HH_DEV_CB *p_cb, if (BTA_GATTC_GetFirstCharDescr(p_cb->conn_id, &char_id, &descr_cond, - &descr_id) == BTA_GATT_OK) - { + &descr_id) == BTA_GATT_OK) { BTA_GATTC_WriteCharDescr(p_cb->conn_id, - &descr_id, - BTA_GATTC_TYPE_WRITE, - &value, - BTA_GATT_AUTH_REQ_NONE); + &descr_id, + BTA_GATTC_TYPE_WRITE, + &value, + BTA_GATT_AUTH_REQ_NONE); return TRUE; } @@ -965,24 +929,23 @@ BOOLEAN bta_hh_le_write_rpt_clt_cfg(tBTA_HH_DEV_CB *p_cb, UINT8 srvc_inst_id) tBTA_HH_LE_RPT *p_rpt = &p_cb->hid_srvc[srvc_inst_id].report[p_cb->clt_cfg_idx]; UINT16 srvc_uuid; - for (i = p_cb->clt_cfg_idx; i < BTA_HH_LE_RPT_MAX && p_rpt->in_use; i ++, p_rpt ++) - { + for (i = p_cb->clt_cfg_idx; i < BTA_HH_LE_RPT_MAX && p_rpt->in_use; i ++, p_rpt ++) { /* enable notification for all input report, regardless mode */ if (p_rpt->rpt_type == BTA_HH_RPTT_INPUT) { - if (p_rpt->uuid == GATT_UUID_BATTERY_LEVEL) + if (p_rpt->uuid == GATT_UUID_BATTERY_LEVEL) { srvc_uuid = UUID_SERVCLASS_BATTERY; - else + } else { srvc_uuid = UUID_SERVCLASS_LE_HID; + } if (bta_hh_le_write_char_clt_cfg(p_cb, BTA_HH_LE_RPT_GET_SRVC_INST_ID(p_rpt->inst_id), srvc_uuid, BTA_HH_LE_RPT_GET_RPT_INST_ID(p_rpt->inst_id), p_rpt->uuid, - BTA_GATT_CLT_CONFIG_NOTIFICATION)) - { + BTA_GATT_CLT_CONFIG_NOTIFICATION)) { p_cb->clt_cfg_idx = i; return TRUE; } @@ -992,8 +955,7 @@ BOOLEAN bta_hh_le_write_rpt_clt_cfg(tBTA_HH_DEV_CB *p_cb, UINT8 srvc_inst_id) p_cb->clt_cfg_idx = 0; /* client configuration is completed, send open callback */ - if (p_cb->state == BTA_HH_W4_CONN_ST) - { + if (p_cb->state == BTA_HH_W4_CONN_ST) { p_cb->disc_active &= ~BTA_HH_LE_DISC_HIDS; /* discover scan parameter profile is act as report host */ @@ -1016,39 +978,32 @@ BOOLEAN bta_hh_le_set_protocol_mode(tBTA_HH_DEV_CB *p_cb, tBTA_HH_PROTO_MODE mod BOOLEAN exec = FALSE; APPL_TRACE_DEBUG("bta_hh_le_set_protocol_mode attempt mode: %s", - (mode == BTA_HH_PROTO_RPT_MODE)? "Report": "Boot"); + (mode == BTA_HH_PROTO_RPT_MODE) ? "Report" : "Boot"); cback_data.handle = p_cb->hid_handle; /* boot mode is not supported in the remote device */ - if ((p_cb->hid_srvc[BTA_HH_LE_SRVC_DEF].option_char & BTA_HH_LE_PROTO_MODE_BIT) == 0) - { + if ((p_cb->hid_srvc[BTA_HH_LE_SRVC_DEF].option_char & BTA_HH_LE_PROTO_MODE_BIT) == 0) { p_cb->mode = BTA_HH_PROTO_RPT_MODE; - if (mode == BTA_HH_PROTO_BOOT_MODE) - { + if (mode == BTA_HH_PROTO_BOOT_MODE) { APPL_TRACE_ERROR("Set Boot Mode failed!! No PROTO_MODE Char!"); cback_data.status = BTA_HH_ERR; - } - else - { + } else { /* if set to report mode, need to de-register all input report notification */ bta_hh_le_register_input_notif(p_cb, 0, p_cb->mode, FALSE); cback_data.status = BTA_HH_OK; } - if (p_cb->state == BTA_HH_W4_CONN_ST) - { - p_cb->status = (cback_data.status == BTA_HH_OK)? BTA_HH_OK: BTA_HH_ERR_PROTO; - } - else + if (p_cb->state == BTA_HH_W4_CONN_ST) { + p_cb->status = (cback_data.status == BTA_HH_OK) ? BTA_HH_OK : BTA_HH_ERR_PROTO; + } else { (* bta_hh_cb.p_cback)(BTA_HH_SET_PROTO_EVT, (tBTA_HH *)&cback_data); - } - else if (p_cb->mode != mode) - { + } + } else if (p_cb->mode != mode) { bta_hh_le_fill_16bits_srvc_id(TRUE, 0, UUID_SERVCLASS_LE_HID, &char_id.srvc_id); bta_hh_le_fill_16bits_char_id(0, GATT_UUID_HID_PROTO_MODE, &char_id.char_id); p_cb->mode = mode; - mode = (mode == BTA_HH_PROTO_BOOT_MODE)? BTA_HH_LE_PROTO_BOOT_MODE : BTA_HH_LE_PROTO_REPORT_MODE; + mode = (mode == BTA_HH_PROTO_BOOT_MODE) ? BTA_HH_LE_PROTO_BOOT_MODE : BTA_HH_LE_PROTO_REPORT_MODE; BTA_GATTC_WriteCharValue(p_cb->conn_id, &char_id, @@ -1077,23 +1032,20 @@ void bta_hh_le_get_protocol_mode(tBTA_HH_DEV_CB *p_cb) p_cb->w4_evt = BTA_HH_GET_PROTO_EVT; - for (i = 0; i< BTA_HH_LE_HID_SRVC_MAX; i ++) - { + for (i = 0; i < BTA_HH_LE_HID_SRVC_MAX; i ++) { if (p_cb->hid_srvc[i].in_use && - p_cb->hid_srvc[i].option_char & BTA_HH_LE_PROTO_MODE_BIT) - { + p_cb->hid_srvc[i].option_char & BTA_HH_LE_PROTO_MODE_BIT) { bta_hh_le_fill_16bits_srvc_id(TRUE, 0, UUID_SERVCLASS_LE_HID, &char_id.srvc_id); bta_hh_le_fill_16bits_char_id(0, GATT_UUID_HID_PROTO_MODE, &char_id.char_id); BTA_GATTC_ReadCharacteristic(p_cb->conn_id, - &char_id, - BTA_GATT_AUTH_REQ_NONE); + &char_id, + BTA_GATT_AUTH_REQ_NONE); break; } } /* no service support protocol_mode, by default report mode */ - if (i == BTA_HH_LE_HID_SRVC_MAX) - { + if (i == BTA_HH_LE_HID_SRVC_MAX) { hs_data.status = BTA_HH_OK; hs_data.handle = p_cb->hid_handle; hs_data.rsp_data.proto_mode = BTA_HH_PROTO_RPT_MODE; @@ -1111,20 +1063,18 @@ void bta_hh_le_get_protocol_mode(tBTA_HH_DEV_CB *p_cb) ** *******************************************************************************/ void bta_hh_le_expl_rpt(tBTA_HH_DEV_CB *p_dev_cb, - tBTA_GATTC_CHAR_ID *p_char_id, - tBT_UUID *p_char_cond, - tBTA_GATT_CHAR_PROP prop) + tBTA_GATTC_CHAR_ID *p_char_id, + tBT_UUID *p_char_cond, + tBTA_GATT_CHAR_PROP prop) { tBTA_GATTC_CHAR_ID char_result; - do - { + do { if (bta_hh_le_find_alloc_report_entry(p_dev_cb, - p_dev_cb->cur_srvc_index, - GATT_UUID_HID_REPORT, - p_char_id->char_id.inst_id, - prop) == NULL) - { + p_dev_cb->cur_srvc_index, + GATT_UUID_HID_REPORT, + p_char_id->char_id.inst_id, + prop) == NULL) { APPL_TRACE_ERROR("Add report entry failed !!!"); break; } @@ -1132,15 +1082,15 @@ void bta_hh_le_expl_rpt(tBTA_HH_DEV_CB *p_dev_cb, APPL_TRACE_DEBUG("Find more REPORT"); if (BTA_GATTC_GetNextChar(p_dev_cb->conn_id, - p_char_id, - p_char_cond, - &char_result, - &prop) != BTA_GATT_OK) + p_char_id, + p_char_cond, + &char_result, + &prop) != BTA_GATT_OK) { break; + } p_char_id = &char_result; - } - while (1); + } while (1); LOG_INFO("%s all BLE reports searched", __func__); bta_hh_le_read_rpt_ref_descr(p_dev_cb, @@ -1158,13 +1108,13 @@ void bta_hh_le_expl_rpt(tBTA_HH_DEV_CB *p_dev_cb, ** *******************************************************************************/ void bta_hh_le_expl_boot_rpt(tBTA_HH_DEV_CB *p_dev_cb, UINT16 char_uuid, - tBTA_GATT_CHAR_PROP prop) + tBTA_GATT_CHAR_PROP prop) { if (bta_hh_le_find_alloc_report_entry(p_dev_cb, - p_dev_cb->cur_srvc_index, - char_uuid, - 0, - prop) == NULL) + p_dev_cb->cur_srvc_index, + char_uuid, + 0, + prop) == NULL) { APPL_TRACE_ERROR("Add report entry failed !!!"); @@ -1187,21 +1137,19 @@ void bta_hh_le_dis_cback(BD_ADDR addr, tDIS_VALUE *p_dis_value) tBTA_HH_DEV_CB *p_cb = bta_hh_le_find_dev_cb_by_bda(addr); - if (p_cb == NULL || p_dis_value == NULL) - { + if (p_cb == NULL || p_dis_value == NULL) { APPL_TRACE_ERROR("received unexpected/error DIS callback"); return; } p_cb->disc_active &= ~BTA_HH_LE_DISC_DIS; /* plug in the PnP info for this device */ - if (p_dis_value->attr_mask & DIS_ATTR_PNP_ID_BIT) - { + if (p_dis_value->attr_mask & DIS_ATTR_PNP_ID_BIT) { #if BTA_HH_DEBUG == TRUE APPL_TRACE_DEBUG("Plug in PnP info: product_id = %02x, vendor_id = %04x, version = %04x", - p_dis_value->pnp_id.product_id, - p_dis_value->pnp_id.vendor_id, - p_dis_value->pnp_id.product_version); + p_dis_value->pnp_id.product_id, + p_dis_value->pnp_id.vendor_id, + p_dis_value->pnp_id.product_version); #endif p_cb->dscp_info.product_id = p_dis_value->pnp_id.product_id; p_cb->dscp_info.vendor_id = p_dis_value->pnp_id.vendor_id; @@ -1226,11 +1174,10 @@ void bta_hh_le_pri_service_discovery(tBTA_HH_DEV_CB *p_cb) bta_hh_le_co_reset_rpt_cache(p_cb->addr, p_cb->app_id); - p_cb->disc_active |= (BTA_HH_LE_DISC_HIDS|BTA_HH_LE_DISC_DIS); + p_cb->disc_active |= (BTA_HH_LE_DISC_HIDS | BTA_HH_LE_DISC_DIS); /* read DIS info */ - if (!DIS_ReadDISInfo(p_cb->addr, bta_hh_le_dis_cback, DIS_ATTR_PNP_ID_BIT)) - { + if (!DIS_ReadDISInfo(p_cb->addr, bta_hh_le_dis_cback, DIS_ATTR_PNP_ID_BIT)) { APPL_TRACE_ERROR("read DIS failed"); p_cb->disc_active &= ~BTA_HH_LE_DISC_DIS; } @@ -1253,17 +1200,16 @@ void bta_hh_le_pri_service_discovery(tBTA_HH_DEV_CB *p_cb) ** *******************************************************************************/ void bta_hh_le_encrypt_cback(BD_ADDR bd_addr, tBTA_GATT_TRANSPORT transport, - void *p_ref_data, tBTM_STATUS result) + void *p_ref_data, tBTM_STATUS result) { UINT8 idx = bta_hh_find_cb(bd_addr); tBTA_HH_DEV_CB *p_dev_cb; UNUSED(p_ref_data); UNUSED (transport); - if (idx != BTA_HH_IDX_INVALID) + if (idx != BTA_HH_IDX_INVALID) { p_dev_cb = &bta_hh_cb.kdev[idx]; - else - { + } else { APPL_TRACE_ERROR("unexpected encryption callback, ignore"); return; } @@ -1289,40 +1235,33 @@ void bta_hh_security_cmpl(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_buf) UINT8 num_rpt = 0; UNUSED(p_buf); - if (p_cb->status == BTA_HH_OK) - { + if (p_cb->status == BTA_HH_OK) { APPL_TRACE_DEBUG("bta_hh_security_cmpl OK"); - if (!p_cb->hid_srvc[BTA_HH_LE_SRVC_DEF].in_use) - { + if (!p_cb->hid_srvc[BTA_HH_LE_SRVC_DEF].in_use) { APPL_TRACE_DEBUG("bta_hh_security_cmpl no reports loaded, try to load"); /* start loading the cache if not in stack */ - if ((p_rpt_cache = bta_hh_le_co_cache_load(p_cb->addr, &num_rpt, p_cb->app_id)) != NULL) - { + if ((p_rpt_cache = bta_hh_le_co_cache_load(p_cb->addr, &num_rpt, p_cb->app_id)) != NULL) { bta_hh_process_cache_rpt(p_cb, p_rpt_cache, num_rpt); } } /* discovery has been done for HID service */ - if (p_cb->app_id != 0 && p_cb->hid_srvc[BTA_HH_LE_SRVC_DEF].in_use) - { + if (p_cb->app_id != 0 && p_cb->hid_srvc[BTA_HH_LE_SRVC_DEF].in_use) { /* configure protocol mode */ - if (bta_hh_le_set_protocol_mode(p_cb, p_cb->mode) == FALSE) - { + if (bta_hh_le_set_protocol_mode(p_cb, p_cb->mode) == FALSE) { APPL_TRACE_ERROR("bta_hh_security_cmpl"); bta_hh_le_open_cmpl(p_cb); } } /* start primary service discovery for HID service */ - else - { + else { bta_hh_le_pri_service_discovery(p_cb); } - } - else - { + } else { APPL_TRACE_ERROR("%s() - encryption failed; status=0x%04x, reason=0x%04x", - __FUNCTION__, p_cb->status, p_cb->reason); - if (!(p_cb->status == BTA_HH_ERR_SEC && p_cb->reason == BTM_ERR_PROCESSING)) + __FUNCTION__, p_cb->status, p_cb->reason); + if (!(p_cb->status == BTA_HH_ERR_SEC && p_cb->reason == BTM_ERR_PROCESSING)) { bta_hh_le_api_disc_act(p_cb); + } } } @@ -1338,8 +1277,7 @@ void bta_hh_security_cmpl(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_buf) void bta_hh_le_notify_enc_cmpl(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_buf) { if (p_cb == NULL || p_cb->security_pending == FALSE || - p_buf == NULL || p_buf->le_enc_cmpl.client_if != bta_hh_cb.gatt_if) - { + p_buf == NULL || p_buf->le_enc_cmpl.client_if != bta_hh_cb.gatt_if) { return; } @@ -1365,8 +1303,7 @@ void bta_hh_clear_service_cache(tBTA_HH_DEV_CB *p_cb) p_cb->total_srvc = 0; p_cb->dscp_info.descriptor.dsc_list = NULL; - for (i = 0; i < BTA_HH_LE_HID_SRVC_MAX; i ++, p_hid_srvc ++) - { + for (i = 0; i < BTA_HH_LE_HID_SRVC_MAX; i ++, p_hid_srvc ++) { utl_freebuf((void **)&p_hid_srvc->rpt_map); memset(p_hid_srvc, 0, sizeof(tBTA_HH_LE_HID_SRVC)); } @@ -1383,16 +1320,14 @@ void bta_hh_clear_service_cache(tBTA_HH_DEV_CB *p_cb) *******************************************************************************/ void bta_hh_start_security(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_buf) { - UINT8 sec_flag=0; + UINT8 sec_flag = 0; tBTM_SEC_DEV_REC *p_dev_rec; UNUSED(p_buf); p_dev_rec = btm_find_dev(p_cb->addr); - if (p_dev_rec) - { + if (p_dev_rec) { if (p_dev_rec->sec_state == BTM_SEC_STATE_ENCRYPTING || - p_dev_rec->sec_state == BTM_SEC_STATE_AUTHENTICATING) - { + p_dev_rec->sec_state == BTM_SEC_STATE_AUTHENTICATING) { /* if security collision happened, wait for encryption done */ p_cb->security_pending = TRUE; return; @@ -1403,28 +1338,24 @@ void bta_hh_start_security(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_buf) BTM_GetSecurityFlagsByTransport(p_cb->addr, &sec_flag, BT_TRANSPORT_LE); /* if link has been encrypted */ - if (sec_flag & BTM_SEC_FLAG_ENCRYPTED) - { + if (sec_flag & BTM_SEC_FLAG_ENCRYPTED) { bta_hh_sm_execute(p_cb, BTA_HH_ENC_CMPL_EVT, NULL); } /* if bonded and link not encrypted */ - else if (sec_flag & BTM_SEC_FLAG_LKEY_KNOWN) - { + else if (sec_flag & BTM_SEC_FLAG_LKEY_KNOWN) { sec_flag = BTM_BLE_SEC_ENCRYPT; p_cb->status = BTA_HH_ERR_AUTH_FAILED; BTM_SetEncryption(p_cb->addr, BTA_TRANSPORT_LE, bta_hh_le_encrypt_cback, &sec_flag); } /* unbonded device, report security error here */ - else if (p_cb->sec_mask != BTA_SEC_NONE) - { + else if (p_cb->sec_mask != BTA_SEC_NONE) { sec_flag = BTM_BLE_SEC_ENCRYPT_NO_MITM; p_cb->status = BTA_HH_ERR_AUTH_FAILED; bta_hh_clear_service_cache(p_cb); BTM_SetEncryption(p_cb->addr, BTA_TRANSPORT_LE, bta_hh_le_encrypt_cback, &sec_flag); } /* otherwise let it go through */ - else - { + else { bta_hh_sm_execute(p_cb, BTA_HH_ENC_CMPL_EVT, NULL); } @@ -1447,17 +1378,17 @@ void bta_hh_gatt_open(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_buf) tHID_STATUS status = BTA_HH_ERR; /* if received invalid callback data , ignore it */ - if (p_cb == NULL || p_data == NULL) + if (p_cb == NULL || p_data == NULL) { return; + } p2 = p_data->remote_bda; APPL_TRACE_DEBUG("bta_hh_gatt_open BTA_GATTC_OPEN_EVT bda= [%08x%04x] status =%d", - ((p2[0])<<24)+((p2[1])<<16)+((p2[2])<<8)+(p2[3]), - ((p2[4])<<8)+ p2[5],p_data->status); + ((p2[0]) << 24) + ((p2[1]) << 16) + ((p2[2]) << 8) + (p2[3]), + ((p2[4]) << 8) + p2[5], p_data->status); - if (p_data->status == BTA_GATT_OK) - { + if (p_data->status == BTA_GATT_OK) { p_cb->is_le_device = TRUE; p_cb->in_use = TRUE; p_cb->conn_id = p_data->conn_id; @@ -1471,9 +1402,7 @@ void bta_hh_gatt_open(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_buf) bta_hh_sm_execute(p_cb, BTA_HH_START_ENC_EVT, NULL); - } - else /* open failure */ - { + } else { /* open failure */ bta_hh_sm_execute(p_cb, BTA_HH_SDP_CMPL_EVT, (tBTA_HH_DATA *)&status); } @@ -1489,15 +1418,14 @@ void bta_hh_gatt_open(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_buf) ** Parameters: ** *******************************************************************************/ -void bta_hh_le_close(tBTA_GATTC_CLOSE * p_data) +void bta_hh_le_close(tBTA_GATTC_CLOSE *p_data) { tBTA_HH_DEV_CB *p_dev_cb = bta_hh_le_find_dev_cb_by_bda(p_data->remote_bda); tBTA_HH_LE_CLOSE *p_buf = NULL; UINT16 sm_event = BTA_HH_GATT_CLOSE_EVT; if (p_dev_cb != NULL && - (p_buf = (tBTA_HH_LE_CLOSE *)GKI_getbuf(sizeof(tBTA_HH_LE_CLOSE))) != NULL) - { + (p_buf = (tBTA_HH_LE_CLOSE *)GKI_getbuf(sizeof(tBTA_HH_LE_CLOSE))) != NULL) { p_buf->hdr.event = sm_event; p_buf->hdr.layer_specific = (UINT16)p_dev_cb->hid_handle; p_buf->conn_id = p_data->conn_id; @@ -1522,17 +1450,15 @@ void bta_hh_le_search_result(tBTA_GATTC_SRVC_RES *p_srvc_result) { tBTA_HH_DEV_CB *p_dev_cb = bta_hh_le_find_dev_cb_by_conn_id(p_srvc_result->conn_id); - if (p_dev_cb != NULL) - { - switch (p_srvc_result->service_uuid.id.uuid.uu.uuid16) - { + if (p_dev_cb != NULL) { + switch (p_srvc_result->service_uuid.id.uuid.uu.uuid16) { case UUID_SERVCLASS_LE_HID: - if (p_srvc_result->service_uuid.is_primary) - { + if (p_srvc_result->service_uuid.is_primary) { /* found HID primamry service */ /* TODO: proceed to find battery and device info */ - if (bta_hh_le_add_hid_srvc_entry(p_dev_cb, p_dev_cb->total_srvc)) + if (bta_hh_le_add_hid_srvc_entry(p_dev_cb, p_dev_cb->total_srvc)) { p_dev_cb->total_srvc ++; + } APPL_TRACE_DEBUG("num of hid service: %d", p_dev_cb->total_srvc); } break; @@ -1561,17 +1487,14 @@ void bta_hh_le_gatt_disc_cmpl(tBTA_HH_DEV_CB *p_cb, tBTA_HH_STATUS status) APPL_TRACE_DEBUG("bta_hh_le_gatt_disc_cmpl "); /* if open sucessful or protocol mode not desired, keep the connection open but inform app */ - if (status == BTA_HH_OK || status == BTA_HH_ERR_PROTO) - { + if (status == BTA_HH_OK || status == BTA_HH_ERR_PROTO) { /* assign a special APP ID temp, since device type unknown */ p_cb->app_id = BTA_HH_APP_ID_LE; /* set report notification configuration */ p_cb->clt_cfg_idx = 0; bta_hh_le_write_rpt_clt_cfg(p_cb, BTA_HH_LE_SRVC_DEF); - } - else /* error, close the GATT connection */ - { + } else { /* error, close the GATT connection */ /* close GATT connection if it's on */ bta_hh_le_api_disc_act(p_cb); } @@ -1590,25 +1513,22 @@ void bta_hh_le_srvc_expl_srvc(tBTA_HH_DEV_CB *p_dev_cb) { #if BTA_HH_DEBUG == TRUE APPL_TRACE_DEBUG("bta_hh_le_srvc_expl_srvc cur_srvc_index = %d in_use = %d", - p_dev_cb->cur_srvc_index, - p_dev_cb->hid_srvc[p_dev_cb->cur_srvc_index].in_use); + p_dev_cb->cur_srvc_index, + p_dev_cb->hid_srvc[p_dev_cb->cur_srvc_index].in_use); #endif if (p_dev_cb->cur_srvc_index < BTA_HH_LE_HID_SRVC_MAX && - p_dev_cb->hid_srvc[p_dev_cb->cur_srvc_index].in_use) - { + p_dev_cb->hid_srvc[p_dev_cb->cur_srvc_index].in_use) { if (!p_dev_cb->hid_srvc[p_dev_cb->cur_srvc_index].expl_incl_srvc) /* explore included service first */ - bta_hh_le_search_hid_included(p_dev_cb); - else { + bta_hh_le_search_hid_included(p_dev_cb); + } else { /* explore characterisc */ p_dev_cb->hid_srvc[p_dev_cb->cur_srvc_index].cur_expl_char_idx = 0; bta_hh_le_search_hid_chars(p_dev_cb); } - } - else /* all service discvery finished */ - { + } else { /* all service discvery finished */ bta_hh_le_gatt_disc_cmpl(p_dev_cb, p_dev_cb->status); } } @@ -1627,30 +1547,26 @@ void bta_hh_le_srvc_search_cmpl(tBTA_GATTC_SEARCH_CMPL *p_data) tBTA_HH_DEV_CB *p_dev_cb = bta_hh_le_find_dev_cb_by_conn_id(p_data->conn_id); /* service search exception or no HID service is supported on remote */ - if (p_dev_cb == NULL) + if (p_dev_cb == NULL) { return; + } - if(p_data->status != BTA_GATT_OK || p_dev_cb->total_srvc == 0) - { + if (p_data->status != BTA_GATT_OK || p_dev_cb->total_srvc == 0) { p_dev_cb->status = BTA_HH_ERR_SDP; /* close the connection and report service discovery complete with error */ bta_hh_le_api_disc_act(p_dev_cb); } /* GATT service discovery sucessfully finished */ - else - { - if (p_dev_cb->disc_active & BTA_HH_LE_DISC_SCPS) - { + else { + if (p_dev_cb->disc_active & BTA_HH_LE_DISC_SCPS) { p_dev_cb->disc_active &= ~BTA_HH_LE_DISC_SCPS; bta_hh_le_open_cmpl(p_dev_cb); + } else { /* discover HID service */ + p_dev_cb->cur_srvc_index = 0; + bta_hh_le_srvc_expl_srvc(p_dev_cb); } - else /* discover HID service */ - { - p_dev_cb->cur_srvc_index = 0; - bta_hh_le_srvc_expl_srvc(p_dev_cb); } } -} /******************************************************************************* ** @@ -1675,10 +1591,9 @@ static void bta_hh_le_search_hid_included(tBTA_HH_DEV_CB *p_dev_cb) srvc_cond.uu.uuid16 = UUID_SERVCLASS_BATTERY; if (BTA_GATTC_GetFirstIncludedService(p_dev_cb->conn_id, - &srvc_id, - &srvc_cond, - &inc_srvc_result) == BTA_GATT_OK) - { + &srvc_id, + &srvc_cond, + &inc_srvc_result) == BTA_GATT_OK) { /* read include service UUID */ p_dev_cb->hid_srvc[p_dev_cb->cur_srvc_index].incl_srvc_inst = inc_srvc_result.incl_svc_id.id.inst_id; @@ -1690,15 +1605,13 @@ static void bta_hh_le_search_hid_included(tBTA_HH_DEV_CB *p_dev_cb) &inc_srvc_result.incl_svc_id, &char_cond, &char_result, - &prop) == BTA_GATT_OK) - { + &prop) == BTA_GATT_OK) { if (bta_hh_le_find_alloc_report_entry(p_dev_cb, char_result.srvc_id.id.inst_id, GATT_UUID_BATTERY_LEVEL, char_result.char_id.inst_id, - prop) == NULL) - { + prop) == NULL) { APPL_TRACE_ERROR("Add battery report entry failed !!!") } @@ -1709,9 +1622,7 @@ static void bta_hh_le_search_hid_included(tBTA_HH_DEV_CB *p_dev_cb) return; - } - else - { + } else { APPL_TRACE_ERROR("Remote device does not have battery level"); } } @@ -1759,8 +1670,7 @@ static void bta_hh_le_search_hid_chars(tBTA_HH_DEV_CB *p_dev_cb) tBTA_GATT_SRVC_ID srvc_id; if (p_dev_cb->hid_srvc[p_dev_cb->cur_srvc_index].cur_expl_char_idx == BTA_HH_LE_DISC_CHAR_NUM || - (p_dev_cb->status != BTA_HH_OK && p_dev_cb->status != BTA_HH_ERR_PROTO)) - { + (p_dev_cb->status != BTA_HH_OK && p_dev_cb->status != BTA_HH_ERR_PROTO)) { p_dev_cb->hid_srvc[p_dev_cb->cur_srvc_index].cur_expl_char_idx = 0; /* explore next service */ p_dev_cb->cur_srvc_index ++; @@ -1778,17 +1688,15 @@ static void bta_hh_le_search_hid_chars(tBTA_HH_DEV_CB *p_dev_cb) #if BTA_HH_DEBUG == TRUE APPL_TRACE_DEBUG("bta_hh_le_search_hid_chars: looking for %s(0x%04x)", - bta_hh_uuid_to_str(char_uuid), char_uuid); + bta_hh_uuid_to_str(char_uuid), char_uuid); #endif if (BTA_GATTC_GetFirstChar( p_dev_cb->conn_id, - &srvc_id, - &char_cond, - &char_result, - &prop) == BTA_GATT_OK) - { - switch (char_uuid) - { + &srvc_id, + &char_cond, + &char_result, + &prop) == BTA_GATT_OK) { + switch (char_uuid) { case GATT_UUID_HID_CONTROL_POINT: p_dev_cb->hid_srvc[char_result.srvc_id.id.inst_id].option_char |= BTA_HH_LE_CP_BIT; next = TRUE; @@ -1797,8 +1705,8 @@ static void bta_hh_le_search_hid_chars(tBTA_HH_DEV_CB *p_dev_cb) case GATT_UUID_HID_REPORT_MAP: /* read the char value */ BTA_GATTC_ReadCharacteristic(p_dev_cb->conn_id, - &char_result, - BTA_GATT_AUTH_REQ_NONE); + &char_result, + BTA_GATT_AUTH_REQ_NONE); next = FALSE; break; @@ -1819,16 +1727,14 @@ static void bta_hh_le_search_hid_chars(tBTA_HH_DEV_CB *p_dev_cb) bta_hh_le_expl_boot_rpt(p_dev_cb, char_uuid, prop); break; } - } - else - { - if (char_uuid == GATT_UUID_HID_PROTO_MODE) + } else { + if (char_uuid == GATT_UUID_HID_PROTO_MODE) { next = !bta_hh_le_set_protocol_mode(p_dev_cb, p_dev_cb->mode); + } } - if (next == TRUE) - { + if (next == TRUE) { bta_hh_le_search_hid_chars(p_dev_cb); } } @@ -1850,14 +1756,15 @@ void bta_hh_le_save_rpt_map(tBTA_HH_DEV_CB *p_dev_cb, tBTA_GATTC_READ *p_data) pp = p_data->p_value->unformat.p_value; /* save report descriptor */ - if (p_srvc->rpt_map != NULL) - GKI_freebuf((void*)p_srvc->rpt_map); + if (p_srvc->rpt_map != NULL) { + GKI_freebuf((void *)p_srvc->rpt_map); + } - if (p_data->p_value->unformat.len > 0) + if (p_data->p_value->unformat.len > 0) { p_srvc->rpt_map = (UINT8 *)GKI_getbuf(p_data->p_value->unformat.len); + } - if (p_srvc->rpt_map != NULL) - { + if (p_srvc->rpt_map != NULL) { STREAM_TO_ARRAY(p_srvc->rpt_map, pp, p_data->p_value->unformat.len); p_srvc->descriptor.dl_len = p_data->p_value->unformat.len; p_srvc->descriptor.dsc_list = p_dev_cb->hid_srvc[p_data->srvc_id.id.inst_id].rpt_map; @@ -1865,11 +1772,10 @@ void bta_hh_le_save_rpt_map(tBTA_HH_DEV_CB *p_dev_cb, tBTA_GATTC_READ *p_data) if (bta_hh_le_read_char_dscrpt(p_dev_cb, UUID_SERVCLASS_LE_HID, - p_data->srvc_id.id.inst_id, - GATT_UUID_HID_REPORT_MAP, - p_data->char_id.inst_id, - GATT_UUID_EXT_RPT_REF_DESCR) != BTA_HH_OK) - { + p_data->srvc_id.id.inst_id, + GATT_UUID_HID_REPORT_MAP, + p_data->char_id.inst_id, + GATT_UUID_EXT_RPT_REF_DESCR) != BTA_HH_OK) { bta_hh_le_search_hid_chars(p_dev_cb); } } @@ -1891,8 +1797,7 @@ void bta_hh_le_proc_get_rpt_cmpl(tBTA_HH_DEV_CB *p_dev_cb, tBTA_GATTC_READ *p_da tBTA_HH_HSDATA hs_data; UINT8 *pp ; - if (p_dev_cb->w4_evt != BTA_HH_GET_RPT_EVT) - { + if (p_dev_cb->w4_evt != BTA_HH_GET_RPT_EVT) { APPL_TRACE_ERROR("Unexpected READ cmpl, w4_evt = %d", p_dev_cb->w4_evt); return; } @@ -1901,17 +1806,15 @@ void bta_hh_le_proc_get_rpt_cmpl(tBTA_HH_DEV_CB *p_dev_cb, tBTA_GATTC_READ *p_da hs_data.status = BTA_HH_ERR; hs_data.handle = p_dev_cb->hid_handle; - if (p_data->status == BTA_GATT_OK) - { + if (p_data->status == BTA_GATT_OK) { p_rpt = bta_hh_le_find_report_entry(p_dev_cb, p_data->srvc_id.id.inst_id,//BTA_HH_LE_SRVC_DEF, p_data->char_id.uuid.uu.uuid16, p_data->char_id.inst_id); if (p_rpt != NULL && - p_data->p_value != NULL && - (p_buf = (BT_HDR *)GKI_getbuf((UINT16)(sizeof(BT_HDR) +p_data->p_value->unformat.len + 1))) != NULL) - { + p_data->p_value != NULL && + (p_buf = (BT_HDR *)GKI_getbuf((UINT16)(sizeof(BT_HDR) + p_data->p_value->unformat.len + 1))) != NULL) { /* pack data send to app */ hs_data.status = BTA_HH_OK; p_buf->len = p_data->p_value->unformat.len + 1; @@ -1919,11 +1822,11 @@ void bta_hh_le_proc_get_rpt_cmpl(tBTA_HH_DEV_CB *p_dev_cb, tBTA_GATTC_READ *p_da p_buf->offset = 0; /* attach report ID as the first byte of the report before sending it to USB HID driver */ - pp = (UINT8*)(p_buf + 1); + pp = (UINT8 *)(p_buf + 1); UINT8_TO_STREAM(pp, p_rpt->rpt_id); memcpy(pp, p_data->p_value->unformat.p_value, p_data->p_value->unformat.len); - hs_data.rsp_data.p_rpt_data =p_buf; + hs_data.rsp_data.p_rpt_data = p_buf; } } @@ -1949,22 +1852,22 @@ void bta_hh_le_proc_read_proto_mode(tBTA_HH_DEV_CB *p_dev_cb, tBTA_GATTC_READ *p hs_data.handle = p_dev_cb->hid_handle; hs_data.rsp_data.proto_mode = p_dev_cb->mode; - if (p_data->status == BTA_GATT_OK && p_data->p_value) - { + if (p_data->status == BTA_GATT_OK && p_data->p_value) { hs_data.status = BTA_HH_OK; /* match up BTE/BTA report/boot mode def*/ hs_data.rsp_data.proto_mode = *(p_data->p_value->unformat.p_value); /* LE repot mode is the opposite value of BR/EDR report mode, flip it here */ - if (hs_data.rsp_data.proto_mode == 0) + if (hs_data.rsp_data.proto_mode == 0) { hs_data.rsp_data.proto_mode = BTA_HH_PROTO_BOOT_MODE; - else + } else { hs_data.rsp_data.proto_mode = BTA_HH_PROTO_RPT_MODE; + } p_dev_cb->mode = hs_data.rsp_data.proto_mode; } #if BTA_HH_DEBUG APPL_TRACE_DEBUG("LE GET_PROTOCOL Mode = [%s]", - (hs_data.rsp_data.proto_mode == BTA_HH_PROTO_RPT_MODE)? "Report" : "Boot"); + (hs_data.rsp_data.proto_mode == BTA_HH_PROTO_RPT_MODE) ? "Report" : "Boot"); #endif p_dev_cb->w4_evt = 0; @@ -1983,22 +1886,17 @@ void bta_hh_le_proc_read_proto_mode(tBTA_HH_DEV_CB *p_dev_cb, tBTA_GATTC_READ *p *******************************************************************************/ void bta_hh_w4_le_read_char_cmpl(tBTA_HH_DEV_CB *p_dev_cb, tBTA_HH_DATA *p_buf) { - tBTA_GATTC_READ * p_data = (tBTA_GATTC_READ *)p_buf; + tBTA_GATTC_READ *p_data = (tBTA_GATTC_READ *)p_buf; UINT8 *pp ; - if (p_data->char_id.uuid.uu.uuid16 == GATT_UUID_BATTERY_LEVEL) - { + if (p_data->char_id.uuid.uu.uuid16 == GATT_UUID_BATTERY_LEVEL) { bta_hh_read_battery_level_cmpl(p_data->status, p_dev_cb, p_data); - } - else - { - if (p_data->status == BTA_GATT_OK && p_data->p_value) - { + } else { + if (p_data->status == BTA_GATT_OK && p_data->p_value) { pp = p_data->p_value->unformat.p_value; - switch (p_data->char_id.uuid.uu.uuid16) - { - /* save device information */ + switch (p_data->char_id.uuid.uu.uuid16) { + /* save device information */ case GATT_UUID_HID_INFORMATION: STREAM_TO_UINT16(p_dev_cb->dscp_info.version, pp); STREAM_TO_UINT8(p_dev_cb->dscp_info.ctry_code, pp); @@ -2012,19 +1910,17 @@ void bta_hh_w4_le_read_char_cmpl(tBTA_HH_DEV_CB *p_dev_cb, tBTA_HH_DATA *p_buf) default: #if BTA_HH_DEBUG == TRUE APPL_TRACE_ERROR("Unexpected read %s(0x%04x)", - bta_hh_uuid_to_str(p_data->char_id.uuid.uu.uuid16), - p_data->char_id.uuid.uu.uuid16); + bta_hh_uuid_to_str(p_data->char_id.uuid.uu.uuid16), + p_data->char_id.uuid.uu.uuid16); #endif break; } - } - else - { + } else { #if BTA_HH_DEBUG == TRUE APPL_TRACE_ERROR("read uuid %s[0x%04x] error: %d", - bta_hh_uuid_to_str(p_data->char_id.uuid.uu.uuid16), - p_data->char_id.uuid.uu.uuid16, - p_data->status); + bta_hh_uuid_to_str(p_data->char_id.uuid.uu.uuid16), + p_data->char_id.uuid.uu.uuid16, + p_data->status); #else APPL_TRACE_ERROR("read uuid [0x%04x] error: %d", p_data->char_id.uuid.uu.uuid16, p_data->status); #endif @@ -2045,10 +1941,9 @@ void bta_hh_w4_le_read_char_cmpl(tBTA_HH_DEV_CB *p_dev_cb, tBTA_HH_DATA *p_buf) *******************************************************************************/ void bta_hh_le_read_char_cmpl (tBTA_HH_DEV_CB *p_dev_cb, tBTA_HH_DATA *p_buf) { - tBTA_GATTC_READ * p_data = (tBTA_GATTC_READ *)p_buf; + tBTA_GATTC_READ *p_data = (tBTA_GATTC_READ *)p_buf; - switch (p_data->char_id.uuid.uu.uuid16) - { + switch (p_data->char_id.uuid.uu.uuid16) { /* GET_REPORT */ case GATT_UUID_HID_REPORT: case GATT_UUID_HID_BT_KB_INPUT: @@ -2081,17 +1976,15 @@ void bta_hh_le_read_char_cmpl (tBTA_HH_DEV_CB *p_dev_cb, tBTA_HH_DATA *p_buf) void bta_hh_le_read_descr_cmpl(tBTA_HH_DEV_CB *p_dev_cb, tBTA_HH_DATA *p_buf) { tBTA_HH_LE_RPT *p_rpt; - tBTA_GATTC_READ * p_data = (tBTA_GATTC_READ *)p_buf; + tBTA_GATTC_READ *p_data = (tBTA_GATTC_READ *)p_buf; UINT8 *pp; /* if a report client configuration */ - if (p_data->descr_type.uuid.uu.uuid16 == GATT_UUID_CHAR_CLIENT_CONFIG) - { + if (p_data->descr_type.uuid.uu.uuid16 == GATT_UUID_CHAR_CLIENT_CONFIG) { if ((p_rpt = bta_hh_le_find_report_entry(p_dev_cb, - BTA_HH_LE_SRVC_DEF, - p_data->char_id.uuid.uu.uuid16, - p_data->char_id.inst_id)) != NULL) - { + BTA_HH_LE_SRVC_DEF, + p_data->char_id.uuid.uu.uuid16, + p_data->char_id.inst_id)) != NULL) { pp = p_data->p_value->unformat.p_value; STREAM_TO_UINT16(p_rpt->client_cfg_value, pp); @@ -2109,23 +2002,21 @@ void bta_hh_le_read_descr_cmpl(tBTA_HH_DEV_CB *p_dev_cb, tBTA_HH_DATA *p_buf) ** Parameters: ** *******************************************************************************/ -void bta_hh_le_read_battery_level_descr_cmpl(tBTA_HH_DEV_CB *p_dev_cb, tBTA_GATTC_READ * p_data) +void bta_hh_le_read_battery_level_descr_cmpl(tBTA_HH_DEV_CB *p_dev_cb, tBTA_GATTC_READ *p_data) { tBTA_HH_LE_RPT *p_rpt; UINT16 descr_uuid = p_data->descr_type.uuid.uu.uuid16; /* read report reference descriptor for battery level is completed */ - if (descr_uuid == GATT_UUID_RPT_REF_DESCR) - { + if (descr_uuid == GATT_UUID_RPT_REF_DESCR) { if ((p_rpt = bta_hh_le_find_report_entry(p_dev_cb, - p_data->srvc_id.id.inst_id, - GATT_UUID_BATTERY_LEVEL, - p_data->char_id.inst_id)) == NULL) - { + p_data->srvc_id.id.inst_id, + GATT_UUID_BATTERY_LEVEL, + p_data->char_id.inst_id)) == NULL) { bta_hh_le_search_hid_chars(p_dev_cb); - } - else + } else { bta_hh_le_save_rpt_ref(p_dev_cb, p_rpt, p_data); + } } } @@ -2141,31 +2032,30 @@ void bta_hh_le_read_battery_level_descr_cmpl(tBTA_HH_DEV_CB *p_dev_cb, tBTA_GATT void bta_hh_w4_le_read_descr_cmpl(tBTA_HH_DEV_CB *p_dev_cb, tBTA_HH_DATA *p_buf) { tBTA_HH_LE_RPT *p_rpt; - tBTA_GATTC_READ * p_data = (tBTA_GATTC_READ *)p_buf; + tBTA_GATTC_READ *p_data = (tBTA_GATTC_READ *)p_buf; UINT16 char_uuid16; - if (p_data == NULL) + if (p_data == NULL) { return; + } char_uuid16 = p_data->char_id.uuid.uu.uuid16; #if BTA_HH_DEBUG == TRUE APPL_TRACE_DEBUG("bta_hh_w4_le_read_descr_cmpl uuid: %s(0x%04x)", - bta_hh_uuid_to_str(p_data->descr_type.uuid.uu.uuid16), - p_data->descr_type.uuid.uu.uuid16); + bta_hh_uuid_to_str(p_data->descr_type.uuid.uu.uuid16), + p_data->descr_type.uuid.uu.uuid16); #endif - switch (char_uuid16) - { + switch (char_uuid16) { case GATT_UUID_HID_REPORT: if ((p_rpt = bta_hh_le_find_report_entry(p_dev_cb, - p_data->srvc_id.id.inst_id, - GATT_UUID_HID_REPORT, - p_data->char_id.inst_id)) == NULL) - { + p_data->srvc_id.id.inst_id, + GATT_UUID_HID_REPORT, + p_data->char_id.inst_id)) == NULL) { bta_hh_le_search_hid_chars(p_dev_cb); - } - else + } else { bta_hh_le_save_rpt_ref(p_dev_cb, p_rpt, p_data); + } break; case GATT_UUID_HID_REPORT_MAP: @@ -2195,19 +2085,16 @@ void bta_hh_w4_le_write_cmpl(tBTA_HH_DEV_CB *p_dev_cb, tBTA_HH_DATA *p_buf) { tBTA_GATTC_WRITE *p_data = (tBTA_GATTC_WRITE *)p_buf; - if (p_data == NULL) + if (p_data == NULL) { return; + } - if (p_data->char_id.uuid.uu.uuid16 == GATT_UUID_HID_PROTO_MODE) - { + if (p_data->char_id.uuid.uu.uuid16 == GATT_UUID_HID_PROTO_MODE) { p_dev_cb->status = (p_data->status == BTA_GATT_OK) ? BTA_HH_OK : BTA_HH_ERR_PROTO; - if ((p_dev_cb->disc_active & BTA_HH_LE_DISC_HIDS) != 0) - { + if ((p_dev_cb->disc_active & BTA_HH_LE_DISC_HIDS) != 0) { bta_hh_le_search_hid_chars(p_dev_cb); - } - else - { + } else { bta_hh_le_open_cmpl(p_dev_cb); } } @@ -2228,24 +2115,23 @@ void bta_hh_le_write_cmpl(tBTA_HH_DEV_CB *p_dev_cb, tBTA_HH_DATA *p_buf) tBTA_HH_CBDATA cback_data ; UINT16 cb_evt = p_dev_cb->w4_evt; - if (p_data == NULL || cb_evt == 0) + if (p_data == NULL || cb_evt == 0) { return; + } #if BTA_HH_DEBUG APPL_TRACE_DEBUG("bta_hh_le_write_cmpl w4_evt: %d", p_dev_cb->w4_evt); #endif - switch (p_data->char_id.uuid.uu.uuid16) - { + switch (p_data->char_id.uuid.uu.uuid16) { /* Set protocol finished */ case GATT_UUID_HID_PROTO_MODE: cback_data.handle = p_dev_cb->hid_handle; - if (p_data->status == BTA_GATT_OK) - { + if (p_data->status == BTA_GATT_OK) { bta_hh_le_register_input_notif(p_dev_cb, p_data->srvc_id.id.inst_id, p_dev_cb->mode, FALSE); cback_data.status = BTA_HH_OK; - } - else + } else { cback_data.status = BTA_HH_ERR; + } p_dev_cb->w4_evt = 0; (* bta_hh_cb.p_cback)(cb_evt, (tBTA_HH *)&cback_data); break; @@ -2256,7 +2142,7 @@ void bta_hh_le_write_cmpl(tBTA_HH_DEV_CB *p_dev_cb, tBTA_HH_DATA *p_buf) case GATT_UUID_HID_BT_MOUSE_INPUT: case GATT_UUID_HID_BT_KB_OUTPUT: cback_data.handle = p_dev_cb->hid_handle; - cback_data.status = (p_data->status == BTA_GATT_OK)? BTA_HH_OK : BTA_HH_ERR; + cback_data.status = (p_data->status == BTA_GATT_OK) ? BTA_HH_OK : BTA_HH_ERR; p_dev_cb->w4_evt = 0; (* bta_hh_cb.p_cback)(cb_evt, (tBTA_HH *)&cback_data); break; @@ -2287,21 +2173,19 @@ void bta_hh_le_write_char_descr_cmpl(tBTA_HH_DEV_CB *p_dev_cb, tBTA_HH_DATA *p_b UINT8 srvc_inst_id, hid_inst_id; /* only write client configuration possible */ - if (p_data->descr_type.uuid.uu.uuid16 == GATT_UUID_CHAR_CLIENT_CONFIG) - { + if (p_data->descr_type.uuid.uu.uuid16 == GATT_UUID_CHAR_CLIENT_CONFIG) { srvc_inst_id = p_data->srvc_id.id.inst_id; hid_inst_id = srvc_inst_id; - switch (p_data->char_id.uuid.uu.uuid16) - { + switch (p_data->char_id.uuid.uu.uuid16) { case GATT_UUID_BATTERY_LEVEL: /* battery level clt cfg registered */ hid_inst_id = bta_hh_le_find_service_inst_by_battery_inst_id(p_dev_cb, srvc_inst_id); - /* fall through */ + /* fall through */ case GATT_UUID_HID_BT_KB_INPUT: case GATT_UUID_HID_BT_MOUSE_INPUT: case GATT_UUID_HID_REPORT: if (p_data->status == BTA_GATT_OK) p_dev_cb->hid_srvc[hid_inst_id].report[p_dev_cb->clt_cfg_idx].client_cfg_value = - BTA_GATT_CLT_CONFIG_NOTIFICATION; + BTA_GATT_CLT_CONFIG_NOTIFICATION; p_dev_cb->clt_cfg_idx ++; bta_hh_le_write_rpt_clt_cfg(p_dev_cb, hid_inst_id); @@ -2314,16 +2198,14 @@ void bta_hh_le_write_char_descr_cmpl(tBTA_HH_DEV_CB *p_dev_cb, tBTA_HH_DATA *p_b default: APPL_TRACE_ERROR("Unknown char ID clt cfg: 0x%04x", p_data->char_id.uuid.uu.uuid16); } - } - else - { + } else { #if BTA_HH_DEBUG == TRUE - APPL_TRACE_ERROR("Unexpected write to %s(0x%04x)", - bta_hh_uuid_to_str(p_data->descr_type.uuid.uu.uuid16), - p_data->descr_type.uuid.uu.uuid16); + APPL_TRACE_ERROR("Unexpected write to %s(0x%04x)", + bta_hh_uuid_to_str(p_data->descr_type.uuid.uu.uuid16), + p_data->descr_type.uuid.uu.uuid16); #else - APPL_TRACE_ERROR("Unexpected write to (0x%04x)", - p_data->descr_type.uuid.uu.uuid16); + APPL_TRACE_ERROR("Unexpected write to (0x%04x)", + p_data->descr_type.uuid.uu.uuid16); #endif } @@ -2345,35 +2227,32 @@ void bta_hh_le_input_rpt_notify(tBTA_GATTC_NOTIFY *p_data) UINT8 *p_buf; tBTA_HH_LE_RPT *p_rpt; - if (p_dev_cb == NULL) - { + if (p_dev_cb == NULL) { APPL_TRACE_ERROR("notification received from Unknown device"); return; } - app_id= p_dev_cb->app_id; + app_id = p_dev_cb->app_id; p_rpt = bta_hh_le_find_report_entry(p_dev_cb, BTA_HH_LE_SRVC_DEF, p_data->char_id.char_id.uuid.uu.uuid16, p_data->char_id.char_id.inst_id); - if (p_rpt == NULL) - { + if (p_rpt == NULL) { APPL_TRACE_ERROR("notification received for Unknown Report"); return; } - if (p_data->char_id.char_id.uuid.uu.uuid16 == GATT_UUID_HID_BT_MOUSE_INPUT) + if (p_data->char_id.char_id.uuid.uu.uuid16 == GATT_UUID_HID_BT_MOUSE_INPUT) { app_id = BTA_HH_APP_ID_MI; - else if (p_data->char_id.char_id.uuid.uu.uuid16 == GATT_UUID_HID_BT_KB_INPUT) + } else if (p_data->char_id.char_id.uuid.uu.uuid16 == GATT_UUID_HID_BT_KB_INPUT) { app_id = BTA_HH_APP_ID_KB; + } APPL_TRACE_DEBUG("Notification received on report ID: %d", p_rpt->rpt_id); /* need to append report ID to the head of data */ - if (p_rpt->rpt_id != 0) - { - if ((p_buf = (UINT8 *)GKI_getbuf((UINT16)(p_data->len + 1))) == NULL) - { + if (p_rpt->rpt_id != 0) { + if ((p_buf = (UINT8 *)GKI_getbuf((UINT16)(p_data->len + 1))) == NULL) { APPL_TRACE_ERROR("No resources to send report data"); return; } @@ -2386,16 +2265,17 @@ void bta_hh_le_input_rpt_notify(tBTA_GATTC_NOTIFY *p_data) } bta_hh_co_data((UINT8)p_dev_cb->hid_handle, - p_buf, - p_data->len, - p_dev_cb->mode, - 0 , /* no sub class*/ - p_dev_cb->dscp_info.ctry_code, - p_dev_cb->addr, - app_id); + p_buf, + p_data->len, + p_dev_cb->mode, + 0 , /* no sub class*/ + p_dev_cb->dscp_info.ctry_code, + p_dev_cb->addr, + app_id); - if (p_buf != p_data->value) + if (p_buf != p_data->value) { GKI_freebuf(p_buf); + } } /******************************************************************************* @@ -2412,8 +2292,7 @@ void bta_hh_le_open_fail(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) tBTA_HH_CONN conn_dat ; /* open failure in the middle of service discovery, clear all services */ - if (p_cb->disc_active & BTA_HH_LE_DISC_HIDS) - { + if (p_cb->disc_active & BTA_HH_LE_DISC_HIDS) { bta_hh_clear_service_cache(p_cb); } @@ -2424,10 +2303,11 @@ void bta_hh_le_open_fail(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) conn_dat.le_hid = TRUE; conn_dat.scps_supported = p_cb->scps_supported; - if (p_cb->status == BTA_HH_OK) + if (p_cb->status == BTA_HH_OK) { conn_dat.status = (p_data->le_close.reason == BTA_GATT_CONN_UNKNOWN) ? p_cb->status : BTA_HH_ERR; - else + } else { conn_dat.status = p_cb->status; + } /* Report OPEN fail event */ (*bta_hh_cb.p_cback)(BTA_HH_OPEN_EVT, (tBTA_HH *)&conn_dat); @@ -2458,17 +2338,13 @@ void bta_hh_gatt_close(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) (*bta_hh_cb.p_cback)(BTA_HH_CLOSE_EVT, (tBTA_HH *)&disc_dat); /* if no connection is active and HH disable is signaled, disable service */ - if (bta_hh_cb.cnt_num == 0 && bta_hh_cb.w4_disable) - { + if (bta_hh_cb.cnt_num == 0 && bta_hh_cb.w4_disable) { bta_hh_disc_cmpl(); - } - else - { + } else { #if (BTA_HH_LE_RECONN == TRUE) - if (p_data->le_close.reason == BTA_GATT_CONN_TIMEOUT) - { - bta_hh_le_add_dev_bg_conn(p_cb, FALSE); - } + if (p_data->le_close.reason == BTA_GATT_CONN_TIMEOUT) { + bta_hh_le_add_dev_bg_conn(p_cb, FALSE); + } #endif } @@ -2487,8 +2363,7 @@ void bta_hh_gatt_close(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) *******************************************************************************/ void bta_hh_le_api_disc_act(tBTA_HH_DEV_CB *p_cb) { - if (p_cb->conn_id != BTA_GATT_INVALID_CONN_ID) - { + if (p_cb->conn_id != BTA_GATT_INVALID_CONN_ID) { BTA_GATTC_Close(p_cb->conn_id); /* remove device from background connection if intended to disconnect, do not allow reconnection */ @@ -2511,13 +2386,13 @@ void bta_hh_le_get_rpt(tBTA_HH_DEV_CB *p_cb, UINT8 srvc_inst, tBTA_HH_RPT_TYPE r tBTA_GATTC_CHAR_ID char_id; UINT16 srvc_uuid = UUID_SERVCLASS_LE_HID; - if (p_rpt == NULL) - { + if (p_rpt == NULL) { APPL_TRACE_ERROR("bta_hh_le_get_rpt: no matching report"); return; } - if (p_rpt->uuid == GATT_UUID_BATTERY_LEVEL) + if (p_rpt->uuid == GATT_UUID_BATTERY_LEVEL) { srvc_uuid = UUID_SERVCLASS_BATTERY; + } p_cb->w4_evt = BTA_HH_GET_RPT_EVT; @@ -2547,8 +2422,7 @@ void bta_hh_le_write_rpt(tBTA_HH_DEV_CB *p_cb, UINT8 srvc_inst, tBTA_GATTC_CHAR_ID char_id; UINT8 *p_value, rpt_id; - if (p_buf == NULL || p_buf->len == 0) - { + if (p_buf == NULL || p_buf->len == 0) { APPL_TRACE_ERROR("bta_hh_le_write_rpt: Illegal data"); return; } @@ -2560,8 +2434,7 @@ void bta_hh_le_write_rpt(tBTA_HH_DEV_CB *p_cb, UINT8 srvc_inst, p_rpt = bta_hh_le_find_rpt_by_idtype(p_cb->hid_srvc[srvc_inst].report, p_cb->mode, r_type, rpt_id); - if (p_rpt == NULL) - { + if (p_rpt == NULL) { APPL_TRACE_ERROR("bta_hh_le_write_rpt: no matching report"); GKI_freebuf(p_buf); return; @@ -2599,8 +2472,7 @@ void bta_hh_le_suspend(tBTA_HH_DEV_CB *p_cb, tBTA_HH_TRANS_CTRL_TYPE ctrl_type) ctrl_type -= BTA_HH_CTRL_SUSPEND; - for (i = 0; i < BTA_HH_LE_HID_SRVC_MAX; i ++) - { + for (i = 0; i < BTA_HH_LE_HID_SRVC_MAX; i ++) { bta_hh_le_fill_16bits_srvc_id(TRUE, i, UUID_SERVCLASS_LE_HID, &char_id.srvc_id); bta_hh_le_fill_16bits_char_id(0, GATT_UUID_HID_CONTROL_POINT, &char_id.char_id); @@ -2624,57 +2496,55 @@ void bta_hh_le_suspend(tBTA_HH_DEV_CB *p_cb, tBTA_HH_TRANS_CTRL_TYPE ctrl_type) *******************************************************************************/ void bta_hh_le_write_dev_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data) { - switch(p_data->api_sndcmd.t_type) - { - case HID_TRANS_SET_PROTOCOL: - p_cb->w4_evt = BTA_HH_SET_PROTO_EVT; - bta_hh_le_set_protocol_mode(p_cb, p_data->api_sndcmd.param); - break; + switch (p_data->api_sndcmd.t_type) { + case HID_TRANS_SET_PROTOCOL: + p_cb->w4_evt = BTA_HH_SET_PROTO_EVT; + bta_hh_le_set_protocol_mode(p_cb, p_data->api_sndcmd.param); + break; - case HID_TRANS_GET_PROTOCOL: - bta_hh_le_get_protocol_mode(p_cb); - break; + case HID_TRANS_GET_PROTOCOL: + bta_hh_le_get_protocol_mode(p_cb); + break; - case HID_TRANS_GET_REPORT: - bta_hh_le_get_rpt(p_cb, - BTA_HH_LE_SRVC_DEF, - p_data->api_sndcmd.param, - p_data->api_sndcmd.rpt_id); - break; + case HID_TRANS_GET_REPORT: + bta_hh_le_get_rpt(p_cb, + BTA_HH_LE_SRVC_DEF, + p_data->api_sndcmd.param, + p_data->api_sndcmd.rpt_id); + break; - case HID_TRANS_SET_REPORT: - bta_hh_le_write_rpt(p_cb, - BTA_HH_LE_SRVC_DEF, - BTA_GATTC_TYPE_WRITE, - p_data->api_sndcmd.param, - p_data->api_sndcmd.p_data, - BTA_HH_SET_RPT_EVT); - break; + case HID_TRANS_SET_REPORT: + bta_hh_le_write_rpt(p_cb, + BTA_HH_LE_SRVC_DEF, + BTA_GATTC_TYPE_WRITE, + p_data->api_sndcmd.param, + p_data->api_sndcmd.p_data, + BTA_HH_SET_RPT_EVT); + break; - case HID_TRANS_DATA: /* output report */ + case HID_TRANS_DATA: /* output report */ - bta_hh_le_write_rpt(p_cb, - BTA_HH_LE_SRVC_DEF, - BTA_GATTC_TYPE_WRITE_NO_RSP, - p_data->api_sndcmd.param, - p_data->api_sndcmd.p_data, - BTA_HH_DATA_EVT); - break; + bta_hh_le_write_rpt(p_cb, + BTA_HH_LE_SRVC_DEF, + BTA_GATTC_TYPE_WRITE_NO_RSP, + p_data->api_sndcmd.param, + p_data->api_sndcmd.p_data, + BTA_HH_DATA_EVT); + break; - case HID_TRANS_CONTROL: - /* no handshake event will be generated */ - /* if VC_UNPLUG is issued, set flag */ - if (p_data->api_sndcmd.param == BTA_HH_CTRL_SUSPEND || - p_data->api_sndcmd.param == BTA_HH_CTRL_EXIT_SUSPEND) - { - bta_hh_le_suspend(p_cb, p_data->api_sndcmd.param); - } - break; + case HID_TRANS_CONTROL: + /* no handshake event will be generated */ + /* if VC_UNPLUG is issued, set flag */ + if (p_data->api_sndcmd.param == BTA_HH_CTRL_SUSPEND || + p_data->api_sndcmd.param == BTA_HH_CTRL_EXIT_SUSPEND) { + bta_hh_le_suspend(p_cb, p_data->api_sndcmd.param); + } + break; - default: - APPL_TRACE_ERROR("%s unsupported transaction for BLE HID device: %d", - __func__, p_data->api_sndcmd.t_type); - break; + default: + APPL_TRACE_ERROR("%s unsupported transaction for BLE HID device: %d", + __func__, p_data->api_sndcmd.t_type); + break; } } @@ -2691,17 +2561,15 @@ void bta_hh_le_get_dscp_act(tBTA_HH_DEV_CB *p_cb) { UINT8 i; - for (i = 0 ;i < BTA_HH_LE_HID_SRVC_MAX; i ++) - { - if (p_cb->hid_srvc[i].in_use) - { + for (i = 0 ; i < BTA_HH_LE_HID_SRVC_MAX; i ++) { + if (p_cb->hid_srvc[i].in_use) { p_cb->dscp_info.descriptor.dl_len = p_cb->hid_srvc[i].descriptor.dl_len; p_cb->dscp_info.descriptor.dsc_list = p_cb->hid_srvc[i].descriptor.dsc_list; (*bta_hh_cb.p_cback)(BTA_HH_GET_DSCP_EVT, (tBTA_HH *)&p_cb->dscp_info); - } - else + } else { break; + } } } @@ -2716,22 +2584,21 @@ void bta_hh_le_get_dscp_act(tBTA_HH_DEV_CB *p_cb) *******************************************************************************/ static void bta_hh_le_add_dev_bg_conn(tBTA_HH_DEV_CB *p_cb, BOOLEAN check_bond) { - UINT8 sec_flag=0; + UINT8 sec_flag = 0; BOOLEAN to_add = TRUE; - if (check_bond) - { + if (check_bond) { /* start reconnection if remote is a bonded device */ /* verify bond */ BTM_GetSecurityFlagsByTransport(p_cb->addr, &sec_flag, BT_TRANSPORT_LE); - if ((sec_flag & BTM_SEC_FLAG_LKEY_KNOWN) == 0) + if ((sec_flag & BTM_SEC_FLAG_LKEY_KNOWN) == 0) { to_add = FALSE; + } } if (/*p_cb->dscp_info.flag & BTA_HH_LE_NORMAL_CONN &&*/ - !p_cb->in_bg_conn && to_add) - { + !p_cb->in_bg_conn && to_add) { /* add device into BG connection to accept remote initiated connection */ BTA_GATTC_Open(bta_hh_cb.gatt_if, p_cb->addr, FALSE, BTA_GATT_TRANSPORT_LE); p_cb->in_bg_conn = TRUE; @@ -2788,8 +2655,7 @@ UINT8 bta_hh_le_add_device(tBTA_HH_DEV_CB *p_cb, tBTA_HH_MAINT_DEV *p_dev_info) *******************************************************************************/ void bta_hh_le_remove_dev_bg_conn(tBTA_HH_DEV_CB *p_dev_cb) { - if (p_dev_cb->in_bg_conn) - { + if (p_dev_cb->in_bg_conn) { p_dev_cb->in_bg_conn = FALSE; BTA_GATTC_CancelOpen(bta_hh_cb.gatt_if, p_dev_cb->addr, FALSE); @@ -2813,9 +2679,8 @@ void bta_hh_le_update_scpp(tBTA_HH_DEV_CB *p_dev_cb, tBTA_HH_DATA *p_buf) tBTA_HH_CBDATA cback_data ; if (!p_dev_cb->is_le_device || - p_dev_cb->mode != BTA_HH_PROTO_RPT_MODE || - p_dev_cb->scps_supported == FALSE) - { + p_dev_cb->mode != BTA_HH_PROTO_RPT_MODE || + p_dev_cb->scps_supported == FALSE) { APPL_TRACE_ERROR("Can not set ScPP scan paramter as boot host, or remote does not support ScPP "); cback_data.handle = p_dev_cb->hid_handle; @@ -2858,76 +2723,78 @@ static void bta_hh_gattc_callback(tBTA_GATTC_EVT event, tBTA_GATTC *p_data) #if BTA_HH_DEBUG APPL_TRACE_DEBUG("bta_hh_gattc_callback event = %d", event); #endif - if (p_data == NULL) + if (p_data == NULL) { return; + } - switch (event) - { - case BTA_GATTC_REG_EVT: /* 0 */ - bta_hh_le_register_cmpl(&p_data->reg_oper); - break; + switch (event) { + case BTA_GATTC_REG_EVT: /* 0 */ + bta_hh_le_register_cmpl(&p_data->reg_oper); + break; - case BTA_GATTC_DEREG_EVT: /* 1 */ - bta_hh_cleanup_disable(p_data->reg_oper.status); - break; + case BTA_GATTC_DEREG_EVT: /* 1 */ + bta_hh_cleanup_disable(p_data->reg_oper.status); + break; - case BTA_GATTC_OPEN_EVT: /* 2 */ - p_dev_cb = bta_hh_le_find_dev_cb_by_bda(p_data->open.remote_bda); - if (p_dev_cb) { - bta_hh_sm_execute(p_dev_cb, BTA_HH_GATT_OPEN_EVT, (tBTA_HH_DATA *)&p_data->open); - } - break; + case BTA_GATTC_OPEN_EVT: /* 2 */ + p_dev_cb = bta_hh_le_find_dev_cb_by_bda(p_data->open.remote_bda); + if (p_dev_cb) { + bta_hh_sm_execute(p_dev_cb, BTA_HH_GATT_OPEN_EVT, (tBTA_HH_DATA *)&p_data->open); + } + break; - case BTA_GATTC_READ_CHAR_EVT: /* 3 */ - case BTA_GATTC_READ_DESCR_EVT: /* 8 */ - p_dev_cb = bta_hh_le_find_dev_cb_by_conn_id(p_data->read.conn_id); - if (event == BTA_GATTC_READ_CHAR_EVT) - evt = BTA_HH_GATT_READ_CHAR_CMPL_EVT; - else - evt = BTA_HH_GATT_READ_DESCR_CMPL_EVT; + case BTA_GATTC_READ_CHAR_EVT: /* 3 */ + case BTA_GATTC_READ_DESCR_EVT: /* 8 */ + p_dev_cb = bta_hh_le_find_dev_cb_by_conn_id(p_data->read.conn_id); + if (event == BTA_GATTC_READ_CHAR_EVT) { + evt = BTA_HH_GATT_READ_CHAR_CMPL_EVT; + } else { + evt = BTA_HH_GATT_READ_DESCR_CMPL_EVT; + } - bta_hh_sm_execute(p_dev_cb, evt, (tBTA_HH_DATA *)&p_data->read); - break; + bta_hh_sm_execute(p_dev_cb, evt, (tBTA_HH_DATA *)&p_data->read); + break; - case BTA_GATTC_WRITE_DESCR_EVT: /* 9 */ - case BTA_GATTC_WRITE_CHAR_EVT: /* 4 */ - p_dev_cb = bta_hh_le_find_dev_cb_by_conn_id(p_data->write.conn_id); - if (event == BTA_GATTC_WRITE_CHAR_EVT) - evt = BTA_HH_GATT_WRITE_CHAR_CMPL_EVT; - else - evt = BTA_HH_GATT_WRITE_DESCR_CMPL_EVT; + case BTA_GATTC_WRITE_DESCR_EVT: /* 9 */ + case BTA_GATTC_WRITE_CHAR_EVT: /* 4 */ + p_dev_cb = bta_hh_le_find_dev_cb_by_conn_id(p_data->write.conn_id); + if (event == BTA_GATTC_WRITE_CHAR_EVT) { + evt = BTA_HH_GATT_WRITE_CHAR_CMPL_EVT; + } else { + evt = BTA_HH_GATT_WRITE_DESCR_CMPL_EVT; + } - bta_hh_sm_execute(p_dev_cb, evt, (tBTA_HH_DATA *)&p_data->write); - break; + bta_hh_sm_execute(p_dev_cb, evt, (tBTA_HH_DATA *)&p_data->write); + break; - case BTA_GATTC_CLOSE_EVT: /* 5 */ - bta_hh_le_close(&p_data->close); - break; + case BTA_GATTC_CLOSE_EVT: /* 5 */ + bta_hh_le_close(&p_data->close); + break; - case BTA_GATTC_SEARCH_CMPL_EVT: /* 6 */ - bta_hh_le_srvc_search_cmpl(&p_data->search_cmpl); - break; + case BTA_GATTC_SEARCH_CMPL_EVT: /* 6 */ + bta_hh_le_srvc_search_cmpl(&p_data->search_cmpl); + break; - case BTA_GATTC_SEARCH_RES_EVT: /* 7 */ - bta_hh_le_search_result(&p_data->srvc_res); - break; + case BTA_GATTC_SEARCH_RES_EVT: /* 7 */ + bta_hh_le_search_result(&p_data->srvc_res); + break; - case BTA_GATTC_NOTIF_EVT: /* 10 */ - bta_hh_le_input_rpt_notify(&p_data->notify); - break; + case BTA_GATTC_NOTIF_EVT: /* 10 */ + bta_hh_le_input_rpt_notify(&p_data->notify); + break; - case BTA_GATTC_ENC_CMPL_CB_EVT: /* 17 */ - p_dev_cb = bta_hh_le_find_dev_cb_by_bda(p_data->enc_cmpl.remote_bda); - if (p_dev_cb) { - bta_hh_sm_execute(p_dev_cb, BTA_HH_GATT_ENC_CMPL_EVT, + case BTA_GATTC_ENC_CMPL_CB_EVT: /* 17 */ + p_dev_cb = bta_hh_le_find_dev_cb_by_bda(p_data->enc_cmpl.remote_bda); + if (p_dev_cb) { + bta_hh_sm_execute(p_dev_cb, BTA_HH_GATT_ENC_CMPL_EVT, (tBTA_HH_DATA *)&p_data->enc_cmpl); - } - break; + } + break; - default: - break; + default: + break; } } @@ -2947,8 +2814,7 @@ void bta_hh_le_hid_read_rpt_clt_cfg(BD_ADDR bd_addr, UINT8 rpt_id) UINT8 index = BTA_HH_IDX_INVALID; index = bta_hh_find_cb(bd_addr); - if ((index = bta_hh_find_cb(bd_addr))== BTA_HH_IDX_INVALID) - { + if ((index = bta_hh_find_cb(bd_addr)) == BTA_HH_IDX_INVALID) { APPL_TRACE_ERROR("unknown device"); return; } @@ -2957,8 +2823,7 @@ void bta_hh_le_hid_read_rpt_clt_cfg(BD_ADDR bd_addr, UINT8 rpt_id) p_rpt = bta_hh_le_find_rpt_by_idtype(p_cb->hid_srvc[BTA_HH_LE_SRVC_DEF].report, p_cb->mode, BTA_HH_RPTT_INPUT, rpt_id); - if (p_rpt == NULL) - { + if (p_rpt == NULL) { APPL_TRACE_ERROR("bta_hh_le_write_rpt: no matching report"); return; } @@ -2989,17 +2854,16 @@ static void bta_hh_le_search_scps(tBTA_HH_DEV_CB *p_cb) { tBT_UUID pri_srvc; - if ( p_cb->mode == BTA_HH_PROTO_RPT_MODE) - { + if ( p_cb->mode == BTA_HH_PROTO_RPT_MODE) { p_cb->disc_active |= BTA_HH_LE_DISC_SCPS; /* start service discovery for Scan Parameter service */ pri_srvc.len = LEN_UUID_16; pri_srvc.uu.uuid16 = UUID_SERVCLASS_SCAN_PARAM; BTA_GATTC_ServiceSearchRequest(p_cb->conn_id, &pri_srvc); - } - else + } else { bta_hh_le_open_cmpl(p_cb); + } } /******************************************************************************* @@ -3029,12 +2893,12 @@ static void bta_hh_le_search_scps_chars(tBTA_HH_DEV_CB *p_cb) &srvc_id, &char_cond, &char_result, - &prop) == BTA_GATT_OK) - { - if (prop & BTA_GATT_CHAR_PROP_BIT_NOTIFY) + &prop) == BTA_GATT_OK) { + if (prop & BTA_GATT_CHAR_PROP_BIT_NOTIFY) { p_cb->scps_notify |= BTA_HH_LE_SCPS_NOTIFY_SPT; - else + } else { p_cb->scps_notify = BTA_HH_LE_SCPS_NOTIFY_NONE; + } } } @@ -3051,25 +2915,22 @@ static void bta_hh_le_search_scps_chars(tBTA_HH_DEV_CB *p_cb) *******************************************************************************/ static void bta_hh_le_register_scpp_notif(tBTA_HH_DEV_CB *p_dev_cb, tBTA_GATT_STATUS status) { - UINT8 sec_flag=0; + UINT8 sec_flag = 0; tBTA_GATTC_CHAR_ID char_id; /* if write scan parameter sucessful */ /* if bonded and notification is not enabled, configure the client configuration */ if (status == BTA_GATT_OK && - (p_dev_cb->scps_notify & BTA_HH_LE_SCPS_NOTIFY_SPT) != 0 && - (p_dev_cb->scps_notify & BTA_HH_LE_SCPS_NOTIFY_ENB) == 0) - { + (p_dev_cb->scps_notify & BTA_HH_LE_SCPS_NOTIFY_SPT) != 0 && + (p_dev_cb->scps_notify & BTA_HH_LE_SCPS_NOTIFY_ENB) == 0) { BTM_GetSecurityFlagsByTransport(p_dev_cb->addr, &sec_flag, BT_TRANSPORT_LE); - if ((sec_flag & BTM_SEC_FLAG_LKEY_KNOWN)) - { + if ((sec_flag & BTM_SEC_FLAG_LKEY_KNOWN)) { if (bta_hh_le_write_char_clt_cfg (p_dev_cb, BTA_HH_SCPP_INST_DEF, UUID_SERVCLASS_SCAN_PARAM, BTA_HH_SCPP_INST_DEF, GATT_UUID_SCAN_REFRESH, - BTA_GATT_CLT_CONFIG_NOTIFICATION)) - { + BTA_GATT_CLT_CONFIG_NOTIFICATION)) { bta_hh_le_fill_16bits_srvc_id(TRUE, BTA_HH_SCPP_INST_DEF, UUID_SERVCLASS_SCAN_PARAM, &char_id.srvc_id); bta_hh_le_fill_16bits_char_id(BTA_HH_SCPP_INST_DEF, GATT_UUID_SCAN_REFRESH, &char_id.char_id); @@ -3097,11 +2958,12 @@ static void bta_hh_le_register_scpp_notif_cmpl(tBTA_HH_DEV_CB *p_dev_cb, tBTA_GA tBTA_HH_CBDATA cback_data ; UINT16 cb_evt = p_dev_cb->w4_evt; - if (status == BTA_GATT_OK) + if (status == BTA_GATT_OK) { p_dev_cb->scps_notify = (BTA_HH_LE_SCPS_NOTIFY_ENB | BTA_HH_LE_SCPS_NOTIFY_SPT); + } cback_data.handle = p_dev_cb->hid_handle; - cback_data.status = (status == BTA_GATT_OK)? BTA_HH_OK : BTA_HH_ERR; + cback_data.status = (status == BTA_GATT_OK) ? BTA_HH_OK : BTA_HH_ERR; p_dev_cb->w4_evt = 0; (* bta_hh_cb.p_cback)(cb_evt, (tBTA_HH *)&cback_data); @@ -3124,36 +2986,30 @@ static void bta_hh_process_cache_rpt (tBTA_HH_DEV_CB *p_cb, UINT8 i = 0; tBTA_HH_LE_RPT *p_rpt; - if (num_rpt != 0) /* no cache is found */ - { + if (num_rpt != 0) { /* no cache is found */ p_cb->hid_srvc[BTA_HH_LE_RPT_GET_SRVC_INST_ID(p_rpt_cache->inst_id)].in_use = TRUE; /* set the descriptor info */ p_cb->hid_srvc[BTA_HH_LE_RPT_GET_SRVC_INST_ID(p_rpt_cache->inst_id)].descriptor.dl_len = - p_cb->dscp_info.descriptor.dl_len; + p_cb->dscp_info.descriptor.dl_len; p_cb->hid_srvc[BTA_HH_LE_RPT_GET_SRVC_INST_ID(p_rpt_cache->inst_id)].descriptor.dsc_list = - p_cb->dscp_info.descriptor.dsc_list; + p_cb->dscp_info.descriptor.dsc_list; - for (; i inst_id), - p_rpt_cache->rpt_uuid, - BTA_HH_LE_RPT_GET_RPT_INST_ID(p_rpt_cache->inst_id), - p_rpt_cache->prop)) == NULL) - { + BTA_HH_LE_RPT_GET_SRVC_INST_ID(p_rpt_cache->inst_id), + p_rpt_cache->rpt_uuid, + BTA_HH_LE_RPT_GET_RPT_INST_ID(p_rpt_cache->inst_id), + p_rpt_cache->prop)) == NULL) { APPL_TRACE_ERROR("bta_hh_process_cache_rpt: allocation report entry failure"); break; - } - else - { + } else { p_rpt->rpt_type = p_rpt_cache->rpt_type; p_rpt->rpt_id = p_rpt_cache->rpt_id; - if(p_rpt->uuid == GATT_UUID_HID_BT_KB_INPUT || - p_rpt->uuid == GATT_UUID_HID_BT_MOUSE_INPUT || - (p_rpt->uuid == GATT_UUID_HID_REPORT && p_rpt->rpt_type == BTA_HH_RPTT_INPUT)) - { + if (p_rpt->uuid == GATT_UUID_HID_BT_KB_INPUT || + p_rpt->uuid == GATT_UUID_HID_BT_MOUSE_INPUT || + (p_rpt->uuid == GATT_UUID_HID_REPORT && p_rpt->rpt_type == BTA_HH_RPTT_INPUT)) { p_rpt->client_cfg_value = BTA_GATT_CLT_CONFIG_NOTIFICATION; } } diff --git a/components/bt/bluedroid/bta/hh/bta_hh_main.c b/components/bt/bluedroid/bta/hh/bta_hh_main.c index e5c353d624..7959b39775 100644 --- a/components/bt/bluedroid/bta/hh/bta_hh_main.c +++ b/components/bt/bluedroid/bta/hh/bta_hh_main.c @@ -37,8 +37,7 @@ *****************************************************************************/ /* state machine action enumeration list */ -enum -{ +enum { BTA_HH_API_DISC_ACT, /* HID host process API close action */ BTA_HH_OPEN_ACT, /* HID host process BTA_HH_EVT_OPEN */ BTA_HH_CLOSE_ACT, /* HID host process BTA_HH_EVT_CLOSE */ @@ -77,8 +76,7 @@ enum typedef void (*tBTA_HH_ACTION)(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data); /* action functions */ -const tBTA_HH_ACTION bta_hh_action[] = -{ +const tBTA_HH_ACTION bta_hh_action[] = { bta_hh_api_disc_act, bta_hh_open_act, bta_hh_close_act, @@ -93,20 +91,20 @@ const tBTA_HH_ACTION bta_hh_action[] = bta_hh_open_cmpl_act, bta_hh_open_failure #if (defined BTA_HH_LE_INCLUDED && BTA_HH_LE_INCLUDED == TRUE) - ,bta_hh_gatt_close - ,bta_hh_le_open_fail - ,bta_hh_gatt_open - ,bta_hh_w4_le_read_char_cmpl - ,bta_hh_le_read_char_cmpl - ,bta_hh_w4_le_read_descr_cmpl - ,bta_hh_le_read_descr_cmpl - ,bta_hh_w4_le_write_cmpl - ,bta_hh_le_write_cmpl - ,bta_hh_le_write_char_descr_cmpl - ,bta_hh_start_security - ,bta_hh_security_cmpl - ,bta_hh_le_update_scpp - ,bta_hh_le_notify_enc_cmpl + , bta_hh_gatt_close + , bta_hh_le_open_fail + , bta_hh_gatt_open + , bta_hh_w4_le_read_char_cmpl + , bta_hh_le_read_char_cmpl + , bta_hh_w4_le_read_descr_cmpl + , bta_hh_le_read_descr_cmpl + , bta_hh_w4_le_write_cmpl + , bta_hh_le_write_cmpl + , bta_hh_le_write_char_descr_cmpl + , bta_hh_start_security + , bta_hh_security_cmpl + , bta_hh_le_update_scpp + , bta_hh_le_notify_enc_cmpl #endif }; @@ -116,121 +114,117 @@ const tBTA_HH_ACTION bta_hh_action[] = #define BTA_HH_NUM_COLS 2 /* number of columns */ /* state table for idle state */ -const UINT8 bta_hh_st_idle[][BTA_HH_NUM_COLS] = -{ -/* Event Action Next state */ -/* BTA_HH_API_OPEN_EVT */ {BTA_HH_START_SDP, BTA_HH_W4_CONN_ST }, -/* BTA_HH_API_CLOSE_EVT */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST }, -/* BTA_HH_INT_OPEN_EVT */ {BTA_HH_OPEN_ACT, BTA_HH_W4_CONN_ST }, -/* BTA_HH_INT_CLOSE_EVT */ {BTA_HH_CLOSE_ACT, BTA_HH_IDLE_ST }, -/* BTA_HH_INT_DATA_EVT */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST }, -/* BTA_HH_INT_CTRL_DATA */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST }, -/* BTA_HH_INT_HANDSK_EVT */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST }, -/* BTA_HH_SDP_CMPL_EVT */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST }, -/* BTA_HH_API_WRITE_DEV_EVT */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST }, -/* BTA_HH_API_GET_DSCP_EVT */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST }, -/* BTA_HH_API_MAINT_DEV_EVT */ {BTA_HH_MAINT_DEV_ACT, BTA_HH_IDLE_ST }, -/* BTA_HH_OPEN_CMPL_EVT */ {BTA_HH_OPEN_CMPL_ACT, BTA_HH_CONN_ST } +const UINT8 bta_hh_st_idle[][BTA_HH_NUM_COLS] = { + /* Event Action Next state */ + /* BTA_HH_API_OPEN_EVT */ {BTA_HH_START_SDP, BTA_HH_W4_CONN_ST }, + /* BTA_HH_API_CLOSE_EVT */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST }, + /* BTA_HH_INT_OPEN_EVT */ {BTA_HH_OPEN_ACT, BTA_HH_W4_CONN_ST }, + /* BTA_HH_INT_CLOSE_EVT */ {BTA_HH_CLOSE_ACT, BTA_HH_IDLE_ST }, + /* BTA_HH_INT_DATA_EVT */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST }, + /* BTA_HH_INT_CTRL_DATA */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST }, + /* BTA_HH_INT_HANDSK_EVT */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST }, + /* BTA_HH_SDP_CMPL_EVT */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST }, + /* BTA_HH_API_WRITE_DEV_EVT */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST }, + /* BTA_HH_API_GET_DSCP_EVT */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST }, + /* BTA_HH_API_MAINT_DEV_EVT */ {BTA_HH_MAINT_DEV_ACT, BTA_HH_IDLE_ST }, + /* BTA_HH_OPEN_CMPL_EVT */ {BTA_HH_OPEN_CMPL_ACT, BTA_HH_CONN_ST } #if (defined BTA_HH_LE_INCLUDED && BTA_HH_LE_INCLUDED == TRUE) -/* BTA_HH_GATT_CLOSE_EVT */ ,{BTA_HH_IGNORE, BTA_HH_IDLE_ST } -/* BTA_HH_GATT_OPEN_EVT */ ,{BTA_HH_GATT_OPEN, BTA_HH_W4_CONN_ST } -/* BTA_HH_START_ENC_EVT */ ,{BTA_HH_IGNORE, BTA_HH_IDLE_ST } -/* BTA_HH_ENC_CMPL_EVT */ ,{BTA_HH_IGNORE, BTA_HH_IDLE_ST } -/* READ_CHAR_CMPL_EVT */ ,{BTA_HH_IGNORE, BTA_HH_IDLE_ST } -/* BTA_HH_GATT_WRITE_CMPL_EVT*/ ,{BTA_HH_IGNORE, BTA_HH_IDLE_ST } -/* READ_DESCR_CMPL_EVT */ ,{BTA_HH_IGNORE, BTA_HH_IDLE_ST } -/* WRITE_DESCR_CMPL_EVT */ ,{BTA_HH_IGNORE, BTA_HH_IDLE_ST } -/* SCPP_UPDATE_EVT */ ,{BTA_HH_IGNORE, BTA_HH_IDLE_ST } -/* BTA_HH_GATT_ENC_CMPL_EVT */ ,{BTA_HH_IGNORE, BTA_HH_IDLE_ST } + /* BTA_HH_GATT_CLOSE_EVT */ , {BTA_HH_IGNORE, BTA_HH_IDLE_ST } + /* BTA_HH_GATT_OPEN_EVT */ , {BTA_HH_GATT_OPEN, BTA_HH_W4_CONN_ST } + /* BTA_HH_START_ENC_EVT */ , {BTA_HH_IGNORE, BTA_HH_IDLE_ST } + /* BTA_HH_ENC_CMPL_EVT */ , {BTA_HH_IGNORE, BTA_HH_IDLE_ST } + /* READ_CHAR_CMPL_EVT */ , {BTA_HH_IGNORE, BTA_HH_IDLE_ST } + /* BTA_HH_GATT_WRITE_CMPL_EVT*/ , {BTA_HH_IGNORE, BTA_HH_IDLE_ST } + /* READ_DESCR_CMPL_EVT */ , {BTA_HH_IGNORE, BTA_HH_IDLE_ST } + /* WRITE_DESCR_CMPL_EVT */ , {BTA_HH_IGNORE, BTA_HH_IDLE_ST } + /* SCPP_UPDATE_EVT */ , {BTA_HH_IGNORE, BTA_HH_IDLE_ST } + /* BTA_HH_GATT_ENC_CMPL_EVT */ , {BTA_HH_IGNORE, BTA_HH_IDLE_ST } #endif }; -const UINT8 bta_hh_st_w4_conn[][BTA_HH_NUM_COLS] = -{ -/* Event Action Next state */ -/* BTA_HH_API_OPEN_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_CONN_ST }, -/* BTA_HH_API_CLOSE_EVT */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST }, -/* BTA_HH_INT_OPEN_EVT */ {BTA_HH_OPEN_ACT, BTA_HH_W4_CONN_ST }, -/* BTA_HH_INT_CLOSE_EVT */ {BTA_HH_OPEN_FAILURE, BTA_HH_IDLE_ST }, -/* BTA_HH_INT_DATA_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_CONN_ST }, -/* BTA_HH_INT_CTRL_DATA */ {BTA_HH_IGNORE, BTA_HH_W4_CONN_ST }, -/* BTA_HH_INT_HANDSK_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_CONN_ST }, -/* BTA_HH_SDP_CMPL_EVT */ {BTA_HH_SDP_CMPL, BTA_HH_W4_CONN_ST }, -/* BTA_HH_API_WRITE_DEV_EVT */ {BTA_HH_WRITE_DEV_ACT, BTA_HH_W4_CONN_ST }, -/* BTA_HH_API_GET_DSCP_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_CONN_ST }, -/* BTA_HH_API_MAINT_DEV_EVT */ {BTA_HH_MAINT_DEV_ACT, BTA_HH_IDLE_ST }, -/* BTA_HH_OPEN_CMPL_EVT */ {BTA_HH_OPEN_CMPL_ACT, BTA_HH_CONN_ST } +const UINT8 bta_hh_st_w4_conn[][BTA_HH_NUM_COLS] = { + /* Event Action Next state */ + /* BTA_HH_API_OPEN_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_CONN_ST }, + /* BTA_HH_API_CLOSE_EVT */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST }, + /* BTA_HH_INT_OPEN_EVT */ {BTA_HH_OPEN_ACT, BTA_HH_W4_CONN_ST }, + /* BTA_HH_INT_CLOSE_EVT */ {BTA_HH_OPEN_FAILURE, BTA_HH_IDLE_ST }, + /* BTA_HH_INT_DATA_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_CONN_ST }, + /* BTA_HH_INT_CTRL_DATA */ {BTA_HH_IGNORE, BTA_HH_W4_CONN_ST }, + /* BTA_HH_INT_HANDSK_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_CONN_ST }, + /* BTA_HH_SDP_CMPL_EVT */ {BTA_HH_SDP_CMPL, BTA_HH_W4_CONN_ST }, + /* BTA_HH_API_WRITE_DEV_EVT */ {BTA_HH_WRITE_DEV_ACT, BTA_HH_W4_CONN_ST }, + /* BTA_HH_API_GET_DSCP_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_CONN_ST }, + /* BTA_HH_API_MAINT_DEV_EVT */ {BTA_HH_MAINT_DEV_ACT, BTA_HH_IDLE_ST }, + /* BTA_HH_OPEN_CMPL_EVT */ {BTA_HH_OPEN_CMPL_ACT, BTA_HH_CONN_ST } #if (defined BTA_HH_LE_INCLUDED && BTA_HH_LE_INCLUDED == TRUE) -/* BTA_HH_GATT_CLOSE_EVT */ ,{BTA_HH_LE_OPEN_FAIL, BTA_HH_IDLE_ST } -/* BTA_HH_GATT_OPEN_EVT */ ,{BTA_HH_GATT_OPEN, BTA_HH_W4_CONN_ST } -/* BTA_HH_START_ENC_EVT */ ,{BTA_HH_START_SEC, BTA_HH_W4_SEC } -/* BTA_HH_ENC_CMPL_EVT */ ,{BTA_HH_IGNORE, BTA_HH_W4_CONN_ST } -/* READ_CHAR_CMPL_EVT */ ,{BTA_HH_W4_LE_READ_CHAR, BTA_HH_W4_CONN_ST } -/* BTA_HH_GATT_WRITE_CMPL_EVT*/ ,{BTA_HH_W4_LE_WRITE, BTA_HH_W4_CONN_ST } -/* READ_DESCR_CMPL_EVT */ ,{BTA_HH_W4_LE_READ_DESCR, BTA_HH_W4_CONN_ST } -/* WRITE_DESCR_CMPL_EVT */ ,{BTA_HH_WRITE_DESCR, BTA_HH_W4_CONN_ST } -/* SCPP_UPDATE_EVT */ ,{BTA_HH_IGNORE, BTA_HH_W4_CONN_ST } -/* BTA_HH_GATT_ENC_CMPL_EVT */ ,{BTA_HH_IGNORE, BTA_HH_W4_CONN_ST } + /* BTA_HH_GATT_CLOSE_EVT */ , {BTA_HH_LE_OPEN_FAIL, BTA_HH_IDLE_ST } + /* BTA_HH_GATT_OPEN_EVT */ , {BTA_HH_GATT_OPEN, BTA_HH_W4_CONN_ST } + /* BTA_HH_START_ENC_EVT */ , {BTA_HH_START_SEC, BTA_HH_W4_SEC } + /* BTA_HH_ENC_CMPL_EVT */ , {BTA_HH_IGNORE, BTA_HH_W4_CONN_ST } + /* READ_CHAR_CMPL_EVT */ , {BTA_HH_W4_LE_READ_CHAR, BTA_HH_W4_CONN_ST } + /* BTA_HH_GATT_WRITE_CMPL_EVT*/ , {BTA_HH_W4_LE_WRITE, BTA_HH_W4_CONN_ST } + /* READ_DESCR_CMPL_EVT */ , {BTA_HH_W4_LE_READ_DESCR, BTA_HH_W4_CONN_ST } + /* WRITE_DESCR_CMPL_EVT */ , {BTA_HH_WRITE_DESCR, BTA_HH_W4_CONN_ST } + /* SCPP_UPDATE_EVT */ , {BTA_HH_IGNORE, BTA_HH_W4_CONN_ST } + /* BTA_HH_GATT_ENC_CMPL_EVT */ , {BTA_HH_IGNORE, BTA_HH_W4_CONN_ST } #endif }; -const UINT8 bta_hh_st_connected[][BTA_HH_NUM_COLS] = -{ -/* Event Action Next state */ -/* BTA_HH_API_OPEN_EVT */ {BTA_HH_IGNORE, BTA_HH_CONN_ST }, -/* BTA_HH_API_CLOSE_EVT */ {BTA_HH_API_DISC_ACT, BTA_HH_CONN_ST }, -/* BTA_HH_INT_OPEN_EVT */ {BTA_HH_OPEN_ACT, BTA_HH_CONN_ST }, -/* BTA_HH_INT_CLOSE_EVT */ {BTA_HH_CLOSE_ACT, BTA_HH_IDLE_ST }, -/* BTA_HH_INT_DATA_EVT */ {BTA_HH_DATA_ACT, BTA_HH_CONN_ST }, -/* BTA_HH_INT_CTRL_DATA */ {BTA_HH_CTRL_DAT_ACT, BTA_HH_CONN_ST }, -/* BTA_HH_INT_HANDSK_EVT */ {BTA_HH_HANDSK_ACT, BTA_HH_CONN_ST }, -/* BTA_HH_SDP_CMPL_EVT */ {BTA_HH_IGNORE, BTA_HH_CONN_ST }, -/* BTA_HH_API_WRITE_DEV_EVT */ {BTA_HH_WRITE_DEV_ACT, BTA_HH_CONN_ST }, -/* BTA_HH_API_GET_DSCP_EVT */ {BTA_HH_GET_DSCP_ACT, BTA_HH_CONN_ST }, -/* BTA_HH_API_MAINT_DEV_EVT */ {BTA_HH_MAINT_DEV_ACT, BTA_HH_CONN_ST }, -/* BTA_HH_OPEN_CMPL_EVT */ {BTA_HH_IGNORE, BTA_HH_CONN_ST } +const UINT8 bta_hh_st_connected[][BTA_HH_NUM_COLS] = { + /* Event Action Next state */ + /* BTA_HH_API_OPEN_EVT */ {BTA_HH_IGNORE, BTA_HH_CONN_ST }, + /* BTA_HH_API_CLOSE_EVT */ {BTA_HH_API_DISC_ACT, BTA_HH_CONN_ST }, + /* BTA_HH_INT_OPEN_EVT */ {BTA_HH_OPEN_ACT, BTA_HH_CONN_ST }, + /* BTA_HH_INT_CLOSE_EVT */ {BTA_HH_CLOSE_ACT, BTA_HH_IDLE_ST }, + /* BTA_HH_INT_DATA_EVT */ {BTA_HH_DATA_ACT, BTA_HH_CONN_ST }, + /* BTA_HH_INT_CTRL_DATA */ {BTA_HH_CTRL_DAT_ACT, BTA_HH_CONN_ST }, + /* BTA_HH_INT_HANDSK_EVT */ {BTA_HH_HANDSK_ACT, BTA_HH_CONN_ST }, + /* BTA_HH_SDP_CMPL_EVT */ {BTA_HH_IGNORE, BTA_HH_CONN_ST }, + /* BTA_HH_API_WRITE_DEV_EVT */ {BTA_HH_WRITE_DEV_ACT, BTA_HH_CONN_ST }, + /* BTA_HH_API_GET_DSCP_EVT */ {BTA_HH_GET_DSCP_ACT, BTA_HH_CONN_ST }, + /* BTA_HH_API_MAINT_DEV_EVT */ {BTA_HH_MAINT_DEV_ACT, BTA_HH_CONN_ST }, + /* BTA_HH_OPEN_CMPL_EVT */ {BTA_HH_IGNORE, BTA_HH_CONN_ST } #if (defined BTA_HH_LE_INCLUDED && BTA_HH_LE_INCLUDED == TRUE) -/* BTA_HH_GATT_CLOSE_EVT */ ,{BTA_HH_GATT_CLOSE, BTA_HH_IDLE_ST } -/* BTA_HH_GATT_OPEN_EVT */ ,{BTA_HH_IGNORE, BTA_HH_CONN_ST } -/* BTA_HH_START_ENC_EVT */ ,{BTA_HH_IGNORE, BTA_HH_CONN_ST } -/* BTA_HH_ENC_CMPL_EVT */ ,{BTA_HH_IGNORE, BTA_HH_CONN_ST } -/* READ_CHAR_CMPL_EVT */ ,{BTA_HH_LE_READ_CHAR, BTA_HH_CONN_ST } -/* WRITE_CHAR_CMPL_EVT*/ ,{BTA_HH_LE_WRITE, BTA_HH_CONN_ST } -/* READ_DESCR_CMPL_EVT */ ,{BTA_HH_LE_READ_DESCR, BTA_HH_CONN_ST } /* do not currently read any descr when connection up */ -/* WRITE_DESCR_CMPL_EVT */ ,{BTA_HH_WRITE_DESCR, BTA_HH_CONN_ST } /* do not currently write any descr when connection up */ -/* SCPP_UPDATE_EVT */ ,{BTA_HH_LE_UPDATE_SCPP, BTA_HH_CONN_ST } -/* BTA_HH_GATT_ENC_CMPL_EVT */ ,{BTA_HH_IGNORE, BTA_HH_CONN_ST } + /* BTA_HH_GATT_CLOSE_EVT */ , {BTA_HH_GATT_CLOSE, BTA_HH_IDLE_ST } + /* BTA_HH_GATT_OPEN_EVT */ , {BTA_HH_IGNORE, BTA_HH_CONN_ST } + /* BTA_HH_START_ENC_EVT */ , {BTA_HH_IGNORE, BTA_HH_CONN_ST } + /* BTA_HH_ENC_CMPL_EVT */ , {BTA_HH_IGNORE, BTA_HH_CONN_ST } + /* READ_CHAR_CMPL_EVT */ , {BTA_HH_LE_READ_CHAR, BTA_HH_CONN_ST } + /* WRITE_CHAR_CMPL_EVT*/ , {BTA_HH_LE_WRITE, BTA_HH_CONN_ST } + /* READ_DESCR_CMPL_EVT */ , {BTA_HH_LE_READ_DESCR, BTA_HH_CONN_ST } /* do not currently read any descr when connection up */ + /* WRITE_DESCR_CMPL_EVT */ , {BTA_HH_WRITE_DESCR, BTA_HH_CONN_ST } /* do not currently write any descr when connection up */ + /* SCPP_UPDATE_EVT */ , {BTA_HH_LE_UPDATE_SCPP, BTA_HH_CONN_ST } + /* BTA_HH_GATT_ENC_CMPL_EVT */ , {BTA_HH_IGNORE, BTA_HH_CONN_ST } #endif }; #if (defined BTA_HH_LE_INCLUDED && BTA_HH_LE_INCLUDED == TRUE) -const UINT8 bta_hh_st_w4_sec[][BTA_HH_NUM_COLS] = -{ -/* Event Action Next state */ -/* BTA_HH_API_OPEN_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC }, -/* BTA_HH_API_CLOSE_EVT */ {BTA_HH_API_DISC_ACT, BTA_HH_W4_SEC }, -/* BTA_HH_INT_OPEN_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC }, -/* BTA_HH_INT_CLOSE_EVT */ {BTA_HH_OPEN_FAILURE, BTA_HH_IDLE_ST }, -/* BTA_HH_INT_DATA_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC }, -/* BTA_HH_INT_CTRL_DATA */ {BTA_HH_IGNORE, BTA_HH_W4_SEC }, -/* BTA_HH_INT_HANDSK_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC }, -/* BTA_HH_SDP_CMPL_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC }, -/* BTA_HH_API_WRITE_DEV_EVT */ {BTA_HH_IGNORE , BTA_HH_W4_SEC }, -/* BTA_HH_API_GET_DSCP_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC }, -/* BTA_HH_API_MAINT_DEV_EVT */ {BTA_HH_MAINT_DEV_ACT, BTA_HH_W4_SEC }, -/* BTA_HH_OPEN_CMPL_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC }, -/* BTA_HH_GATT_CLOSE_EVT */ {BTA_HH_LE_OPEN_FAIL, BTA_HH_IDLE_ST }, -/* BTA_HH_GATT_OPEN_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC }, -/* BTA_HH_START_ENC_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC }, -/* BTA_HH_ENC_CMPL_EVT */ {BTA_HH_SEC_CMPL, BTA_HH_W4_CONN_ST }, -/* READ_CHAR_CMPL_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC }, -/* BTA_HH_GATT_WRITE_CMPL_EVT*/ {BTA_HH_IGNORE, BTA_HH_W4_SEC }, -/* READ_DESCR_CMPL_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC }, -/* WRITE_DESCR_CMPL_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC } -/* SCPP_UPDATE_EVT */ ,{BTA_HH_IGNORE, BTA_HH_W4_SEC } -/* BTA_HH_GATT_ENC_CMPL_EVT */ ,{BTA_HH_GATT_ENC_CMPL, BTA_HH_W4_SEC } +const UINT8 bta_hh_st_w4_sec[][BTA_HH_NUM_COLS] = { + /* Event Action Next state */ + /* BTA_HH_API_OPEN_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC }, + /* BTA_HH_API_CLOSE_EVT */ {BTA_HH_API_DISC_ACT, BTA_HH_W4_SEC }, + /* BTA_HH_INT_OPEN_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC }, + /* BTA_HH_INT_CLOSE_EVT */ {BTA_HH_OPEN_FAILURE, BTA_HH_IDLE_ST }, + /* BTA_HH_INT_DATA_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC }, + /* BTA_HH_INT_CTRL_DATA */ {BTA_HH_IGNORE, BTA_HH_W4_SEC }, + /* BTA_HH_INT_HANDSK_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC }, + /* BTA_HH_SDP_CMPL_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC }, + /* BTA_HH_API_WRITE_DEV_EVT */ {BTA_HH_IGNORE , BTA_HH_W4_SEC }, + /* BTA_HH_API_GET_DSCP_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC }, + /* BTA_HH_API_MAINT_DEV_EVT */ {BTA_HH_MAINT_DEV_ACT, BTA_HH_W4_SEC }, + /* BTA_HH_OPEN_CMPL_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC }, + /* BTA_HH_GATT_CLOSE_EVT */ {BTA_HH_LE_OPEN_FAIL, BTA_HH_IDLE_ST }, + /* BTA_HH_GATT_OPEN_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC }, + /* BTA_HH_START_ENC_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC }, + /* BTA_HH_ENC_CMPL_EVT */ {BTA_HH_SEC_CMPL, BTA_HH_W4_CONN_ST }, + /* READ_CHAR_CMPL_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC }, + /* BTA_HH_GATT_WRITE_CMPL_EVT*/ {BTA_HH_IGNORE, BTA_HH_W4_SEC }, + /* READ_DESCR_CMPL_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC }, + /* WRITE_DESCR_CMPL_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC } + /* SCPP_UPDATE_EVT */ , {BTA_HH_IGNORE, BTA_HH_W4_SEC } + /* BTA_HH_GATT_ENC_CMPL_EVT */ , {BTA_HH_GATT_ENC_CMPL, BTA_HH_W4_SEC } }; #endif @@ -238,13 +232,12 @@ const UINT8 bta_hh_st_w4_sec[][BTA_HH_NUM_COLS] = typedef const UINT8 (*tBTA_HH_ST_TBL)[BTA_HH_NUM_COLS]; /* state table */ -const tBTA_HH_ST_TBL bta_hh_st_tbl[] = -{ +const tBTA_HH_ST_TBL bta_hh_st_tbl[] = { bta_hh_st_idle, bta_hh_st_w4_conn, bta_hh_st_connected #if (defined BTA_HH_LE_INCLUDED && BTA_HH_LE_INCLUDED == TRUE) - ,bta_hh_st_w4_sec + , bta_hh_st_w4_sec #endif }; @@ -272,7 +265,7 @@ static char *bta_hh_state_code(tBTA_HH_STATE state_code); ** Returns void ** *******************************************************************************/ -void bta_hh_sm_execute(tBTA_HH_DEV_CB *p_cb, UINT16 event, tBTA_HH_DATA * p_data) +void bta_hh_sm_execute(tBTA_HH_DEV_CB *p_cb, UINT16 event, tBTA_HH_DATA *p_data) { tBTA_HH_ST_TBL state_table; UINT8 action; @@ -286,13 +279,10 @@ void bta_hh_sm_execute(tBTA_HH_DEV_CB *p_cb, UINT16 event, tBTA_HH_DATA * p_data memset(&cback_data, 0, sizeof(tBTA_HH)); /* handle exception, no valid control block was found */ - if (!p_cb) - { + if (!p_cb) { /* BTA HH enabled already? otherwise ignore the event although it's bad*/ - if (bta_hh_cb.p_cback != NULL) - { - switch (event) - { + if (bta_hh_cb.p_cback != NULL) { + switch (event) { /* no control block available for new connection */ case BTA_HH_API_OPEN_EVT: cback_event = BTA_HH_OPEN_EVT; @@ -305,47 +295,38 @@ void bta_hh_sm_execute(tBTA_HH_DEV_CB *p_cb, UINT16 event, tBTA_HH_DATA * p_data case BTA_HH_API_MAINT_DEV_EVT: cback_event = p_data->api_maintdev.sub_event; - if (p_data->api_maintdev.sub_event == BTA_HH_ADD_DEV_EVT) - { + if (p_data->api_maintdev.sub_event == BTA_HH_ADD_DEV_EVT) { bdcpy(cback_data.dev_info.bda, p_data->api_maintdev.bda); cback_data.dev_info.status = BTA_HH_ERR_DB_FULL; cback_data.dev_info.handle = BTA_HH_INVALID_HANDLE; - } - else - { + } else { cback_data.dev_info.status = BTA_HH_ERR_HDL; cback_data.dev_info.handle = (UINT8)p_data->api_maintdev.hdr.layer_specific; } break; case BTA_HH_API_WRITE_DEV_EVT: cback_event = (p_data->api_sndcmd.t_type - BTA_HH_FST_BTE_TRANS_EVT) + - BTA_HH_FST_TRANS_CB_EVT; - if (p_data->api_sndcmd.p_data != NULL) - { + BTA_HH_FST_TRANS_CB_EVT; + if (p_data->api_sndcmd.p_data != NULL) { GKI_freebuf(p_data->api_sndcmd.p_data); } if (p_data->api_sndcmd.t_type == HID_TRANS_SET_PROTOCOL || - p_data->api_sndcmd.t_type == HID_TRANS_SET_REPORT || - p_data->api_sndcmd.t_type == HID_TRANS_SET_IDLE) - { + p_data->api_sndcmd.t_type == HID_TRANS_SET_REPORT || + p_data->api_sndcmd.t_type == HID_TRANS_SET_IDLE) { cback_data.dev_status.status = BTA_HH_ERR_HDL; cback_data.dev_status.handle = (UINT8)p_data->api_sndcmd.hdr.layer_specific; - } - else if (p_data->api_sndcmd.t_type != HID_TRANS_DATA && - p_data->api_sndcmd.t_type != HID_TRANS_CONTROL) - { + } else if (p_data->api_sndcmd.t_type != HID_TRANS_DATA && + p_data->api_sndcmd.t_type != HID_TRANS_CONTROL) { cback_data.hs_data.handle = (UINT8)p_data->api_sndcmd.hdr.layer_specific; cback_data.hs_data.status = BTA_HH_ERR_HDL; /* hs_data.rsp_data will be all zero, which is not valid value */ - } - else if (p_data->api_sndcmd.t_type == HID_TRANS_CONTROL && - p_data->api_sndcmd.param == BTA_HH_CTRL_VIRTUAL_CABLE_UNPLUG) - { + } else if (p_data->api_sndcmd.t_type == HID_TRANS_CONTROL && + p_data->api_sndcmd.param == BTA_HH_CTRL_VIRTUAL_CABLE_UNPLUG) { cback_data.status = BTA_HH_ERR_HDL; cback_event = BTA_HH_VC_UNPLUG_EVT; - } - else + } else { cback_event = 0; + } break; case BTA_HH_API_CLOSE_EVT: @@ -359,31 +340,29 @@ void bta_hh_sm_execute(tBTA_HH_DEV_CB *p_cb, UINT16 event, tBTA_HH_DATA * p_data /* invalid handle, call bad API event */ APPL_TRACE_ERROR("wrong device handle: [%d]", p_data->hdr.layer_specific); /* Free the callback buffer now */ - if (p_data != NULL && p_data->hid_cback.p_data != NULL) - { + if (p_data != NULL && p_data->hid_cback.p_data != NULL) { GKI_freebuf(p_data->hid_cback.p_data); p_data->hid_cback.p_data = NULL; } break; } - if (cback_event) - (* bta_hh_cb.p_cback)(cback_event, &cback_data); + if (cback_event) { + (* bta_hh_cb.p_cback)(cback_event, &cback_data); + } } } /* corresponding CB is found, go to state machine */ - else - { + else { #if BTA_HH_DEBUG == TRUE in_state = p_cb->state; APPL_TRACE_EVENT("bta_hh_sm_execute: State 0x%02x [%s], Event [%s]", - in_state, bta_hh_state_code(in_state), - bta_hh_evt_code(debug_event)); + in_state, bta_hh_state_code(in_state), + bta_hh_evt_code(debug_event)); #endif - if ((p_cb->state == BTA_HH_NULL_ST) || (p_cb->state >= BTA_HH_INVALID_ST)) - { + if ((p_cb->state == BTA_HH_NULL_ST) || (p_cb->state >= BTA_HH_INVALID_ST)) { APPL_TRACE_ERROR("bta_hh_sm_execute: Invalid state State = 0x%x, Event = %d", - p_cb->state,event); + p_cb->state, event); return; } state_table = bta_hh_st_tbl[p_cb->state - 1]; @@ -392,18 +371,16 @@ void bta_hh_sm_execute(tBTA_HH_DEV_CB *p_cb, UINT16 event, tBTA_HH_DATA * p_data p_cb->state = state_table[event][BTA_HH_NEXT_STATE] ; - if ((action = state_table[event][BTA_HH_ACTION]) != BTA_HH_IGNORE) - { + if ((action = state_table[event][BTA_HH_ACTION]) != BTA_HH_IGNORE) { (*bta_hh_action[action])(p_cb, p_data); } #if BTA_HH_DEBUG == TRUE - if (in_state != p_cb->state) - { + if (in_state != p_cb->state) { APPL_TRACE_DEBUG("HH State Change: [%s] -> [%s] after Event [%s]", - bta_hh_state_code(in_state), - bta_hh_state_code(p_cb->state), - bta_hh_evt_code(debug_event)); + bta_hh_state_code(in_state), + bta_hh_state_code(p_cb->state), + bta_hh_evt_code(debug_event)); } #endif } @@ -425,65 +402,57 @@ BOOLEAN bta_hh_hdl_event(BT_HDR *p_msg) UINT8 index = BTA_HH_IDX_INVALID; tBTA_HH_DEV_CB *p_cb = NULL; - switch (p_msg->event) - { - case BTA_HH_API_ENABLE_EVT: - bta_hh_api_enable((tBTA_HH_DATA *) p_msg); - break; + switch (p_msg->event) { + case BTA_HH_API_ENABLE_EVT: + bta_hh_api_enable((tBTA_HH_DATA *) p_msg); + break; - case BTA_HH_API_DISABLE_EVT: - bta_hh_api_disable(); - break; + case BTA_HH_API_DISABLE_EVT: + bta_hh_api_disable(); + break; - case BTA_HH_DISC_CMPL_EVT: /* disable complete */ - bta_hh_disc_cmpl(); - break; + case BTA_HH_DISC_CMPL_EVT: /* disable complete */ + bta_hh_disc_cmpl(); + break; - default: - /* all events processed in state machine need to find corresponding - CB before proceed */ - if (p_msg->event == BTA_HH_API_OPEN_EVT) - { - index = bta_hh_find_cb(((tBTA_HH_API_CONN *)p_msg)->bd_addr); - } - else if (p_msg->event == BTA_HH_API_MAINT_DEV_EVT) - { - /* if add device */ - if (((tBTA_HH_MAINT_DEV *)p_msg)->sub_event == BTA_HH_ADD_DEV_EVT) - { - index = bta_hh_find_cb(((tBTA_HH_MAINT_DEV *)p_msg)->bda); - } - else /* else remove device by handle */ - { - index = bta_hh_dev_handle_to_cb_idx((UINT8)p_msg->layer_specific); -// btla-specific ++ - /* If BT disable is done while the HID device is connected and Link_Key uses unauthenticated combination - * then we can get into a situation where remove_bonding is called with the index set to 0 (without getting - * cleaned up). Only when VIRTUAL_UNPLUG is called do we cleanup the index and make it MAX_KNOWN. - * So if REMOVE_DEVICE is called and in_use is FALSE then we should treat this as a NULL p_cb. Hence we - * force the index to be IDX_INVALID - */ - if ((index != BTA_HH_IDX_INVALID) && - (bta_hh_cb.kdev[index].in_use == FALSE)) { - index = BTA_HH_IDX_INVALID; - } -// btla-specific -- - } - } - else if (p_msg->event == BTA_HH_INT_OPEN_EVT) - { - index = bta_hh_find_cb(((tBTA_HH_CBACK_DATA *)p_msg)->addr); - } - else + default: + /* all events processed in state machine need to find corresponding + CB before proceed */ + if (p_msg->event == BTA_HH_API_OPEN_EVT) { + index = bta_hh_find_cb(((tBTA_HH_API_CONN *)p_msg)->bd_addr); + } else if (p_msg->event == BTA_HH_API_MAINT_DEV_EVT) { + /* if add device */ + if (((tBTA_HH_MAINT_DEV *)p_msg)->sub_event == BTA_HH_ADD_DEV_EVT) { + index = bta_hh_find_cb(((tBTA_HH_MAINT_DEV *)p_msg)->bda); + } else { /* else remove device by handle */ index = bta_hh_dev_handle_to_cb_idx((UINT8)p_msg->layer_specific); +// btla-specific ++ + /* If BT disable is done while the HID device is connected and Link_Key uses unauthenticated combination + * then we can get into a situation where remove_bonding is called with the index set to 0 (without getting + * cleaned up). Only when VIRTUAL_UNPLUG is called do we cleanup the index and make it MAX_KNOWN. + * So if REMOVE_DEVICE is called and in_use is FALSE then we should treat this as a NULL p_cb. Hence we + * force the index to be IDX_INVALID + */ + if ((index != BTA_HH_IDX_INVALID) && + (bta_hh_cb.kdev[index].in_use == FALSE)) { + index = BTA_HH_IDX_INVALID; + } +// btla-specific -- + } + } else if (p_msg->event == BTA_HH_INT_OPEN_EVT) { + index = bta_hh_find_cb(((tBTA_HH_CBACK_DATA *)p_msg)->addr); + } else { + index = bta_hh_dev_handle_to_cb_idx((UINT8)p_msg->layer_specific); + } - if (index != BTA_HH_IDX_INVALID) - p_cb = &bta_hh_cb.kdev[index]; + if (index != BTA_HH_IDX_INVALID) { + p_cb = &bta_hh_cb.kdev[index]; + } #if BTA_HH_DEBUG - APPL_TRACE_DEBUG("bta_hh_hdl_event:: handle = %d dev_cb[%d] ", p_msg->layer_specific, index); + APPL_TRACE_DEBUG("bta_hh_hdl_event:: handle = %d dev_cb[%d] ", p_msg->layer_specific, index); #endif - bta_hh_sm_execute(p_cb, p_msg->event, (tBTA_HH_DATA *) p_msg); + bta_hh_sm_execute(p_cb, p_msg->event, (tBTA_HH_DATA *) p_msg); } return (TRUE); } @@ -503,8 +472,7 @@ BOOLEAN bta_hh_hdl_event(BT_HDR *p_msg) *******************************************************************************/ static char *bta_hh_evt_code(tBTA_HH_INT_EVT evt_code) { - switch(evt_code) - { + switch (evt_code) { case BTA_HH_API_DISABLE_EVT: return "BTA_HH_API_DISABLE_EVT"; case BTA_HH_API_ENABLE_EVT: @@ -569,8 +537,7 @@ static char *bta_hh_evt_code(tBTA_HH_INT_EVT evt_code) *******************************************************************************/ static char *bta_hh_state_code(tBTA_HH_STATE state_code) { - switch (state_code) - { + switch (state_code) { case BTA_HH_NULL_ST: return"BTA_HH_NULL_ST"; case BTA_HH_IDLE_ST: diff --git a/components/bt/bluedroid/bta/hh/bta_hh_utils.c b/components/bt/bluedroid/bta/hh/bta_hh_utils.c index dc20a0d4ab..d90f516e59 100644 --- a/components/bt/bluedroid/bta/hh/bta_hh_utils.c +++ b/components/bt/bluedroid/bta/hh/bta_hh_utils.c @@ -41,8 +41,7 @@ #define BTA_HH_MAX_RPT_CHARS 8 -static const UINT8 bta_hh_mod_key_mask[BTA_HH_MOD_MAX_KEY] = -{ +static const UINT8 bta_hh_mod_key_mask[BTA_HH_MOD_MAX_KEY] = { BTA_HH_KB_CTRL_MASK, BTA_HH_KB_SHIFT_MASK, BTA_HH_KB_ALT_MASK, @@ -65,32 +64,28 @@ UINT8 bta_hh_find_cb(BD_ADDR bda) UINT8 xx; /* See how many active devices there are. */ - for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx++) - { + for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx++) { /* check if any active/known devices is a match */ if ((!bdcmp (bda, bta_hh_cb.kdev[xx].addr) && - bdcmp(bda, bd_addr_null) != 0) ) - { + bdcmp(bda, bd_addr_null) != 0) ) { #if BTA_HH_DEBUG APPL_TRACE_DEBUG("found kdev_cb[%d] hid_handle = %d ", xx, - bta_hh_cb.kdev[xx].hid_handle) + bta_hh_cb.kdev[xx].hid_handle) #endif return xx; } #if BTA_HH_DEBUG else APPL_TRACE_DEBUG("in_use ? [%d] kdev[%d].hid_handle = %d state = [%d]", - bta_hh_cb.kdev[xx].in_use, xx, - bta_hh_cb.kdev[xx].hid_handle, - bta_hh_cb.kdev[xx].state); + bta_hh_cb.kdev[xx].in_use, xx, + bta_hh_cb.kdev[xx].hid_handle, + bta_hh_cb.kdev[xx].state); #endif } /* if no active device match, find a spot for it */ - for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx++) - { - if (!bta_hh_cb.kdev[xx].in_use) - { + for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx++) { + if (!bta_hh_cb.kdev[xx].in_use) { bdcpy(bta_hh_cb.kdev[xx].addr, bda); break; } @@ -98,11 +93,12 @@ UINT8 bta_hh_find_cb(BD_ADDR bda) /* If device list full, report BTA_HH_IDX_INVALID */ #if BTA_HH_DEBUG APPL_TRACE_DEBUG("bta_hh_find_cb:: index = %d while max = %d", - xx, BTA_HH_MAX_DEVICE); + xx, BTA_HH_MAX_DEVICE); #endif - if (xx == BTA_HH_MAX_DEVICE) + if (xx == BTA_HH_MAX_DEVICE) { xx = BTA_HH_IDX_INVALID; + } return xx; } @@ -121,12 +117,11 @@ void bta_hh_clean_up_kdev(tBTA_HH_DEV_CB *p_cb) { UINT8 index; - if (p_cb->hid_handle != BTA_HH_INVALID_HANDLE ) - { + if (p_cb->hid_handle != BTA_HH_INVALID_HANDLE ) { #if BTA_HH_LE_INCLUDED == TRUE - if (p_cb->is_le_device) + if (p_cb->is_le_device) { bta_hh_cb.le_cb_index[BTA_HH_GET_LE_CB_IDX(p_cb->hid_handle)] = BTA_HH_IDX_INVALID; - else + } else #endif bta_hh_cb.cb_index[p_cb->hid_handle] = BTA_HH_IDX_INVALID; } @@ -158,7 +153,7 @@ void bta_hh_update_di_info(tBTA_HH_DEV_CB *p_cb, UINT16 vendor_id, UINT16 produc { #if BTA_HH_DEBUG APPL_TRACE_DEBUG("vendor_id = 0x%2x product_id = 0x%2x version = 0x%2x", - vendor_id, product_id, version); + vendor_id, product_id, version); #endif p_cb->dscp_info.vendor_id = vendor_id; p_cb->dscp_info.product_id = product_id; @@ -201,17 +196,15 @@ void bta_hh_add_device_to_list(tBTA_HH_DEV_CB *p_cb, UINT8 handle, p_cb->dscp_info.ssr_min_tout = ssr_min_tout; /* store report descriptor info */ - if ( p_dscp_info) - { + if ( p_dscp_info) { utl_freebuf((void **)&p_cb->dscp_info.descriptor.dsc_list); if (p_dscp_info->dl_len && - (p_cb->dscp_info.descriptor.dsc_list = - (UINT8 *)GKI_getbuf(p_dscp_info->dl_len)) != NULL) - { + (p_cb->dscp_info.descriptor.dsc_list = + (UINT8 *)GKI_getbuf(p_dscp_info->dl_len)) != NULL) { p_cb->dscp_info.descriptor.dl_len = p_dscp_info->dl_len; memcpy(p_cb->dscp_info.descriptor.dsc_list, p_dscp_info->dsc_list, - p_dscp_info->dl_len); + p_dscp_info->dl_len); } } return; @@ -226,15 +219,13 @@ void bta_hh_add_device_to_list(tBTA_HH_DEV_CB *p_cb, UINT8 handle, ** Returns ** *******************************************************************************/ -BOOLEAN bta_hh_tod_spt(tBTA_HH_DEV_CB *p_cb,UINT8 sub_class) +BOOLEAN bta_hh_tod_spt(tBTA_HH_DEV_CB *p_cb, UINT8 sub_class) { UINT8 xx; UINT8 cod = (sub_class >> 2); /* lower two bits are reserved */ - for (xx = 0 ; xx < p_bta_hh_cfg->max_devt_spt; xx ++) - { - if (cod == (UINT8) p_bta_hh_cfg->p_devt_list[xx].tod) - { + for (xx = 0 ; xx < p_bta_hh_cfg->max_devt_spt; xx ++) { + if (cod == (UINT8) p_bta_hh_cfg->p_devt_list[xx].tod) { p_cb->app_id = p_bta_hh_cfg->p_devt_list[xx].app_id; #if BTA_HH_DEBUG APPL_TRACE_EVENT("bta_hh_tod_spt sub_class:0x%x supported", sub_class); @@ -243,7 +234,7 @@ BOOLEAN bta_hh_tod_spt(tBTA_HH_DEV_CB *p_cb,UINT8 sub_class) } } #if BTA_HH_DEBUG - APPL_TRACE_EVENT("bta_hh_tod_spt sub_class:0x%x NOT supported", sub_class); + APPL_TRACE_EVENT("bta_hh_tod_spt sub_class:0x%x NOT supported", sub_class); #endif return FALSE; } @@ -270,32 +261,30 @@ void bta_hh_parse_keybd_rpt(tBTA_HH_BOOT_RPT *p_kb_data, UINT8 *p_report, #if BTA_HH_DEBUG APPL_TRACE_DEBUG("bta_hh_parse_keybd_rpt: (report=%p, report_len=%d) called", - p_report, report_len); + p_report, report_len); #endif - if (report_len < 2) + if (report_len < 2) { return; + } ctl_shift = *p_report++; report_len--; - if (report_len > BTA_HH_MAX_RPT_CHARS) + if (report_len > BTA_HH_MAX_RPT_CHARS) { report_len = BTA_HH_MAX_RPT_CHARS; + } memset (this_report, 0, BTA_HH_MAX_RPT_CHARS); memset (p_data, 0, sizeof(tBTA_HH_KEYBD_RPT)); memcpy (this_report, p_report, report_len); /* Take care of shift, control, GUI and alt, modifier keys */ - for (xx = 0; xx < BTA_HH_MOD_MAX_KEY; xx ++ ) - { - if (ctl_shift & bta_hh_mod_key_mask[xx]) - { + for (xx = 0; xx < BTA_HH_MOD_MAX_KEY; xx ++ ) { + if (ctl_shift & bta_hh_mod_key_mask[xx]) { APPL_TRACE_DEBUG("Mod Key[%02x] pressed", bta_hh_mod_key_mask[xx] ); p_kb->mod_key[xx] = TRUE; - } - else if (p_kb->mod_key[xx]) - { + } else if (p_kb->mod_key[xx]) { p_kb->mod_key[xx] = FALSE; } /* control key flag is set */ @@ -305,12 +294,9 @@ void bta_hh_parse_keybd_rpt(tBTA_HH_BOOT_RPT *p_kb_data, UINT8 *p_report, /***************************************************************************/ /* First step is to remove all characters we saw in the last report */ /***************************************************************************/ - for (xx = 0; xx < report_len; xx++) - { - for (yy = 0; yy < BTA_HH_MAX_RPT_CHARS; yy++) - { - if (this_report[xx] == p_kb->last_report[yy]) - { + for (xx = 0; xx < report_len; xx++) { + for (yy = 0; yy < BTA_HH_MAX_RPT_CHARS; yy++) { + if (this_report[xx] == p_kb->last_report[yy]) { this_report[xx] = 0; } } @@ -318,20 +304,21 @@ void bta_hh_parse_keybd_rpt(tBTA_HH_BOOT_RPT *p_kb_data, UINT8 *p_report, /***************************************************************************/ /* Now, process all the characters in the report, up to 6 keycodes */ /***************************************************************************/ - for (xx = 0; xx < report_len; xx++) - { + for (xx = 0; xx < report_len; xx++) { #if BTA_HH_DEBUG APPL_TRACE_DEBUG("this_char = %02x", this_report[xx]); #endif - if ((this_char = this_report[xx]) == 0) + if ((this_char = this_report[xx]) == 0) { continue; + } /* take the key code as the report data */ - if (this_report[xx] == BTA_HH_KB_CAPS_LOCK) + if (this_report[xx] == BTA_HH_KB_CAPS_LOCK) { p_kb->caps_lock = p_kb->caps_lock ? FALSE : TRUE; - else if (this_report[xx] == BTA_HH_KB_NUM_LOCK) + } else if (this_report[xx] == BTA_HH_KB_NUM_LOCK) { p_kb->num_lock = p_kb->num_lock ? FALSE : TRUE; - else + } else { p_data->this_char[key_idx ++] = this_char; + } #if BTA_HH_DEBUG APPL_TRACE_DEBUG("found keycode %02x ", this_report[xx]); @@ -366,15 +353,16 @@ void bta_hh_parse_mice_rpt(tBTA_HH_BOOT_RPT *p_mice_data, UINT8 *p_report, report_len=%d) called", p_report, report_len); #endif - if (report_len < 3) + if (report_len < 3) { return; + } - if (report_len > BTA_HH_MAX_RPT_CHARS) + if (report_len > BTA_HH_MAX_RPT_CHARS) { report_len = BTA_HH_MAX_RPT_CHARS; + } #if BTA_HH_DEBUG - for (xx = 0; xx < report_len; xx++) - { + for (xx = 0; xx < report_len; xx++) { APPL_TRACE_DEBUG("this_char = %02x", p_report[xx]); } #endif @@ -391,7 +379,7 @@ void bta_hh_parse_mice_rpt(tBTA_HH_BOOT_RPT *p_mice_data, UINT8 *p_report, #if BTA_HH_DEBUG APPL_TRACE_DEBUG("mice button: 0x%2x", p_data->mouse_button); APPL_TRACE_DEBUG("mice move: x = %d y = %d", p_data->delta_x, - p_data->delta_y ); + p_data->delta_y ); #endif return; @@ -413,15 +401,12 @@ tBTA_HH_STATUS bta_hh_read_ssr_param(BD_ADDR bd_addr, UINT16 *p_max_ssr_lat, UIN tBTA_HH_CB *p_cb = &bta_hh_cb; UINT8 i; UINT16 ssr_max_latency; - for (i = 0; i < BTA_HH_MAX_KNOWN; i ++) - { - if (memcmp(p_cb->kdev[i].addr, bd_addr, BD_ADDR_LEN) == 0) - { + for (i = 0; i < BTA_HH_MAX_KNOWN; i ++) { + if (memcmp(p_cb->kdev[i].addr, bd_addr, BD_ADDR_LEN) == 0) { /* if remote device does not have HIDSSRHostMaxLatency attribute in SDP, set SSR max latency default value here. */ - if (p_cb->kdev[i].dscp_info.ssr_max_latency == HID_SSR_PARAM_INVALID) - { + if (p_cb->kdev[i].dscp_info.ssr_max_latency == HID_SSR_PARAM_INVALID) { /* The default is calculated as half of link supervision timeout.*/ BTM_GetLinkSuperTout(p_cb->kdev[i].addr, &ssr_max_latency) ; @@ -429,18 +414,20 @@ tBTA_HH_STATUS bta_hh_read_ssr_param(BD_ADDR bd_addr, UINT16 *p_max_ssr_lat, UIN /* per 1.1 spec, if the newly calculated max latency is greater than BTA_HH_SSR_MAX_LATENCY_DEF which is 500ms, use BTA_HH_SSR_MAX_LATENCY_DEF */ - if (ssr_max_latency > BTA_HH_SSR_MAX_LATENCY_DEF) + if (ssr_max_latency > BTA_HH_SSR_MAX_LATENCY_DEF) { ssr_max_latency = BTA_HH_SSR_MAX_LATENCY_DEF; + } * p_max_ssr_lat = ssr_max_latency; - } - else + } else { * p_max_ssr_lat = p_cb->kdev[i].dscp_info.ssr_max_latency; + } - if (p_cb->kdev[i].dscp_info.ssr_min_tout == HID_SSR_PARAM_INVALID) + if (p_cb->kdev[i].dscp_info.ssr_min_tout == HID_SSR_PARAM_INVALID) { * p_min_ssr_tout = BTA_HH_SSR_MIN_TOUT_DEF; - else + } else { * p_min_ssr_tout = p_cb->kdev[i].dscp_info.ssr_min_tout; + } status = BTA_HH_OK; @@ -465,8 +452,7 @@ void bta_hh_cleanup_disable(tBTA_HH_STATUS status) { UINT8 xx; /* free buffer in CB holding report descriptors */ - for(xx = 0; xx < BTA_HH_MAX_DEVICE; xx ++) - { + for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx ++) { utl_freebuf((void **)&bta_hh_cb.kdev[xx].dscp_info.descriptor.dsc_list); } utl_freebuf((void **)&bta_hh_cb.p_disc_db); @@ -491,19 +477,19 @@ UINT8 bta_hh_dev_handle_to_cb_idx(UINT8 dev_handle) UINT8 index = BTA_HH_IDX_INVALID; #if BTA_HH_LE_INCLUDED == TRUE - if (BTA_HH_IS_LE_DEV_HDL(dev_handle)) - { - if (BTA_HH_IS_LE_DEV_HDL_VALID(dev_handle)) + if (BTA_HH_IS_LE_DEV_HDL(dev_handle)) { + if (BTA_HH_IS_LE_DEV_HDL_VALID(dev_handle)) { index = bta_hh_cb.le_cb_index[BTA_HH_GET_LE_CB_IDX(dev_handle)]; + } #if BTA_HH_DEBUG == TRUE APPL_TRACE_DEBUG("bta_hh_dev_handle_to_cb_idx dev_handle = %d index = %d", dev_handle, index); #endif - } - else + } else #endif /* regular HID device checking */ - if (dev_handle < BTA_HH_MAX_KNOWN ) - index = bta_hh_cb.cb_index[dev_handle]; + if (dev_handle < BTA_HH_MAX_KNOWN ) { + index = bta_hh_cb.cb_index[dev_handle]; + } return index; @@ -524,14 +510,13 @@ void bta_hh_trace_dev_db(void) APPL_TRACE_DEBUG("bta_hh_trace_dev_db:: Device DB list********************"); - for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx++) - { - APPL_TRACE_DEBUG("kdev[%d] in_use[%d] handle[%d] ",xx, - bta_hh_cb.kdev[xx].in_use, bta_hh_cb.kdev[xx].hid_handle); + for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx++) { + APPL_TRACE_DEBUG("kdev[%d] in_use[%d] handle[%d] ", xx, + bta_hh_cb.kdev[xx].in_use, bta_hh_cb.kdev[xx].hid_handle); APPL_TRACE_DEBUG("\t\t\t attr_mask[%04x] state [%d] sub_class[%02x] index = %d", - bta_hh_cb.kdev[xx].attr_mask, bta_hh_cb.kdev[xx].state, - bta_hh_cb.kdev[xx].sub_class, bta_hh_cb.kdev[xx].index); + bta_hh_cb.kdev[xx].attr_mask, bta_hh_cb.kdev[xx].state, + bta_hh_cb.kdev[xx].sub_class, bta_hh_cb.kdev[xx].index); } APPL_TRACE_DEBUG("*********************************************************"); } diff --git a/components/bt/bluedroid/bta/include/bta_api.h b/components/bt/bluedroid/bta/include/bta_api.h old mode 100755 new mode 100644 index b1bd35eed2..f9c6c154f5 --- a/components/bt/bluedroid/bta/include/bta_api.h +++ b/components/bt/bluedroid/bta/include/bta_api.h @@ -157,12 +157,11 @@ typedef UINT8 tBTA_SERVICE_ID; typedef UINT32 tBTA_SERVICE_MASK; /* extended service mask, including mask with one or more GATT UUID */ -typedef struct -{ +typedef struct { tBTA_SERVICE_MASK srvc_mask; UINT8 num_uuid; tBT_UUID *p_uuid; -}tBTA_SERVICE_MASK_EXT; +} tBTA_SERVICE_MASK_EXT; /* Security Setting Mask */ #define BTA_SEC_NONE BTM_SEC_NONE /* No security. */ @@ -253,8 +252,7 @@ typedef UINT8 tBTA_AUTH_RESP; typedef UINT8 tBTA_PREF_ROLES; -enum -{ +enum { BTA_DM_NO_SCATTERNET, /* Device doesn't support scatternet, it might support "role switch during connection" for @@ -270,23 +268,20 @@ enum /* Inquiry filter device class condition */ -typedef struct -{ +typedef struct { DEV_CLASS dev_class; /* device class of interest */ DEV_CLASS dev_class_mask; /* mask to determine the bits of device class of interest */ } tBTA_DM_COD_COND; /* Inquiry Filter Condition */ -typedef union -{ +typedef union { BD_ADDR bd_addr; /* BD address of device to filter. */ tBTA_DM_COD_COND dev_class_cond; /* Device class filter condition */ } tBTA_DM_INQ_COND; /* Inquiry Parameters */ -typedef struct -{ +typedef struct { tBTA_DM_INQ_MODE mode; /* Inquiry mode, limited or general. */ UINT8 duration; /* Inquiry duration in 1.28 sec units. */ UINT8 max_resps; /* Maximum inquiry responses. Set to zero for unlimited responses. */ @@ -298,8 +293,7 @@ typedef struct #endif } tBTA_DM_INQ; -typedef struct -{ +typedef struct { UINT8 bta_dm_eir_min_name_len; /* minimum length of local name when it is shortened */ #if (BTA_EIR_CANNED_UUID_LIST == TRUE) UINT8 bta_dm_eir_uuid16_len; /* length of 16-bit UUIDs */ @@ -347,54 +341,47 @@ typedef struct typedef tBTM_BLE_AD_MASK tBTA_BLE_AD_MASK; /* slave preferred connection interval range */ -typedef struct -{ +typedef struct { UINT16 low; UINT16 hi; -}tBTA_BLE_INT_RANGE; +} tBTA_BLE_INT_RANGE; /* Service tag supported in the device */ -typedef struct -{ +typedef struct { UINT8 num_service; BOOLEAN list_cmpl; UINT16 *p_uuid; -}tBTA_BLE_SERVICE; +} tBTA_BLE_SERVICE; -typedef struct -{ +typedef struct { UINT8 len; UINT8 *p_val; -}tBTA_BLE_MANU; +} tBTA_BLE_MANU; -typedef struct -{ +typedef struct { UINT8 adv_type; UINT8 len; UINT8 *p_val; /* number of len byte */ -}tBTA_BLE_PROP_ELEM; +} tBTA_BLE_PROP_ELEM; /* vendor proprietary adv type */ -typedef struct -{ +typedef struct { UINT8 num_elem; tBTA_BLE_PROP_ELEM *p_elem; -}tBTA_BLE_PROPRIETARY; +} tBTA_BLE_PROPRIETARY; -typedef struct -{ +typedef struct { tBT_UUID service_uuid; UINT8 len; UINT8 *p_val; -}tBTA_BLE_SERVICE_DATA; +} tBTA_BLE_SERVICE_DATA; typedef tBTM_BLE_128SERVICE tBTA_BLE_128SERVICE; typedef tBTM_BLE_32SERVICE tBTA_BLE_32SERVICE; -typedef struct -{ +typedef struct { tBTA_BLE_INT_RANGE int_range; /* slave prefered conn interval range */ tBTA_BLE_MANU *p_manu; /* manufacturer data */ tBTA_BLE_SERVICE *p_services; /* 16 bits services */ @@ -408,7 +395,7 @@ typedef struct UINT16 appearance; /* appearance data */ UINT8 flag; UINT8 tx_power; -}tBTA_BLE_ADV_DATA; +} tBTA_BLE_ADV_DATA; typedef void (tBTA_SET_ADV_DATA_CMPL_CBACK) (tBTA_STATUS status); @@ -437,21 +424,19 @@ typedef UINT8 tBTA_BLE_ADV_EVT; typedef UINT8 tBTA_BLE_ADV_TX_POWER; /* advertising instance parameters */ -typedef struct -{ +typedef struct { UINT16 adv_int_min; /* minimum adv interval */ UINT16 adv_int_max; /* maximum adv interval */ tBTA_BLE_ADV_EVT adv_type; /* adv event type */ tBTA_BLE_ADV_CHNL_MAP channel_map; /* adv channel map */ tBTA_BLE_AFP adv_filter_policy; /* advertising filter policy */ tBTA_BLE_ADV_TX_POWER tx_power; /* adv tx power */ -}tBTA_BLE_ADV_PARAMS; +} tBTA_BLE_ADV_PARAMS; /* These are the fields returned in each device adv packet. It ** is returned in the results callback if registered. */ -typedef struct -{ +typedef struct { UINT8 conn_mode; tBTA_BLE_AD_MASK ad_mask; /* mask of the valid adv data field */ UINT8 flag; @@ -461,30 +446,26 @@ typedef struct tBTA_BLE_SERVICE service; } tBTA_BLE_INQ_DATA; -enum -{ +enum { BTA_BLE_BATCH_SCAN_MODE_PASS = 1, BTA_BLE_BATCH_SCAN_MODE_ACTI = 2, BTA_BLE_BATCH_SCAN_MODE_PASS_ACTI = 3 }; typedef UINT8 tBTA_BLE_BATCH_SCAN_MODE; -enum -{ - BTA_BLE_DISCARD_OLD_ITEMS=0, - BTA_BLE_DISCARD_LOWER_RSSI_ITEMS=1 +enum { + BTA_BLE_DISCARD_OLD_ITEMS = 0, + BTA_BLE_DISCARD_LOWER_RSSI_ITEMS = 1 }; typedef UINT8 tBTA_BLE_DISCARD_RULE; -enum -{ - BTA_BLE_ADV_SEEN_FIRST_TIME=0, - BTA_BLE_ADV_TRACKING_TIMEOUT=1 +enum { + BTA_BLE_ADV_SEEN_FIRST_TIME = 0, + BTA_BLE_ADV_TRACKING_TIMEOUT = 1 }; typedef UINT8 tBTA_BLE_ADV_CHANGE_REASON; -enum -{ +enum { BTA_BLE_BATCH_SCAN_ENB_EVT = 1, BTA_BLE_BATCH_SCAN_CFG_STRG_EVT = 2, BTA_BLE_BATCH_SCAN_DATA_EVT = 3, @@ -523,8 +504,7 @@ typedef void (tBTA_DM_BLE_RSSI_CBACK) (BD_ADDR bd_addr, tBTA_DM_BLE_RSSI_ALERT_T #define BTA_DM_BLE_PF_LOGIC_AND 1 typedef UINT8 tBTA_DM_BLE_PF_LOGIC_TYPE; -enum -{ +enum { BTA_DM_BLE_SCAN_COND_ADD, BTA_DM_BLE_SCAN_COND_DELETE, BTA_DM_BLE_SCAN_COND_CLEAR = 2 @@ -532,8 +512,7 @@ enum typedef UINT8 tBTA_DM_BLE_SCAN_COND_OP; /* ADV payload filtering vendor specific call event */ -enum -{ +enum { BTA_BLE_SCAN_PF_ENABLE_EVT = 7, BTA_BLE_SCAN_PF_COND_EVT }; @@ -550,55 +529,49 @@ enum #define BTA_DM_BLE_PF_TYPE_MAX BTM_BLE_PF_TYPE_MAX typedef UINT8 tBTA_DM_BLE_PF_COND_TYPE; -typedef union -{ - UINT16 uuid16_mask; - UINT32 uuid32_mask; - UINT8 uuid128_mask[LEN_UUID_128]; -}tBTA_DM_BLE_PF_COND_MASK; +typedef union { + UINT16 uuid16_mask; + UINT32 uuid32_mask; + UINT8 uuid128_mask[LEN_UUID_128]; +} tBTA_DM_BLE_PF_COND_MASK; -typedef struct -{ +typedef struct { tBLE_BD_ADDR *p_target_addr; /* target address, if NULL, generic UUID filter */ tBT_UUID uuid; /* UUID condition */ tBTA_DM_BLE_PF_LOGIC_TYPE cond_logic; /* AND/OR */ tBTA_DM_BLE_PF_COND_MASK *p_uuid_mask; /* UUID condition mask, if NULL, match exact as UUID condition */ -}tBTA_DM_BLE_PF_UUID_COND; +} tBTA_DM_BLE_PF_UUID_COND; -typedef struct -{ +typedef struct { UINT8 data_len; /* <= 20 bytes */ UINT8 *p_data; -}tBTA_DM_BLE_PF_LOCAL_NAME_COND; +} tBTA_DM_BLE_PF_LOCAL_NAME_COND; -typedef struct -{ +typedef struct { UINT16 company_id; /* company ID */ UINT8 data_len; /* <= 20 bytes */ UINT8 *p_pattern; UINT16 company_id_mask; /* UUID value mask */ UINT8 *p_pattern_mask; /* Manufacturer data matching mask, same length as data pattern, set to all 0xff, match exact data */ -}tBTA_DM_BLE_PF_MANU_COND; +} tBTA_DM_BLE_PF_MANU_COND; -typedef struct -{ +typedef struct { UINT16 uuid; /* service ID */ UINT8 data_len; /* <= 20 bytes */ UINT8 *p_pattern; UINT8 *p_pattern_mask; /* Service data matching mask, same length as data pattern, set to all 0xff, match exact data */ -}tBTA_DM_BLE_PF_SRVC_PATTERN_COND; +} tBTA_DM_BLE_PF_SRVC_PATTERN_COND; -typedef union -{ +typedef union { tBLE_BD_ADDR target_addr; tBTA_DM_BLE_PF_LOCAL_NAME_COND local_name; /* lcoal name filtering */ tBTA_DM_BLE_PF_MANU_COND manu_data; /* manufactuer data filtering */ tBTA_DM_BLE_PF_UUID_COND srvc_uuid; /* service UUID filtering */ tBTA_DM_BLE_PF_UUID_COND solicitate_uuid; /* solicitated service UUID filtering */ tBTA_DM_BLE_PF_SRVC_PATTERN_COND srvc_data; /* service data pattern */ -}tBTA_DM_BLE_PF_COND_PARAM; +} tBTA_DM_BLE_PF_COND_PARAM; typedef UINT8 tBTA_DM_BLE_PF_FILT_INDEX; typedef UINT8 tBTA_DM_BLE_PF_AVBL_SPACE; @@ -645,14 +618,12 @@ typedef UINT8 tBTA_SIG_STRENGTH_MASK; typedef UINT8 tBTA_DM_SEC_EVT; /* Structure associated with BTA_DM_ENABLE_EVT */ -typedef struct -{ +typedef struct { tBTA_STATUS status; } tBTA_DM_ENABLE; /* Structure associated with BTA_DM_PIN_REQ_EVT */ -typedef struct -{ +typedef struct { /* Note: First 3 data members must be, bd_addr, dev_class, and bd_name in order */ BD_ADDR bd_addr; /* BD address peer device. */ DEV_CLASS dev_class; /* Class of Device */ @@ -710,26 +681,24 @@ typedef tBTM_LE_LENC_KEYS tBTA_LE_LENC_KEYS ; typedef tBTM_LE_LCSRK_KEYS tBTA_LE_LCSRK_KEYS ; typedef tBTM_LE_PID_KEYS tBTA_LE_PID_KEYS ; -typedef union -{ +typedef union { tBTA_LE_PENC_KEYS penc_key; /* received peer encryption key */ tBTA_LE_PCSRK_KEYS psrk_key; /* received peer device SRK */ tBTA_LE_PID_KEYS pid_key; /* peer device ID key */ tBTA_LE_LENC_KEYS lenc_key; /* local encryption reproduction keys LTK = = d1(ER,DIV,0)*/ tBTA_LE_LCSRK_KEYS lcsrk_key; /* local device CSRK = d1(ER,DIV,1)*/ tBTA_LE_PID_KEYS lid_key; /* local device ID key for the particular remote */ -}tBTA_LE_KEY_VALUE; +} tBTA_LE_KEY_VALUE; #define BTA_BLE_LOCAL_KEY_TYPE_ID 1 #define BTA_BLE_LOCAL_KEY_TYPE_ER 2 typedef UINT8 tBTA_DM_BLE_LOCAL_KEY_MASK; -typedef struct -{ +typedef struct { BT_OCTET16 ir; BT_OCTET16 irk; BT_OCTET16 dhk; -}tBTA_BLE_LOCAL_ID_KEYS; +} tBTA_BLE_LOCAL_ID_KEYS; #define BTA_DM_SEC_GRANTED BTA_SUCCESS #define BTA_DM_SEC_PAIR_NOT_SPT BTA_DM_AUTH_SMP_PAIR_NOT_SUPPORT @@ -745,22 +714,19 @@ typedef UINT8 tBTA_DM_BLE_CONN_TYPE; typedef BOOLEAN (tBTA_DM_BLE_SEL_CBACK)(BD_ADDR random_bda, UINT8 *p_remote_name); /* Structure associated with BTA_DM_BLE_SEC_REQ_EVT */ -typedef struct -{ +typedef struct { BD_ADDR bd_addr; /* peer address */ BD_NAME bd_name; /* peer device name */ } tBTA_DM_BLE_SEC_REQ; -typedef struct -{ +typedef struct { BD_ADDR bd_addr; /* peer address */ tBTM_LE_KEY_TYPE key_type; tBTM_LE_KEY_VALUE *p_key_value; -}tBTA_DM_BLE_KEY; +} tBTA_DM_BLE_KEY; /* Structure associated with BTA_DM_AUTH_CMPL_EVT */ -typedef struct -{ +typedef struct { BD_ADDR bd_addr; /* BD address peer device. */ BD_NAME bd_name; /* Name of peer device. */ BOOLEAN key_present; /* Valid link key value in key element */ @@ -774,8 +740,7 @@ typedef struct /* Structure associated with BTA_DM_AUTHORIZE_EVT */ -typedef struct -{ +typedef struct { BD_ADDR bd_addr; /* BD address peer device. */ BD_NAME bd_name; /* Name of peer device. */ tBTA_SERVICE_ID service; /* Service ID to authorize. */ @@ -785,8 +750,7 @@ typedef struct } tBTA_DM_AUTHORIZE; /* Structure associated with BTA_DM_LINK_UP_EVT */ -typedef struct -{ +typedef struct { BD_ADDR bd_addr; /* BD address peer device. */ #if BLE_INCLUDED == TRUE tBTA_TRANSPORT link_type; @@ -794,8 +758,7 @@ typedef struct } tBTA_DM_LINK_UP; /* Structure associated with BTA_DM_LINK_DOWN_EVT */ -typedef struct -{ +typedef struct { BD_ADDR bd_addr; /* BD address peer device. */ UINT8 status; /* connection open/closed */ BOOLEAN is_removed; /* TRUE if device is removed when link is down */ @@ -805,15 +768,13 @@ typedef struct } tBTA_DM_LINK_DOWN; /* Structure associated with BTA_DM_ROLE_CHG_EVT */ -typedef struct -{ +typedef struct { BD_ADDR bd_addr; /* BD address peer device. */ UINT8 new_role; /* the new connection role */ } tBTA_DM_ROLE_CHG; /* Structure associated with BTA_DM_BUSY_LEVEL_EVT */ -typedef struct -{ +typedef struct { UINT8 level; /* when paging or inquiring, level is 10. Otherwise, the number of ACL links */ UINT8 level_flags; /* indicates individual flags */ @@ -864,8 +825,7 @@ typedef tBTM_LE_AUTH_REQ tBTA_LE_AUTH_REQ; /* combination of the abo typedef tBTM_OOB_DATA tBTA_OOB_DATA; /* Structure associated with BTA_DM_SP_CFM_REQ_EVT */ -typedef struct -{ +typedef struct { /* Note: First 3 data members must be, bd_addr, dev_class, and bd_name in order */ BD_ADDR bd_addr; /* peer address */ DEV_CLASS dev_class; /* peer CoD */ @@ -878,8 +838,7 @@ typedef struct tBTA_AUTH_REQ rmt_io_caps; /* IO Capabilities of remote device */ } tBTA_DM_SP_CFM_REQ; -enum -{ +enum { BTA_SP_KEY_STARTED, /* passkey entry started */ BTA_SP_KEY_ENTERED, /* passkey digit entered */ BTA_SP_KEY_ERASED, /* passkey digit erased */ @@ -889,15 +848,13 @@ enum typedef UINT8 tBTA_SP_KEY_TYPE; /* Structure associated with BTA_DM_SP_KEYPRESS_EVT */ -typedef struct -{ +typedef struct { BD_ADDR bd_addr; /* peer address */ tBTA_SP_KEY_TYPE notif_type; -}tBTA_DM_SP_KEY_PRESS; +} tBTA_DM_SP_KEY_PRESS; /* Structure associated with BTA_DM_SP_KEY_NOTIF_EVT */ -typedef struct -{ +typedef struct { /* Note: First 3 data members must be, bd_addr, dev_class, and bd_name in order */ BD_ADDR bd_addr; /* peer address */ DEV_CLASS dev_class; /* peer CoD */ @@ -906,8 +863,7 @@ typedef struct } tBTA_DM_SP_KEY_NOTIF; /* Structure associated with BTA_DM_SP_RMT_OOB_EVT */ -typedef struct -{ +typedef struct { /* Note: First 3 data members must be, bd_addr, dev_class, and bd_name in order */ BD_ADDR bd_addr; /* peer address */ DEV_CLASS dev_class; /* peer CoD */ @@ -915,14 +871,12 @@ typedef struct } tBTA_DM_SP_RMT_OOB; /* Structure associated with BTA_DM_BOND_CANCEL_CMPL_EVT */ -typedef struct -{ +typedef struct { tBTA_STATUS result; /* TRUE of bond cancel succeeded, FALSE if failed. */ } tBTA_DM_BOND_CANCEL_CMPL; /* Union of all security callback structures */ - typedef union -{ +typedef union { tBTA_DM_ENABLE enable; /* BTA enabled */ tBTA_DM_PIN_REQ pin_req; /* PIN request. */ tBTA_DM_AUTH_CMPL auth_cmpl; /* Authentication complete indication. */ @@ -970,16 +924,16 @@ typedef UINT8 tBTA_DM_BLE_PF_ACTION; /* Config callback */ typedef void (tBTA_DM_BLE_PF_CFG_CBACK) (tBTA_DM_BLE_PF_ACTION action, - tBTA_DM_BLE_PF_COND_TYPE cfg_cond, - tBTA_DM_BLE_PF_AVBL_SPACE avbl_space, tBTA_STATUS status, - tBTA_DM_BLE_REF_VALUE ref_value); + tBTA_DM_BLE_PF_COND_TYPE cfg_cond, + tBTA_DM_BLE_PF_AVBL_SPACE avbl_space, tBTA_STATUS status, + tBTA_DM_BLE_REF_VALUE ref_value); /* Param callback */ typedef void (tBTA_DM_BLE_PF_PARAM_CBACK) (UINT8 action_type, tBTA_DM_BLE_PF_AVBL_SPACE avbl_space, - tBTA_DM_BLE_REF_VALUE ref_value, tBTA_STATUS status); + tBTA_DM_BLE_REF_VALUE ref_value, tBTA_STATUS status); /* Status callback */ typedef void (tBTA_DM_BLE_PF_STATUS_CBACK) (UINT8 action, tBTA_STATUS status, - tBTA_DM_BLE_REF_VALUE ref_value); + tBTA_DM_BLE_REF_VALUE ref_value); #define BTA_DM_BLE_PF_BRDCAST_ADDR_FILT 1 @@ -1005,8 +959,7 @@ typedef UINT16 tBTA_DM_BLE_PF_TIMEOUT; typedef UINT8 tBTA_DM_BLE_PF_TIMEOUT_CNT; typedef UINT16 tBTA_DM_BLE_PF_ADV_TRACK_ENTRIES; -typedef struct -{ +typedef struct { tBTA_DM_BLE_PF_FEAT_SEL feat_seln; tBTA_DM_BLE_PF_LIST_LOGIC_TYPE list_logic_type; tBTA_DM_BLE_PF_FILT_LOGIC_TYPE filt_logic_type; @@ -1033,12 +986,11 @@ typedef UINT8 tBTA_DM_SEARCH_EVT; #define BTA_DM_INQ_RES_IGNORE_RSSI BTM_INQ_RES_IGNORE_RSSI /* 0x7f RSSI value not supplied (ignore it) */ /* Structure associated with BTA_DM_INQ_RES_EVT */ -typedef struct -{ +typedef struct { BD_ADDR bd_addr; /* BD address peer device. */ DEV_CLASS dev_class; /* Device class of peer device. */ BOOLEAN remt_name_not_required; /* Application sets this flag if it already knows the name of the device */ - /* If the device name is known to application BTA skips the remote name request */ + /* If the device name is known to application BTA skips the remote name request */ BOOLEAN is_limited; /* TRUE, if the limited inquiry bit is set in the CoD */ INT8 rssi; /* The rssi value */ UINT8 *p_eir; /* received EIR */ @@ -1053,27 +1005,24 @@ typedef struct } tBTA_DM_INQ_RES; /* Structure associated with BTA_DM_INQ_CMPL_EVT */ -typedef struct -{ +typedef struct { UINT8 num_resps; /* Number of inquiry responses. */ } tBTA_DM_INQ_CMPL; /* Structure associated with BTA_DM_DI_DISC_CMPL_EVT */ -typedef struct -{ +typedef struct { BD_ADDR bd_addr; /* BD address peer device. */ UINT8 num_record; /* Number of DI record */ tBTA_STATUS result; } tBTA_DM_DI_DISC_CMPL; /* Structure associated with BTA_DM_DISC_RES_EVT */ -typedef struct -{ +typedef struct { BD_ADDR bd_addr; /* BD address peer device. */ BD_NAME bd_name; /* Name of peer device. */ tBTA_SERVICE_MASK services; /* Services found on peer device. */ // btla-specific ++ - UINT8 * p_raw_data; /* Raw data for discovery DB */ + UINT8 *p_raw_data; /* Raw data for discovery DB */ UINT32 raw_data_size; /* size of raw data */ tBT_DEVICE_TYPE device_type; /* device type in case it is BLE device */ UINT32 num_uuids; @@ -1083,8 +1032,7 @@ typedef struct } tBTA_DM_DISC_RES; /* Structure associated with tBTA_DM_DISC_BLE_RES */ -typedef struct -{ +typedef struct { BD_ADDR bd_addr; /* BD address peer device. */ BD_NAME bd_name; /* Name of peer device. */ tBT_UUID service; /* GATT based Services UUID found on peer device. */ @@ -1092,8 +1040,7 @@ typedef struct /* Union of all search callback structures */ -typedef union -{ +typedef union { tBTA_DM_INQ_RES inq_res; /* Inquiry result for a peer device. */ tBTA_DM_INQ_CMPL inq_cmpl; /* Inquiry complete. */ tBTA_DM_DISC_RES disc_res; /* Discovery result for a peer device. */ @@ -1106,7 +1053,7 @@ typedef union typedef void (tBTA_DM_SEARCH_CBACK)(tBTA_DM_SEARCH_EVT event, tBTA_DM_SEARCH *p_data); /* Execute call back */ -typedef void (tBTA_DM_EXEC_CBACK) (void * p_param); +typedef void (tBTA_DM_EXEC_CBACK) (void *p_param); /* Encryption callback*/ typedef void (tBTA_DM_ENCRYPT_CBACK) (BD_ADDR bd_addr, tBTA_TRANSPORT transport, tBTA_STATUS result); @@ -1141,24 +1088,24 @@ typedef void (tBTA_BLE_SCAN_THRESHOLD_CBACK)(tBTA_DM_BLE_REF_VALUE ref_value); typedef void (tBTA_BLE_SCAN_REP_CBACK) (tBTA_DM_BLE_REF_VALUE ref_value, UINT8 report_format, UINT8 num_records, UINT16 data_len, - UINT8* p_rep_data, tBTA_STATUS status); + UINT8 *p_rep_data, tBTA_STATUS status); typedef void (tBTA_BLE_SCAN_SETUP_CBACK) (tBTA_BLE_BATCH_SCAN_EVT evt, - tBTA_DM_BLE_REF_VALUE ref_value, - tBTA_STATUS status); + tBTA_DM_BLE_REF_VALUE ref_value, + tBTA_STATUS status); typedef void (tBTA_BLE_TRACK_ADV_CMPL_CBACK)(int action, tBTA_STATUS status, - tBTA_DM_BLE_PF_AVBL_SPACE avbl_space, - tBTA_DM_BLE_REF_VALUE ref_value); + tBTA_DM_BLE_PF_AVBL_SPACE avbl_space, + tBTA_DM_BLE_REF_VALUE ref_value); typedef void (tBTA_BLE_TRACK_ADV_CBACK)(tBTA_DM_BLE_TRACK_ADV_DATA *p_adv_data); typedef void (tBTA_BLE_ENERGY_INFO_CBACK)(tBTA_DM_BLE_TX_TIME_MS tx_time, - tBTA_DM_BLE_RX_TIME_MS rx_time, - tBTA_DM_BLE_IDLE_TIME_MS idle_time, - tBTA_DM_BLE_ENERGY_USED energy_used, - tBTA_DM_CONTRL_STATE ctrl_state, - tBTA_STATUS status); + tBTA_DM_BLE_RX_TIME_MS rx_time, + tBTA_DM_BLE_IDLE_TIME_MS idle_time, + tBTA_DM_BLE_ENERGY_USED energy_used, + tBTA_DM_CONTRL_STATE ctrl_state, + tBTA_STATUS status); #else typedef UINT8 tBTA_DM_BLE_SEC_ACT; @@ -1674,7 +1621,7 @@ extern UINT16 BTA_DmGetConnectionState( BD_ADDR bd_addr ); ** *******************************************************************************/ extern tBTA_STATUS BTA_DmSetLocalDiRecord( tBTA_DI_RECORD *p_device_info, - UINT32 *p_handle ); + UINT32 *p_handle ); /******************************************************************************* ** @@ -1705,7 +1652,7 @@ extern void BTA_DmCloseACL(BD_ADDR bd_addr, BOOLEAN remove_dev, tBTA_TRANSPORT t ** Returns void ** *******************************************************************************/ -extern void bta_dmexecutecallback (tBTA_DM_EXEC_CBACK* p_callback, void * p_param); +extern void bta_dmexecutecallback (tBTA_DM_EXEC_CBACK *p_callback, void *p_param); #if (BTM_SCO_HCI_INCLUDED == TRUE) /******************************************************************************* @@ -1918,8 +1865,8 @@ extern void BTA_DmSetBleScanParams(tGATT_IF client_if, UINT32 scan_interval, ** *******************************************************************************/ extern void BTA_DmSetBleScanFilterParams(tGATT_IF client_if, UINT32 scan_interval, - UINT32 scan_window, tBLE_SCAN_MODE scan_mode, UINT8 scan_fil_poilcy, - UINT8 addr_type_own, tBLE_SCAN_PARAM_SETUP_CBACK scan_param_setup_cback); + UINT32 scan_window, tBLE_SCAN_MODE scan_mode, UINT8 scan_fil_poilcy, + UINT8 addr_type_own, tBLE_SCAN_PARAM_SETUP_CBACK scan_param_setup_cback); /******************************************************************************* @@ -1941,9 +1888,9 @@ extern void BTA_DmSetBleAdvParams (UINT16 adv_int_min, UINT16 adv_int_max, tBLE_BD_ADDR *p_dir_bda); extern void BTA_DmSetBleAdvParamsAll (UINT16 adv_int_min, UINT16 adv_int_max, - UINT8 adv_type, tBLE_ADDR_TYPE addr_type_own, - tBTM_BLE_ADV_CHNL_MAP chnl_map, tBTM_BLE_AFP adv_fil_pol, - tBLE_BD_ADDR *p_dir_bda); + UINT8 adv_type, tBLE_ADDR_TYPE addr_type_own, + tBTM_BLE_ADV_CHNL_MAP chnl_map, tBTM_BLE_AFP adv_fil_pol, + tBLE_BD_ADDR *p_dir_bda); /******************************************************************************* @@ -2145,7 +2092,7 @@ extern void BTA_DmBleBroadcast (BOOLEAN start); ** *******************************************************************************/ extern void BTA_BleEnableAdvInstance (tBTA_BLE_ADV_PARAMS *p_params, - tBTA_BLE_MULTI_ADV_CBACK *p_cback,void *p_ref); + tBTA_BLE_MULTI_ADV_CBACK *p_cback, void *p_ref); /******************************************************************************* ** @@ -2160,7 +2107,7 @@ extern void BTA_BleEnableAdvInstance (tBTA_BLE_ADV_PARAMS *p_params, ** *******************************************************************************/ extern void BTA_BleUpdateAdvInstParam (UINT8 inst_id, - tBTA_BLE_ADV_PARAMS *p_params); + tBTA_BLE_ADV_PARAMS *p_params); /******************************************************************************* ** @@ -2175,7 +2122,7 @@ extern void BTA_BleUpdateAdvInstParam (UINT8 inst_id, ** *******************************************************************************/ extern void BTA_BleCfgAdvInstData (UINT8 inst_id, BOOLEAN is_scan_rsp, - tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_data); + tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_data); /******************************************************************************* ** @@ -2206,7 +2153,7 @@ extern void BTA_BleDisableAdvInstance(UINT8 inst_id); ** *******************************************************************************/ extern void BTA_DmBleUpdateConnectionParams(BD_ADDR bd_addr, UINT16 min_int, - UINT16 max_int, UINT16 latency, UINT16 timeout); + UINT16 max_int, UINT16 latency, UINT16 timeout); /******************************************************************************* ** @@ -2238,12 +2185,12 @@ extern void BTA_DmBleSetDataLength(BD_ADDR remote_device, UINT16 tx_data_length) ** *******************************************************************************/ extern void BTA_DmBleSetStorageParams(UINT8 batch_scan_full_max, - UINT8 batch_scan_trunc_max, - UINT8 batch_scan_notify_threshold, - tBTA_BLE_SCAN_SETUP_CBACK *p_setup_cback, - tBTA_BLE_SCAN_THRESHOLD_CBACK *p_thres_cback, - tBTA_BLE_SCAN_REP_CBACK* p_rep_cback, - tBTA_DM_BLE_REF_VALUE ref_value); + UINT8 batch_scan_trunc_max, + UINT8 batch_scan_notify_threshold, + tBTA_BLE_SCAN_SETUP_CBACK *p_setup_cback, + tBTA_BLE_SCAN_THRESHOLD_CBACK *p_thres_cback, + tBTA_BLE_SCAN_REP_CBACK *p_rep_cback, + tBTA_DM_BLE_REF_VALUE ref_value); /******************************************************************************* ** @@ -2262,10 +2209,10 @@ extern void BTA_DmBleSetStorageParams(UINT8 batch_scan_full_max, ** *******************************************************************************/ extern void BTA_DmBleEnableBatchScan(tBTA_BLE_BATCH_SCAN_MODE scan_mode, - UINT32 scan_interval, UINT32 scan_window, - tBTA_BLE_DISCARD_RULE discard_rule, - tBLE_ADDR_TYPE addr_type, - tBTA_DM_BLE_REF_VALUE ref_value); + UINT32 scan_interval, UINT32 scan_window, + tBTA_BLE_DISCARD_RULE discard_rule, + tBLE_ADDR_TYPE addr_type, + tBTA_DM_BLE_REF_VALUE ref_value); /******************************************************************************* ** @@ -2280,7 +2227,7 @@ extern void BTA_DmBleEnableBatchScan(tBTA_BLE_BATCH_SCAN_MODE scan_mode, ** *******************************************************************************/ extern void BTA_DmBleReadScanReports(tBTA_BLE_BATCH_SCAN_MODE scan_type, - tBTA_DM_BLE_REF_VALUE ref_value); + tBTA_DM_BLE_REF_VALUE ref_value); /******************************************************************************* ** @@ -2309,8 +2256,8 @@ extern void BTA_DmBleDisableBatchScan(tBTA_DM_BLE_REF_VALUE ref_value); ** *******************************************************************************/ extern void BTA_DmEnableScanFilter(UINT8 action, - tBTA_DM_BLE_PF_STATUS_CBACK *p_cmpl_cback, - tBTA_DM_BLE_REF_VALUE ref_value); + tBTA_DM_BLE_PF_STATUS_CBACK *p_cmpl_cback, + tBTA_DM_BLE_REF_VALUE ref_value); /******************************************************************************* ** @@ -2329,11 +2276,11 @@ extern void BTA_DmEnableScanFilter(UINT8 action, ** *******************************************************************************/ extern void BTA_DmBleScanFilterSetup(UINT8 action, - tBTA_DM_BLE_PF_FILT_INDEX filt_index, - tBTA_DM_BLE_PF_FILT_PARAMS *p_filt_params, - tBLE_BD_ADDR *p_target, - tBTA_DM_BLE_PF_PARAM_CBACK *p_cmpl_cback, - tBTA_DM_BLE_REF_VALUE ref_value); + tBTA_DM_BLE_PF_FILT_INDEX filt_index, + tBTA_DM_BLE_PF_FILT_PARAMS *p_filt_params, + tBLE_BD_ADDR *p_target, + tBTA_DM_BLE_PF_PARAM_CBACK *p_cmpl_cback, + tBTA_DM_BLE_REF_VALUE ref_value); /******************************************************************************* ** @@ -2353,11 +2300,11 @@ extern void BTA_DmBleScanFilterSetup(UINT8 action, ** *******************************************************************************/ extern void BTA_DmBleCfgFilterCondition(tBTA_DM_BLE_SCAN_COND_OP action, - tBTA_DM_BLE_PF_COND_TYPE cond_type, - tBTA_DM_BLE_PF_FILT_INDEX filt_index, - tBTA_DM_BLE_PF_COND_PARAM *p_cond, - tBTA_DM_BLE_PF_CFG_CBACK *p_cmpl_cback, - tBTA_DM_BLE_REF_VALUE ref_value); + tBTA_DM_BLE_PF_COND_TYPE cond_type, + tBTA_DM_BLE_PF_FILT_INDEX filt_index, + tBTA_DM_BLE_PF_COND_PARAM *p_cond, + tBTA_DM_BLE_PF_CFG_CBACK *p_cmpl_cback, + tBTA_DM_BLE_REF_VALUE ref_value); /******************************************************************************* @@ -2373,7 +2320,7 @@ extern void BTA_DmBleCfgFilterCondition(tBTA_DM_BLE_SCAN_COND_OP action, ** *******************************************************************************/ extern void BTA_DmBleTrackAdvertiser(tBTA_DM_BLE_REF_VALUE ref_value, - tBTA_BLE_TRACK_ADV_CBACK *p_track_adv_cback); + tBTA_BLE_TRACK_ADV_CBACK *p_track_adv_cback); /******************************************************************************* ** diff --git a/components/bt/bluedroid/bta/include/bta_dm_ci.h b/components/bt/bluedroid/bta/include/bta_dm_ci.h old mode 100755 new mode 100644 index 5593b9ec43..9f8a87437a --- a/components/bt/bluedroid/bta/include/bta_dm_ci.h +++ b/components/bt/bluedroid/bta/include/bta_dm_ci.h @@ -46,7 +46,7 @@ extern "C" ** *******************************************************************************/ extern void bta_dm_ci_io_req(BD_ADDR bd_addr, tBTA_IO_CAP io_cap, - tBTA_OOB_DATA oob_data, tBTA_AUTH_REQ auth_req); + tBTA_OOB_DATA oob_data, tBTA_AUTH_REQ auth_req); /******************************************************************************* ** diff --git a/components/bt/bluedroid/bta/include/bta_dm_co.h b/components/bt/bluedroid/bta/include/bta_dm_co.h old mode 100755 new mode 100644 index c00a59cf1e..c320249676 --- a/components/bt/bluedroid/bta/include/bta_dm_co.h +++ b/components/bt/bluedroid/bta/include/bta_dm_co.h @@ -28,7 +28,7 @@ #ifndef BTA_SCO_OUT_PKT_SIZE - #define BTA_SCO_OUT_PKT_SIZE BTM_SCO_DATA_SIZE_MAX +#define BTA_SCO_OUT_PKT_SIZE BTM_SCO_DATA_SIZE_MAX #endif #define BTA_SCO_CODEC_PCM 0 /* used for regular SCO */ @@ -39,13 +39,12 @@ typedef UINT8 tBTA_SCO_CODEC_TYPE; #define BTA_DM_SCO_SAMP_RATE_16K 16000 /* SCO codec information */ -typedef struct -{ +typedef struct { tBTA_SCO_CODEC_TYPE codec_type; -}tBTA_CODEC_INFO; +} tBTA_CODEC_INFO; -#define BTA_DM_SCO_ROUTE_PCM BTM_SCO_ROUTE_PCM -#define BTA_DM_SCO_ROUTE_HCI BTM_SCO_ROUTE_HCI +#define BTA_DM_SCO_ROUTE_PCM BTM_SCO_ROUTE_PCM +#define BTA_DM_SCO_ROUTE_HCI BTM_SCO_ROUTE_HCI typedef tBTM_SCO_ROUTE_TYPE tBTA_DM_SCO_ROUTE_TYPE; @@ -152,7 +151,7 @@ extern void bta_dm_co_rmt_oob(BD_ADDR bd_addr); ** *******************************************************************************/ extern tBTA_DM_SCO_ROUTE_TYPE bta_dm_sco_co_init(UINT32 rx_bw, UINT32 tx_bw, - tBTA_CODEC_INFO *p_codec_info, UINT8 app_id); + tBTA_CODEC_INFO *p_codec_info, UINT8 app_id); /******************************************************************************* @@ -242,7 +241,7 @@ extern void bta_dm_co_ble_io_req(BD_ADDR bd_addr, tBTA_IO_CAP *p_io_cap, ** *******************************************************************************/ extern void bta_dm_co_ble_load_local_keys (tBTA_DM_BLE_LOCAL_KEY_MASK *p_key_mask, BT_OCTET16 er, - tBTA_BLE_LOCAL_ID_KEYS *p_id_keys); + tBTA_BLE_LOCAL_ID_KEYS *p_id_keys); // btla-specific ++ /******************************************************************************* diff --git a/components/bt/bluedroid/bta/include/bta_gatt_api.h b/components/bt/bluedroid/bta/include/bta_gatt_api.h old mode 100755 new mode 100644 index 668f23c16d..446c4bb3ae --- a/components/bt/bluedroid/bta/include/bta_gatt_api.h +++ b/components/bt/bluedroid/bta/include/bta_gatt_api.h @@ -50,8 +50,7 @@ ** Common Definitions ***************************/ /* GATT ID */ -typedef struct -{ +typedef struct { tBT_UUID uuid; /* uuid of the attribute */ UINT8 inst_id; /* instance ID */ } __attribute__((packed)) tBTA_GATT_ID; @@ -99,7 +98,7 @@ typedef struct #define BTA_GATT_ALREADY_OPEN 0x91 /* 0x91 */ #define BTA_GATT_CANCEL 0x92 /* 0x92 */ - /* 0xE0 ~ 0xFC reserved for future use */ +/* 0xE0 ~ 0xFC reserved for future use */ #define BTA_GATT_CCC_CFG_ERR GATT_CCC_CFG_ERR /* 0xFD Client Characteristic Configuration Descriptor Improperly Configured */ #define BTA_GATT_PRC_IN_PROGRESS GATT_PRC_IN_PROGRESS /* 0xFE Procedure Already in progress */ #define BTA_GATT_OUT_OF_RANGE GATT_OUT_OF_RANGE /* 0xFFAttribute value out of range */ @@ -150,14 +149,13 @@ typedef UINT8 tBTA_GATTC_EVT; typedef tGATT_IF tBTA_GATTC_IF; -typedef struct -{ +typedef struct { UINT16 unit; /* as UUIUD defined by SIG */ UINT16 descr; /* as UUID as defined by SIG */ tGATT_FORMAT format; INT8 exp; UINT8 name_spc; /* The name space of the description */ -}tBTA_GATT_CHAR_PRES; +} tBTA_GATT_CHAR_PRES; #define BTA_GATT_CLT_CONFIG_NONE GATT_CLT_CONFIG_NONE /* 0x0000 */ #define BTA_GATT_CLT_CONFIG_NOTIFICATION GATT_CLT_CONFIG_NOTIFICATION /* 0x0001 */ @@ -173,18 +171,16 @@ typedef UINT16 tBTA_GATT_SVR_CHAR_CONFIG; /* Characteristic Aggregate Format attribute value */ #define BTA_GATT_AGGR_HANDLE_NUM_MAX 10 -typedef struct -{ +typedef struct { UINT8 num_handle; UINT16 handle_list[BTA_GATT_AGGR_HANDLE_NUM_MAX]; } tBTA_GATT_CHAR_AGGRE; typedef tGATT_VALID_RANGE tBTA_GATT_VALID_RANGE; -typedef struct -{ +typedef struct { UINT16 len; UINT8 *p_value; -}tBTA_GATT_UNFMT; +} tBTA_GATT_UNFMT; #define BTA_GATT_MAX_ATTR_LEN GATT_MAX_ATTR_LEN @@ -203,53 +199,46 @@ typedef UINT8 tBTA_GATTC_WRITE_TYPE; #define BTA_GATT_CONN_NONE 0x0101 /* 0x0101 no connection to cancel */ typedef UINT16 tBTA_GATT_REASON; -typedef struct -{ +typedef struct { tBTA_GATT_ID id; BOOLEAN is_primary; -}tBTA_GATT_SRVC_ID; +} tBTA_GATT_SRVC_ID; -typedef struct -{ +typedef struct { tBTA_GATT_SRVC_ID srvc_id; tBTA_GATT_ID char_id; -}tBTA_GATTC_CHAR_ID; +} tBTA_GATTC_CHAR_ID; -typedef struct -{ +typedef struct { tBTA_GATTC_CHAR_ID char_id; tBTA_GATT_ID descr_id; -}tBTA_GATTC_CHAR_DESCR_ID; +} tBTA_GATTC_CHAR_DESCR_ID; -typedef struct -{ +typedef struct { tBTA_GATT_SRVC_ID srvc_id; tBTA_GATT_SRVC_ID incl_svc_id; -}tBTA_GATTC_INCL_SVC_ID; +} tBTA_GATTC_INCL_SVC_ID; #define BTA_GATT_TYPE_CHAR 0 #define BTA_GATT_TYPE_CHAR_DESCR 1 typedef UINT8 tBTA_GATT_ID_TYPE; -typedef struct -{ +typedef struct { tBTA_GATT_ID_TYPE id_type; - union - { + union { tBTA_GATTC_CHAR_ID char_id; tBTA_GATTC_CHAR_DESCR_ID char_descr_id; } id_value; -}tBTA_GATTC_ATTR_ID; +} tBTA_GATTC_ATTR_ID; #define BTA_GATTC_MULTI_MAX GATT_MAX_READ_MULTI_HANDLES -typedef struct -{ +typedef struct { UINT8 num_attr; tBTA_GATTC_ATTR_ID id_list[BTA_GATTC_MULTI_MAX]; -}tBTA_GATTC_MULTI; +} tBTA_GATTC_MULTI; #define BTA_GATT_AUTH_REQ_NONE GATT_AUTH_REQ_NONE #define BTA_GATT_AUTH_REQ_NO_MITM GATT_AUTH_REQ_NO_MITM /* unauthenticated encryption */ @@ -259,8 +248,7 @@ typedef struct typedef tGATT_AUTH_REQ tBTA_GATT_AUTH_REQ; -enum -{ +enum { BTA_GATTC_ATTR_TYPE_INCL_SRVC, BTA_GATTC_ATTR_TYPE_CHAR, BTA_GATTC_ATTR_TYPE_CHAR_DESCR, @@ -269,8 +257,7 @@ enum typedef UINT8 tBTA_GATTC_ATTR_TYPE; -typedef struct -{ +typedef struct { tBT_UUID uuid; UINT16 s_handle; UINT16 e_handle; /* used for service only */ @@ -278,96 +265,84 @@ typedef struct UINT8 id; UINT8 prop; /* used when attribute type is characteristic */ BOOLEAN is_primary; /* used when attribute type is service */ -}tBTA_GATTC_NV_ATTR; +} tBTA_GATTC_NV_ATTR; /* callback data structure */ -typedef struct -{ +typedef struct { tBTA_GATT_STATUS status; tBTA_GATTC_IF client_if; // btla-specific ++ tBT_UUID app_uuid; // btla-specific -- -}tBTA_GATTC_REG; +} tBTA_GATTC_REG; -typedef struct -{ +typedef struct { UINT8 num_pres_fmt; /* number of presentation format aggregated*/ tBTA_GATTC_CHAR_DESCR_ID pre_format[BTA_GATTC_MULTI_MAX]; -}tBTA_GATT_CHAR_AGGRE_VALUE; +} tBTA_GATT_CHAR_AGGRE_VALUE; -typedef union -{ +typedef union { tBTA_GATT_CHAR_AGGRE_VALUE aggre_value; tBTA_GATT_UNFMT unformat; -}tBTA_GATT_READ_VAL; +} tBTA_GATT_READ_VAL; -typedef struct -{ +typedef struct { UINT16 conn_id; tBTA_GATT_STATUS status; tBTA_GATT_SRVC_ID srvc_id; tBTA_GATT_ID char_id; tBTA_GATT_ID descr_type; tBTA_GATT_READ_VAL *p_value; -}tBTA_GATTC_READ; +} tBTA_GATTC_READ; -typedef struct -{ +typedef struct { UINT16 conn_id; tBTA_GATT_STATUS status; tBTA_GATT_SRVC_ID srvc_id; tBTA_GATT_ID char_id; tBTA_GATT_ID descr_type; -}tBTA_GATTC_WRITE; +} tBTA_GATTC_WRITE; -typedef struct -{ +typedef struct { UINT16 conn_id; tBTA_GATT_STATUS status; -}tBTA_GATTC_EXEC_CMPL; +} tBTA_GATTC_EXEC_CMPL; -typedef struct -{ +typedef struct { UINT16 conn_id; tBTA_GATT_STATUS status; -}tBTA_GATTC_SEARCH_CMPL; +} tBTA_GATTC_SEARCH_CMPL; -typedef struct -{ +typedef struct { UINT16 conn_id; tBTA_GATT_SRVC_ID service_uuid; -}tBTA_GATTC_SRVC_RES; +} tBTA_GATTC_SRVC_RES; -typedef struct -{ +typedef struct { UINT16 conn_id; tBTA_GATT_STATUS status; UINT16 mtu; -}tBTA_GATTC_CFG_MTU; +} tBTA_GATTC_CFG_MTU; -typedef struct -{ +typedef struct { tBTA_GATT_STATUS status; UINT16 conn_id; tBTA_GATTC_IF client_if; BD_ADDR remote_bda; tBTA_TRANSPORT transport; UINT16 mtu; -}tBTA_GATTC_OPEN; +} tBTA_GATTC_OPEN; -typedef struct -{ +typedef struct { tBTA_GATT_STATUS status; UINT16 conn_id; tBTA_GATTC_IF client_if; BD_ADDR remote_bda; tBTA_GATT_REASON reason; /* disconnect reason code, not useful when connect event is reported */ -}tBTA_GATTC_CLOSE; +} tBTA_GATTC_CLOSE; -typedef struct -{ +typedef struct { UINT16 conn_id; BD_ADDR bda; tBTA_GATTC_CHAR_ID char_id; @@ -375,32 +350,28 @@ typedef struct UINT16 len; UINT8 value[BTA_GATT_MAX_ATTR_LEN]; BOOLEAN is_notify; -}tBTA_GATTC_NOTIFY; +} tBTA_GATTC_NOTIFY; -typedef struct -{ +typedef struct { UINT16 conn_id; BOOLEAN congested; /* congestion indicator */ -}tBTA_GATTC_CONGEST; +} tBTA_GATTC_CONGEST; // btla-specific ++ -typedef struct -{ +typedef struct { tBTA_GATT_STATUS status; tBTA_GATTC_IF client_if; UINT16 conn_id; BD_ADDR remote_bda; -}tBTA_GATTC_OPEN_CLOSE; +} tBTA_GATTC_OPEN_CLOSE; // btla-specific -- -typedef struct -{ +typedef struct { tBTA_GATTC_IF client_if; BD_ADDR remote_bda; -}tBTA_GATTC_ENC_CMPL_CB; +} tBTA_GATTC_ENC_CMPL_CB; -typedef union -{ +typedef union { tBTA_GATT_STATUS status; tBTA_GATTC_SEARCH_CMPL search_cmpl; /* discovery complete */ @@ -485,8 +456,7 @@ typedef UINT8 tBTA_GATT_CHAR_PROP; /*********************** NV callback Data Definitions ********************** */ -typedef struct -{ +typedef struct { tBT_UUID app_uuid128; tBT_UUID svc_uuid; UINT16 svc_inst; @@ -531,27 +501,24 @@ typedef tGATT_WRITE_REQ tBTA_GATT_WRITE_REQ; /* callback data for server access request from client */ typedef tGATTS_DATA tBTA_GATTS_REQ_DATA; -typedef struct -{ +typedef struct { tBTA_GATT_STATUS status; BD_ADDR remote_bda; UINT32 trans_id; UINT16 conn_id; tBTA_GATTS_REQ_DATA *p_data; -}tBTA_GATTS_REQ; +} tBTA_GATTS_REQ; -typedef struct -{ +typedef struct { tBTA_GATTS_IF server_if; tBTA_GATT_STATUS status; // btla-specific ++ tBT_UUID uuid; // btla-specific -- -}tBTA_GATTS_REG_OPER; +} tBTA_GATTS_REG_OPER; -typedef struct -{ +typedef struct { tBTA_GATTS_IF server_if; UINT16 service_id; // btla-specific ++ @@ -560,10 +527,9 @@ typedef struct tBTA_GATT_STATUS status; tBT_UUID uuid; // btla-specific -- -}tBTA_GATTS_CREATE; +} tBTA_GATTS_CREATE; -typedef struct -{ +typedef struct { tBTA_GATTS_IF server_if; UINT16 service_id; UINT16 attr_id; @@ -571,40 +537,35 @@ typedef struct // btla-specific ++ tBT_UUID char_uuid; // btla-specific -- -}tBTA_GATTS_ADD_RESULT; +} tBTA_GATTS_ADD_RESULT; -typedef struct -{ +typedef struct { tBTA_GATTS_IF server_if; UINT16 service_id; tBTA_GATT_STATUS status; -}tBTA_GATTS_SRVC_OPER; +} tBTA_GATTS_SRVC_OPER; -typedef struct -{ +typedef struct { tBTA_GATTS_IF server_if; BD_ADDR remote_bda; UINT16 conn_id; tBTA_GATT_REASON reason; /* report disconnect reason */ tBTA_GATT_TRANSPORT transport; -}tBTA_GATTS_CONN; +} tBTA_GATTS_CONN; -typedef struct -{ +typedef struct { UINT16 conn_id; BOOLEAN congested; /* report channel congestion indicator */ -}tBTA_GATTS_CONGEST; +} tBTA_GATTS_CONGEST; -typedef struct -{ +typedef struct { UINT16 conn_id; /* connection ID */ tBTA_GATT_STATUS status; /* notification/indication status */ -}tBTA_GATTS_CONF; +} tBTA_GATTS_CONF; /* GATTS callback data */ -typedef union -{ +typedef union { tBTA_GATTS_REG_OPER reg_oper; tBTA_GATTS_CREATE create; tBTA_GATTS_SRVC_OPER srvc_oper; @@ -616,7 +577,7 @@ typedef union tBTA_GATTS_CONN conn; /* BTA_GATTS_CONN_EVT */ tBTA_GATTS_CONGEST congest; /* BTA_GATTS_CONGEST_EVT callback data */ tBTA_GATTS_CONF confirm; /* BTA_GATTS_CONF_EVT callback data */ -}tBTA_GATTS; +} tBTA_GATTS; /* GATTS enable callback function */ typedef void (tBTA_GATTS_ENB_CBACK)(tBTA_GATT_STATUS status); @@ -762,10 +723,10 @@ extern void BTA_GATTC_ServiceSearchRequest(UINT16 conn_id, tBT_UUID *p_srvc_uuid ** *******************************************************************************/ extern tBTA_GATT_STATUS BTA_GATTC_GetFirstChar (UINT16 conn_id, - tBTA_GATT_SRVC_ID *p_srvc_id, - tBT_UUID *p_char_uuid_cond, - tBTA_GATTC_CHAR_ID *p_char_result, - tBTA_GATT_CHAR_PROP *p_property); + tBTA_GATT_SRVC_ID *p_srvc_id, + tBT_UUID *p_char_uuid_cond, + tBTA_GATTC_CHAR_ID *p_char_result, + tBTA_GATT_CHAR_PROP *p_property); /******************************************************************************* ** @@ -787,10 +748,10 @@ extern tBTA_GATT_STATUS BTA_GATTC_GetFirstChar (UINT16 conn_id, ** *******************************************************************************/ extern tBTA_GATT_STATUS BTA_GATTC_GetNextChar (UINT16 conn_id, - tBTA_GATTC_CHAR_ID *p_start_char_id, - tBT_UUID *p_char_uuid_cond, - tBTA_GATTC_CHAR_ID *p_char_result, - tBTA_GATT_CHAR_PROP *p_property); + tBTA_GATTC_CHAR_ID *p_start_char_id, + tBT_UUID *p_char_uuid_cond, + tBTA_GATTC_CHAR_ID *p_char_result, + tBTA_GATT_CHAR_PROP *p_property); /******************************************************************************* ** @@ -810,8 +771,8 @@ extern tBTA_GATT_STATUS BTA_GATTC_GetNextChar (UINT16 conn_id, ** *******************************************************************************/ extern tBTA_GATT_STATUS BTA_GATTC_GetFirstCharDescr (UINT16 conn_id, tBTA_GATTC_CHAR_ID *p_char_id, - tBT_UUID *p_descr_uuid_cond, - tBTA_GATTC_CHAR_DESCR_ID *p_descr_result); + tBT_UUID *p_descr_uuid_cond, + tBTA_GATTC_CHAR_DESCR_ID *p_descr_result); /******************************************************************************* ** @@ -832,9 +793,9 @@ extern tBTA_GATT_STATUS BTA_GATTC_GetFirstCharDescr (UINT16 conn_id, tBTA_GATTC ** *******************************************************************************/ extern tBTA_GATT_STATUS BTA_GATTC_GetNextCharDescr (UINT16 conn_id, - tBTA_GATTC_CHAR_DESCR_ID *p_start_descr_id, - tBT_UUID *p_descr_uuid_cond, - tBTA_GATTC_CHAR_DESCR_ID *p_descr_result); + tBTA_GATTC_CHAR_DESCR_ID *p_start_descr_id, + tBT_UUID *p_descr_uuid_cond, + tBTA_GATTC_CHAR_DESCR_ID *p_descr_result); /******************************************************************************* @@ -855,9 +816,9 @@ extern tBTA_GATT_STATUS BTA_GATTC_GetNextCharDescr (UINT16 conn_id, ** *******************************************************************************/ extern tBTA_GATT_STATUS BTA_GATTC_GetFirstIncludedService(UINT16 conn_id, - tBTA_GATT_SRVC_ID *p_srvc_id, - tBT_UUID *p_uuid_cond, - tBTA_GATTC_INCL_SVC_ID *p_result); + tBTA_GATT_SRVC_ID *p_srvc_id, + tBT_UUID *p_uuid_cond, + tBTA_GATTC_INCL_SVC_ID *p_result); /******************************************************************************* ** @@ -878,9 +839,9 @@ extern tBTA_GATT_STATUS BTA_GATTC_GetFirstIncludedService(UINT16 conn_id, ** *******************************************************************************/ extern tBTA_GATT_STATUS BTA_GATTC_GetNextIncludedService(UINT16 conn_id, - tBTA_GATTC_INCL_SVC_ID *p_start_id, - tBT_UUID *p_uuid_cond, - tBTA_GATTC_INCL_SVC_ID *p_result); + tBTA_GATTC_INCL_SVC_ID *p_start_id, + tBT_UUID *p_uuid_cond, + tBTA_GATTC_INCL_SVC_ID *p_result); /******************************************************************************* ** @@ -896,8 +857,8 @@ extern tBTA_GATT_STATUS BTA_GATTC_GetNextIncludedService(UINT16 conn_id, ** *******************************************************************************/ extern void BTA_GATTC_ReadCharacteristic (UINT16 conn_id, - tBTA_GATTC_CHAR_ID *p_char_id, - tBTA_GATT_AUTH_REQ auth_req); + tBTA_GATTC_CHAR_ID *p_char_id, + tBTA_GATT_AUTH_REQ auth_req); /******************************************************************************* ** @@ -985,8 +946,8 @@ extern void BTA_GATTC_SendIndConfirm (UINT16 conn_id, tBTA_GATTC_CHAR_ID *p_char ** *******************************************************************************/ extern tBTA_GATT_STATUS BTA_GATTC_RegisterForNotifications (tBTA_GATTC_IF client_if, - BD_ADDR remote_bda, - tBTA_GATTC_CHAR_ID *p_char_id); + BD_ADDR remote_bda, + tBTA_GATTC_CHAR_ID *p_char_id); /******************************************************************************* @@ -1003,8 +964,8 @@ extern tBTA_GATT_STATUS BTA_GATTC_RegisterForNotifications (tBTA_GATTC_IF c ** *******************************************************************************/ extern tBTA_GATT_STATUS BTA_GATTC_DeregisterForNotifications (tBTA_GATTC_IF client_if, - BD_ADDR remote_bda, - tBTA_GATTC_CHAR_ID *p_char_id); + BD_ADDR remote_bda, + tBTA_GATTC_CHAR_ID *p_char_id); /******************************************************************************* ** @@ -1233,7 +1194,7 @@ extern void BTA_GATTS_AddIncludeService(UINT16 service_id, UINT16 included_servi ** *******************************************************************************/ extern void BTA_GATTS_AddCharacteristic (UINT16 service_id, tBT_UUID *p_char_uuid, - tBTA_GATT_PERM perm, tBTA_GATT_CHAR_PROP property); + tBTA_GATT_PERM perm, tBTA_GATT_CHAR_PROP property); /******************************************************************************* ** @@ -1253,8 +1214,8 @@ extern void BTA_GATTS_AddCharacteristic (UINT16 service_id, tBT_UUID *p_char_ ** *******************************************************************************/ extern void BTA_GATTS_AddCharDescriptor (UINT16 service_id, - tBTA_GATT_PERM perm, - tBT_UUID * p_descr_uuid); + tBTA_GATT_PERM perm, + tBT_UUID *p_descr_uuid); /******************************************************************************* ** @@ -1304,7 +1265,7 @@ extern void BTA_GATTS_StopService(UINT16 service_id); ** Description This function is called to read a characteristics descriptor. ** ** Parameters conn_id - connection identifier. -** attr_id - attribute ID to indicate. +** attr_id - attribute ID to indicate. ** data_len - indicate data length. ** p_data: data to indicate. ** need_confirm - if this indication expects a confirmation or not. @@ -1313,9 +1274,9 @@ extern void BTA_GATTS_StopService(UINT16 service_id); ** *******************************************************************************/ extern void BTA_GATTS_HandleValueIndication (UINT16 conn_id, UINT16 attr_id, - UINT16 data_len, - UINT8 *p_data, - BOOLEAN need_confirm); + UINT16 data_len, + UINT8 *p_data, + BOOLEAN need_confirm); /******************************************************************************* ** diff --git a/components/bt/bluedroid/bta/include/bta_gattc_ci.h b/components/bt/bluedroid/bta/include/bta_gattc_ci.h old mode 100755 new mode 100644 index a64bf89b0f..12b3a42173 --- a/components/bt/bluedroid/bta/include/bta_gattc_ci.h +++ b/components/bt/bluedroid/bta/include/bta_gattc_ci.h @@ -31,8 +31,7 @@ *****************************************************************************/ /* Open Complete Event */ -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_GATT_STATUS status; } tBTA_GATTC_CI_EVT; @@ -40,8 +39,7 @@ typedef struct #define BTA_GATTC_NV_LOAD_MAX 10 /* Read Ready Event */ -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_GATT_STATUS status; UINT16 num_attr; @@ -72,7 +70,7 @@ extern "C" ** *******************************************************************************/ extern void bta_gattc_ci_cache_open(BD_ADDR server_bda, UINT16 evt, - tBTA_GATT_STATUS status, UINT16 conn_id); + tBTA_GATT_STATUS status, UINT16 conn_id); /******************************************************************************* ** diff --git a/components/bt/bluedroid/bta/include/bta_gattc_co.h b/components/bt/bluedroid/bta/include/bta_gattc_co.h old mode 100755 new mode 100644 index b96ebf3b5d..f84f9d354c --- a/components/bt/bluedroid/bta/include/bta_gattc_co.h +++ b/components/bt/bluedroid/bta/include/bta_gattc_co.h @@ -42,7 +42,7 @@ ** *******************************************************************************/ extern void bta_gattc_co_cache_open(BD_ADDR server_bda, UINT16 evt, - UINT16 conn_id, BOOLEAN to_save); + UINT16 conn_id, BOOLEAN to_save); /******************************************************************************* ** diff --git a/components/bt/bluedroid/bta/include/bta_gattc_int.h b/components/bt/bluedroid/bta/include/bta_gattc_int.h old mode 100755 new mode 100644 index ad2d61e2f4..bc200eddc3 --- a/components/bt/bluedroid/bta/include/bta_gattc_int.h +++ b/components/bt/bluedroid/bta/include/bta_gattc_int.h @@ -35,8 +35,7 @@ /***************************************************************************** ** Constants and data types *****************************************************************************/ -enum -{ +enum { BTA_GATTC_API_OPEN_EVT = BTA_SYS_EVT_START(BTA_ID_GATTC), BTA_GATTC_INT_OPEN_FAIL_EVT, BTA_GATTC_API_CANCEL_OPEN_EVT, @@ -89,31 +88,28 @@ typedef UINT16 tBTA_GATTC_INT_EVT; #define BTA_GATTC_CONN_MAX GATT_MAX_PHY_CHANNEL #ifndef BTA_GATTC_CLCB_MAX - #define BTA_GATTC_CLCB_MAX GATT_CL_MAX_LCB +#define BTA_GATTC_CLCB_MAX GATT_CL_MAX_LCB #endif #define BTA_GATTC_WRITE_PREPARE GATT_WRITE_PREPARE /* internal strucutre for GATTC register API */ -typedef struct -{ +typedef struct { BT_HDR hdr; tBT_UUID app_uuid; tBTA_GATTC_CBACK *p_cback; -}tBTA_GATTC_API_REG; +} tBTA_GATTC_API_REG; -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_GATTC_IF client_if; -}tBTA_GATTC_INT_START_IF; +} tBTA_GATTC_INT_START_IF; typedef tBTA_GATTC_INT_START_IF tBTA_GATTC_API_DEREG; typedef tBTA_GATTC_INT_START_IF tBTA_GATTC_INT_DEREG; -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR remote_bda; tBTA_GATTC_IF client_if; @@ -123,8 +119,7 @@ typedef struct typedef tBTA_GATTC_API_OPEN tBTA_GATTC_API_CANCEL_OPEN; -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_GATT_AUTH_REQ auth_req; tBTA_GATT_SRVC_ID srvc_id; @@ -132,8 +127,7 @@ typedef struct tBTA_GATT_ID *p_descr_type; } tBTA_GATTC_API_READ; -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_GATT_AUTH_REQ auth_req; tBTA_GATT_SRVC_ID srvc_id; @@ -143,16 +137,14 @@ typedef struct UINT16 offset; UINT16 len; UINT8 *p_value; -}tBTA_GATTC_API_WRITE; +} tBTA_GATTC_API_WRITE; -typedef struct -{ +typedef struct { BT_HDR hdr; BOOLEAN is_execute; -}tBTA_GATTC_API_EXEC; +} tBTA_GATTC_API_EXEC; -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_GATT_SRVC_ID srvc_id; tBTA_GATT_ID char_id; @@ -160,30 +152,26 @@ typedef struct typedef tGATT_CL_COMPLETE tBTA_GATTC_CMPL; -typedef struct -{ +typedef struct { BT_HDR hdr; UINT8 op_code; tGATT_STATUS status; tBTA_GATTC_CMPL *p_cmpl; -}tBTA_GATTC_OP_CMPL; +} tBTA_GATTC_OP_CMPL; -typedef struct -{ +typedef struct { BT_HDR hdr; tBT_UUID *p_srvc_uuid; -}tBTA_GATTC_API_SEARCH; +} tBTA_GATTC_API_SEARCH; -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_GATT_AUTH_REQ auth_req; UINT8 num_attr; tBTA_GATTC_ATTR_ID *p_id_list; -}tBTA_GATTC_API_READ_MULTI; +} tBTA_GATTC_API_READ_MULTI; -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR_PTR remote_bda; tBTA_GATTC_IF client_if; @@ -191,31 +179,27 @@ typedef struct } tBTA_GATTC_API_LISTEN; -typedef struct -{ +typedef struct { BT_HDR hdr; UINT16 mtu; -}tBTA_GATTC_API_CFG_MTU; +} tBTA_GATTC_API_CFG_MTU; -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR remote_bda; tBTA_GATTC_IF client_if; UINT8 role; tBT_TRANSPORT transport; tGATT_DISCONN_REASON reason; -}tBTA_GATTC_INT_CONN; +} tBTA_GATTC_INT_CONN; -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR remote_bda; tBTA_GATTC_IF client_if; -}tBTA_GATTC_ENC_CMPL; +} tBTA_GATTC_ENC_CMPL; -typedef union -{ +typedef union { BT_HDR hdr; tBTA_GATTC_API_REG api_reg; tBTA_GATTC_API_DEREG api_dereg; @@ -244,14 +228,12 @@ typedef union /* GATT server cache on the client */ -typedef union -{ +typedef union { UINT8 uuid128[LEN_UUID_128]; UINT16 uuid16; -}tBTA_GATTC_UUID; +} tBTA_GATTC_UUID; -typedef struct gattc_attr_cache -{ +typedef struct gattc_attr_cache { tBTA_GATTC_UUID *p_uuid; struct gattc_attr_cache *p_next; UINT16 uuid_len; @@ -265,8 +247,7 @@ typedef struct gattc_attr_cache } __attribute__((packed)) tBTA_GATTC_CACHE_ATTR; // btla-specific -- -typedef struct gattc_svc_cache -{ +typedef struct gattc_svc_cache { tBTA_GATT_SRVC_ID service_uuid; tBTA_GATTC_CACHE_ATTR *p_attr; tBTA_GATTC_CACHE_ATTR *p_last_attr; @@ -278,26 +259,24 @@ typedef struct gattc_svc_cache } __attribute__((packed)) tBTA_GATTC_CACHE; // btla-specific -- -typedef struct -{ +typedef struct { tBT_UUID uuid; UINT16 s_handle; UINT16 e_handle; BOOLEAN is_primary; UINT8 srvc_inst_id; tBTA_GATT_CHAR_PROP property; -}tBTA_GATTC_ATTR_REC; +} tBTA_GATTC_ATTR_REC; #define BTA_GATTC_MAX_CACHE_CHAR 40 #define BTA_GATTC_ATTR_LIST_SIZE (BTA_GATTC_MAX_CACHE_CHAR * sizeof(tBTA_GATTC_ATTR_REC)) #ifndef BTA_GATTC_CACHE_SRVR_SIZE - #define BTA_GATTC_CACHE_SRVR_SIZE 600 +#define BTA_GATTC_CACHE_SRVR_SIZE 600 #endif -enum -{ +enum { BTA_GATTC_IDLE_ST = 0, /* Idle */ BTA_GATTC_W4_CONN_ST, /* Wait for connection - (optional) */ BTA_GATTC_CONN_ST, /* connected state */ @@ -305,8 +284,7 @@ enum }; typedef UINT8 tBTA_GATTC_STATE; -typedef struct -{ +typedef struct { BOOLEAN in_use; BD_ADDR server_bda; BOOLEAN connected; @@ -345,15 +323,13 @@ typedef struct #define BTA_GATTC_NOTIF_REG_MAX 15 #endif -typedef struct -{ +typedef struct { BOOLEAN in_use; BD_ADDR remote_bda; tBTA_GATTC_CHAR_ID char_id; -}tBTA_GATTC_NOTIF_REG; +} tBTA_GATTC_NOTIF_REG; -typedef struct -{ +typedef struct { tBTA_GATTC_CBACK *p_cback; BOOLEAN in_use; tBTA_GATTC_IF client_if; /* client interface with BTE stack for this application */ @@ -361,11 +337,10 @@ typedef struct BOOLEAN dereg_pending; tBT_UUID app_uuid; tBTA_GATTC_NOTIF_REG notif_reg[BTA_GATTC_NOTIF_REG_MAX]; -}tBTA_GATTC_RCB; +} tBTA_GATTC_RCB; /* client channel is a mapping between a BTA client(cl_id) and a remote BD address */ -typedef struct -{ +typedef struct { UINT16 bta_conn_id; /* client channel ID, unique for clcb */ BD_ADDR bda; tBTA_TRANSPORT transport; /* channel transport */ @@ -394,31 +369,27 @@ typedef UINT16 tBTA_GATTC_CIF_MASK; typedef UINT32 tBTA_GATTC_CIF_MASK; #endif -typedef struct -{ +typedef struct { BOOLEAN in_use; BD_ADDR remote_bda; tBTA_GATTC_CIF_MASK cif_mask; tBTA_GATTC_CIF_MASK cif_adv_mask; -}tBTA_GATTC_BG_TCK; +} tBTA_GATTC_BG_TCK; -typedef struct -{ +typedef struct { BOOLEAN in_use; BD_ADDR remote_bda; -}tBTA_GATTC_CONN; +} tBTA_GATTC_CONN; -enum -{ - BTA_GATTC_STATE_DISABLED, - BTA_GATTC_STATE_ENABLING, - BTA_GATTC_STATE_ENABLED, - BTA_GATTC_STATE_DISABLING +enum { + BTA_GATTC_STATE_DISABLED, + BTA_GATTC_STATE_ENABLING, + BTA_GATTC_STATE_ENABLED, + BTA_GATTC_STATE_DISABLING }; -typedef struct -{ +typedef struct { UINT8 state; tBTA_GATTC_CONN conn_track[BTA_GATTC_CONN_MAX]; @@ -430,7 +401,7 @@ typedef struct tSDP_DISCOVERY_DB *p_sdp_db; UINT16 sdp_conn_id; -}tBTA_GATTC_CB; +} tBTA_GATTC_CB; /***************************************************************************** ** Global data @@ -454,8 +425,8 @@ extern BOOLEAN bta_gattc_sm_execute(tBTA_GATTC_CLCB *p_clcb, UINT16 event, tBTA_ extern void bta_gattc_disable(tBTA_GATTC_CB *p_cb); extern void bta_gattc_register(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA *p_data); extern void bta_gattc_start_if(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA *p_data); -extern void bta_gattc_process_api_open (tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA * p_msg); -extern void bta_gattc_process_api_open_cancel (tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA * p_msg); +extern void bta_gattc_process_api_open (tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA *p_msg); +extern void bta_gattc_process_api_open_cancel (tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA *p_msg); extern void bta_gattc_deregister(tBTA_GATTC_CB *p_cb, tBTA_GATTC_RCB *p_clreg); extern void bta_gattc_process_enc_cmpl(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA *p_msg); @@ -491,29 +462,29 @@ extern void bta_gattc_ci_close(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) extern void bta_gattc_ci_save(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data); extern void bta_gattc_cache_open(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data); extern void bta_gattc_ignore_op_cmpl(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data); -extern void bta_gattc_restart_discover(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA * p_msg); +extern void bta_gattc_restart_discover(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_msg); extern void bta_gattc_init_bk_conn(tBTA_GATTC_API_OPEN *p_data, tBTA_GATTC_RCB *p_clreg); extern void bta_gattc_cancel_bk_conn(tBTA_GATTC_API_CANCEL_OPEN *p_data); extern void bta_gattc_send_open_cback( tBTA_GATTC_RCB *p_clreg, tBTA_GATT_STATUS status, BD_ADDR remote_bda, UINT16 conn_id, tBTA_TRANSPORT transport, UINT16 mtu); -extern void bta_gattc_process_api_refresh(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA * p_msg); +extern void bta_gattc_process_api_refresh(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA *p_msg); extern void bta_gattc_cfg_mtu(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data); #if BLE_INCLUDED == TRUE -extern void bta_gattc_listen(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA * p_msg); -extern void bta_gattc_broadcast(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA * p_msg); +extern void bta_gattc_listen(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA *p_msg); +extern void bta_gattc_broadcast(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA *p_msg); #endif /* utility functions */ -extern tBTA_GATTC_CLCB * bta_gattc_find_clcb_by_cif (UINT8 client_if, BD_ADDR remote_bda, tBTA_TRANSPORT transport); -extern tBTA_GATTC_CLCB * bta_gattc_find_clcb_by_conn_id (UINT16 conn_id); -extern tBTA_GATTC_CLCB * bta_gattc_clcb_alloc(tBTA_GATTC_IF client_if, BD_ADDR remote_bda, tBTA_TRANSPORT transport); +extern tBTA_GATTC_CLCB *bta_gattc_find_clcb_by_cif (UINT8 client_if, BD_ADDR remote_bda, tBTA_TRANSPORT transport); +extern tBTA_GATTC_CLCB *bta_gattc_find_clcb_by_conn_id (UINT16 conn_id); +extern tBTA_GATTC_CLCB *bta_gattc_clcb_alloc(tBTA_GATTC_IF client_if, BD_ADDR remote_bda, tBTA_TRANSPORT transport); extern void bta_gattc_clcb_dealloc(tBTA_GATTC_CLCB *p_clcb); -extern tBTA_GATTC_CLCB * bta_gattc_find_alloc_clcb(tBTA_GATTC_IF client_if, BD_ADDR remote_bda, tBTA_TRANSPORT transport); -extern tBTA_GATTC_RCB * bta_gattc_cl_get_regcb(UINT8 client_if); -extern tBTA_GATTC_SERV * bta_gattc_find_srcb(BD_ADDR bda); -extern tBTA_GATTC_SERV * bta_gattc_srcb_alloc(BD_ADDR bda); -extern tBTA_GATTC_SERV * bta_gattc_find_scb_by_cid (UINT16 conn_id); -extern tBTA_GATTC_CLCB * bta_gattc_find_int_conn_clcb(tBTA_GATTC_DATA *p_msg); -extern tBTA_GATTC_CLCB * bta_gattc_find_int_disconn_clcb(tBTA_GATTC_DATA *p_msg); +extern tBTA_GATTC_CLCB *bta_gattc_find_alloc_clcb(tBTA_GATTC_IF client_if, BD_ADDR remote_bda, tBTA_TRANSPORT transport); +extern tBTA_GATTC_RCB *bta_gattc_cl_get_regcb(UINT8 client_if); +extern tBTA_GATTC_SERV *bta_gattc_find_srcb(BD_ADDR bda); +extern tBTA_GATTC_SERV *bta_gattc_srcb_alloc(BD_ADDR bda); +extern tBTA_GATTC_SERV *bta_gattc_find_scb_by_cid (UINT16 conn_id); +extern tBTA_GATTC_CLCB *bta_gattc_find_int_conn_clcb(tBTA_GATTC_DATA *p_msg); +extern tBTA_GATTC_CLCB *bta_gattc_find_int_disconn_clcb(tBTA_GATTC_DATA *p_msg); extern BOOLEAN bta_gattc_enqueue(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data); @@ -527,7 +498,7 @@ extern BOOLEAN bta_gattc_mark_bg_conn (tBTA_GATTC_IF client_if, BD_ADDR_PTR rem extern BOOLEAN bta_gattc_check_bg_conn (tBTA_GATTC_IF client_if, BD_ADDR remote_bda, UINT8 role); extern UINT8 bta_gattc_num_reg_app(void); extern void bta_gattc_clear_notif_registration(UINT16 conn_id); -extern tBTA_GATTC_SERV * bta_gattc_find_srvr_cache(BD_ADDR bda); +extern tBTA_GATTC_SERV *bta_gattc_find_srvr_cache(BD_ADDR bda); extern BOOLEAN bta_gattc_charid_compare(tBTA_GATTC_CHAR_ID *p_src, tBTA_GATTC_CHAR_ID *p_tar); extern BOOLEAN bta_gattc_srvcid_compare(tBTA_GATT_SRVC_ID *p_src, tBTA_GATT_SRVC_ID *p_tar); extern void bta_gattc_cpygattid(tBTA_GATT_ID *p_des, tBTA_GATT_ID *p_src); @@ -539,16 +510,16 @@ extern tBTA_GATT_STATUS bta_gattc_discover_procedure(UINT16 conn_id, tBTA_GATTC_ extern tBTA_GATT_STATUS bta_gattc_discover_pri_service(UINT16 conn_id, tBTA_GATTC_SERV *p_server_cb, UINT8 disc_type); extern void bta_gattc_search_service(tBTA_GATTC_CLCB *p_clcb, tBT_UUID *p_uuid); extern tBTA_GATT_STATUS bta_gattc_query_cache(UINT16 conn_id, UINT8 query_type, tBTA_GATT_SRVC_ID *p_srvc_id, - tBTA_GATT_ID *p_start_rec,tBT_UUID *p_uuid_cond, - tBTA_GATT_ID *p_output, void *p_param); + tBTA_GATT_ID *p_start_rec, tBT_UUID *p_uuid_cond, + tBTA_GATT_ID *p_output, void *p_param); extern tBTA_GATT_STATUS bta_gattc_init_cache(tBTA_GATTC_SERV *p_srvc_cb); extern void bta_gattc_rebuild_cache(tBTA_GATTC_SERV *p_srcv, UINT16 num_attr, tBTA_GATTC_NV_ATTR *p_attr, UINT16 attr_index); extern BOOLEAN bta_gattc_cache_save(tBTA_GATTC_SERV *p_srvc_cb, UINT16 conn_id); -extern tBTA_GATTC_CONN * bta_gattc_conn_alloc(BD_ADDR remote_bda); -extern tBTA_GATTC_CONN * bta_gattc_conn_find(BD_ADDR remote_bda); -extern tBTA_GATTC_CONN * bta_gattc_conn_find_alloc(BD_ADDR remote_bda); +extern tBTA_GATTC_CONN *bta_gattc_conn_alloc(BD_ADDR remote_bda); +extern tBTA_GATTC_CONN *bta_gattc_conn_find(BD_ADDR remote_bda); +extern tBTA_GATTC_CONN *bta_gattc_conn_find_alloc(BD_ADDR remote_bda); extern BOOLEAN bta_gattc_conn_dealloc(BD_ADDR remote_bda); #endif /* BTA_GATTC_INT_H */ diff --git a/components/bt/bluedroid/bta/include/bta_gatts_co.h b/components/bt/bluedroid/bta/include/bta_gatts_co.h old mode 100755 new mode 100644 index b3ee99b0a9..78e001b764 --- a/components/bt/bluedroid/bta/include/bta_gatts_co.h +++ b/components/bt/bluedroid/bta/include/bta_gatts_co.h @@ -75,7 +75,7 @@ extern BOOLEAN bta_gatts_co_srv_chg(tBTA_GATTS_SRV_CHG_CMD cmd, ** *******************************************************************************/ extern BOOLEAN bta_gatts_co_load_handle_range(UINT8 index, - tBTA_GATTS_HNDL_RANGE *p_handle); + tBTA_GATTS_HNDL_RANGE *p_handle); #endif /* BTA_GATTS_CO_H */ diff --git a/components/bt/bluedroid/bta/include/bta_gatts_int.h b/components/bt/bluedroid/bta/include/bta_gatts_int.h old mode 100755 new mode 100644 index 9a12dfd277..f934c4ac6a --- a/components/bt/bluedroid/bta/include/bta_gatts_int.h +++ b/components/bt/bluedroid/bta/include/bta_gatts_int.h @@ -34,8 +34,7 @@ /***************************************************************************** ** Constants and data types *****************************************************************************/ -enum -{ +enum { BTA_GATTS_API_REG_EVT = BTA_SYS_EVT_START(BTA_ID_GATTS), BTA_GATTS_INT_START_IF_EVT, BTA_GATTS_API_DEREG_EVT, @@ -64,23 +63,20 @@ typedef UINT16 tBTA_GATTS_INT_EVT; #define BTA_GATTS_MAX_SRVC_NUM GATT_MAX_SR_PROFILES /* internal strucutre for GATTC register API */ -typedef struct -{ +typedef struct { BT_HDR hdr; tBT_UUID app_uuid; tBTA_GATTS_CBACK *p_cback; -}tBTA_GATTS_API_REG; +} tBTA_GATTS_API_REG; -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_GATTS_IF server_if; -}tBTA_GATTS_INT_START_IF; +} tBTA_GATTS_INT_START_IF; typedef tBTA_GATTS_INT_START_IF tBTA_GATTS_API_DEREG; -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_GATTS_IF server_if; tBT_UUID service_uuid; @@ -90,75 +86,66 @@ typedef struct } tBTA_GATTS_API_CREATE_SRVC; -typedef struct -{ +typedef struct { BT_HDR hdr; tBT_UUID char_uuid; tBTA_GATT_PERM perm; tBTA_GATT_CHAR_PROP property; -}tBTA_GATTS_API_ADD_CHAR; +} tBTA_GATTS_API_ADD_CHAR; -typedef struct -{ +typedef struct { BT_HDR hdr; UINT16 included_service_id; -}tBTA_GATTS_API_ADD_INCL_SRVC; +} tBTA_GATTS_API_ADD_INCL_SRVC; -typedef struct -{ +typedef struct { BT_HDR hdr; tBT_UUID descr_uuid; tBTA_GATT_PERM perm; -}tBTA_GATTS_API_ADD_DESCR; +} tBTA_GATTS_API_ADD_DESCR; -typedef struct -{ +typedef struct { BT_HDR hdr; UINT16 attr_id; UINT16 len; BOOLEAN need_confirm; UINT8 value[BTA_GATT_MAX_ATTR_LEN]; -}tBTA_GATTS_API_INDICATION; +} tBTA_GATTS_API_INDICATION; -typedef struct -{ +typedef struct { BT_HDR hdr; UINT32 trans_id; tBTA_GATT_STATUS status; tBTA_GATTS_RSP *p_rsp; -}tBTA_GATTS_API_RSP; +} tBTA_GATTS_API_RSP; -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_GATT_TRANSPORT transport; -}tBTA_GATTS_API_START; +} tBTA_GATTS_API_START; -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR remote_bda; tBTA_GATTS_IF server_if; BOOLEAN is_direct; tBTA_GATT_TRANSPORT transport; -}tBTA_GATTS_API_OPEN; +} tBTA_GATTS_API_OPEN; typedef tBTA_GATTS_API_OPEN tBTA_GATTS_API_CANCEL_OPEN; -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR_PTR remote_bda; tBTA_GATTS_IF server_if; BOOLEAN start; } tBTA_GATTS_API_LISTEN; -typedef union -{ +typedef union { BT_HDR hdr; tBTA_GATTS_API_REG api_reg; tBTA_GATTS_API_DEREG api_dereg; @@ -178,17 +165,15 @@ typedef union } tBTA_GATTS_DATA; /* application registration control block */ -typedef struct -{ +typedef struct { BOOLEAN in_use; tBT_UUID app_uuid; tBTA_GATTS_CBACK *p_cback; tBTA_GATTS_IF gatt_if; -}tBTA_GATTS_RCB; +} tBTA_GATTS_RCB; /* service registration control block */ -typedef struct -{ +typedef struct { tBT_UUID service_uuid; /* service UUID */ UINT16 service_id; /* service handle */ UINT8 inst_num; /* instance ID */ @@ -196,16 +181,15 @@ typedef struct UINT8 idx; /* self index of serviec CB */ BOOLEAN in_use; -}tBTA_GATTS_SRVC_CB; +} tBTA_GATTS_SRVC_CB; /* GATT server control block */ -typedef struct -{ +typedef struct { BOOLEAN enabled; tBTA_GATTS_RCB rcb[BTA_GATTS_MAX_APP_NUM]; tBTA_GATTS_SRVC_CB srvc_cb[BTA_GATTS_MAX_SRVC_NUM]; -}tBTA_GATTS_CB; +} tBTA_GATTS_CB; @@ -218,7 +202,7 @@ typedef struct extern tBTA_GATTS_CB bta_gatts_cb; #else extern tBTA_GATTS_CB *bta_gatts_cb_ptr; - #define bta_gatts_cb (*bta_gatts_cb_ptr) +#define bta_gatts_cb (*bta_gatts_cb_ptr) #endif /***************************************************************************** @@ -231,29 +215,29 @@ extern void bta_gatts_api_enable(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_data); extern void bta_gatts_register(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg); extern void bta_gatts_start_if(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg); extern void bta_gatts_deregister(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg); -extern void bta_gatts_create_srvc(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg); -extern void bta_gatts_add_include_srvc(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p_msg); -extern void bta_gatts_add_char(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p_msg); -extern void bta_gatts_add_char_descr(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p_msg); -extern void bta_gatts_delete_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p_msg); -extern void bta_gatts_start_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p_msg); -extern void bta_gatts_stop_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p_msg); +extern void bta_gatts_create_srvc(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg); +extern void bta_gatts_add_include_srvc(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA *p_msg); +extern void bta_gatts_add_char(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA *p_msg); +extern void bta_gatts_add_char_descr(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA *p_msg); +extern void bta_gatts_delete_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA *p_msg); +extern void bta_gatts_start_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA *p_msg); +extern void bta_gatts_stop_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA *p_msg); -extern void bta_gatts_send_rsp(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg); -extern void bta_gatts_indicate_handle (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg); +extern void bta_gatts_send_rsp(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg); +extern void bta_gatts_indicate_handle (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg); -extern void bta_gatts_open (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg); -extern void bta_gatts_cancel_open (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg); -extern void bta_gatts_close (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg); -extern void bta_gatts_listen(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg); +extern void bta_gatts_open (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg); +extern void bta_gatts_cancel_open (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg); +extern void bta_gatts_close (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg); +extern void bta_gatts_listen(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg); extern BOOLEAN bta_gatts_uuid_compare(tBT_UUID tar, tBT_UUID src); extern tBTA_GATTS_RCB *bta_gatts_find_app_rcb_by_app_if(tBTA_GATTS_IF server_if); extern UINT8 bta_gatts_find_app_rcb_idx_by_app_if(tBTA_GATTS_CB *p_cb, tBTA_GATTS_IF server_if); extern UINT8 bta_gatts_alloc_srvc_cb(tBTA_GATTS_CB *p_cb, UINT8 rcb_idx); -extern tBTA_GATTS_SRVC_CB * bta_gatts_find_srvc_cb_by_srvc_id(tBTA_GATTS_CB *p_cb, UINT16 service_id); -extern tBTA_GATTS_SRVC_CB * bta_gatts_find_srvc_cb_by_attr_id(tBTA_GATTS_CB *p_cb, UINT16 attr_id); +extern tBTA_GATTS_SRVC_CB *bta_gatts_find_srvc_cb_by_srvc_id(tBTA_GATTS_CB *p_cb, UINT16 service_id); +extern tBTA_GATTS_SRVC_CB *bta_gatts_find_srvc_cb_by_attr_id(tBTA_GATTS_CB *p_cb, UINT16 attr_id); #endif /* BTA_GATTS_INT_H */ diff --git a/components/bt/bluedroid/bta/include/bta_hh_api.h b/components/bt/bluedroid/bta/include/bta_hh_api.h index d43e492b61..d6b3174042 100644 --- a/components/bt/bluedroid/bta/include/bta_hh_api.h +++ b/components/bt/bluedroid/bta/include/bta_hh_api.h @@ -93,8 +93,7 @@ typedef UINT16 tBTA_HH_EVT; #define BTA_HH_PROTO_UNKNOWN (0xff) typedef UINT8 tBTA_HH_PROTO_MODE; -enum -{ +enum { BTA_HH_KEYBD_RPT_ID = 1, BTA_HH_MOUSE_RPT_ID }; @@ -114,8 +113,7 @@ typedef UINT8 tBTA_HH_BOOT_RPT_ID; #define BTA_HH_DEVT_OTHER 0x80 typedef UINT8 tBTA_HH_DEVT; -enum -{ +enum { BTA_HH_OK, BTA_HH_HS_HID_NOT_READY, /* handshake error : device not ready */ BTA_HH_HS_INVALID_RPT_ID, /* handshake error : invalid report ID */ @@ -149,22 +147,19 @@ typedef UINT8 tBTA_HH_STATUS; typedef UINT16 tBTA_HH_ATTR_MASK; /* supported type of device and corresponding application ID */ -typedef struct -{ +typedef struct { tBTA_HH_DEVT tod; /* type of device */ UINT8 app_id; /* corresponding application ID */ -}tBTA_HH_SPT_TOD; +} tBTA_HH_SPT_TOD; /* configuration struct */ -typedef struct -{ +typedef struct { UINT8 max_devt_spt; /* max number of types of devices spt */ tBTA_HH_SPT_TOD *p_devt_list; /* supported types of device list */ UINT16 sdp_db_size; -}tBTA_HH_CFG; +} tBTA_HH_CFG; -enum -{ +enum { BTA_HH_RPTT_RESRV, /* reserved */ BTA_HH_RPTT_INPUT, /* input report */ BTA_HH_RPTT_OUTPUT, /* output report */ @@ -174,8 +169,7 @@ typedef UINT8 tBTA_HH_RPT_TYPE; /* HID_CONTROL operation code used in BTA_HhSendCtrl() */ -enum -{ +enum { BTA_HH_CTRL_NOP = 0 + HID_PAR_CONTROL_NOP ,/* mapping from BTE */ BTA_HH_CTRL_HARD_RESET, /* hard reset */ BTA_HH_CTRL_SOFT_RESET, /* soft reset */ @@ -194,8 +188,7 @@ typedef tHID_DEV_DSCP_INFO tBTA_HH_DEV_DESCR; /* report descriptor information */ -typedef struct -{ +typedef struct { UINT16 vendor_id; /* vendor ID */ UINT16 product_id; /* product ID */ UINT16 version; /* version */ @@ -209,11 +202,10 @@ typedef struct UINT8 flag; #endif tBTA_HH_DEV_DESCR descriptor; -}tBTA_HH_DEV_DSCP_INFO; +} tBTA_HH_DEV_DSCP_INFO; /* callback event data for BTA_HH_OPEN_EVT */ -typedef struct -{ +typedef struct { BD_ADDR bda; /* HID device bd address */ tBTA_HH_STATUS status; /* operation status */ UINT8 handle; /* device handle */ @@ -227,14 +219,12 @@ typedef struct typedef tBTA_HH_CONN tBTA_HH_DEV_INFO; /* callback event data */ -typedef struct -{ +typedef struct { tBTA_HH_STATUS status; /* operation status */ UINT8 handle; /* device handle */ } tBTA_HH_CBDATA; -enum -{ +enum { BTA_HH_MOD_CTRL_KEY, BTA_HH_MOD_SHFT_KEY, BTA_HH_MOD_ALT_KEY, @@ -243,55 +233,48 @@ enum }; /* parsed boot mode keyboard report */ -typedef struct -{ +typedef struct { UINT8 this_char[6]; /* virtual key code */ BOOLEAN mod_key[BTA_HH_MOD_MAX_KEY]; - /* ctrl, shift, Alt, GUI */ - /* modifier key: is Shift key pressed */ - /* modifier key: is Ctrl key pressed */ - /* modifier key: is Alt key pressed */ - /* modifier key: GUI up/down */ + /* ctrl, shift, Alt, GUI */ + /* modifier key: is Shift key pressed */ + /* modifier key: is Ctrl key pressed */ + /* modifier key: is Alt key pressed */ + /* modifier key: GUI up/down */ BOOLEAN caps_lock; /* is caps locked */ BOOLEAN num_lock; /* is Num key pressed */ } tBTA_HH_KEYBD_RPT; /* parsed boot mode mouse report */ -typedef struct -{ +typedef struct { UINT8 mouse_button; /* mouse button is clicked */ INT8 delta_x; /* displacement x */ INT8 delta_y; /* displacement y */ -}tBTA_HH_MICE_RPT; +} tBTA_HH_MICE_RPT; /* parsed Boot report */ -typedef struct -{ +typedef struct { tBTA_HH_BOOT_RPT_ID dev_type; /* type of device report */ - union - { + union { tBTA_HH_KEYBD_RPT keybd_rpt; /* keyboard report */ tBTA_HH_MICE_RPT mice_rpt; /* mouse report */ } data_rpt; } tBTA_HH_BOOT_RPT; /* handshake data */ -typedef struct -{ +typedef struct { tBTA_HH_STATUS status; /* handshake status */ UINT8 handle; /* device handle */ - union - { + union { tBTA_HH_PROTO_MODE proto_mode; /* GET_PROTO_EVT :protocol mode */ BT_HDR *p_rpt_data; /* GET_RPT_EVT : report data */ UINT8 idle_rate; /* GET_IDLE_EVT : idle rate */ } rsp_data; -}tBTA_HH_HSDATA; +} tBTA_HH_HSDATA; /* union of data associated with HD callback */ -typedef union -{ +typedef union { tBTA_HH_DEV_INFO dev_info; /* BTA_HH_ADD_DEV_EVT, BTA_HH_RMV_DEV_EVT */ tBTA_HH_CONN conn; /* BTA_HH_OPEN_EVT */ tBTA_HH_CBDATA dev_status; /* BTA_HH_CLOSE_EVT, diff --git a/components/bt/bluedroid/bta/include/bta_hh_co.h b/components/bt/bluedroid/bta/include/bta_hh_co.h index 09cb565ea6..9cbb155025 100644 --- a/components/bt/bluedroid/bta/include/bta_hh_co.h +++ b/components/bt/bluedroid/bta/include/bta_hh_co.h @@ -26,14 +26,13 @@ #include "bta_hh_api.h" -typedef struct -{ +typedef struct { UINT16 rpt_uuid; UINT8 rpt_id; tBTA_HH_RPT_TYPE rpt_type; UINT8 inst_id; UINT8 prop; -}tBTA_HH_RPT_CACHE_ENTRY; +} tBTA_HH_RPT_CACHE_ENTRY; /******************************************************************************* ** @@ -94,8 +93,8 @@ extern void bta_hh_co_close(UINT8 dev_handle, UINT8 app_id); ** *******************************************************************************/ extern void bta_hh_le_co_rpt_info(BD_ADDR remote_bda, - tBTA_HH_RPT_CACHE_ENTRY *p_entry, - UINT8 app_id); + tBTA_HH_RPT_CACHE_ENTRY *p_entry, + UINT8 app_id); /******************************************************************************* ** @@ -113,8 +112,8 @@ extern void bta_hh_le_co_rpt_info(BD_ADDR remote_bda, ** *******************************************************************************/ extern tBTA_HH_RPT_CACHE_ENTRY *bta_hh_le_co_cache_load (BD_ADDR remote_bda, - UINT8 *p_num_rpt, - UINT8 app_id); + UINT8 *p_num_rpt, + UINT8 app_id); /******************************************************************************* ** diff --git a/components/bt/bluedroid/bta/include/bta_sdp_api.h b/components/bt/bluedroid/bta/include/bta_sdp_api.h old mode 100755 new mode 100644 index 11a7edc9f8..c2df4bb957 --- a/components/bt/bluedroid/bta/include/bta_sdp_api.h +++ b/components/bt/bluedroid/bta/include/bta_sdp_api.h @@ -51,8 +51,7 @@ typedef UINT8 tBTA_SDP_STATUS; typedef UINT16 tBTA_SDP_EVT; /* data associated with BTA_SDP_DISCOVERY_COMP_EVT */ -typedef struct -{ +typedef struct { tBTA_SDP_STATUS status; BD_ADDR remote_addr; tBT_UUID uuid; @@ -60,18 +59,16 @@ typedef struct bluetooth_sdp_record records[BTA_SDP_MAX_RECORDS]; } tBTA_SDP_SEARCH_COMP; -typedef union -{ +typedef union { tBTA_SDP_STATUS status; /* BTA_SDP_SEARCH_EVT */ tBTA_SDP_SEARCH_COMP sdp_search_comp; /* BTA_SDP_SEARCH_COMP_EVT */ } tBTA_SDP; /* SDP DM Interface callback */ -typedef void (tBTA_SDP_DM_CBACK)(tBTA_SDP_EVT event, tBTA_SDP *p_data, void * user_data); +typedef void (tBTA_SDP_DM_CBACK)(tBTA_SDP_EVT event, tBTA_SDP *p_data, void *user_data); /* MCE configuration structure */ -typedef struct -{ +typedef struct { UINT16 sdp_db_size; /* The size of p_sdp_db */ tSDP_DISCOVERY_DB *p_sdp_db; /* The data buffer to keep SDP database */ } tBTA_SDP_CFG; @@ -108,7 +105,7 @@ extern tBTA_SDP_STATUS BTA_SdpEnable(tBTA_SDP_DM_CBACK *p_cback); ** BTA_SDP_FAIL if internal failure. ** *******************************************************************************/ -extern tBTA_SDP_STATUS BTA_SdpSearch(BD_ADDR bd_addr,tSDP_UUID *uuid); +extern tBTA_SDP_STATUS BTA_SdpSearch(BD_ADDR bd_addr, tSDP_UUID *uuid); /******************************************************************************* ** @@ -122,7 +119,7 @@ extern tBTA_SDP_STATUS BTA_SdpSearch(BD_ADDR bd_addr,tSDP_UUID *uuid); ** BTA_SDP_FAILURE, otherwise. ** *******************************************************************************/ -extern tBTA_SDP_STATUS BTA_SdpCreateRecordByUser(void* user_data); +extern tBTA_SDP_STATUS BTA_SdpCreateRecordByUser(void *user_data); /******************************************************************************* ** @@ -136,7 +133,7 @@ extern tBTA_SDP_STATUS BTA_SdpCreateRecordByUser(void* user_data); ** BTA_SDP_FAILURE, otherwise. ** *******************************************************************************/ -extern tBTA_SDP_STATUS BTA_SdpRemoveRecordByUser(void* user_data); +extern tBTA_SDP_STATUS BTA_SdpRemoveRecordByUser(void *user_data); #ifdef __cplusplus } diff --git a/components/bt/bluedroid/bta/include/bta_sys.h b/components/bt/bluedroid/bta/include/bta_sys.h index 8eacd3a9cf..808edbb4c5 100644 --- a/components/bt/bluedroid/bta/include/bta_sys.h +++ b/components/bt/bluedroid/bta/include/bta_sys.h @@ -42,8 +42,7 @@ typedef void (tBTA_SYS_DISABLE)(void); /* HW modules */ -enum -{ +enum { BTA_SYS_HW_BLUETOOTH, BTA_SYS_HW_RT, @@ -137,7 +136,7 @@ typedef UINT8 tBTA_SYS_CONN_STATUS; typedef UINT8 tBTA_SYS_PREF_ROLES; /* conn callback for role / low power manager*/ -typedef void (tBTA_SYS_CONN_CBACK)(tBTA_SYS_CONN_STATUS status,UINT8 id, UINT8 app_id, BD_ADDR peer_addr); +typedef void (tBTA_SYS_CONN_CBACK)(tBTA_SYS_CONN_STATUS status, UINT8 id, UINT8 app_id, BD_ADDR peer_addr); /* conn callback for role / low power manager*/ typedef void (tBTA_SYS_SSR_CFG_CBACK)(UINT8 id, UINT8 app_id, UINT16 latency, UINT16 tout); @@ -148,15 +147,13 @@ typedef void (tBTA_SYS_EIR_CBACK)(UINT16 uuid16, BOOLEAN adding); #endif /* registration structure */ -typedef struct -{ +typedef struct { tBTA_SYS_EVT_HDLR *evt_hdlr; tBTA_SYS_DISABLE *disable; } tBTA_SYS_REG; /* data type to send events to BTA SYS HW manager */ -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_SYS_HW_MODULE hw_module; } tBTA_SYS_HW_MSG; @@ -180,8 +177,7 @@ extern UINT8 appl_trace_level; *****************************************************************************/ /* events sent to SYS HW manager - must be kept synchronized with tables in bta_sys_main.c */ -enum -{ +enum { /* device manager local device API events */ BTA_SYS_API_ENABLE_EVT = BTA_SYS_EVT_START(BTA_ID_SYS), BTA_SYS_EVT_ENABLED_EVT, @@ -196,8 +192,7 @@ enum /* SYS HW status events - returned by SYS HW manager to other modules. */ -enum -{ +enum { BTA_SYS_HW_OFF_EVT, BTA_SYS_HW_ON_EVT, BTA_SYS_HW_STARTING_EVT, @@ -236,11 +231,11 @@ extern void bta_sys_hw_register( tBTA_SYS_HW_MODULE module, tBTA_SYS_HW_CBACK *c extern void bta_sys_hw_unregister( tBTA_SYS_HW_MODULE module ); -extern void bta_sys_rm_register(tBTA_SYS_CONN_CBACK * p_cback); -extern void bta_sys_pm_register(tBTA_SYS_CONN_CBACK * p_cback); +extern void bta_sys_rm_register(tBTA_SYS_CONN_CBACK *p_cback); +extern void bta_sys_pm_register(tBTA_SYS_CONN_CBACK *p_cback); -extern void bta_sys_policy_register(tBTA_SYS_CONN_CBACK * p_cback); -extern void bta_sys_sco_register(tBTA_SYS_CONN_CBACK * p_cback); +extern void bta_sys_policy_register(tBTA_SYS_CONN_CBACK *p_cback); +extern void bta_sys_sco_register(tBTA_SYS_CONN_CBACK *p_cback); extern void bta_sys_conn_open(UINT8 id, UINT8 app_id, BD_ADDR peer_addr); @@ -255,17 +250,17 @@ extern void bta_sys_idle(UINT8 id, UINT8 app_id, BD_ADDR peer_addr); extern void bta_sys_busy(UINT8 id, UINT8 app_id, BD_ADDR peer_addr); #if (BTM_SSR_INCLUDED == TRUE) -extern void bta_sys_ssr_cfg_register(tBTA_SYS_SSR_CFG_CBACK * p_cback); +extern void bta_sys_ssr_cfg_register(tBTA_SYS_SSR_CFG_CBACK *p_cback); extern void bta_sys_chg_ssr_config (UINT8 id, UINT8 app_id, UINT16 max_latency, UINT16 min_tout); #endif -extern void bta_sys_role_chg_register(tBTA_SYS_CONN_CBACK * p_cback); +extern void bta_sys_role_chg_register(tBTA_SYS_CONN_CBACK *p_cback); extern void bta_sys_notify_role_chg(BD_ADDR_PTR p_bda, UINT8 new_role, UINT8 hci_status); extern void bta_sys_collision_register(UINT8 bta_id, tBTA_SYS_CONN_CBACK *p_cback); extern void bta_sys_notify_collision (BD_ADDR_PTR p_bda); #if (BTA_EIR_CANNED_UUID_LIST != TRUE) -extern void bta_sys_eir_register(tBTA_SYS_EIR_CBACK * p_cback); +extern void bta_sys_eir_register(tBTA_SYS_EIR_CBACK *p_cback); extern void bta_sys_add_uuid(UINT16 uuid16); extern void bta_sys_remove_uuid(UINT16 uuid16); #else diff --git a/components/bt/bluedroid/bta/include/utl.h b/components/bt/bluedroid/bta/include/utl.h old mode 100755 new mode 100644 index efae0678bc..39dbe297d9 --- a/components/bt/bluedroid/bta/include/utl.h +++ b/components/bt/bluedroid/bta/include/utl.h @@ -42,8 +42,7 @@ *****************************************************************************/ /** for utl_set_device_class() **/ -typedef struct -{ +typedef struct { UINT8 minor; UINT8 major; UINT16 service; diff --git a/components/bt/bluedroid/bta/sdp/bta_sdp.c b/components/bt/bluedroid/bta/sdp/bta_sdp.c old mode 100755 new mode 100644 index 88a68a5f9a..9d6c9b0a26 --- a/components/bt/bluedroid/bta/sdp/bta_sdp.c +++ b/components/bt/bluedroid/bta/sdp/bta_sdp.c @@ -44,8 +44,7 @@ tBTA_SDP_CB bta_sdp_cb; typedef void (*tBTA_SDP_ACTION)(tBTA_SDP_MSG *p_data); /* action function list */ -const tBTA_SDP_ACTION bta_sdp_action[] = -{ +const tBTA_SDP_ACTION bta_sdp_action[] = { bta_sdp_enable, /* BTA_SDP_API_ENABLE_EVT */ bta_sdp_search, /* BTA_SDP_API_SEARCH_EVT */ bta_sdp_create_record, /* BTA_SDP_API_CREATE_RECORD_USER_EVT */ @@ -61,17 +60,18 @@ const tBTA_SDP_ACTION bta_sdp_action[] = *******************************************************************************/ BOOLEAN bta_sdp_sm_execute(BT_HDR *p_msg) { - if(p_msg == NULL) return FALSE; + if (p_msg == NULL) { + return FALSE; + } BOOLEAN ret = FALSE; UINT16 action = (p_msg->event & 0x00ff); /* execute action functions */ - if(action < BTA_SDP_NUM_ACTIONS) - { - (*bta_sdp_action[action])((tBTA_SDP_MSG*)p_msg); + if (action < BTA_SDP_NUM_ACTIONS) { + (*bta_sdp_action[action])((tBTA_SDP_MSG *)p_msg); ret = TRUE; } - return(ret); + return (ret); } diff --git a/components/bt/bluedroid/bta/sdp/bta_sdp_act.c b/components/bt/bluedroid/bta/sdp/bta_sdp_act.c old mode 100755 new mode 100644 index ee337343c7..944a3ee213 --- a/components/bt/bluedroid/bta/sdp/bta_sdp_act.c +++ b/components/bt/bluedroid/bta/sdp/bta_sdp_act.c @@ -44,17 +44,23 @@ *****************************************************************************/ static const uint8_t UUID_OBEX_OBJECT_PUSH[] = {0x00, 0x00, 0x11, 0x05, 0x00, 0x00, 0x10, 0x00, - 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB}; + 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB + }; static const uint8_t UUID_PBAP_PSE[] = {0x00, 0x00, 0x11, 0x2F, 0x00, 0x00, 0x10, 0x00, - 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB}; + 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB + }; static const uint8_t UUID_MAP_MAS[] = {0x00, 0x00, 0x11, 0x32, 0x00, 0x00, 0x10, 0x00, - 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB}; + 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB + }; static const uint8_t UUID_MAP_MNS[] = {0x00, 0x00, 0x11, 0x33, 0x00, 0x00, 0x10, 0x00, - 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB}; + 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB + }; static const uint8_t UUID_SPP[] = {0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x10, 0x00, - 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB}; + 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB + }; static const uint8_t UUID_SAP[] = {0x00, 0x00, 0x11, 0x2D, 0x00, 0x00, 0x10, 0x00, - 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB}; + 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB + }; // TODO: // Both the fact that the UUIDs are declared in multiple places, plus the fact // that there is a mess of UUID comparison and shortening methods will have to @@ -64,22 +70,24 @@ static const uint8_t UUID_SAP[] = {0x00, 0x00, 0x11, 0x2D, 0x00, 0x00, 0x10, 0x #define UUID_MAX_LENGTH 16 #define IS_UUID(u1,u2) !memcmp(u1,u2,UUID_MAX_LENGTH) -static inline tBT_UUID shorten_sdp_uuid(const tBT_UUID* u) +static inline tBT_UUID shorten_sdp_uuid(const tBT_UUID *u) { static uint8_t bt_base_uuid[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, - 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB }; + 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB + }; APPL_TRACE_DEBUG("%s() - uuid len:%d\n", __func__, u->len); - if(u->len != 16) + if (u->len != 16) { return *u; + } - if(memcmp(&u->uu.uuid128[4], &bt_base_uuid[4], 12) != 0) + if (memcmp(&u->uu.uuid128[4], &bt_base_uuid[4], 12) != 0) { return *u; + } tBT_UUID su; memset(&su, 0, sizeof(su)); - if(u->uu.uuid128[0] == 0 && u->uu.uuid128[1] == 0) - { + if (u->uu.uuid128[0] == 0 && u->uu.uuid128[1] == 0) { su.len = 2; uint16_t u16; memcpy(&u16, &u->uu.uuid128[2], sizeof(u16)); @@ -106,29 +114,24 @@ static void bta_create_mns_sdp_record(bluetooth_sdp_record *record, tSDP_DISC_RE record->mns.hdr.profile_version = 0; record->mns.supported_features = 0x0000001F; //default value if not found - if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_MAP_SUPPORTED_FEATURES)) != NULL) - { + if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_MAP_SUPPORTED_FEATURES)) != NULL) { record->mns.supported_features = p_attr->attr_value.v.u32; } - if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) != NULL) - { + if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) != NULL) { record->mns.hdr.service_name_length = SDP_DISC_ATTR_LEN(p_attr->attr_len_type); record->mns.hdr.service_name = (char *)p_attr->attr_value.v.array; } - if (SDP_FindProfileVersionInRec(p_rec, UUID_SERVCLASS_MAP_PROFILE, &pversion)) - { + if (SDP_FindProfileVersionInRec(p_rec, UUID_SERVCLASS_MAP_PROFILE, &pversion)) { record->mns.hdr.profile_version = pversion; } - if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe)) - { + if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe)) { record->mns.hdr.rfcomm_channel_number = pe.params[0]; } - if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_GOEP_L2CAP_PSM)) != NULL) - { + if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_GOEP_L2CAP_PSM)) != NULL) { record->mns.hdr.l2cap_psm = p_attr->attr_value.v.u16; } } @@ -149,39 +152,32 @@ static void bta_create_mas_sdp_record(bluetooth_sdp_record *record, tSDP_DISC_RE record->mas.supported_features = 0x0000001F; record->mas.supported_message_types = 0; - if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_MAS_INSTANCE_ID)) != NULL) - { + if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_MAS_INSTANCE_ID)) != NULL) { record->mas.mas_instance_id = p_attr->attr_value.v.u8; } - if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SUPPORTED_MSG_TYPE)) != NULL) - { + if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SUPPORTED_MSG_TYPE)) != NULL) { record->mas.supported_message_types = p_attr->attr_value.v.u8; } - if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_MAP_SUPPORTED_FEATURES)) != NULL) - { + if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_MAP_SUPPORTED_FEATURES)) != NULL) { record->mas.supported_features = p_attr->attr_value.v.u32; } - if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) != NULL) - { + if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) != NULL) { record->mas.hdr.service_name_length = SDP_DISC_ATTR_LEN(p_attr->attr_len_type); record->mas.hdr.service_name = (char *)p_attr->attr_value.v.array; } - if (SDP_FindProfileVersionInRec(p_rec, UUID_SERVCLASS_MAP_PROFILE, &pversion)) - { + if (SDP_FindProfileVersionInRec(p_rec, UUID_SERVCLASS_MAP_PROFILE, &pversion)) { record->mas.hdr.profile_version = pversion; } - if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe)) - { + if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe)) { record->mas.hdr.rfcomm_channel_number = pe.params[0]; } - if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_GOEP_L2CAP_PSM)) != NULL) - { + if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_GOEP_L2CAP_PSM)) != NULL) { record->mas.hdr.l2cap_psm = p_attr->attr_value.v.u16; } } @@ -201,33 +197,27 @@ static void bta_create_pse_sdp_record(bluetooth_sdp_record *record, tSDP_DISC_RE record->pse.supported_features = 0x00000003; record->pse.supported_repositories = 0; - if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SUPPORTED_REPOSITORIES)) != NULL) - { + if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SUPPORTED_REPOSITORIES)) != NULL) { record->pse.supported_repositories = p_attr->attr_value.v.u8; } - if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_PBAP_SUPPORTED_FEATURES)) != NULL) - { + if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_PBAP_SUPPORTED_FEATURES)) != NULL) { record->pse.supported_features = p_attr->attr_value.v.u32; } - if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) != NULL) - { + if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) != NULL) { record->pse.hdr.service_name_length = SDP_DISC_ATTR_LEN(p_attr->attr_len_type); record->pse.hdr.service_name = (char *)p_attr->attr_value.v.array; } - if (SDP_FindProfileVersionInRec(p_rec, UUID_SERVCLASS_PHONE_ACCESS, &pversion)) - { + if (SDP_FindProfileVersionInRec(p_rec, UUID_SERVCLASS_PHONE_ACCESS, &pversion)) { record->pse.hdr.profile_version = pversion; } - if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe)) - { + if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe)) { record->pse.hdr.rfcomm_channel_number = pe.params[0]; } - if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_GOEP_L2CAP_PSM)) != NULL) - { + if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_GOEP_L2CAP_PSM)) != NULL) { record->pse.hdr.l2cap_psm = p_attr->attr_value.v.u16; } } @@ -246,48 +236,41 @@ static void bta_create_ops_sdp_record(bluetooth_sdp_record *record, tSDP_DISC_RE record->ops.hdr.profile_version = 0; record->ops.supported_formats_list_len = 0; - if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) != NULL) - { + if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) != NULL) { record->ops.hdr.service_name_length = SDP_DISC_ATTR_LEN(p_attr->attr_len_type); record->ops.hdr.service_name = (char *)p_attr->attr_value.v.array; } - if (SDP_FindProfileVersionInRec(p_rec, UUID_SERVCLASS_OBEX_OBJECT_PUSH, &pversion)) - { + if (SDP_FindProfileVersionInRec(p_rec, UUID_SERVCLASS_OBEX_OBJECT_PUSH, &pversion)) { record->ops.hdr.profile_version = pversion; } - if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe)) - { + if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe)) { record->ops.hdr.rfcomm_channel_number = pe.params[0]; } - if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_GOEP_L2CAP_PSM)) != NULL) - { + if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_GOEP_L2CAP_PSM)) != NULL) { record->ops.hdr.l2cap_psm = p_attr->attr_value.v.u16; } - if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SUPPORTED_FORMATS_LIST)) != NULL) - { + if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SUPPORTED_FORMATS_LIST)) != NULL) { /* Safety check - each entry should itself be a sequence */ if (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) != DATA_ELE_SEQ_DESC_TYPE) { record->ops.supported_formats_list_len = 0; APPL_TRACE_ERROR("%s() - supported_formats_list - wrong attribute length/type:" - " 0x%02x - expected 0x06", __func__, p_attr->attr_len_type); + " 0x%02x - expected 0x06", __func__, p_attr->attr_len_type); } else { int count = 0; /* 1 byte for type/length 1 byte for value */ - record->ops.supported_formats_list_len = SDP_DISC_ATTR_LEN(p_attr->attr_len_type)/2; + record->ops.supported_formats_list_len = SDP_DISC_ATTR_LEN(p_attr->attr_len_type) / 2; /* Extract each value into */ for (p_sattr = p_attr->attr_value.v.p_sub_attr; - p_sattr != NULL; p_sattr = p_sattr->p_next_attr) - { + p_sattr != NULL; p_sattr = p_sattr->p_next_attr) { if ((SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) == UINT_DESC_TYPE) - && (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == 1)) - { + && (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == 1)) { if (count == sizeof(record->ops.supported_formats_list)) { APPL_TRACE_ERROR("%s() - supported_formats_list - count overflow - " - "too many sub attributes!!\n", __func__); + "too many sub attributes!!\n", __func__); /* If you hit this, new formats have been added, * update SDP_OPP_SUPPORTED_FORMATS_MAX_LENGTH */ break; @@ -296,16 +279,16 @@ static void bta_create_ops_sdp_record(bluetooth_sdp_record *record, tSDP_DISC_RE count++; } else { APPL_TRACE_ERROR("%s() - supported_formats_list - wrong sub attribute " - "length/type: 0x%02x - expected 0x80", __func__, - p_sattr->attr_len_type); + "length/type: 0x%02x - expected 0x80", __func__, + p_sattr->attr_len_type); break; } } if (record->ops.supported_formats_list_len != count) { APPL_TRACE_WARNING("%s() - supported_formats_list - Length of attribute different " - "from the actual number of sub-attributes in the sequence " - "att-length: %d - number of elements: %d\n", __func__, - record->ops.supported_formats_list_len , count); + "from the actual number of sub-attributes in the sequence " + "att-length: %d - number of elements: %d\n", __func__, + record->ops.supported_formats_list_len , count); } record->ops.supported_formats_list_len = count; @@ -327,19 +310,16 @@ static void bta_create_sap_sdp_record(bluetooth_sdp_record *record, tSDP_DISC_RE record->sap.hdr.l2cap_psm = -1; record->sap.hdr.profile_version = 0; - if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) != NULL) - { + if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) != NULL) { record->sap.hdr.service_name_length = SDP_DISC_ATTR_LEN(p_attr->attr_len_type); record->sap.hdr.service_name = (char *)p_attr->attr_value.v.array; } - if (SDP_FindProfileVersionInRec(p_rec, UUID_SERVCLASS_SAP, &pversion)) - { + if (SDP_FindProfileVersionInRec(p_rec, UUID_SERVCLASS_SAP, &pversion)) { record->sap.hdr.profile_version = pversion; } - if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe)) - { + if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe)) { record->sap.hdr.rfcomm_channel_number = pe.params[0]; } } @@ -357,15 +337,13 @@ static void bta_create_raw_sdp_record(bluetooth_sdp_record *record, tSDP_DISC_RE record->hdr.profile_version = -1; /* Try to extract a service name */ - if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) != NULL) - { + if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) != NULL) { record->pse.hdr.service_name_length = SDP_DISC_ATTR_LEN(p_attr->attr_len_type); record->pse.hdr.service_name = (char *)p_attr->attr_value.v.array; } /* Try to extract an RFCOMM channel */ - if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe)) - { + if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe)) { record->pse.hdr.rfcomm_channel_number = pe.params[0]; } record->hdr.user1_ptr_len = p_bta_sdp_cfg->p_sdp_db->raw_size; @@ -382,7 +360,7 @@ static void bta_create_raw_sdp_record(bluetooth_sdp_record *record, tSDP_DISC_RE ** Returns void ** *******************************************************************************/ -static void bta_sdp_search_cback(UINT16 result, void * user_data) +static void bta_sdp_search_cback(UINT16 result, void *user_data) { tSDP_DISC_REC *p_rec = NULL; tBTA_SDP_SEARCH_COMP evt_data = {0}; // We need to zero-initialize @@ -393,33 +371,34 @@ static void bta_sdp_search_cback(UINT16 result, void * user_data) bta_sdp_cb.sdp_active = BTA_SDP_ACTIVE_NONE; - if (bta_sdp_cb.p_dm_cback == NULL) return; + if (bta_sdp_cb.p_dm_cback == NULL) { + return; + } bdcpy(evt_data.remote_addr, bta_sdp_cb.remote_addr); - tBT_UUID *uuid = (tBT_UUID*)user_data; + tBT_UUID *uuid = (tBT_UUID *)user_data; memcpy(&evt_data.uuid, uuid, sizeof(tBT_UUID)); su = shorten_sdp_uuid(uuid); - if (result == SDP_SUCCESS || result == SDP_DB_FULL) - { + if (result == SDP_SUCCESS || result == SDP_DB_FULL) { do { p_rec = SDP_FindServiceUUIDInDb(p_bta_sdp_cfg->p_sdp_db, &su, p_rec); /* generate the matching record data pointer */ - if(p_rec != NULL){ + if (p_rec != NULL) { status = BTA_SDP_SUCCESS; - if (IS_UUID(UUID_MAP_MAS,uuid->uu.uuid128)) { + if (IS_UUID(UUID_MAP_MAS, uuid->uu.uuid128)) { APPL_TRACE_DEBUG("%s() - found MAP (MAS) uuid\n", __func__); bta_create_mas_sdp_record(&evt_data.records[count], p_rec); - } else if (IS_UUID(UUID_MAP_MNS,uuid->uu.uuid128)) { + } else if (IS_UUID(UUID_MAP_MNS, uuid->uu.uuid128)) { APPL_TRACE_DEBUG("%s() - found MAP (MNS) uuid\n", __func__); bta_create_mns_sdp_record(&evt_data.records[count], p_rec); - } else if (IS_UUID(UUID_PBAP_PSE,uuid->uu.uuid128)){ + } else if (IS_UUID(UUID_PBAP_PSE, uuid->uu.uuid128)) { APPL_TRACE_DEBUG("%s() - found PBAP (PSE) uuid\n", __func__); bta_create_pse_sdp_record(&evt_data.records[count], p_rec); - } else if (IS_UUID(UUID_OBEX_OBJECT_PUSH,uuid->uu.uuid128)){ + } else if (IS_UUID(UUID_OBEX_OBJECT_PUSH, uuid->uu.uuid128)) { APPL_TRACE_DEBUG("%s() - found Object Push Server (OPS) uuid\n", __func__); bta_create_ops_sdp_record(&evt_data.records[count], p_rec); - } else if (IS_UUID(UUID_SAP,uuid->uu.uuid128)) { + } else if (IS_UUID(UUID_SAP, uuid->uu.uuid128)) { APPL_TRACE_DEBUG("%s() - found SAP uuid\n", __func__); bta_create_sap_sdp_record(&evt_data.records[count], p_rec); } else { @@ -444,7 +423,7 @@ static void bta_sdp_search_cback(UINT16 result, void * user_data) } evt_data.status = status; - bta_sdp_cb.p_dm_cback(BTA_SDP_SEARCH_COMP_EVT, (tBTA_SDP*) &evt_data, (void*)&uuid->uu.uuid128); + bta_sdp_cb.p_dm_cback(BTA_SDP_SEARCH_COMP_EVT, (tBTA_SDP *) &evt_data, (void *)&uuid->uu.uuid128); osi_free(user_data); // We no longer need the user data to track the search } @@ -476,11 +455,10 @@ void bta_sdp_enable(tBTA_SDP_MSG *p_data) *******************************************************************************/ void bta_sdp_search(tBTA_SDP_MSG *p_data) { - int x=0; + int x = 0; // TODO: Leaks!!! but needed as user-data pointer tBT_UUID *bta_sdp_search_uuid = osi_malloc(sizeof(tBT_UUID)); - if(p_data == NULL) - { + if (p_data == NULL) { APPL_TRACE_DEBUG("SDP control block handle is null\n"); return; } @@ -488,11 +466,10 @@ void bta_sdp_search(tBTA_SDP_MSG *p_data) APPL_TRACE_DEBUG("%s in, sdp_active:%d\n", __func__, bta_sdp_cb.sdp_active); - if (bta_sdp_cb.sdp_active != BTA_SDP_ACTIVE_NONE) - { + if (bta_sdp_cb.sdp_active != BTA_SDP_ACTIVE_NONE) { /* SDP is still in progress */ status = BTA_SDP_BUSY; - if(bta_sdp_cb.p_dm_cback) { + if (bta_sdp_cb.p_dm_cback) { tBTA_SDP_SEARCH_COMP result = {0}; result.uuid = p_data->get_search.uuid; bdcpy(result.remote_addr, p_data->get_search.bd_addr); @@ -505,20 +482,19 @@ void bta_sdp_search(tBTA_SDP_MSG *p_data) bta_sdp_cb.sdp_active = BTA_SDP_ACTIVE_YES; bdcpy(bta_sdp_cb.remote_addr, p_data->get_search.bd_addr); /* set the uuid used in the search */ - memcpy(bta_sdp_search_uuid, &(p_data->get_search.uuid),sizeof(tBT_UUID)); + memcpy(bta_sdp_search_uuid, &(p_data->get_search.uuid), sizeof(tBT_UUID)); /* initialize the search for the uuid */ APPL_TRACE_DEBUG("%s init discovery with UUID(len: %d):\n", - __func__, bta_sdp_search_uuid->len); - for(x = 0; xlen;x++){ - APPL_TRACE_DEBUG("%X",bta_sdp_search_uuid->uu.uuid128[x]); + __func__, bta_sdp_search_uuid->len); + for (x = 0; x < bta_sdp_search_uuid->len; x++) { + APPL_TRACE_DEBUG("%X", bta_sdp_search_uuid->uu.uuid128[x]); } SDP_InitDiscoveryDb (p_bta_sdp_cfg->p_sdp_db, p_bta_sdp_cfg->sdp_db_size, 1, - bta_sdp_search_uuid, 0, NULL); + bta_sdp_search_uuid, 0, NULL); if (!SDP_ServiceSearchAttributeRequest2(p_data->get_search.bd_addr, p_bta_sdp_cfg->p_sdp_db, - bta_sdp_search_cback, (void*)bta_sdp_search_uuid)) - { + bta_sdp_search_cback, (void *)bta_sdp_search_uuid)) { bta_sdp_cb.sdp_active = BTA_SDP_ACTIVE_NONE; /* failed to start SDP. report the failure right away */ @@ -547,8 +523,9 @@ void bta_sdp_search(tBTA_SDP_MSG *p_data) void bta_sdp_create_record(tBTA_SDP_MSG *p_data) { APPL_TRACE_DEBUG("%s() event: %d\n", __func__, p_data->record.hdr.event); - if (bta_sdp_cb.p_dm_cback) + if (bta_sdp_cb.p_dm_cback) { bta_sdp_cb.p_dm_cback(BTA_SDP_CREATE_RECORD_USER_EVT, NULL, p_data->record.user_data); + } } /******************************************************************************* @@ -563,6 +540,7 @@ void bta_sdp_create_record(tBTA_SDP_MSG *p_data) void bta_sdp_remove_record(tBTA_SDP_MSG *p_data) { APPL_TRACE_DEBUG("%s() event: %d\n", __func__, p_data->record.hdr.event); - if (bta_sdp_cb.p_dm_cback) + if (bta_sdp_cb.p_dm_cback) { bta_sdp_cb.p_dm_cback(BTA_SDP_REMOVE_RECORD_USER_EVT, NULL, p_data->record.user_data); + } } diff --git a/components/bt/bluedroid/bta/sdp/bta_sdp_api.c b/components/bt/bluedroid/bta/sdp/bta_sdp_api.c old mode 100755 new mode 100644 index e6a640f70d..e69451197e --- a/components/bt/bluedroid/bta/sdp/bta_sdp_api.c +++ b/components/bt/bluedroid/bta/sdp/bta_sdp_api.c @@ -35,8 +35,7 @@ ** Constants *****************************************************************************/ -static const tBTA_SYS_REG bta_sdp_reg = -{ +static const tBTA_SYS_REG bta_sdp_reg = { bta_sdp_sm_execute, NULL }; @@ -61,23 +60,21 @@ tBTA_SDP_STATUS BTA_SdpEnable(tBTA_SDP_DM_CBACK *p_cback) tBTA_SDP_API_ENABLE *p_buf; APPL_TRACE_API(__FUNCTION__); - if(p_cback && FALSE == bta_sys_is_register(BTA_ID_SDP)) - { + if (p_cback && FALSE == bta_sys_is_register(BTA_ID_SDP)) { memset(&bta_sdp_cb, 0, sizeof(tBTA_SDP_CB)); /* register with BTA system manager */ bta_sys_register(BTA_ID_SDP, &bta_sdp_reg); if (p_cback && - (p_buf = (tBTA_SDP_API_ENABLE *) GKI_getbuf(sizeof(tBTA_SDP_API_ENABLE))) != NULL) - { + (p_buf = (tBTA_SDP_API_ENABLE *) GKI_getbuf(sizeof(tBTA_SDP_API_ENABLE))) != NULL) { p_buf->hdr.event = BTA_SDP_API_ENABLE_EVT; p_buf->p_cback = p_cback; bta_sys_sendmsg(p_buf); status = BTA_SDP_SUCCESS; } } - return(status); + return (status); } /******************************************************************************* @@ -99,8 +96,7 @@ tBTA_SDP_STATUS BTA_SdpSearch(BD_ADDR bd_addr, tSDP_UUID *uuid) tBTA_SDP_API_SEARCH *p_msg; APPL_TRACE_API(__FUNCTION__); - if ((p_msg = (tBTA_SDP_API_SEARCH *)GKI_getbuf(sizeof(tBTA_SDP_API_SEARCH))) != NULL) - { + if ((p_msg = (tBTA_SDP_API_SEARCH *)GKI_getbuf(sizeof(tBTA_SDP_API_SEARCH))) != NULL) { p_msg->hdr.event = BTA_SDP_API_SEARCH_EVT; bdcpy(p_msg->bd_addr, bd_addr); //p_msg->uuid = uuid; @@ -109,7 +105,7 @@ tBTA_SDP_STATUS BTA_SdpSearch(BD_ADDR bd_addr, tSDP_UUID *uuid) ret = BTA_SDP_SUCCESS; } - return(ret); + return (ret); } /******************************************************************************* @@ -124,21 +120,20 @@ tBTA_SDP_STATUS BTA_SdpSearch(BD_ADDR bd_addr, tSDP_UUID *uuid) ** BTA_SDP_FAILURE, otherwise. ** *******************************************************************************/ -tBTA_SDP_STATUS BTA_SdpCreateRecordByUser(void* user_data) +tBTA_SDP_STATUS BTA_SdpCreateRecordByUser(void *user_data) { tBTA_SDP_STATUS ret = BTA_SDP_FAILURE; tBTA_SDP_API_RECORD_USER *p_msg; APPL_TRACE_API(__FUNCTION__); - if ((p_msg = (tBTA_SDP_API_RECORD_USER *)GKI_getbuf(sizeof(tBTA_SDP_API_RECORD_USER))) != NULL) - { + if ((p_msg = (tBTA_SDP_API_RECORD_USER *)GKI_getbuf(sizeof(tBTA_SDP_API_RECORD_USER))) != NULL) { p_msg->hdr.event = BTA_SDP_API_CREATE_RECORD_USER_EVT; p_msg->user_data = user_data; bta_sys_sendmsg(p_msg); ret = BTA_SDP_SUCCESS; } - return(ret); + return (ret); } /******************************************************************************* @@ -153,21 +148,20 @@ tBTA_SDP_STATUS BTA_SdpCreateRecordByUser(void* user_data) ** BTA_SDP_FAILURE, otherwise. ** *******************************************************************************/ -tBTA_SDP_STATUS BTA_SdpRemoveRecordByUser(void* user_data) +tBTA_SDP_STATUS BTA_SdpRemoveRecordByUser(void *user_data) { tBTA_SDP_STATUS ret = BTA_SDP_FAILURE; tBTA_SDP_API_RECORD_USER *p_msg; APPL_TRACE_API(__FUNCTION__); - if ((p_msg = (tBTA_SDP_API_RECORD_USER *)GKI_getbuf(sizeof(tBTA_SDP_API_RECORD_USER))) != NULL) - { + if ((p_msg = (tBTA_SDP_API_RECORD_USER *)GKI_getbuf(sizeof(tBTA_SDP_API_RECORD_USER))) != NULL) { p_msg->hdr.event = BTA_SDP_API_REMOVE_RECORD_USER_EVT; p_msg->user_data = user_data; bta_sys_sendmsg(p_msg); ret = BTA_SDP_SUCCESS; } - return(ret); + return (ret); } diff --git a/components/bt/bluedroid/bta/sdp/bta_sdp_cfg.c b/components/bt/bluedroid/bta/sdp/bta_sdp_cfg.c old mode 100755 new mode 100644 index eef2511a53..f9c6b019a6 --- a/components/bt/bluedroid/bta/sdp/bta_sdp_cfg.c +++ b/components/bt/bluedroid/bta/sdp/bta_sdp_cfg.c @@ -31,8 +31,7 @@ static UINT8 __attribute__ ((aligned(4))) bta_sdp_db_data[BTA_SDP_DB_SIZE]; /* SDP configuration structure */ -const tBTA_SDP_CFG bta_sdp_cfg = -{ +const tBTA_SDP_CFG bta_sdp_cfg = { BTA_SDP_DB_SIZE, (tSDP_DISCOVERY_DB *)bta_sdp_db_data /* The data buffer to keep SDP database */ }; diff --git a/components/bt/bluedroid/bta/sdp/bta_sdp_int.h b/components/bt/bluedroid/bta/sdp/bta_sdp_int.h old mode 100755 new mode 100644 index 4f3f6a53d4..21be47e063 --- a/components/bt/bluedroid/bta/sdp/bta_sdp_int.h +++ b/components/bt/bluedroid/bta/sdp/bta_sdp_int.h @@ -35,8 +35,7 @@ ** Constants *****************************************************************************/ -enum -{ +enum { /* these events are handled by the state machine */ BTA_SDP_API_ENABLE_EVT = BTA_SYS_EVT_START(BTA_ID_SDP), BTA_SDP_API_SEARCH_EVT, @@ -45,8 +44,7 @@ enum BTA_SDP_MAX_INT_EVT }; -enum -{ +enum { BTA_SDP_ACTIVE_NONE = 0, BTA_SDP_ACTIVE_YES /* waiting for SDP result */ }; @@ -54,30 +52,26 @@ enum /* data type for BTA_SDP_API_ENABLE_EVT */ -typedef struct -{ +typedef struct { BT_HDR hdr; tBTA_SDP_DM_CBACK *p_cback; } tBTA_SDP_API_ENABLE; /* data type for BTA_SDP_API_SEARCH_EVT */ -typedef struct -{ +typedef struct { BT_HDR hdr; BD_ADDR bd_addr; tSDP_UUID uuid; } tBTA_SDP_API_SEARCH; /* data type for BTA_SDP_API_SEARCH_EVT */ -typedef struct -{ +typedef struct { BT_HDR hdr; - void* user_data; + void *user_data; } tBTA_SDP_API_RECORD_USER; /* union of all data types */ -typedef union -{ +typedef union { /* GKI event buffer header */ BT_HDR hdr; tBTA_SDP_API_ENABLE enable; @@ -86,8 +80,7 @@ typedef union } tBTA_SDP_MSG; /* SDP control block */ -typedef struct -{ +typedef struct { UINT8 sdp_active; /* see BTA_SDP_SDP_ACT_* */ BD_ADDR remote_addr; tBTA_SDP_DM_CBACK *p_dm_cback; diff --git a/components/bt/bluedroid/bta/sys/bta_sys_conn.c b/components/bt/bluedroid/bta/sys/bta_sys_conn.c old mode 100755 new mode 100644 index 087a9ff750..6d671be984 --- a/components/bt/bluedroid/bta/sys/bta_sys_conn.c +++ b/components/bt/bluedroid/bta/sys/bta_sys_conn.c @@ -39,7 +39,7 @@ ** Returns void ** *******************************************************************************/ -void bta_sys_rm_register(tBTA_SYS_CONN_CBACK * p_cback) +void bta_sys_rm_register(tBTA_SYS_CONN_CBACK *p_cback) { bta_sys_cb.prm_cb = p_cback; } @@ -55,7 +55,7 @@ void bta_sys_rm_register(tBTA_SYS_CONN_CBACK * p_cback) ** Returns void ** *******************************************************************************/ -void bta_sys_policy_register(tBTA_SYS_CONN_CBACK * p_cback) +void bta_sys_policy_register(tBTA_SYS_CONN_CBACK *p_cback) { bta_sys_cb.p_policy_cb = p_cback; } @@ -70,7 +70,7 @@ void bta_sys_policy_register(tBTA_SYS_CONN_CBACK * p_cback) ** Returns void ** *******************************************************************************/ -void bta_sys_role_chg_register(tBTA_SYS_CONN_CBACK * p_cback) +void bta_sys_role_chg_register(tBTA_SYS_CONN_CBACK *p_cback) { bta_sys_cb.p_role_cb = p_cback; } @@ -85,7 +85,7 @@ void bta_sys_role_chg_register(tBTA_SYS_CONN_CBACK * p_cback) ** *******************************************************************************/ #if (BTM_SSR_INCLUDED == TRUE) -void bta_sys_ssr_cfg_register(tBTA_SYS_SSR_CFG_CBACK * p_cback) +void bta_sys_ssr_cfg_register(tBTA_SYS_SSR_CFG_CBACK *p_cback) { bta_sys_cb.p_ssr_cb = p_cback; } @@ -102,8 +102,7 @@ void bta_sys_ssr_cfg_register(tBTA_SYS_SSR_CFG_CBACK * p_cback) *******************************************************************************/ void bta_sys_notify_role_chg(BD_ADDR_PTR p_bda, UINT8 new_role, UINT8 hci_status) { - if (bta_sys_cb.p_role_cb) - { + if (bta_sys_cb.p_role_cb) { bta_sys_cb.p_role_cb(BTA_SYS_ROLE_CHANGE, new_role, hci_status, p_bda); } } @@ -122,11 +121,9 @@ void bta_sys_collision_register(UINT8 bta_id, tBTA_SYS_CONN_CBACK *p_cback) { UINT8 index; - for (index = 0; index < MAX_COLLISION_REG; index++) - { + for (index = 0; index < MAX_COLLISION_REG; index++) { if ((bta_sys_cb.colli_reg.id[index] == bta_id) || - (bta_sys_cb.colli_reg.id[index] == 0)) - { + (bta_sys_cb.colli_reg.id[index] == 0)) { bta_sys_cb.colli_reg.id[index] = bta_id; bta_sys_cb.colli_reg.p_coll_cback[index] = p_cback; return; @@ -148,11 +145,9 @@ void bta_sys_notify_collision (BD_ADDR_PTR p_bda) { UINT8 index; - for (index = 0; index < MAX_COLLISION_REG; index++) - { + for (index = 0; index < MAX_COLLISION_REG; index++) { if ((bta_sys_cb.colli_reg.id[index] != 0) && - (bta_sys_cb.colli_reg.p_coll_cback[index] != NULL)) - { + (bta_sys_cb.colli_reg.p_coll_cback[index] != NULL)) { bta_sys_cb.colli_reg.p_coll_cback[index] (0, BTA_ID_SYS, 0, p_bda); } } @@ -168,7 +163,7 @@ void bta_sys_notify_collision (BD_ADDR_PTR p_bda) ** Returns void ** *******************************************************************************/ -void bta_sys_sco_register(tBTA_SYS_CONN_CBACK * p_cback) +void bta_sys_sco_register(tBTA_SYS_CONN_CBACK *p_cback) { bta_sys_cb.p_sco_cb = p_cback; } @@ -183,7 +178,7 @@ void bta_sys_sco_register(tBTA_SYS_CONN_CBACK * p_cback) ** Returns void ** *******************************************************************************/ -void bta_sys_pm_register(tBTA_SYS_CONN_CBACK * p_cback) +void bta_sys_pm_register(tBTA_SYS_CONN_CBACK *p_cback) { bta_sys_cb.ppm_cb = p_cback; } @@ -201,15 +196,13 @@ void bta_sys_pm_register(tBTA_SYS_CONN_CBACK * p_cback) *******************************************************************************/ void bta_sys_conn_open(UINT8 id, UINT8 app_id, BD_ADDR peer_addr) { - if(bta_sys_cb.prm_cb) - { + if (bta_sys_cb.prm_cb) { bta_sys_cb.prm_cb(BTA_SYS_CONN_OPEN, id, app_id, peer_addr); } - if(bta_sys_cb.ppm_cb) - { + if (bta_sys_cb.ppm_cb) { bta_sys_cb.ppm_cb(BTA_SYS_CONN_OPEN, id, app_id, peer_addr); @@ -231,15 +224,13 @@ void bta_sys_conn_open(UINT8 id, UINT8 app_id, BD_ADDR peer_addr) *******************************************************************************/ void bta_sys_conn_close(UINT8 id, UINT8 app_id, BD_ADDR peer_addr) { - if(bta_sys_cb.prm_cb) - { + if (bta_sys_cb.prm_cb) { bta_sys_cb.prm_cb(BTA_SYS_CONN_CLOSE, id, app_id, peer_addr); } - if(bta_sys_cb.ppm_cb) - { + if (bta_sys_cb.ppm_cb) { bta_sys_cb.ppm_cb(BTA_SYS_CONN_CLOSE, id, app_id, peer_addr); @@ -260,8 +251,7 @@ void bta_sys_conn_close(UINT8 id, UINT8 app_id, BD_ADDR peer_addr) *******************************************************************************/ void bta_sys_app_open(UINT8 id, UINT8 app_id, BD_ADDR peer_addr) { - if(bta_sys_cb.ppm_cb) - { + if (bta_sys_cb.ppm_cb) { bta_sys_cb.ppm_cb(BTA_SYS_APP_OPEN, id, app_id, peer_addr); } } @@ -280,8 +270,7 @@ void bta_sys_app_open(UINT8 id, UINT8 app_id, BD_ADDR peer_addr) *******************************************************************************/ void bta_sys_app_close(UINT8 id, UINT8 app_id, BD_ADDR peer_addr) { - if(bta_sys_cb.ppm_cb) - { + if (bta_sys_cb.ppm_cb) { bta_sys_cb.ppm_cb(BTA_SYS_APP_CLOSE, id, app_id, peer_addr); } } @@ -300,14 +289,12 @@ void bta_sys_app_close(UINT8 id, UINT8 app_id, BD_ADDR peer_addr) void bta_sys_sco_open(UINT8 id, UINT8 app_id, BD_ADDR peer_addr) { /* AG triggers p_sco_cb by bta_sys_sco_use. */ - if((id != BTA_ID_AG) && (bta_sys_cb.p_sco_cb)) - { + if ((id != BTA_ID_AG) && (bta_sys_cb.p_sco_cb)) { /* without querying BTM_GetNumScoLinks() */ bta_sys_cb.p_sco_cb(BTA_SYS_SCO_OPEN, 1, app_id, peer_addr); } - if(bta_sys_cb.ppm_cb) - { + if (bta_sys_cb.ppm_cb) { bta_sys_cb.ppm_cb(BTA_SYS_SCO_OPEN, id, app_id, peer_addr); } } @@ -326,14 +313,12 @@ void bta_sys_sco_close(UINT8 id, UINT8 app_id, BD_ADDR peer_addr) { UINT8 num_sco_links; - if((id != BTA_ID_AG) && (bta_sys_cb.p_sco_cb)) - { + if ((id != BTA_ID_AG) && (bta_sys_cb.p_sco_cb)) { num_sco_links = BTM_GetNumScoLinks(); bta_sys_cb.p_sco_cb(BTA_SYS_SCO_CLOSE, num_sco_links, app_id, peer_addr); } - if(bta_sys_cb.ppm_cb) - { + if (bta_sys_cb.ppm_cb) { bta_sys_cb.ppm_cb(BTA_SYS_SCO_CLOSE, id, app_id, peer_addr); } } @@ -353,8 +338,7 @@ void bta_sys_sco_use(UINT8 id, UINT8 app_id, BD_ADDR peer_addr) UNUSED(id); /* AV streaming need to be suspended before SCO is connected. */ - if(bta_sys_cb.p_sco_cb) - { + if (bta_sys_cb.p_sco_cb) { /* without querying BTM_GetNumScoLinks() */ bta_sys_cb.p_sco_cb(BTA_SYS_SCO_OPEN, 1, app_id, peer_addr); } @@ -375,8 +359,7 @@ void bta_sys_sco_unuse(UINT8 id, UINT8 app_id, BD_ADDR peer_addr) UINT8 num_sco_links; UNUSED(id); - if((bta_sys_cb.p_sco_cb)) - { + if ((bta_sys_cb.p_sco_cb)) { num_sco_links = BTM_GetNumScoLinks(); bta_sys_cb.p_sco_cb(BTA_SYS_SCO_CLOSE, num_sco_links, app_id, peer_addr); } @@ -394,8 +377,7 @@ void bta_sys_sco_unuse(UINT8 id, UINT8 app_id, BD_ADDR peer_addr) #if (BTM_SSR_INCLUDED == TRUE) void bta_sys_chg_ssr_config (UINT8 id, UINT8 app_id, UINT16 max_latency, UINT16 min_tout) { - if(bta_sys_cb.p_ssr_cb) - { + if (bta_sys_cb.p_ssr_cb) { bta_sys_cb.p_ssr_cb(id, app_id, max_latency, min_tout); } } @@ -412,8 +394,7 @@ void bta_sys_chg_ssr_config (UINT8 id, UINT8 app_id, UINT16 max_latency, UINT16 *******************************************************************************/ void bta_sys_set_policy (UINT8 id, UINT8 policy, BD_ADDR peer_addr) { - if(bta_sys_cb.p_policy_cb) - { + if (bta_sys_cb.p_policy_cb) { bta_sys_cb.p_policy_cb(BTA_SYS_PLCY_SET, id, policy, peer_addr); } } @@ -430,8 +411,7 @@ void bta_sys_set_policy (UINT8 id, UINT8 policy, BD_ADDR peer_addr) *******************************************************************************/ void bta_sys_clear_policy (UINT8 id, UINT8 policy, BD_ADDR peer_addr) { - if(bta_sys_cb.p_policy_cb) - { + if (bta_sys_cb.p_policy_cb) { bta_sys_cb.p_policy_cb(BTA_SYS_PLCY_CLR, id, policy, peer_addr); } } @@ -448,8 +428,7 @@ void bta_sys_clear_policy (UINT8 id, UINT8 policy, BD_ADDR peer_addr) *******************************************************************************/ void bta_sys_set_default_policy (UINT8 id, UINT8 policy) { - if(bta_sys_cb.p_policy_cb) - { + if (bta_sys_cb.p_policy_cb) { bta_sys_cb.p_policy_cb(BTA_SYS_PLCY_DEF_SET, id, policy, NULL); } } @@ -466,8 +445,7 @@ void bta_sys_set_default_policy (UINT8 id, UINT8 policy) *******************************************************************************/ void bta_sys_clear_default_policy (UINT8 id, UINT8 policy) { - if(bta_sys_cb.p_policy_cb) - { + if (bta_sys_cb.p_policy_cb) { bta_sys_cb.p_policy_cb(BTA_SYS_PLCY_DEF_CLR, id, policy, NULL); } } @@ -485,15 +463,13 @@ void bta_sys_clear_default_policy (UINT8 id, UINT8 policy) void bta_sys_idle(UINT8 id, UINT8 app_id, BD_ADDR peer_addr) { - if(bta_sys_cb.prm_cb) - { + if (bta_sys_cb.prm_cb) { bta_sys_cb.prm_cb(BTA_SYS_CONN_IDLE, id, app_id, peer_addr); } - if(bta_sys_cb.ppm_cb) - { + if (bta_sys_cb.ppm_cb) { bta_sys_cb.ppm_cb(BTA_SYS_CONN_IDLE, id, app_id, peer_addr); } @@ -511,15 +487,13 @@ void bta_sys_idle(UINT8 id, UINT8 app_id, BD_ADDR peer_addr) *******************************************************************************/ void bta_sys_busy(UINT8 id, UINT8 app_id, BD_ADDR peer_addr) { - if(bta_sys_cb.prm_cb) - { + if (bta_sys_cb.prm_cb) { bta_sys_cb.prm_cb(BTA_SYS_CONN_BUSY, id, app_id, peer_addr); } - if(bta_sys_cb.ppm_cb) - { + if (bta_sys_cb.ppm_cb) { bta_sys_cb.ppm_cb(BTA_SYS_CONN_BUSY, id, app_id, peer_addr); @@ -537,7 +511,7 @@ void bta_sys_busy(UINT8 id, UINT8 app_id, BD_ADDR peer_addr) ** Returns void ** *******************************************************************************/ -void bta_sys_eir_register(tBTA_SYS_EIR_CBACK * p_cback) +void bta_sys_eir_register(tBTA_SYS_EIR_CBACK *p_cback) { bta_sys_cb.eir_cb = p_cback; } @@ -554,8 +528,7 @@ void bta_sys_eir_register(tBTA_SYS_EIR_CBACK * p_cback) *******************************************************************************/ void bta_sys_add_uuid(UINT16 uuid16) { - if(bta_sys_cb.eir_cb) - { + if (bta_sys_cb.eir_cb) { bta_sys_cb.eir_cb(uuid16, TRUE ); } } @@ -572,8 +545,7 @@ void bta_sys_add_uuid(UINT16 uuid16) *******************************************************************************/ void bta_sys_remove_uuid(UINT16 uuid16) { - if(bta_sys_cb.eir_cb) - { + if (bta_sys_cb.eir_cb) { bta_sys_cb.eir_cb(uuid16, FALSE); } } @@ -590,8 +562,9 @@ void bta_sys_remove_uuid(UINT16 uuid16) *******************************************************************************/ BOOLEAN bta_sys_vs_hdl(UINT16 evt, void *p) { - if (bta_sys_cb.p_vs_evt_hdlr) + if (bta_sys_cb.p_vs_evt_hdlr) { return (*bta_sys_cb.p_vs_evt_hdlr)(evt, p); + } return FALSE; } diff --git a/components/bt/bluedroid/bta/sys/bta_sys_main.c b/components/bt/bluedroid/bta/sys/bta_sys_main.c old mode 100755 new mode 100644 index b78b4116e3..68faa99407 --- a/components/bt/bluedroid/bta/sys/bta_sys_main.c +++ b/components/bt/bluedroid/bta/sys/bta_sys_main.c @@ -66,8 +66,7 @@ UINT8 btif_trace_level = BT_TRACE_LEVEL_WARNING; extern fixed_queue_t *btu_bta_msg_queue; void btu_bta_alarm_ready(fixed_queue_t *queue); -static const tBTA_SYS_REG bta_sys_hw_reg = -{ +static const tBTA_SYS_REG bta_sys_hw_reg = { bta_sys_sm_execute, NULL }; @@ -77,8 +76,7 @@ static const tBTA_SYS_REG bta_sys_hw_reg = typedef void (*tBTA_SYS_ACTION)(tBTA_SYS_HW_MSG *p_data); /* action function list */ -const tBTA_SYS_ACTION bta_sys_action[] = -{ +const tBTA_SYS_ACTION bta_sys_action[] = { /* device manager local device API events - cf bta_sys.h for events */ bta_sys_hw_api_enable, /* 0 BTA_SYS_HW_API_ENABLE_EVT */ bta_sys_hw_evt_enabled, /* 1 BTA_SYS_HW_EVT_ENABLED_EVT */ @@ -89,8 +87,7 @@ const tBTA_SYS_ACTION bta_sys_action[] = }; /* state machine action enumeration list */ -enum -{ +enum { /* device manager local device API events */ BTA_SYS_HW_API_ENABLE, BTA_SYS_HW_EVT_ENABLED, @@ -110,48 +107,44 @@ enum /* state table for OFF state */ -const UINT8 bta_sys_hw_off[][BTA_SYS_NUM_COLS] = -{ -/* Event Action 1 Action 2 Next State */ -/* API_ENABLE */ {BTA_SYS_HW_API_ENABLE, BTA_SYS_IGNORE, BTA_SYS_HW_STARTING}, -/* EVT_ENABLED */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_STARTING}, -/* STACK_ENABLED */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_ON}, -/* API_DISABLE */ {BTA_SYS_HW_EVT_DISABLED, BTA_SYS_IGNORE, BTA_SYS_HW_OFF}, -/* EVT_DISABLED */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_OFF}, -/* EVT_ERROR */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_OFF} +const UINT8 bta_sys_hw_off[][BTA_SYS_NUM_COLS] = { + /* Event Action 1 Action 2 Next State */ + /* API_ENABLE */ {BTA_SYS_HW_API_ENABLE, BTA_SYS_IGNORE, BTA_SYS_HW_STARTING}, + /* EVT_ENABLED */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_STARTING}, + /* STACK_ENABLED */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_ON}, + /* API_DISABLE */ {BTA_SYS_HW_EVT_DISABLED, BTA_SYS_IGNORE, BTA_SYS_HW_OFF}, + /* EVT_DISABLED */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_OFF}, + /* EVT_ERROR */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_OFF} }; -const UINT8 bta_sys_hw_starting[][BTA_SYS_NUM_COLS] = -{ -/* Event Action 1 Action 2 Next State */ -/* API_ENABLE */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_STARTING}, /* wait for completion event */ -/* EVT_ENABLED */ {BTA_SYS_HW_EVT_ENABLED, BTA_SYS_IGNORE, BTA_SYS_HW_STARTING}, -/* STACK_ENABLED */ {BTA_SYS_HW_EVT_STACK_ENABLED, BTA_SYS_IGNORE, BTA_SYS_HW_ON}, -/* API_DISABLE */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_STOPPING}, /* successive disable/enable: change state wait for completion to disable */ -/* EVT_DISABLED */ {BTA_SYS_HW_EVT_DISABLED, BTA_SYS_HW_API_ENABLE, BTA_SYS_HW_STARTING}, /* successive enable/disable: notify, then restart HW */ -/* EVT_ERROR */ {BTA_SYS_HW_ERROR, BTA_SYS_IGNORE, BTA_SYS_HW_ON} +const UINT8 bta_sys_hw_starting[][BTA_SYS_NUM_COLS] = { + /* Event Action 1 Action 2 Next State */ + /* API_ENABLE */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_STARTING}, /* wait for completion event */ + /* EVT_ENABLED */ {BTA_SYS_HW_EVT_ENABLED, BTA_SYS_IGNORE, BTA_SYS_HW_STARTING}, + /* STACK_ENABLED */ {BTA_SYS_HW_EVT_STACK_ENABLED, BTA_SYS_IGNORE, BTA_SYS_HW_ON}, + /* API_DISABLE */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_STOPPING}, /* successive disable/enable: change state wait for completion to disable */ + /* EVT_DISABLED */ {BTA_SYS_HW_EVT_DISABLED, BTA_SYS_HW_API_ENABLE, BTA_SYS_HW_STARTING}, /* successive enable/disable: notify, then restart HW */ + /* EVT_ERROR */ {BTA_SYS_HW_ERROR, BTA_SYS_IGNORE, BTA_SYS_HW_ON} }; -const UINT8 bta_sys_hw_on[][BTA_SYS_NUM_COLS] = -{ -/* Event Action 1 Action 2 Next State */ -/* API_ENABLE */ {BTA_SYS_HW_API_ENABLE, BTA_SYS_IGNORE, BTA_SYS_HW_ON}, -/* EVT_ENABLED */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_ON}, -/* STACK_ENABLED */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_ON}, -/* API_DISABLE */ {BTA_SYS_HW_API_DISABLE, BTA_SYS_IGNORE, BTA_SYS_HW_ON}, /* don't change the state here, as some other modules might be active */ -/* EVT_DISABLED */ {BTA_SYS_HW_ERROR, BTA_SYS_IGNORE, BTA_SYS_HW_ON}, -/* EVT_ERROR */ {BTA_SYS_HW_ERROR, BTA_SYS_IGNORE, BTA_SYS_HW_ON} +const UINT8 bta_sys_hw_on[][BTA_SYS_NUM_COLS] = { + /* Event Action 1 Action 2 Next State */ + /* API_ENABLE */ {BTA_SYS_HW_API_ENABLE, BTA_SYS_IGNORE, BTA_SYS_HW_ON}, + /* EVT_ENABLED */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_ON}, + /* STACK_ENABLED */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_ON}, + /* API_DISABLE */ {BTA_SYS_HW_API_DISABLE, BTA_SYS_IGNORE, BTA_SYS_HW_ON}, /* don't change the state here, as some other modules might be active */ + /* EVT_DISABLED */ {BTA_SYS_HW_ERROR, BTA_SYS_IGNORE, BTA_SYS_HW_ON}, + /* EVT_ERROR */ {BTA_SYS_HW_ERROR, BTA_SYS_IGNORE, BTA_SYS_HW_ON} }; -const UINT8 bta_sys_hw_stopping[][BTA_SYS_NUM_COLS] = -{ -/* Event Action 1 Action 2 Next State */ -/* API_ENABLE */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_STARTING}, /* change state, and wait for completion event to enable */ -/* EVT_ENABLED */ {BTA_SYS_HW_EVT_ENABLED, BTA_SYS_IGNORE, BTA_SYS_HW_STOPPING}, /* successive enable/disable: finish the enable before disabling */ -/* STACK_ENABLED */ {BTA_SYS_HW_EVT_STACK_ENABLED, BTA_SYS_HW_API_DISABLE, BTA_SYS_HW_STOPPING}, /* successive enable/disable: notify, then stop */ -/* API_DISABLE */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_STOPPING}, /* wait for completion event */ -/* EVT_DISABLED */ {BTA_SYS_HW_EVT_DISABLED, BTA_SYS_IGNORE, BTA_SYS_HW_OFF}, -/* EVT_ERROR */ {BTA_SYS_HW_API_DISABLE, BTA_SYS_IGNORE, BTA_SYS_HW_STOPPING} +const UINT8 bta_sys_hw_stopping[][BTA_SYS_NUM_COLS] = { + /* Event Action 1 Action 2 Next State */ + /* API_ENABLE */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_STARTING}, /* change state, and wait for completion event to enable */ + /* EVT_ENABLED */ {BTA_SYS_HW_EVT_ENABLED, BTA_SYS_IGNORE, BTA_SYS_HW_STOPPING}, /* successive enable/disable: finish the enable before disabling */ + /* STACK_ENABLED */ {BTA_SYS_HW_EVT_STACK_ENABLED, BTA_SYS_HW_API_DISABLE, BTA_SYS_HW_STOPPING}, /* successive enable/disable: notify, then stop */ + /* API_DISABLE */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_STOPPING}, /* wait for completion event */ + /* EVT_DISABLED */ {BTA_SYS_HW_EVT_DISABLED, BTA_SYS_IGNORE, BTA_SYS_HW_OFF}, + /* EVT_ERROR */ {BTA_SYS_HW_API_DISABLE, BTA_SYS_IGNORE, BTA_SYS_HW_STOPPING} }; typedef const UINT8 (*tBTA_SYS_ST_TBL)[BTA_SYS_NUM_COLS]; @@ -177,15 +170,15 @@ const tBTA_SYS_ST_TBL bta_sys_st_tbl[] = { void bta_sys_init(void) { memset(&bta_sys_cb, 0, sizeof(tBTA_SYS_CB)); - + pthread_mutex_init(&bta_alarm_lock, NULL); bta_alarm_hash_map = hash_map_new(BTA_ALARM_HASH_MAP_SIZE, - hash_function_pointer, NULL, (data_free_fn)osi_alarm_free, NULL); + hash_function_pointer, NULL, (data_free_fn)osi_alarm_free, NULL); btu_bta_alarm_queue = fixed_queue_new(SIZE_MAX); fixed_queue_register_dequeue(btu_bta_alarm_queue, - btu_bta_alarm_ready); + btu_bta_alarm_ready); appl_trace_level = APPL_INITIAL_TRACE_LEVEL; @@ -193,7 +186,7 @@ void bta_sys_init(void) bta_sys_register( BTA_ID_SYS, &bta_sys_hw_reg); /* register for BTM notifications */ - BTM_RegisterForDeviceStatusNotif ((tBTM_DEV_STATUS_CB*)&bta_sys_hw_btm_cback ); + BTM_RegisterForDeviceStatusNotif ((tBTM_DEV_STATUS_CB *)&bta_sys_hw_btm_cback ); #if( defined BTA_AR_INCLUDED ) && (BTA_AR_INCLUDED == TRUE) bta_ar_init(); @@ -201,7 +194,8 @@ void bta_sys_init(void) } -void bta_sys_free(void) { +void bta_sys_free(void) +{ fixed_queue_free(btu_bta_alarm_queue, NULL); hash_map_free(bta_alarm_hash_map); pthread_mutex_destroy(&bta_alarm_lock); @@ -232,14 +226,10 @@ BOOLEAN bta_sys_sm_execute(BT_HDR *p_msg) bta_sys_cb.state = state_table[p_msg->event & 0x00ff][BTA_SYS_NEXT_STATE]; /* execute action functions */ - for (i = 0; i < BTA_SYS_ACTIONS; i++) - { - if ((action = state_table[p_msg->event & 0x00ff][i]) != BTA_SYS_IGNORE) - { - (*bta_sys_action[action])( (tBTA_SYS_HW_MSG*) p_msg); - } - else - { + for (i = 0; i < BTA_SYS_ACTIONS; i++) { + if ((action = state_table[p_msg->event & 0x00ff][i]) != BTA_SYS_IGNORE) { + (*bta_sys_action[action])( (tBTA_SYS_HW_MSG *) p_msg); + } else { break; } } @@ -250,13 +240,13 @@ BOOLEAN bta_sys_sm_execute(BT_HDR *p_msg) void bta_sys_hw_register( tBTA_SYS_HW_MODULE module, tBTA_SYS_HW_CBACK *cback) { - bta_sys_cb.sys_hw_cback[module]=cback; + bta_sys_cb.sys_hw_cback[module] = cback; } void bta_sys_hw_unregister( tBTA_SYS_HW_MODULE module ) { - bta_sys_cb.sys_hw_cback[module]=NULL; + bta_sys_cb.sys_hw_cback[module] = NULL; } /******************************************************************************* @@ -277,26 +267,21 @@ void bta_sys_hw_btm_cback( tBTM_DEV_STATUS status ) APPL_TRACE_DEBUG(" bta_sys_hw_btm_cback was called with parameter: %i" , status ); /* send a message to BTA SYS */ - if ((sys_event = (tBTA_SYS_HW_MSG *) GKI_getbuf(sizeof(tBTA_SYS_HW_MSG))) != NULL) - { - if (status == BTM_DEV_STATUS_UP) + if ((sys_event = (tBTA_SYS_HW_MSG *) GKI_getbuf(sizeof(tBTA_SYS_HW_MSG))) != NULL) { + if (status == BTM_DEV_STATUS_UP) { sys_event->hdr.event = BTA_SYS_EVT_STACK_ENABLED_EVT; - else if (status == BTM_DEV_STATUS_DOWN) + } else if (status == BTM_DEV_STATUS_DOWN) { sys_event->hdr.event = BTA_SYS_ERROR_EVT; - else - { + } else { /* BTM_DEV_STATUS_CMD_TOUT is ignored for now. */ GKI_freebuf (sys_event); sys_event = NULL; } - if (sys_event) - { + if (sys_event) { bta_sys_sendmsg(sys_event); } - } - else - { + } else { APPL_TRACE_DEBUG("ERROR bta_sys_hw_btm_cback couldn't send msg" ); } } @@ -320,20 +305,19 @@ void bta_sys_hw_error(tBTA_SYS_HW_MSG *p_sys_hw_msg) APPL_TRACE_DEBUG("%s\n", __FUNCTION__); - for (module_index = 0; module_index < BTA_SYS_MAX_HW_MODULES; module_index++) - { - if( bta_sys_cb.sys_hw_module_active & ((UINT32)1 << module_index )) { - switch( module_index) - { - case BTA_SYS_HW_BLUETOOTH: - /* Send BTA_SYS_HW_ERROR_EVT to DM */ - if (bta_sys_cb.sys_hw_cback[module_index] != NULL) - bta_sys_cb.sys_hw_cback[module_index] (BTA_SYS_HW_ERROR_EVT); - break; - default: - /* not yet supported */ - break; + for (module_index = 0; module_index < BTA_SYS_MAX_HW_MODULES; module_index++) { + if ( bta_sys_cb.sys_hw_module_active & ((UINT32)1 << module_index )) { + switch ( module_index) { + case BTA_SYS_HW_BLUETOOTH: + /* Send BTA_SYS_HW_ERROR_EVT to DM */ + if (bta_sys_cb.sys_hw_cback[module_index] != NULL) { + bta_sys_cb.sys_hw_cback[module_index] (BTA_SYS_HW_ERROR_EVT); } + break; + default: + /* not yet supported */ + break; + } } } } @@ -353,32 +337,29 @@ void bta_sys_hw_error(tBTA_SYS_HW_MSG *p_sys_hw_msg) void bta_sys_hw_api_enable( tBTA_SYS_HW_MSG *p_sys_hw_msg ) { - if ((!bta_sys_cb.sys_hw_module_active) && (bta_sys_cb.state != BTA_SYS_HW_ON)) - { + if ((!bta_sys_cb.sys_hw_module_active) && (bta_sys_cb.state != BTA_SYS_HW_ON)) { /* register which HW module was turned on */ bta_sys_cb.sys_hw_module_active |= ((UINT32)1 << p_sys_hw_msg->hw_module ); tBTA_SYS_HW_MSG *p_msg; - if ((p_msg = (tBTA_SYS_HW_MSG *) GKI_getbuf(sizeof(tBTA_SYS_HW_MSG))) != NULL) - { + if ((p_msg = (tBTA_SYS_HW_MSG *) GKI_getbuf(sizeof(tBTA_SYS_HW_MSG))) != NULL) { p_msg->hdr.event = BTA_SYS_EVT_ENABLED_EVT; p_msg->hw_module = p_sys_hw_msg->hw_module; bta_sys_sendmsg(p_msg); } - } - else - { + } else { /* register which HW module was turned on */ bta_sys_cb.sys_hw_module_active |= ((UINT32)1 << p_sys_hw_msg->hw_module ); /* HW already in use, so directly notify the caller */ - if (bta_sys_cb.sys_hw_cback[p_sys_hw_msg->hw_module ]!= NULL ) + if (bta_sys_cb.sys_hw_cback[p_sys_hw_msg->hw_module ] != NULL ) { bta_sys_cb.sys_hw_cback[p_sys_hw_msg->hw_module ]( BTA_SYS_HW_ON_EVT ); + } } APPL_TRACE_EVENT ("bta_sys_hw_api_enable for %d, active modules 0x%04X\n", - p_sys_hw_msg->hw_module, bta_sys_cb.sys_hw_module_active); + p_sys_hw_msg->hw_module, bta_sys_cb.sys_hw_module_active); } @@ -395,7 +376,7 @@ void bta_sys_hw_api_enable( tBTA_SYS_HW_MSG *p_sys_hw_msg ) void bta_sys_hw_api_disable(tBTA_SYS_HW_MSG *p_sys_hw_msg) { APPL_TRACE_DEBUG("bta_sys_hw_api_disable for %d, active modules: 0x%04X\n", - p_sys_hw_msg->hw_module, bta_sys_cb.sys_hw_module_active ); + p_sys_hw_msg->hw_module, bta_sys_cb.sys_hw_module_active ); /* make sure the related SW blocks were stopped */ bta_sys_disable( p_sys_hw_msg->hw_module ); @@ -406,20 +387,17 @@ void bta_sys_hw_api_disable(tBTA_SYS_HW_MSG *p_sys_hw_msg) /* if there are still some SW modules using the HW, just provide an answer to the calling */ - if( bta_sys_cb.sys_hw_module_active != 0 ) - { + if ( bta_sys_cb.sys_hw_module_active != 0 ) { /* if there are still some SW modules using the HW, directly notify the caller */ - if( bta_sys_cb.sys_hw_cback[p_sys_hw_msg->hw_module ]!= NULL ) + if ( bta_sys_cb.sys_hw_cback[p_sys_hw_msg->hw_module ] != NULL ) { bta_sys_cb.sys_hw_cback[p_sys_hw_msg->hw_module ]( BTA_SYS_HW_OFF_EVT ); - } - else - { + } + } else { /* manually update the state of our system */ bta_sys_cb.state = BTA_SYS_HW_STOPPING; tBTA_SYS_HW_MSG *p_msg; - if ((p_msg = (tBTA_SYS_HW_MSG *) GKI_getbuf(sizeof(tBTA_SYS_HW_MSG))) != NULL) - { + if ((p_msg = (tBTA_SYS_HW_MSG *) GKI_getbuf(sizeof(tBTA_SYS_HW_MSG))) != NULL) { p_msg->hdr.event = BTA_SYS_EVT_DISABLED_EVT; p_msg->hw_module = p_sys_hw_msg->hw_module; @@ -463,10 +441,10 @@ void bta_sys_hw_evt_disabled(tBTA_SYS_HW_MSG *p_sys_hw_msg) APPL_TRACE_DEBUG("bta_sys_hw_evt_disabled - module 0x%X\n", p_sys_hw_msg->hw_module); - for (hw_module_index = 0; hw_module_index < BTA_SYS_MAX_HW_MODULES; hw_module_index++) - { - if (bta_sys_cb.sys_hw_cback[hw_module_index] != NULL) + for (hw_module_index = 0; hw_module_index < BTA_SYS_MAX_HW_MODULES; hw_module_index++) { + if (bta_sys_cb.sys_hw_cback[hw_module_index] != NULL) { bta_sys_cb.sys_hw_cback[hw_module_index] (BTA_SYS_HW_OFF_EVT); + } } } @@ -487,10 +465,10 @@ void bta_sys_hw_evt_stack_enabled(tBTA_SYS_HW_MSG *p_sys_hw_msg) APPL_TRACE_DEBUG(" bta_sys_hw_evt_stack_enabled!notify the callers\n"); - for (hw_module_index = 0; hw_module_index < BTA_SYS_MAX_HW_MODULES; hw_module_index++ ) - { - if (bta_sys_cb.sys_hw_cback[hw_module_index] != NULL) + for (hw_module_index = 0; hw_module_index < BTA_SYS_MAX_HW_MODULES; hw_module_index++ ) { + if (bta_sys_cb.sys_hw_cback[hw_module_index] != NULL) { bta_sys_cb.sys_hw_cback[hw_module_index] (BTA_SYS_HW_ON_EVT); + } } } @@ -518,17 +496,13 @@ void bta_sys_event(BT_HDR *p_msg) id = (UINT8) (p_msg->event >> 8); /* verify id and call subsystem event handler */ - if ((id < BTA_ID_MAX) && (bta_sys_cb.reg[id] != NULL)) - { + if ((id < BTA_ID_MAX) && (bta_sys_cb.reg[id] != NULL)) { freebuf = (*bta_sys_cb.reg[id]->evt_hdlr)(p_msg); - } - else - { + } else { APPL_TRACE_WARNING("BTA got unregistered event id %d\n", id); } - if (freebuf) - { + if (freebuf) { GKI_freebuf(p_msg); } @@ -618,40 +592,42 @@ void bta_sys_sendmsg(void *p_msg) ** Returns void ** *******************************************************************************/ -void bta_alarm_cb(void *data) { - assert(data != NULL); - TIMER_LIST_ENT *p_tle = (TIMER_LIST_ENT *)data; +void bta_alarm_cb(void *data) +{ + assert(data != NULL); + TIMER_LIST_ENT *p_tle = (TIMER_LIST_ENT *)data; - fixed_queue_enqueue(btu_bta_alarm_queue, p_tle); + fixed_queue_enqueue(btu_bta_alarm_queue, p_tle); } -void bta_sys_start_timer(TIMER_LIST_ENT *p_tle, UINT16 type, INT32 timeout_ms) { - assert(p_tle != NULL); +void bta_sys_start_timer(TIMER_LIST_ENT *p_tle, UINT16 type, INT32 timeout_ms) +{ + assert(p_tle != NULL); - // Get the alarm for this p_tle. - pthread_mutex_lock(&bta_alarm_lock); - if (!hash_map_has_key(bta_alarm_hash_map, p_tle)) { - hash_map_set(bta_alarm_hash_map, p_tle, osi_alarm_new("bta_sys", bta_alarm_cb, p_tle, 0)); - } - pthread_mutex_unlock(&bta_alarm_lock); + // Get the alarm for this p_tle. + pthread_mutex_lock(&bta_alarm_lock); + if (!hash_map_has_key(bta_alarm_hash_map, p_tle)) { + hash_map_set(bta_alarm_hash_map, p_tle, osi_alarm_new("bta_sys", bta_alarm_cb, p_tle, 0)); + } + pthread_mutex_unlock(&bta_alarm_lock); - osi_alarm_t *alarm = hash_map_get(bta_alarm_hash_map, p_tle); - if (alarm == NULL) { - LOG_ERROR("%s unable to create alarm.", __func__); - return; - } + osi_alarm_t *alarm = hash_map_get(bta_alarm_hash_map, p_tle); + if (alarm == NULL) { + LOG_ERROR("%s unable to create alarm.", __func__); + return; + } - p_tle->event = type; - p_tle->ticks = timeout_ms; - //osi_alarm_set(alarm, (period_ms_t)timeout_ms, bta_alarm_cb, p_tle); - osi_alarm_set(alarm, (period_ms_t)timeout_ms); + p_tle->event = type; + p_tle->ticks = timeout_ms; + //osi_alarm_set(alarm, (period_ms_t)timeout_ms, bta_alarm_cb, p_tle); + osi_alarm_set(alarm, (period_ms_t)timeout_ms); } bool hash_iter_ro_cb(hash_map_entry_t *hash_map_entry, void *context) { - osi_alarm_t *alarm = (osi_alarm_t *)hash_map_entry->data; - period_ms_t *p_remaining_ms = (period_ms_t*)context; - *p_remaining_ms +=osi_alarm_get_remaining_ms(alarm); + osi_alarm_t *alarm = (osi_alarm_t *)hash_map_entry->data; + period_ms_t *p_remaining_ms = (period_ms_t *)context; + *p_remaining_ms += osi_alarm_get_remaining_ms(alarm); return true; } @@ -675,15 +651,16 @@ UINT32 bta_sys_get_remaining_ticks(TIMER_LIST_ENT *p_target_tle) ** Returns void ** *******************************************************************************/ -void bta_sys_stop_timer(TIMER_LIST_ENT *p_tle) { - assert(p_tle != NULL); +void bta_sys_stop_timer(TIMER_LIST_ENT *p_tle) +{ + assert(p_tle != NULL); - osi_alarm_t *alarm = hash_map_get(bta_alarm_hash_map, p_tle); - if (alarm == NULL) { - LOG_DEBUG("%s expected alarm was not in bta alarm hash map.", __func__); - return; - } - osi_alarm_cancel(alarm); + osi_alarm_t *alarm = hash_map_get(bta_alarm_hash_map, p_tle); + if (alarm == NULL) { + LOG_DEBUG("%s expected alarm was not in bta alarm hash map.", __func__); + return; + } + osi_alarm_cancel(alarm); } /******************************************************************************* @@ -702,23 +679,19 @@ void bta_sys_disable(tBTA_SYS_HW_MODULE module) APPL_TRACE_DEBUG("bta_sys_disable: module %i", module); - switch( module ) - { - case BTA_SYS_HW_BLUETOOTH: - bta_id = BTA_ID_DM; - bta_id_max = BTA_ID_BLUETOOTH_MAX; - break; - default: - APPL_TRACE_WARNING("bta_sys_disable: unkown module"); - return; + switch ( module ) { + case BTA_SYS_HW_BLUETOOTH: + bta_id = BTA_ID_DM; + bta_id_max = BTA_ID_BLUETOOTH_MAX; + break; + default: + APPL_TRACE_WARNING("bta_sys_disable: unkown module"); + return; } - for ( ; bta_id <= bta_id_max; bta_id++) - { - if (bta_sys_cb.reg[bta_id] != NULL) - { - if (bta_sys_cb.is_reg[bta_id] == TRUE && bta_sys_cb.reg[bta_id]->disable != NULL) - { + for ( ; bta_id <= bta_id_max; bta_id++) { + if (bta_sys_cb.reg[bta_id] != NULL) { + if (bta_sys_cb.is_reg[bta_id] == TRUE && bta_sys_cb.reg[bta_id]->disable != NULL) { (*bta_sys_cb.reg[bta_id]->disable)(); } } diff --git a/components/bt/bluedroid/bta/sys/include/bta_sys_int.h b/components/bt/bluedroid/bta/sys/include/bta_sys_int.h old mode 100755 new mode 100644 index e9c192988a..aa2596d96c --- a/components/bt/bluedroid/bta/sys/include/bta_sys_int.h +++ b/components/bt/bluedroid/bta/sys/include/bta_sys_int.h @@ -33,8 +33,7 @@ *****************************************************************************/ /* SYS HW state */ -enum -{ +enum { BTA_SYS_HW_OFF, BTA_SYS_HW_STARTING, BTA_SYS_HW_ON, @@ -45,15 +44,13 @@ typedef UINT8 tBTA_SYS_HW_STATE; /* Collision callback */ #define MAX_COLLISION_REG 5 -typedef struct -{ +typedef struct { UINT8 id[MAX_COLLISION_REG]; tBTA_SYS_CONN_CBACK *p_coll_cback[MAX_COLLISION_REG]; } tBTA_SYS_COLLISION; /* system manager control block */ -typedef struct -{ +typedef struct { tBTA_SYS_REG *reg[BTA_ID_MAX]; /* registration structures */ BOOLEAN is_reg[BTA_ID_MAX]; /* registration structures */ tBTA_SYS_HW_STATE state; diff --git a/components/bt/bluedroid/bta/sys/utl.c b/components/bt/bluedroid/bta/sys/utl.c old mode 100755 new mode 100644 index 0649924925..6cc6728dfc --- a/components/bt/bluedroid/bta/sys/utl.c +++ b/components/bt/bluedroid/bta/sys/utl.c @@ -43,24 +43,26 @@ INT16 utl_str2int(const char *p_s) { INT32 val = 0; - for (;*p_s == ' ' && *p_s != 0; p_s++); + for (; *p_s == ' ' && *p_s != 0; p_s++); - if (*p_s == 0) return -1; + if (*p_s == 0) { + return -1; + } - for (;;) - { - if ((*p_s < '0') || (*p_s > '9')) return -1; + for (;;) { + if ((*p_s < '0') || (*p_s > '9')) { + return -1; + } val += (INT32) (*p_s++ - '0'); - if (val > 32767) return -1; - - if (*p_s == 0) - { - return (INT16) val; + if (val > 32767) { + return -1; } - else - { + + if (*p_s == 0) { + return (INT16) val; + } else { val *= 10; } } @@ -83,26 +85,21 @@ int utl_strucmp(const char *p_s, const char *p_t) { char c; - while (*p_s && *p_t) - { + while (*p_s && *p_t) { c = *p_t++; - if (c >= 'a' && c <= 'z') - { + if (c >= 'a' && c <= 'z') { c -= 0x20; } - if (*p_s++ != c) - { + if (*p_s++ != c) { return -1; } } /* if p_t hit null first, no match */ - if (*p_t == 0 && *p_s != 0) - { + if (*p_t == 0 && *p_s != 0) { return 1; } /* else p_s hit null first, count as match */ - else - { + else { return 0; } } @@ -125,21 +122,16 @@ UINT8 utl_itoa(UINT16 i, char *p_s) char *p = p_s; BOOLEAN fill = FALSE; - if (i == 0) - { + if (i == 0) { /* take care of zero case */ *p++ = '0'; - } - else - { - for(j = 10000; j > 0; j /= 10) - { + } else { + for (j = 10000; j > 0; j /= 10) { k = i / j; i %= j; - if (k > 0 || fill) - { - *p++ = k + '0'; - fill = TRUE; + if (k > 0 || fill) { + *p++ = k + '0'; + fill = TRUE; } } } @@ -161,8 +153,7 @@ UINT8 utl_itoa(UINT16 i, char *p_s) *******************************************************************************/ void utl_freebuf(void **p) { - if (*p != NULL) - { + if (*p != NULL) { GKI_freebuf(*p); *p = NULL; } @@ -200,8 +191,7 @@ BOOLEAN utl_set_device_class(tBTA_UTL_COD *p_cod, UINT8 cmd) BTM_COD_MINOR_CLASS(minor, dev ); BTM_COD_MAJOR_CLASS(major, dev ); - switch(cmd) - { + switch (cmd) { case BTA_UTL_SET_COD_MAJOR_MINOR: minor = p_cod->minor & BTM_COD_MINOR_CLASS_MASK; major = p_cod->major & BTM_COD_MAJOR_CLASS_MASK; @@ -238,8 +228,9 @@ BOOLEAN utl_set_device_class(tBTA_UTL_COD *p_cod, UINT8 cmd) /* convert the fields into the device class type */ FIELDS_TO_COD(dev_class, minor, major, service); - if (BTM_SetDeviceClass(dev_class) == BTM_SUCCESS) + if (BTM_SetDeviceClass(dev_class) == BTM_SUCCESS) { return TRUE; + } return FALSE; } @@ -259,10 +250,10 @@ BOOLEAN utl_isintstr(const char *p_s) { UINT16 i = 0; - for(i=0; p_s[i] != 0; i++) - { - if(((p_s[i] < '0') || (p_s[i] > '9')) && (p_s[i] != ';')) + for (i = 0; p_s[i] != 0; i++) { + if (((p_s[i] < '0') || (p_s[i] > '9')) && (p_s[i] != ';')) { return FALSE; + } } return TRUE; @@ -283,14 +274,14 @@ BOOLEAN utl_isdialstr(const char *p_s) { UINT16 i = 0; - for(i=0; p_s[i] != 0; i++) - { - if(!(((p_s[i] >= '0') && (p_s[i] <= '9')) - || (p_s[i] == '*') || (p_s[i] == '+') || (p_s[i] == '#') || (p_s[i] == ';') - || ((p_s[i] >= 'A') && (p_s[i] <= 'C')) - || ((p_s[i] == 'p') || (p_s[i] == 'P') - || (p_s[i] == 'w') || (p_s[i] == 'W')))) + for (i = 0; p_s[i] != 0; i++) { + if (!(((p_s[i] >= '0') && (p_s[i] <= '9')) + || (p_s[i] == '*') || (p_s[i] == '+') || (p_s[i] == '#') || (p_s[i] == ';') + || ((p_s[i] >= 'A') && (p_s[i] <= 'C')) + || ((p_s[i] == 'p') || (p_s[i] == 'P') + || (p_s[i] == 'w') || (p_s[i] == 'W')))) { return FALSE; + } } return TRUE; diff --git a/components/bt/bluedroid/btc/core/btc_main.c b/components/bt/bluedroid/btc/core/btc_main.c index 0513defcab..2ca4b5b39b 100644 --- a/components/bt/bluedroid/btc/core/btc_main.c +++ b/components/bt/bluedroid/btc/core/btc_main.c @@ -24,68 +24,68 @@ extern int bte_main_shutdown(void); future_t **btc_main_get_future_p(btc_main_future_type_t type) { - return &main_future[type]; + return &main_future[type]; } static void btc_sec_callback(tBTA_DM_SEC_EVT event, tBTA_DM_SEC *p_data) { - switch (event) { - case BTA_DM_ENABLE_EVT: - future_ready(*btc_main_get_future_p(BTC_MAIN_ENABLE_FUTURE), FUTURE_SUCCESS); - break; - case BTA_DM_DISABLE_EVT: - future_ready(*btc_main_get_future_p(BTC_MAIN_DISABLE_FUTURE), FUTURE_SUCCESS); - break; - } + switch (event) { + case BTA_DM_ENABLE_EVT: + future_ready(*btc_main_get_future_p(BTC_MAIN_ENABLE_FUTURE), FUTURE_SUCCESS); + break; + case BTA_DM_DISABLE_EVT: + future_ready(*btc_main_get_future_p(BTC_MAIN_DISABLE_FUTURE), FUTURE_SUCCESS); + break; + } } static bt_status_t btc_enable_bluetooth(void) { - BTA_EnableBluetooth(btc_sec_callback); + BTA_EnableBluetooth(btc_sec_callback); } static bt_status_t btc_disable_bluetooth(void) { - BTA_DisableBluetooth(); + BTA_DisableBluetooth(); } void btc_init_callback(void) { - future_ready(*btc_main_get_future_p(BTC_MAIN_INIT_FUTURE), FUTURE_SUCCESS); + future_ready(*btc_main_get_future_p(BTC_MAIN_INIT_FUTURE), FUTURE_SUCCESS); } static bt_status_t btc_init_bluetooth(void) { - bte_main_boot_entry(btc_init_callback); + bte_main_boot_entry(btc_init_callback); } static void btc_deinit_bluetooth(void) { - bte_main_shutdown(); - future_ready(*btc_main_get_future_p(BTC_MAIN_DEINIT_FUTURE), FUTURE_SUCCESS); + bte_main_shutdown(); + future_ready(*btc_main_get_future_p(BTC_MAIN_DEINIT_FUTURE), FUTURE_SUCCESS); } void btc_main_call_handler(btc_msg_t *msg) { - LOG_DEBUG("%s act %d\n", __func__, msg->act); + LOG_DEBUG("%s act %d\n", __func__, msg->act); - switch (msg->act) { - case BTC_MAIN_ACT_INIT: - btc_init_bluetooth(); - break; - case BTC_MAIN_ACT_DEINIT: - btc_deinit_bluetooth(); - break; - case BTC_MAIN_ACT_ENABLE: - btc_enable_bluetooth(); - break; - case BTC_MAIN_ACT_DISABLE: - btc_disable_bluetooth(); - break; - default: - LOG_ERROR("%s UNKNOWN ACT %d\n", __func__, msg->act); - break; - } + switch (msg->act) { + case BTC_MAIN_ACT_INIT: + btc_init_bluetooth(); + break; + case BTC_MAIN_ACT_DEINIT: + btc_deinit_bluetooth(); + break; + case BTC_MAIN_ACT_ENABLE: + btc_enable_bluetooth(); + break; + case BTC_MAIN_ACT_DISABLE: + btc_disable_bluetooth(); + break; + default: + LOG_ERROR("%s UNKNOWN ACT %d\n", __func__, msg->act); + break; + } } diff --git a/components/bt/bluedroid/btc/core/btc_manage.c b/components/bt/bluedroid/btc/core/btc_manage.c index 85948a0376..46d20dc2d8 100644 --- a/components/bt/bluedroid/btc/core/btc_manage.c +++ b/components/bt/bluedroid/btc/core/btc_manage.c @@ -24,31 +24,31 @@ static esp_profile_cb_t btc_profile_cb_tab[BTC_PID_NUM] = {}; void esp_profile_cb_reset(void) { - int i; + int i; - for (i = 0; i < BTC_PID_NUM; i++) { - btc_profile_cb_tab[i] = NULL; - } + for (i = 0; i < BTC_PID_NUM; i++) { + btc_profile_cb_tab[i] = NULL; + } } int btc_profile_cb_set(btc_pid_t profile_id, esp_profile_cb_t cb) { - if (profile_id < 0 || profile_id >= BTC_PID_NUM) { - return -1; - } + if (profile_id < 0 || profile_id >= BTC_PID_NUM) { + return -1; + } - btc_profile_cb_tab[profile_id] = cb; + btc_profile_cb_tab[profile_id] = cb; - return 0; + return 0; } esp_profile_cb_t btc_profile_cb_get(btc_pid_t profile_id) { - if (profile_id < 0 || profile_id >= BTC_PID_NUM) { - return NULL; - } + if (profile_id < 0 || profile_id >= BTC_PID_NUM) { + return NULL; + } - return btc_profile_cb_tab[profile_id]; + return btc_profile_cb_tab[profile_id]; } diff --git a/components/bt/bluedroid/btc/core/btc_task.c b/components/bt/bluedroid/btc/core/btc_task.c index 90d8c398f0..842fdd10fe 100644 --- a/components/bt/bluedroid/btc/core/btc_task.c +++ b/components/bt/bluedroid/btc/core/btc_task.c @@ -31,107 +31,107 @@ static xTaskHandle xBtcTaskHandle = NULL; static xQueueHandle xBtcQueue = 0; static btc_func_t profile_tab[BTC_PID_NUM] = { - [BTC_PID_MAIN_INIT] = {btc_main_call_handler, NULL }, - [BTC_PID_GATTS] = {btc_gatts_call_handler, btc_gatts_cb_handler }, - [BTC_PID_GATTC] = {btc_gattc_call_handler, btc_gattc_cb_handler }, - [BTC_PID_GAP_BLE] = {btc_gap_ble_call_handler, btc_gap_ble_cb_handler }, - [BTC_PID_GAP_BT] = {NULL, NULL}, // {btc_gap_bt_call_handler, btc_gap_bt_cb_handler }, - [BTC_PID_SDP] = {NULL, NULL}, - [BTC_PID_BLE_HID] = {NULL, NULL}, - [BTC_PID_BT_HID] = {NULL, NULL}, - [BTC_PID_SPP] = {NULL, NULL}, - [BTC_PID_SPPLIKE] = {NULL, NULL}, - [BTC_PID_BLUFI] = {btc_blufi_call_handler, btc_blufi_cb_handler }, + [BTC_PID_MAIN_INIT] = {btc_main_call_handler, NULL }, + [BTC_PID_GATTS] = {btc_gatts_call_handler, btc_gatts_cb_handler }, + [BTC_PID_GATTC] = {btc_gattc_call_handler, btc_gattc_cb_handler }, + [BTC_PID_GAP_BLE] = {btc_gap_ble_call_handler, btc_gap_ble_cb_handler }, + [BTC_PID_GAP_BT] = {NULL, NULL}, // {btc_gap_bt_call_handler, btc_gap_bt_cb_handler }, + [BTC_PID_SDP] = {NULL, NULL}, + [BTC_PID_BLE_HID] = {NULL, NULL}, + [BTC_PID_BT_HID] = {NULL, NULL}, + [BTC_PID_SPP] = {NULL, NULL}, + [BTC_PID_SPPLIKE] = {NULL, NULL}, + [BTC_PID_BLUFI] = {btc_blufi_call_handler, btc_blufi_cb_handler }, }; - /***************************************************************************** - ** - ** Function btc_task - ** - ** Description Process profile Task Thread. - ******************************************************************************/ +/***************************************************************************** +** +** Function btc_task +** +** Description Process profile Task Thread. +******************************************************************************/ static void btc_task(void *arg) { - btc_msg_t msg; + btc_msg_t msg; - for (;;) { - if (pdTRUE == xQueueReceive(xBtcQueue, &msg, (portTickType)portMAX_DELAY)) { - LOG_DEBUG("%s msg %u %u %u %08x\n", __func__, msg.sig, msg.pid, msg.act, msg.arg); - switch (msg.sig) { - case BTC_SIG_API_CALL: - profile_tab[msg.pid].btc_call(&msg); - break; - case BTC_SIG_API_CB: - profile_tab[msg.pid].btc_cb(&msg); - break; - default: - break; - } - if (msg.arg) { - GKI_freebuf(msg.arg); - } - } - } -} + for (;;) { + if (pdTRUE == xQueueReceive(xBtcQueue, &msg, (portTickType)portMAX_DELAY)) { + LOG_DEBUG("%s msg %u %u %u %08x\n", __func__, msg.sig, msg.pid, msg.act, msg.arg); + switch (msg.sig) { + case BTC_SIG_API_CALL: + profile_tab[msg.pid].btc_call(&msg); + break; + case BTC_SIG_API_CB: + profile_tab[msg.pid].btc_cb(&msg); + break; + default: + break; + } + if (msg.arg) { + GKI_freebuf(msg.arg); + } + } + } +} static bt_status_t btc_task_post(btc_msg_t *msg) { - if (msg == NULL) { - return BT_STATUS_PARM_INVALID; - } + if (msg == NULL) { + return BT_STATUS_PARM_INVALID; + } - if (xQueueSend(xBtcQueue, msg, 10/portTICK_RATE_MS) != pdTRUE) { - LOG_ERROR("Btc Post failed\n"); - return BT_STATUS_BUSY; - } + if (xQueueSend(xBtcQueue, msg, 10 / portTICK_RATE_MS) != pdTRUE) { + LOG_ERROR("Btc Post failed\n"); + return BT_STATUS_BUSY; + } - return BT_STATUS_SUCCESS; + return BT_STATUS_SUCCESS; } bt_status_t btc_transfer_context(btc_msg_t *msg, void *arg, int arg_len, btc_arg_deep_copy_t copy_func) { - btc_msg_t lmsg; + btc_msg_t lmsg; - if (msg == NULL) { - return BT_STATUS_PARM_INVALID; - } + if (msg == NULL) { + return BT_STATUS_PARM_INVALID; + } - LOG_DEBUG("%s msg %u %u %u %p\n", __func__, msg->sig, msg->pid, msg->act, arg); + LOG_DEBUG("%s msg %u %u %u %p\n", __func__, msg->sig, msg->pid, msg->act, arg); - memcpy(&lmsg, msg, sizeof(btc_msg_t)); - if (arg) { - lmsg.arg = (void *)GKI_getbuf(arg_len); - memset(lmsg.arg, 0x00, arg_len); //important, avoid arg which have no length - if (lmsg.arg == NULL) { - return BT_STATUS_NOMEM; - } - memcpy(lmsg.arg, arg, arg_len); - if (copy_func) { - copy_func(&lmsg, lmsg.arg, arg); - } - } else { - lmsg.arg = NULL; - } + memcpy(&lmsg, msg, sizeof(btc_msg_t)); + if (arg) { + lmsg.arg = (void *)GKI_getbuf(arg_len); + memset(lmsg.arg, 0x00, arg_len); //important, avoid arg which have no length + if (lmsg.arg == NULL) { + return BT_STATUS_NOMEM; + } + memcpy(lmsg.arg, arg, arg_len); + if (copy_func) { + copy_func(&lmsg, lmsg.arg, arg); + } + } else { + lmsg.arg = NULL; + } - return btc_task_post(&lmsg); + return btc_task_post(&lmsg); } int btc_init(void) { - xBtcQueue = xQueueCreate(BTC_TASK_QUEUE_NUM, sizeof(btc_msg_t)); - xTaskCreate(btc_task, "Btc_task", BTC_TASK_STACK_SIZE, NULL, BTC_TASK_PRIO, &xBtcTaskHandle); + xBtcQueue = xQueueCreate(BTC_TASK_QUEUE_NUM, sizeof(btc_msg_t)); + xTaskCreate(btc_task, "Btc_task", BTC_TASK_STACK_SIZE, NULL, BTC_TASK_PRIO, &xBtcTaskHandle); - /* TODO: initial the profile_tab */ + /* TODO: initial the profile_tab */ - return BT_STATUS_SUCCESS; + return BT_STATUS_SUCCESS; } void btc_deinit(void) { - vTaskDelete(xBtcTaskHandle); - vQueueDelete(xBtcQueue); + vTaskDelete(xBtcTaskHandle); + vQueueDelete(xBtcQueue); - xBtcTaskHandle = NULL; - xBtcQueue = 0; + xBtcTaskHandle = NULL; + xBtcQueue = 0; } diff --git a/components/bt/bluedroid/btc/include/btc_main.h b/components/bt/bluedroid/btc/include/btc_main.h index 668d3729a4..b95ae0bbec 100644 --- a/components/bt/bluedroid/btc/include/btc_main.h +++ b/components/bt/bluedroid/btc/include/btc_main.h @@ -22,36 +22,36 @@ #include "btc_task.h" typedef enum { - BTC_MAIN_ACT_INIT = 0, - BTC_MAIN_ACT_DEINIT, - BTC_MAIN_ACT_ENABLE, - BTC_MAIN_ACT_DISABLE, + BTC_MAIN_ACT_INIT = 0, + BTC_MAIN_ACT_DEINIT, + BTC_MAIN_ACT_ENABLE, + BTC_MAIN_ACT_DISABLE, } btc_main_act_t; typedef enum { - BTC_MAIN_INIT_FUTURE = 0, - BTC_MAIN_DEINIT_FUTURE, - BTC_MAIN_ENABLE_FUTURE, - BTC_MAIN_DISABLE_FUTURE, - BTC_MAIN_FUTURE_NUM, + BTC_MAIN_INIT_FUTURE = 0, + BTC_MAIN_DEINIT_FUTURE, + BTC_MAIN_ENABLE_FUTURE, + BTC_MAIN_DISABLE_FUTURE, + BTC_MAIN_FUTURE_NUM, } btc_main_future_type_t; future_t **btc_main_get_future_p(btc_main_future_type_t type); #if 0 typedef union { - struct btc_main_init_args { - future_t *future; - } init; - struct btc_main_deinit_args { - future_t *future; - } deinit; - struct btc_main_init_args { - future_t *future; - } enable; - struct btc_main_init_args { - future_t *future; - } disable; + struct btc_main_init_args { + future_t *future; + } init; + struct btc_main_deinit_args { + future_t *future; + } deinit; + struct btc_main_init_args { + future_t *future; + } enable; + struct btc_main_init_args { + future_t *future; + } disable; } btc_main_args_t; bt_status_t btc_enable_bluetooth(future_t *future); diff --git a/components/bt/bluedroid/btc/include/btc_task.h b/components/bt/bluedroid/btc/include/btc_task.h index e8c9d05357..923b8b84e5 100644 --- a/components/bt/bluedroid/btc/include/btc_task.h +++ b/components/bt/bluedroid/btc/include/btc_task.h @@ -18,43 +18,43 @@ #include #include "bt_defs.h" -#define BTC_TASK_QUEUE_NUM 20 -#define BTC_TASK_STACK_SIZE 4096 -#define BTC_TASK_NAME "btcT" -#define BTC_TASK_PRIO (configMAX_PRIORITIES - 5) +#define BTC_TASK_QUEUE_NUM 20 +#define BTC_TASK_STACK_SIZE 4096 +#define BTC_TASK_NAME "btcT" +#define BTC_TASK_PRIO (configMAX_PRIORITIES - 5) typedef struct btc_msg { - uint8_t sig; //event signal - uint8_t aid; //application id - uint8_t pid; //profile id - uint8_t act; //profile action, defined in seprerate header files - void *arg; //param for btc function or function param + uint8_t sig; //event signal + uint8_t aid; //application id + uint8_t pid; //profile id + uint8_t act; //profile action, defined in seprerate header files + void *arg; //param for btc function or function param } btc_msg_t; typedef enum { - BTC_SIG_API_CALL = 0, // APP TO STACK - BTC_SIG_API_CB, // STACK TO APP - BTC_SIG_NUM, + BTC_SIG_API_CALL = 0, // APP TO STACK + BTC_SIG_API_CB, // STACK TO APP + BTC_SIG_NUM, } btc_sig_t; //btc message type typedef enum { - BTC_PID_MAIN_INIT = 0, - BTC_PID_GATTS, - BTC_PID_GATTC, - BTC_PID_GAP_BLE, - BTC_PID_GAP_BT, - BTC_PID_SDP, - BTC_PID_BLE_HID, - BTC_PID_BT_HID, - BTC_PID_SPP, - BTC_PID_SPPLIKE, - BTC_PID_BLUFI, - BTC_PID_NUM, -} btc_pid_t; //btc profile id + BTC_PID_MAIN_INIT = 0, + BTC_PID_GATTS, + BTC_PID_GATTC, + BTC_PID_GAP_BLE, + BTC_PID_GAP_BT, + BTC_PID_SDP, + BTC_PID_BLE_HID, + BTC_PID_BT_HID, + BTC_PID_SPP, + BTC_PID_SPPLIKE, + BTC_PID_BLUFI, + BTC_PID_NUM, +} btc_pid_t; //btc profile id typedef struct { - void (* btc_call)(btc_msg_t *msg); - void (* btc_cb)(btc_msg_t *msg); + void (* btc_call)(btc_msg_t *msg); + void (* btc_cb)(btc_msg_t *msg); } btc_func_t; typedef void (* btc_arg_deep_copy_t)(btc_msg_t *msg, void *dst, void *src); diff --git a/components/bt/bluedroid/btc/profile/esp/ble_button/button_pro.c b/components/bt/bluedroid/btc/profile/esp/ble_button/button_pro.c index 55f9a8b502..74d496c3e5 100644 --- a/components/bt/bluedroid/btc/profile/esp/ble_button/button_pro.c +++ b/components/bt/bluedroid/btc/profile/esp/ble_button/button_pro.c @@ -33,9 +33,9 @@ #if (BUT_PROFILE_CFG) -#define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0])) +#define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0])) - button_env_cb_t button_cb_env; +button_env_cb_t button_cb_env; @@ -52,143 +52,137 @@ static void button_profile_cb(esp_gatts_evt_t event, esp_gatts_t *p_data); ** ** Description the callback function after the profile has been register to the BTA manager module ** -** Returns NULL +** Returns NULL ** *******************************************************************************/ static void button_profile_cb(esp_gatts_evt_t event, esp_gatts_t *p_data) { - esp_gatts_rsp_t rsp; - esp_bt_uuid_t uuid = {LEN_UUID_16, {ATT_SVC_BUTTON}}; - but_inst_t *p_inst = &button_cb_env.button_inst; - uint8_t net_event = 0xff; - uint8_t len = 0; - uint8_t *p_rec_data = NULL; - //LOG_ERROR("p_data->status = %x\n",p_data->status); - //if(p_data->status != BTA_GATT_OK){ - // LOG_ERROR("button profile register failed\n"); - // return; - //} - LOG_ERROR("button profile cb event = %x\n",event); - switch(event) - { - case ESP_GATTS_REG_EVT: - - LOG_ERROR("p_data->reg_oper.status = %x\n",p_data->reg_oper.status); - LOG_ERROR("(p_data->reg_oper.uuid.uu.uuid16=%x\n",p_data->reg_oper.uuid.uu.uuid16); - if(p_data->reg_oper.status != BTA_GATT_OK) - { - LOG_ERROR("button profile register failed\n"); - } - button_cb_env.gatt_if = p_data->reg_oper.server_if; - button_cb_env.enabled = true; - //button_cb_env.button_inst.app_id = p_data->reg_oper.uuid; - //create the button service to the service data base. - if(p_data->reg_oper.uuid.uu.uuid16 == ATT_SVC_BUTTON) - { - Button_CreateService(); - } - break; - case ESP_GATTS_READ_EVT: - //tBTA_GATTS_RSP rsp; - memset(&rsp,0,sizeof(tBTA_GATTS_API_RSP)); - rsp.attr_value.handle = p_data->req_data.p_data->read_req.handle; - rsp.attr_value.len = 2; - esp_ble_gatts_send_rsp(p_data->req_data.conn_id,p_data->req_data.trans_id, - p_data->req_data.status,&rsp); - break; - case ESP_GATTS_WRITE_EVT: - esp_ble_gatts_send_rsp(p_data->req_data.conn_id,p_data->req_data.trans_id, - p_data->req_data.status,NULL); - LOG_ERROR("Received button data:"); - for(int i = 0; i < p_data->req_data.p_data->write_req.len; i++){ - LOG_ERROR("%x",p_data->req_data.p_data->write_req.value[i]); - } - LOG_ERROR("\n"); - if(p_data->req_data.p_data->write_req.handle == button_cb_env.button_inst.but_wirt_hdl){ + esp_gatts_rsp_t rsp; + esp_bt_uuid_t uuid = {LEN_UUID_16, {ATT_SVC_BUTTON}}; + but_inst_t *p_inst = &button_cb_env.button_inst; + uint8_t net_event = 0xff; + uint8_t len = 0; + uint8_t *p_rec_data = NULL; + //LOG_ERROR("p_data->status = %x\n",p_data->status); + //if(p_data->status != BTA_GATT_OK){ + // LOG_ERROR("button profile register failed\n"); + // return; + //} + LOG_ERROR("button profile cb event = %x\n", event); + switch (event) { + case ESP_GATTS_REG_EVT: - p_rec_data = &p_data->req_data.p_data->write_req.value[0]; - // button_msg_notify(len,p_rec_data); - (*p_inst->p_cback)(button_cb_env.button_inst.app_id,net_event,len,p_rec_data); - - } - break; - case ESP_GATTS_CFM_EVT: - - break; - case ESP_GATTS_CREATE_EVT: - //tBT_UUID uuid_butt_write; - uuid.uu.uuid16 = ATT_CHAR_BUTTON_WIT; - //tBTA_GATT_PERM perm = (GATT_PERM_WRITE|GATT_PERM_READ); - //tBTA_GATT_CHAR_PROP prop = (GATT_CHAR_PROP_BIT_READ|GATT_CHAR_PROP_BIT_WRITE); - //uuid = {LEN_UUID_16, {ATT_SVC_BUTTON}}; - button_cb_env.clcb.cur_srvc_id= p_data->create.service_id; - button_cb_env.is_primery = p_data->create.is_primary; - //uuid = {LEN_UUID_16, {ATT_CHAR_BUTTON_WIT}}; - //start the button service after created - esp_ble_gatts_start_srvc(p_data->create.service_id); - //add the frist button characteristic --> write characteristic - esp_ble_gatts_add_char(button_cb_env.clcb.cur_srvc_id,&uuid, - (GATT_PERM_WRITE|GATT_PERM_READ), - (GATT_CHAR_PROP_BIT_READ|GATT_CHAR_PROP_BIT_WRITE)); - break; - - case ESP_GATTS_ADD_CHAR_EVT: - if(p_data->add_result.char_uuid.uu.uuid16 == ATT_CHAR_BUTTON_WIT) - { - uuid.uu.uuid16 = ATT_CHAR_BUTTON_NTF; - //tBTA_GATT_PERM perm = GATT_PERM_READ; - tBTA_GATT_CHAR_PROP prop = (GATT_CHAR_PROP_BIT_READ|GATT_CHAR_PROP_BIT_NOTIFY); - //save the att handle to the env - button_cb_env.button_inst.but_wirt_hdl = p_data->add_result.attr_id; - //add the frist button characteristic --> Notify characteristic - esp_ble_gatts_add_char(button_cb_env.clcb.cur_srvc_id,&uuid, - GATT_PERM_READ,(GATT_CHAR_PROP_BIT_READ|GATT_CHAR_PROP_BIT_NOTIFY)); - }else if(p_data->add_result.char_uuid.uu.uuid16 == ATT_CHAR_BUTTON_NTF){ // add the gattc config descriptor to the notify charateristic - //tBTA_GATT_PERM perm = (GATT_PERM_WRITE|GATT_PERM_WRITE); - uuid.uu.uuid16 = GATT_UUID_CHAR_CLIENT_CONFIG; - button_cb_env.button_inst.but_ntf_hdl = p_data->add_result.attr_id; - esp_ble_gatts_add_char_descr (button_cb_env.clcb.cur_srvc_id, - (GATT_PERM_WRITE|GATT_PERM_WRITE), - &uuid); - } - - break; - case ESP_GATTS_ADD_CHAR_DESCR_EVT: - if(p_data->add_result.char_uuid.uu.uuid16 == GATT_UUID_CHAR_CLIENT_CONFIG) - { - button_cb_env.button_inst.but_cfg_hdl = p_data->add_result.attr_id; - } - ///Start advertising - LOG_ERROR("\n*******Start sent the ADV.*************\n"); - //esp_ble_start_advertising (&adv_params); - //BTA_GATTS_Listen(button_cb_env.gatt_if, true, NULL); - break; - case ESP_GATTS_CONNECT_EVT: - LOG_ERROR("############BUTTON CONNCET EVT################\n"); - //esp_ble_stop_advertising(); - //set the connection flag to true - button_env_clcb_alloc(p_data->conn.conn_id, p_data->conn.remote_bda); - break; - case ESP_GATTS_DISCONNECT_EVT: - //set the connection flag to true - button_cb_env.clcb.connected = false; - break; - case ESP_GATTS_OPEN_EVT: - ///stop the advertising after connected - - break; - case ESP_GATTS_CLOSE_EVT: - if(button_cb_env.clcb.connected && (button_cb_env.clcb.conn_id == p_data->conn.conn_id)) - { - //set the connection channal congested flag to true - button_cb_env.clcb.congest = p_data->congest.congested; - } - break; - case ESP_GATTS_CONGEST_EVT: - break; - default: - break; - } + LOG_ERROR("p_data->reg_oper.status = %x\n", p_data->reg_oper.status); + LOG_ERROR("(p_data->reg_oper.uuid.uu.uuid16=%x\n", p_data->reg_oper.uuid.uu.uuid16); + if (p_data->reg_oper.status != BTA_GATT_OK) { + LOG_ERROR("button profile register failed\n"); + } + button_cb_env.gatt_if = p_data->reg_oper.server_if; + button_cb_env.enabled = true; + //button_cb_env.button_inst.app_id = p_data->reg_oper.uuid; + //create the button service to the service data base. + if (p_data->reg_oper.uuid.uu.uuid16 == ATT_SVC_BUTTON) { + Button_CreateService(); + } + break; + case ESP_GATTS_READ_EVT: + //tBTA_GATTS_RSP rsp; + memset(&rsp, 0, sizeof(tBTA_GATTS_API_RSP)); + rsp.attr_value.handle = p_data->req_data.p_data->read_req.handle; + rsp.attr_value.len = 2; + esp_ble_gatts_send_rsp(p_data->req_data.conn_id, p_data->req_data.trans_id, + p_data->req_data.status, &rsp); + break; + case ESP_GATTS_WRITE_EVT: + esp_ble_gatts_send_rsp(p_data->req_data.conn_id, p_data->req_data.trans_id, + p_data->req_data.status, NULL); + LOG_ERROR("Received button data:"); + for (int i = 0; i < p_data->req_data.p_data->write_req.len; i++) { + LOG_ERROR("%x", p_data->req_data.p_data->write_req.value[i]); + } + LOG_ERROR("\n"); + if (p_data->req_data.p_data->write_req.handle == button_cb_env.button_inst.but_wirt_hdl) { + + p_rec_data = &p_data->req_data.p_data->write_req.value[0]; + // button_msg_notify(len,p_rec_data); + (*p_inst->p_cback)(button_cb_env.button_inst.app_id, net_event, len, p_rec_data); + + } + break; + case ESP_GATTS_CFM_EVT: + + break; + case ESP_GATTS_CREATE_EVT: + //tBT_UUID uuid_butt_write; + uuid.uu.uuid16 = ATT_CHAR_BUTTON_WIT; + //tBTA_GATT_PERM perm = (GATT_PERM_WRITE|GATT_PERM_READ); + //tBTA_GATT_CHAR_PROP prop = (GATT_CHAR_PROP_BIT_READ|GATT_CHAR_PROP_BIT_WRITE); + //uuid = {LEN_UUID_16, {ATT_SVC_BUTTON}}; + button_cb_env.clcb.cur_srvc_id = p_data->create.service_id; + button_cb_env.is_primery = p_data->create.is_primary; + //uuid = {LEN_UUID_16, {ATT_CHAR_BUTTON_WIT}}; + //start the button service after created + esp_ble_gatts_start_srvc(p_data->create.service_id); + //add the frist button characteristic --> write characteristic + esp_ble_gatts_add_char(button_cb_env.clcb.cur_srvc_id, &uuid, + (GATT_PERM_WRITE | GATT_PERM_READ), + (GATT_CHAR_PROP_BIT_READ | GATT_CHAR_PROP_BIT_WRITE)); + break; + + case ESP_GATTS_ADD_CHAR_EVT: + if (p_data->add_result.char_uuid.uu.uuid16 == ATT_CHAR_BUTTON_WIT) { + uuid.uu.uuid16 = ATT_CHAR_BUTTON_NTF; + //tBTA_GATT_PERM perm = GATT_PERM_READ; + tBTA_GATT_CHAR_PROP prop = (GATT_CHAR_PROP_BIT_READ | GATT_CHAR_PROP_BIT_NOTIFY); + //save the att handle to the env + button_cb_env.button_inst.but_wirt_hdl = p_data->add_result.attr_id; + //add the frist button characteristic --> Notify characteristic + esp_ble_gatts_add_char(button_cb_env.clcb.cur_srvc_id, &uuid, + GATT_PERM_READ, (GATT_CHAR_PROP_BIT_READ | GATT_CHAR_PROP_BIT_NOTIFY)); + } else if (p_data->add_result.char_uuid.uu.uuid16 == ATT_CHAR_BUTTON_NTF) { // add the gattc config descriptor to the notify charateristic + //tBTA_GATT_PERM perm = (GATT_PERM_WRITE|GATT_PERM_WRITE); + uuid.uu.uuid16 = GATT_UUID_CHAR_CLIENT_CONFIG; + button_cb_env.button_inst.but_ntf_hdl = p_data->add_result.attr_id; + esp_ble_gatts_add_char_descr (button_cb_env.clcb.cur_srvc_id, + (GATT_PERM_WRITE | GATT_PERM_WRITE), + &uuid); + } + + break; + case ESP_GATTS_ADD_CHAR_DESCR_EVT: + if (p_data->add_result.char_uuid.uu.uuid16 == GATT_UUID_CHAR_CLIENT_CONFIG) { + button_cb_env.button_inst.but_cfg_hdl = p_data->add_result.attr_id; + } + ///Start advertising + LOG_ERROR("\n*******Start sent the ADV.*************\n"); + //esp_ble_start_advertising (&adv_params); + //BTA_GATTS_Listen(button_cb_env.gatt_if, true, NULL); + break; + case ESP_GATTS_CONNECT_EVT: + LOG_ERROR("############BUTTON CONNCET EVT################\n"); + //esp_ble_stop_advertising(); + //set the connection flag to true + button_env_clcb_alloc(p_data->conn.conn_id, p_data->conn.remote_bda); + break; + case ESP_GATTS_DISCONNECT_EVT: + //set the connection flag to true + button_cb_env.clcb.connected = false; + break; + case ESP_GATTS_OPEN_EVT: + ///stop the advertising after connected + + break; + case ESP_GATTS_CLOSE_EVT: + if (button_cb_env.clcb.connected && (button_cb_env.clcb.conn_id == p_data->conn.conn_id)) { + //set the connection channal congested flag to true + button_cb_env.clcb.congest = p_data->congest.congested; + } + break; + case ESP_GATTS_CONGEST_EVT: + break; + default: + break; + } } @@ -198,23 +192,23 @@ static void button_profile_cb(esp_gatts_evt_t event, esp_gatts_t *p_data) ** ** Description Create a Service for the button profile ** -** Returns NULL +** Returns NULL ** *******************************************************************************/ void Button_CreateService(void) { - esp_gatts_if_t server_if ; - esp_bt_uuid_t uuid = {LEN_UUID_16, {ATT_SVC_BUTTON}}; - uint16_t num_handle = KEY_IDX_NB; - uint8_t inst = 0x00; - server_if = button_cb_env.gatt_if; - button_cb_env.inst_id = inst; - //if(!button_cb_env.enabled) - //{ - // LOG_ERROR("button service added error."); - //} - esp_ble_gatts_create_srvc(server_if,&uuid,inst,num_handle,true); - + esp_gatts_if_t server_if ; + esp_bt_uuid_t uuid = {LEN_UUID_16, {ATT_SVC_BUTTON}}; + uint16_t num_handle = KEY_IDX_NB; + uint8_t inst = 0x00; + server_if = button_cb_env.gatt_if; + button_cb_env.inst_id = inst; + //if(!button_cb_env.enabled) + //{ + // LOG_ERROR("button service added error."); + //} + esp_ble_gatts_create_srvc(server_if, &uuid, inst, num_handle, true); + } /******************************************************************************* @@ -228,19 +222,18 @@ void Button_CreateService(void) *******************************************************************************/ but_clcb_t *button_env_clcb_alloc (uint16_t conn_id, BD_ADDR remote_bda) { - but_clcb_t *p_clcb = NULL; - p_clcb = &button_cb_env.clcb; - - if(!p_clcb->in_use) - { - p_clcb->in_use = TRUE; - p_clcb->conn_id = conn_id; - LOG_ERROR("p_clcb->conn_id = %x\n",conn_id); - p_clcb->connected = TRUE; - memcpy(p_clcb->remote_bda,remote_bda,BD_ADDR_LEN); - } + but_clcb_t *p_clcb = NULL; + p_clcb = &button_cb_env.clcb; - return p_clcb; + if (!p_clcb->in_use) { + p_clcb->in_use = TRUE; + p_clcb->conn_id = conn_id; + LOG_ERROR("p_clcb->conn_id = %x\n", conn_id); + p_clcb->connected = TRUE; + memcpy(p_clcb->remote_bda, remote_bda, BD_ADDR_LEN); + } + + return p_clcb; } /******************************************************************************* @@ -254,18 +247,16 @@ but_clcb_t *button_env_clcb_alloc (uint16_t conn_id, BD_ADDR remote_bda) *******************************************************************************/ uint16_t button_env_find_conn_id_by_bd_adddr(BD_ADDR remote_bda) { - uint8_t i_clcb; - but_clcb_t *p_clcb = NULL; + uint8_t i_clcb; + but_clcb_t *p_clcb = NULL; - for(i_clcb = 0, p_clcb = &button_cb_env.clcb; i_clcb < BUTT_MAX_APPS; i_clcb++, p_clcb++) - { - if(p_clcb->in_use && p_clcb->connected &&memcmp(p_clcb->remote_bda,remote_bda,BD_ADDR_LEN)) - { - return p_clcb->conn_id; - } - } + for (i_clcb = 0, p_clcb = &button_cb_env.clcb; i_clcb < BUTT_MAX_APPS; i_clcb++, p_clcb++) { + if (p_clcb->in_use && p_clcb->connected && memcmp(p_clcb->remote_bda, remote_bda, BD_ADDR_LEN)) { + return p_clcb->conn_id; + } + } - return GATT_INVALID_CONN_ID; + return GATT_INVALID_CONN_ID; } /******************************************************************************* @@ -280,19 +271,17 @@ uint16_t button_env_find_conn_id_by_bd_adddr(BD_ADDR remote_bda) BOOLEAN button_env_clcb_dealloc(uint16_t conn_id) { - uint16_t i_clcb = 0; - but_clcb_t *p_clcb = NULL; + uint16_t i_clcb = 0; + but_clcb_t *p_clcb = NULL; - for(i_clcb = 0, p_clcb = &button_cb_env.clcb; i_clcb < 1; i_clcb++, p_clcb++) - { - if(p_clcb->in_use && p_clcb->connected && (p_clcb->conn_id == conn_id)) - { - memset(p_clcb, 0, sizeof(but_clcb_t)); - return TRUE; - } - } + for (i_clcb = 0, p_clcb = &button_cb_env.clcb; i_clcb < 1; i_clcb++, p_clcb++) { + if (p_clcb->in_use && p_clcb->connected && (p_clcb->conn_id == conn_id)) { + memset(p_clcb, 0, sizeof(but_clcb_t)); + return TRUE; + } + } - return FALSE; + return FALSE; } /******************************************************************************* @@ -304,55 +293,50 @@ BOOLEAN button_env_clcb_dealloc(uint16_t conn_id) *******************************************************************************/ esp_gatt_status_t button_init (but_prf_cb_t call_back) { - tBT_UUID app_uuid = {LEN_UUID_16,{ATT_SVC_BUTTON}}; - - LOG_ERROR("\n=============================button_init==============================================\n"); - if(button_cb_env.enabled) - { - LOG_ERROR("button svc already initaliezd\n"); - return ESP_GATT_ERROR; - } - else - { - memset(&button_cb_env,0,sizeof(button_env_cb_t)); - } - + tBT_UUID app_uuid = {LEN_UUID_16, {ATT_SVC_BUTTON}}; - if(call_back != NULL) - { - button_cb_env.button_inst.p_cback = call_back; - } + LOG_ERROR("\n=============================button_init==============================================\n"); + if (button_cb_env.enabled) { + LOG_ERROR("button svc already initaliezd\n"); + return ESP_GATT_ERROR; + } else { + memset(&button_cb_env, 0, sizeof(button_env_cb_t)); + } - - /* register the button profile to the BTA_GATTS module*/ - esp_ble_gatts_app_register(&app_uuid,button_profile_cb); - button_cb_env.enabled = TRUE; + if (call_back != NULL) { + button_cb_env.button_inst.p_cback = call_back; + } - return ESP_GATT_OK; + + /* register the button profile to the BTA_GATTS module*/ + esp_ble_gatts_app_register(&app_uuid, button_profile_cb); + + button_cb_env.enabled = TRUE; + + return ESP_GATT_OK; } void button_disable(uint16_t connid) { - button_env_clcb_dealloc(connid); + button_env_clcb_dealloc(connid); } void button_msg_notify(uint16_t len, uint8_t *button_msg) { - BOOLEAN conn_status = button_cb_env.clcb.connected; - uint16_t conn_id = button_cb_env.clcb.conn_id; - uint16_t attr_id = button_cb_env.button_inst.but_ntf_hdl; - //notify rsp==false; indicate rsp==true. - BOOLEAN rsp = false; - if(!conn_status && button_cb_env.clcb.congest) - { - LOG_ERROR("the conneciton for button profile has been loss\n"); - return; - } - - esp_ble_gatts_hdl_val_indica (conn_id, attr_id, len, - button_msg, rsp); + BOOLEAN conn_status = button_cb_env.clcb.connected; + uint16_t conn_id = button_cb_env.clcb.conn_id; + uint16_t attr_id = button_cb_env.button_inst.but_ntf_hdl; + //notify rsp==false; indicate rsp==true. + BOOLEAN rsp = false; + if (!conn_status && button_cb_env.clcb.congest) { + LOG_ERROR("the conneciton for button profile has been loss\n"); + return; + } + + esp_ble_gatts_hdl_val_indica (conn_id, attr_id, len, + button_msg, rsp); } -#endif ///BUT_PROFILE_CFG +#endif ///BUT_PROFILE_CFG diff --git a/components/bt/bluedroid/btc/profile/esp/blufi/blufi_adv.c b/components/bt/bluedroid/btc/profile/esp/blufi/blufi_adv.c index ee95d89b53..fcd20821fa 100644 --- a/components/bt/bluedroid/btc/profile/esp/blufi/blufi_adv.c +++ b/components/bt/bluedroid/btc/profile/esp/blufi/blufi_adv.c @@ -15,89 +15,78 @@ #include "blufi_adv.h" - /******************************************************************************* - ** - ** Function BlufiConfigadvData - ** - ** Description This function is called to override the BTA default ADV parameters. - ** - ** adv_data: Pointer to User defined ADV data structure. This - ** memory space can not be freed until p_adv_data_cback - ** is received. - ** p_adv_data_cback: set adv data complete callback. - ** - ** Returns None - ** - *******************************************************************************/ - void BlufiBleConfigadvData(tBLUFI_BLE_ADV_DATA *adv_data, - tBTA_SET_ADV_DATA_CMPL_CBACK *p_adv_data_cback) +/******************************************************************************* +** +** Function BlufiConfigadvData +** +** Description This function is called to override the BTA default ADV parameters. +** +** adv_data: Pointer to User defined ADV data structure. This +** memory space can not be freed until p_adv_data_cback +** is received. +** p_adv_data_cback: set adv data complete callback. +** +** Returns None +** +*******************************************************************************/ +void BlufiBleConfigadvData(tBLUFI_BLE_ADV_DATA *adv_data, + tBTA_SET_ADV_DATA_CMPL_CBACK *p_adv_data_cback) { - tBTA_BLE_AD_MASK data_mask = 0; - if(adv_data->adv_name != NULL) - { - data_mask |= BTM_BLE_AD_BIT_DEV_NAME; - BTA_DmSetDeviceName(adv_data->adv_name); - } - if(adv_data->ble_adv_data.int_range.low != 0 || - adv_data->ble_adv_data.int_range.hi != 0) - data_mask |= BTM_BLE_AD_BIT_INT_RANGE; - - if(adv_data->ble_adv_data.p_manu != NULL) - { - data_mask |= BTM_BLE_AD_BIT_MANU; - } + tBTA_BLE_AD_MASK data_mask = 0; + if (adv_data->adv_name != NULL) { + data_mask |= BTM_BLE_AD_BIT_DEV_NAME; + BTA_DmSetDeviceName(adv_data->adv_name); + } + if (adv_data->ble_adv_data.int_range.low != 0 || + adv_data->ble_adv_data.int_range.hi != 0) { + data_mask |= BTM_BLE_AD_BIT_INT_RANGE; + } - if(adv_data->ble_adv_data.p_services != NULL) - { - data_mask |= BTM_BLE_AD_BIT_SERVICE; - } + if (adv_data->ble_adv_data.p_manu != NULL) { + data_mask |= BTM_BLE_AD_BIT_MANU; + } - if(adv_data->ble_adv_data.p_service_32b != NULL) - { - data_mask |= BTM_BLE_AD_BIT_SERVICE_32; - } + if (adv_data->ble_adv_data.p_services != NULL) { + data_mask |= BTM_BLE_AD_BIT_SERVICE; + } - if(adv_data->ble_adv_data.p_services_128b != NULL) - { - data_mask |= BTM_BLE_AD_BIT_SERVICE_128; - } + if (adv_data->ble_adv_data.p_service_32b != NULL) { + data_mask |= BTM_BLE_AD_BIT_SERVICE_32; + } - if(adv_data->ble_adv_data.p_sol_services != NULL) - { - data_mask |= BTM_BLE_AD_BIT_SERVICE_SOL; - } + if (adv_data->ble_adv_data.p_services_128b != NULL) { + data_mask |= BTM_BLE_AD_BIT_SERVICE_128; + } - if(adv_data->ble_adv_data.p_sol_service_32b != NULL) - { - data_mask |= BTM_BLE_AD_BIT_SERVICE_32SOL; - } + if (adv_data->ble_adv_data.p_sol_services != NULL) { + data_mask |= BTM_BLE_AD_BIT_SERVICE_SOL; + } - if(adv_data->ble_adv_data.p_sol_service_128b != NULL) - { - data_mask |= BTM_BLE_AD_BIT_SERVICE_128SOL; - } - - if(adv_data->ble_adv_data.p_service_data != NULL) - { - data_mask |= BTM_BLE_AD_BIT_SERVICE_DATA; - } - - if(adv_data->ble_adv_data.appearance != 0) - { - data_mask |= BTM_BLE_AD_BIT_APPEARANCE; - } + if (adv_data->ble_adv_data.p_sol_service_32b != NULL) { + data_mask |= BTM_BLE_AD_BIT_SERVICE_32SOL; + } - if(adv_data->ble_adv_data.p_proprietary != NULL) - { - data_mask |= BTM_BLE_AD_BIT_PROPRIETARY; - } + if (adv_data->ble_adv_data.p_sol_service_128b != NULL) { + data_mask |= BTM_BLE_AD_BIT_SERVICE_128SOL; + } - if(adv_data->ble_adv_data.tx_power != 0) - { - data_mask |= BTM_BLE_AD_BIT_TX_PWR; - } + if (adv_data->ble_adv_data.p_service_data != NULL) { + data_mask |= BTM_BLE_AD_BIT_SERVICE_DATA; + } - BTA_DmBleSetAdvConfig(data_mask, &(adv_data->ble_adv_data), p_adv_data_cback); + if (adv_data->ble_adv_data.appearance != 0) { + data_mask |= BTM_BLE_AD_BIT_APPEARANCE; + } + + if (adv_data->ble_adv_data.p_proprietary != NULL) { + data_mask |= BTM_BLE_AD_BIT_PROPRIETARY; + } + + if (adv_data->ble_adv_data.tx_power != 0) { + data_mask |= BTM_BLE_AD_BIT_TX_PWR; + } + + BTA_DmBleSetAdvConfig(data_mask, &(adv_data->ble_adv_data), p_adv_data_cback); } @@ -113,74 +102,63 @@ ** *******************************************************************************/ void BlufiBleSetScanRsp(tBLUFI_BLE_ADV_DATA *scan_rsp_data, - tBTA_SET_ADV_DATA_CMPL_CBACK *p_scan_rsp_data_cback) + tBTA_SET_ADV_DATA_CMPL_CBACK *p_scan_rsp_data_cback) { - tBTA_BLE_AD_MASK data_mask = 0; - if(scan_rsp_data->adv_name != NULL) - { - data_mask |= BTM_BLE_AD_BIT_DEV_NAME; - BTA_DmSetDeviceName(scan_rsp_data->adv_name); - } - if(scan_rsp_data->ble_adv_data.int_range.low != 0 || - scan_rsp_data->ble_adv_data.int_range.hi != 0) - data_mask |= BTM_BLE_AD_BIT_INT_RANGE; - - if(scan_rsp_data->ble_adv_data.p_manu != NULL) - { - data_mask |= BTM_BLE_AD_BIT_MANU; - } + tBTA_BLE_AD_MASK data_mask = 0; + if (scan_rsp_data->adv_name != NULL) { + data_mask |= BTM_BLE_AD_BIT_DEV_NAME; + BTA_DmSetDeviceName(scan_rsp_data->adv_name); + } + if (scan_rsp_data->ble_adv_data.int_range.low != 0 || + scan_rsp_data->ble_adv_data.int_range.hi != 0) { + data_mask |= BTM_BLE_AD_BIT_INT_RANGE; + } - if(scan_rsp_data->ble_adv_data.p_services != NULL) - { - data_mask |= BTM_BLE_AD_BIT_SERVICE; - } + if (scan_rsp_data->ble_adv_data.p_manu != NULL) { + data_mask |= BTM_BLE_AD_BIT_MANU; + } - if(scan_rsp_data->ble_adv_data.p_service_32b != NULL) - { - data_mask |= BTM_BLE_AD_BIT_SERVICE_32; - } + if (scan_rsp_data->ble_adv_data.p_services != NULL) { + data_mask |= BTM_BLE_AD_BIT_SERVICE; + } - if(scan_rsp_data->ble_adv_data.p_services_128b != NULL) - { - data_mask |= BTM_BLE_AD_BIT_SERVICE_128; - } + if (scan_rsp_data->ble_adv_data.p_service_32b != NULL) { + data_mask |= BTM_BLE_AD_BIT_SERVICE_32; + } - if(scan_rsp_data->ble_adv_data.p_sol_services != NULL) - { - data_mask |= BTM_BLE_AD_BIT_SERVICE_SOL; - } + if (scan_rsp_data->ble_adv_data.p_services_128b != NULL) { + data_mask |= BTM_BLE_AD_BIT_SERVICE_128; + } - if(scan_rsp_data->ble_adv_data.p_sol_service_32b != NULL) - { - data_mask |= BTM_BLE_AD_BIT_SERVICE_32SOL; - } + if (scan_rsp_data->ble_adv_data.p_sol_services != NULL) { + data_mask |= BTM_BLE_AD_BIT_SERVICE_SOL; + } - if(scan_rsp_data->ble_adv_data.p_sol_service_128b != NULL) - { - data_mask |= BTM_BLE_AD_BIT_SERVICE_128SOL; - } - - if(scan_rsp_data->ble_adv_data.p_service_data != NULL) - { - data_mask |= BTM_BLE_AD_BIT_SERVICE_DATA; - } - - if(scan_rsp_data->ble_adv_data.appearance != 0) - { - data_mask |= BTM_BLE_AD_BIT_APPEARANCE; - } + if (scan_rsp_data->ble_adv_data.p_sol_service_32b != NULL) { + data_mask |= BTM_BLE_AD_BIT_SERVICE_32SOL; + } - if(scan_rsp_data->ble_adv_data.p_proprietary != NULL) - { - data_mask |= BTM_BLE_AD_BIT_PROPRIETARY; - } + if (scan_rsp_data->ble_adv_data.p_sol_service_128b != NULL) { + data_mask |= BTM_BLE_AD_BIT_SERVICE_128SOL; + } - if(scan_rsp_data->ble_adv_data.tx_power != 0) - { - data_mask |= BTM_BLE_AD_BIT_TX_PWR; - } + if (scan_rsp_data->ble_adv_data.p_service_data != NULL) { + data_mask |= BTM_BLE_AD_BIT_SERVICE_DATA; + } - BTA_DmBleSetScanRsp(data_mask, &(scan_rsp_data->ble_adv_data), p_scan_rsp_data_cback); + if (scan_rsp_data->ble_adv_data.appearance != 0) { + data_mask |= BTM_BLE_AD_BIT_APPEARANCE; + } + + if (scan_rsp_data->ble_adv_data.p_proprietary != NULL) { + data_mask |= BTM_BLE_AD_BIT_PROPRIETARY; + } + + if (scan_rsp_data->ble_adv_data.tx_power != 0) { + data_mask |= BTM_BLE_AD_BIT_TX_PWR; + } + + BTA_DmBleSetScanRsp(data_mask, &(scan_rsp_data->ble_adv_data), p_scan_rsp_data_cback); } diff --git a/components/bt/bluedroid/btc/profile/esp/blufi/blufi_prf.c b/components/bt/bluedroid/btc/profile/esp/blufi/blufi_prf.c index 44e459aa42..c869c0b0f7 100644 --- a/components/bt/bluedroid/btc/profile/esp/blufi/blufi_prf.c +++ b/components/bt/bluedroid/btc/profile/esp/blufi/blufi_prf.c @@ -44,54 +44,54 @@ static uint8_t *failed_msg = "BLUFI_CONFIG_FAILED"; UINT16 esp32_uuid = SVC_BLUFI_UUID; -UINT8 esp32_manu[17] = {0xff,0x20,0x14,0x07,0x22,0x00,0x02,0x5B,0x00,0x33,0x49,0x31,0x30,0x4a,0x30,0x30,0x31}; -tBTA_BLE_MANU p_esp32_manu = {sizeof(esp32_manu),esp32_manu}; /* manufacturer data */ +UINT8 esp32_manu[17] = {0xff, 0x20, 0x14, 0x07, 0x22, 0x00, 0x02, 0x5B, 0x00, 0x33, 0x49, 0x31, 0x30, 0x4a, 0x30, 0x30, 0x31}; +tBTA_BLE_MANU p_esp32_manu = {sizeof(esp32_manu), esp32_manu}; /* manufacturer data */ tBTA_BLE_SERVICE esp32_service = { - 0x01, //only one service in the ijiazu button profile - false, - &esp32_uuid - }; /* 16 bits services */ + 0x01, //only one service in the ijiazu button profile + false, + &esp32_uuid +}; /* 16 bits services */ -tBLUFI_BLE_ADV_DATA esp32_adv_data[ADV_SCAN_IDX_MAX] = -{ - [BLE_ADV_DATA_IDX] = { - .adv_name = "Espressif_008", - { - {0,0}, - NULL, //no manufature data to be setting in the esp32 adervetisiing datas - &esp32_service, - NULL, //the 128 bits service uuid set to null(not used) - NULL, //the 32 bits Service UUID set to null(not used) - NULL, //16 bits services Solicitation UUIDs set to null(not used) - NULL, //List of 32 bit Service Solicitation UUIDs set to null(not used) - NULL, //List of 128 bit Service Solicitation UUIDs set to null(not used) - NULL, //proprietary data set to null(not used) - NULL, //service data set not null(no service data to be sent) - 0x0200, //device type : generic display - BTA_DM_GENERAL_DISC, // General discoverable. - 0xFE //the tx power value,defult value is 0 - }, - }, +tBLUFI_BLE_ADV_DATA esp32_adv_data[ADV_SCAN_IDX_MAX] = { + [BLE_ADV_DATA_IDX] = { + .adv_name = "Espressif_008", + { + {0, 0}, + NULL, //no manufature data to be setting in the esp32 adervetisiing datas + &esp32_service, + NULL, //the 128 bits service uuid set to null(not used) + NULL, //the 32 bits Service UUID set to null(not used) + NULL, //16 bits services Solicitation UUIDs set to null(not used) + NULL, //List of 32 bit Service Solicitation UUIDs set to null(not used) + NULL, //List of 128 bit Service Solicitation UUIDs set to null(not used) + NULL, //proprietary data set to null(not used) + NULL, //service data set not null(no service data to be sent) + 0x0200, //device type : generic display + BTA_DM_GENERAL_DISC, // General discoverable. + 0xFE //the tx power value,defult value is 0 + }, + }, - [BLE_SCAN_RSP_DATA_IDX] = { - .adv_name = NULL, - { - {0,0}, - &p_esp32_manu, - NULL, - NULL, //the 128 bits service uuid set to null(not used) - NULL, //the 32 bits Service UUID set to null(not used) - NULL, //16 bits services Solicitation UUIDs set to null(not used) - NULL, //List of 32 bit Service Solicitation UUIDs set to null(not used) - NULL, //List of 128 bit Service Solicitation UUIDs set to null(not used) - NULL, //proprietary data set to null(not used) - NULL, //service data set not null(no service data to be sent) - 0x0000, //device type : generic display - 0x00, // General discoverable. - 0x00}, //the tx power value,defult value is 0 - } + [BLE_SCAN_RSP_DATA_IDX] = { + .adv_name = NULL, + { + {0, 0}, + &p_esp32_manu, + NULL, + NULL, //the 128 bits service uuid set to null(not used) + NULL, //the 32 bits Service UUID set to null(not used) + NULL, //16 bits services Solicitation UUIDs set to null(not used) + NULL, //List of 32 bit Service Solicitation UUIDs set to null(not used) + NULL, //List of 128 bit Service Solicitation UUIDs set to null(not used) + NULL, //proprietary data set to null(not used) + NULL, //service data set not null(no service data to be sent) + 0x0000, //device type : generic display + 0x00, // General discoverable. + 0x00 + }, //the tx power value,defult value is 0 + } }; @@ -112,24 +112,23 @@ static void blufi_profile_cb(tBTA_GATTS_EVT event, tBTA_GATTS *p_data); ** ** Description Create a Service for the blufi profile ** -** Returns NULL +** Returns NULL ** *******************************************************************************/ static void blufi_create_service(void) { - tBTA_GATTS_IF server_if ; - tBT_UUID uuid = {LEN_UUID_16, {SVC_BLUFI_UUID}}; - UINT16 num_handle = BLUFI_HDL_NUM; - UINT8 inst = 0x00; - server_if = blufi_cb_env.gatt_if; - blufi_cb_env.inst_id = inst; - if(!blufi_cb_env.enabled) - { - LOG_ERROR("blufi service added error."); - return; - } - BTA_GATTS_CreateService(server_if, &uuid, inst, num_handle, true); - + tBTA_GATTS_IF server_if ; + tBT_UUID uuid = {LEN_UUID_16, {SVC_BLUFI_UUID}}; + UINT16 num_handle = BLUFI_HDL_NUM; + UINT8 inst = 0x00; + server_if = blufi_cb_env.gatt_if; + blufi_cb_env.inst_id = inst; + if (!blufi_cb_env.enabled) { + LOG_ERROR("blufi service added error."); + return; + } + BTA_GATTS_CreateService(server_if, &uuid, inst, num_handle, true); + } @@ -139,249 +138,243 @@ static void blufi_create_service(void) ** ** Description the callback function after the profile has been register to the BTA manager module ** -** Returns NULL +** Returns NULL ** *******************************************************************************/ static void blufi_profile_cb(tBTA_GATTS_EVT event, tBTA_GATTS *p_data) { - tBTA_GATTS_RSP rsp; - tBT_UUID uuid = {LEN_UUID_16, {SVC_BLUFI_UUID}}; - UINT8 len = 0; - UINT8 *p_rec_data = NULL; - tBTA_GATT_STATUS status; + tBTA_GATTS_RSP rsp; + tBT_UUID uuid = {LEN_UUID_16, {SVC_BLUFI_UUID}}; + UINT8 len = 0; + UINT8 *p_rec_data = NULL; + tBTA_GATT_STATUS status; - LOG_DEBUG("blufi profile cb event = %x\n",event); - switch(event) { - case BTA_GATTS_REG_EVT: - status = p_data->reg_oper.status; + LOG_DEBUG("blufi profile cb event = %x\n", event); + switch (event) { + case BTA_GATTS_REG_EVT: + status = p_data->reg_oper.status; - LOG_DEBUG("p_data->reg_oper.status = %x\n",p_data->reg_oper.status); - LOG_DEBUG("(p_data->reg_oper.uuid.uu.uuid16=%x\n",p_data->reg_oper.uuid.uu.uuid16); - if(p_data->reg_oper.status != BTA_GATT_OK) { - LOG_ERROR("blufi profile register failed\n"); - return; - } + LOG_DEBUG("p_data->reg_oper.status = %x\n", p_data->reg_oper.status); + LOG_DEBUG("(p_data->reg_oper.uuid.uu.uuid16=%x\n", p_data->reg_oper.uuid.uu.uuid16); + if (p_data->reg_oper.status != BTA_GATT_OK) { + LOG_ERROR("blufi profile register failed\n"); + return; + } - blufi_cb_env.gatt_if = p_data->reg_oper.server_if; - blufi_cb_env.enabled = true; - LOG_DEBUG("register complete: event=%d, status=%d, server_if=%d\n", - event, status, blufi_cb_env.gatt_if); - - LOG_DEBUG("set advertising parameters\n"); - //set the advertising data to the btm layer - BlufiBleConfigadvData(&esp32_adv_data[BLE_ADV_DATA_IDX], NULL); - //set the adversting data to the btm layer - BlufiBleSetScanRsp(&esp32_adv_data[BLE_SCAN_RSP_DATA_IDX],NULL); - BTA_GATTS_Listen(blufi_cb_env.gatt_if, true, NULL); + blufi_cb_env.gatt_if = p_data->reg_oper.server_if; + blufi_cb_env.enabled = true; + LOG_DEBUG("register complete: event=%d, status=%d, server_if=%d\n", + event, status, blufi_cb_env.gatt_if); - //create the blufi service to the service data base. - if(p_data->reg_oper.uuid.uu.uuid16 == SVC_BLUFI_UUID) { - blufi_create_service(); - } - break; - case BTA_GATTS_READ_EVT: - memset(&rsp, 0, sizeof(tBTA_GATTS_API_RSP)); - rsp.attr_value.handle = p_data->req_data.p_data->read_req.handle; - rsp.attr_value.len = 2; - //rsp.attr_value.value[0] = 0xde; - //rsp.attr_value.value[1] = 0xed; - //rsp.attr_value.value[2] = 0xbe; - //rsp.attr_value.value[3] = 0xef; - BTA_GATTS_SendRsp(p_data->req_data.conn_id,p_data->req_data.trans_id, - p_data->req_data.status,&rsp); - break; - case BTA_GATTS_WRITE_EVT: - BTA_GATTS_SendRsp(p_data->req_data.conn_id,p_data->req_data.trans_id, - p_data->req_data.status,NULL); + LOG_DEBUG("set advertising parameters\n"); + //set the advertising data to the btm layer + BlufiBleConfigadvData(&esp32_adv_data[BLE_ADV_DATA_IDX], NULL); + //set the adversting data to the btm layer + BlufiBleSetScanRsp(&esp32_adv_data[BLE_SCAN_RSP_DATA_IDX], NULL); + BTA_GATTS_Listen(blufi_cb_env.gatt_if, true, NULL); - LOG_DEBUG("Received blufi data:"); - for(int i = 0; i < p_data->req_data.p_data->write_req.len; i++){ - LOG_DEBUG("%x",p_data->req_data.p_data->write_req.value[i]); - } - LOG_DEBUG("\n"); + //create the blufi service to the service data base. + if (p_data->reg_oper.uuid.uu.uuid16 == SVC_BLUFI_UUID) { + blufi_create_service(); + } + break; + case BTA_GATTS_READ_EVT: + memset(&rsp, 0, sizeof(tBTA_GATTS_API_RSP)); + rsp.attr_value.handle = p_data->req_data.p_data->read_req.handle; + rsp.attr_value.len = 2; + //rsp.attr_value.value[0] = 0xde; + //rsp.attr_value.value[1] = 0xed; + //rsp.attr_value.value[2] = 0xbe; + //rsp.attr_value.value[3] = 0xef; + BTA_GATTS_SendRsp(p_data->req_data.conn_id, p_data->req_data.trans_id, + p_data->req_data.status, &rsp); + break; + case BTA_GATTS_WRITE_EVT: + BTA_GATTS_SendRsp(p_data->req_data.conn_id, p_data->req_data.trans_id, + p_data->req_data.status, NULL); - if (p_data->req_data.p_data->write_req.handle == blufi_cb_env.blufi_inst.blufi_hdl) { - btc_msg_t msg; - struct blufi_recv_evt_param recv_data; + LOG_DEBUG("Received blufi data:"); + for (int i = 0; i < p_data->req_data.p_data->write_req.len; i++) { + LOG_DEBUG("%x", p_data->req_data.p_data->write_req.value[i]); + } + LOG_DEBUG("\n"); - memset(&recv_data, 0x00, sizeof(struct blufi_recv_evt_param)); + if (p_data->req_data.p_data->write_req.handle == blufi_cb_env.blufi_inst.blufi_hdl) { + btc_msg_t msg; + struct blufi_recv_evt_param recv_data; - p_rec_data = &p_data->req_data.p_data->write_req.value[0]; - recv_data.data_len = p_data->req_data.p_data->write_req.len; - memcpy(recv_data.data, p_rec_data, recv_data.data_len); + memset(&recv_data, 0x00, sizeof(struct blufi_recv_evt_param)); - msg.sig = BTC_SIG_API_CB; - msg.pid = BTC_PID_BLUFI; - msg.act = BTC_BLUFI_CB_ACT_RECV_DATA; - - btc_transfer_context(&msg, &recv_data, sizeof(struct blufi_recv_evt_param), NULL); - } - break; - case BTA_GATTS_CONF_EVT: - /* Nothing */ - break; - case BTA_GATTS_CREATE_EVT: - uuid.uu.uuid16 = CHAR_BLUFI_UUID; - blufi_cb_env.cur_srvc_id = p_data->create.service_id; - blufi_cb_env.is_primery = p_data->create.is_primary; - //start the blufi service after created - BTA_GATTS_StartService(p_data->create.service_id, BTA_GATT_TRANSPORT_LE); - //add the frist blufi characteristic --> write characteristic - BTA_GATTS_AddCharacteristic(blufi_cb_env.cur_srvc_id, &uuid, - (GATT_PERM_WRITE | GATT_PERM_READ), - (GATT_CHAR_PROP_BIT_READ | GATT_CHAR_PROP_BIT_WRITE | GATT_CHAR_PROP_BIT_NOTIFY)); - break; - case BTA_GATTS_ADD_CHAR_EVT: - if(p_data->add_result.char_uuid.uu.uuid16 == CHAR_BLUFI_UUID) - { - //save the att handle to the env - blufi_cb_env.blufi_inst.blufi_hdl = p_data->add_result.attr_id; + p_rec_data = &p_data->req_data.p_data->write_req.value[0]; + recv_data.data_len = p_data->req_data.p_data->write_req.len; + memcpy(recv_data.data, p_rec_data, recv_data.data_len); - uuid.uu.uuid16 = GATT_UUID_CHAR_CLIENT_CONFIG; - BTA_GATTS_AddCharDescriptor (blufi_cb_env.cur_srvc_id, - (GATT_PERM_WRITE|GATT_PERM_WRITE), - &uuid); - } - break; - case BTA_GATTS_ADD_CHAR_DESCR_EVT: { - /* call init finish */ - btc_msg_t msg; + msg.sig = BTC_SIG_API_CB; + msg.pid = BTC_PID_BLUFI; + msg.act = BTC_BLUFI_CB_ACT_RECV_DATA; - msg.sig = BTC_SIG_API_CB; - msg.pid = BTC_PID_BLUFI; - msg.act = BTC_BLUFI_CB_ACT_INIT_FINISH; - btc_transfer_context(&msg, NULL, 0, NULL); - break; - } - case BTA_GATTS_CONNECT_EVT: - //set the connection flag to true - LOG_ERROR("\ndevice is connected "BT_BD_ADDR_STR", server_if=%d,reason=0x%x,connect_id=%d\n", - BT_BD_ADDR_HEX(p_data->conn.remote_bda), p_data->conn.server_if, - p_data->conn.reason, p_data->conn.conn_id); + btc_transfer_context(&msg, &recv_data, sizeof(struct blufi_recv_evt_param), NULL); + } + break; + case BTA_GATTS_CONF_EVT: + /* Nothing */ + break; + case BTA_GATTS_CREATE_EVT: + uuid.uu.uuid16 = CHAR_BLUFI_UUID; + blufi_cb_env.cur_srvc_id = p_data->create.service_id; + blufi_cb_env.is_primery = p_data->create.is_primary; + //start the blufi service after created + BTA_GATTS_StartService(p_data->create.service_id, BTA_GATT_TRANSPORT_LE); + //add the frist blufi characteristic --> write characteristic + BTA_GATTS_AddCharacteristic(blufi_cb_env.cur_srvc_id, &uuid, + (GATT_PERM_WRITE | GATT_PERM_READ), + (GATT_CHAR_PROP_BIT_READ | GATT_CHAR_PROP_BIT_WRITE | GATT_CHAR_PROP_BIT_NOTIFY)); + break; + case BTA_GATTS_ADD_CHAR_EVT: + if (p_data->add_result.char_uuid.uu.uuid16 == CHAR_BLUFI_UUID) { + //save the att handle to the env + blufi_cb_env.blufi_inst.blufi_hdl = p_data->add_result.attr_id; - blufi_cb_env.conn_id = p_data->conn.conn_id; + uuid.uu.uuid16 = GATT_UUID_CHAR_CLIENT_CONFIG; + BTA_GATTS_AddCharDescriptor (blufi_cb_env.cur_srvc_id, + (GATT_PERM_WRITE | GATT_PERM_WRITE), + &uuid); + } + break; + case BTA_GATTS_ADD_CHAR_DESCR_EVT: { + /* call init finish */ + btc_msg_t msg; - /*return whether the remote device is currently connected*/ - int is_connected = BTA_DmGetConnectionState(p_data->conn.remote_bda); - LOG_DEBUG("is_connected=%d\n",is_connected); - BTA_DmBleBroadcast(0); //stop adv - break; - case BTA_GATTS_DISCONNECT_EVT: - //set the connection flag to true - blufi_cb_env.connected = false; - break; - case BTA_GATTS_OPEN_EVT: - break; - case BTA_GATTS_CLOSE_EVT: - if(blufi_cb_env.connected && (blufi_cb_env.conn_id == p_data->conn.conn_id)) - { - //set the connection channal congested flag to true - blufi_cb_env.congest = p_data->congest.congested; - } - break; - case BTA_GATTS_LISTEN_EVT: - break; - case BTA_GATTS_CONGEST_EVT: - break; - default: - break; - } + msg.sig = BTC_SIG_API_CB; + msg.pid = BTC_PID_BLUFI; + msg.act = BTC_BLUFI_CB_ACT_INIT_FINISH; + btc_transfer_context(&msg, NULL, 0, NULL); + break; + } + case BTA_GATTS_CONNECT_EVT: + //set the connection flag to true + LOG_ERROR("\ndevice is connected "BT_BD_ADDR_STR", server_if=%d,reason=0x%x,connect_id=%d\n", + BT_BD_ADDR_HEX(p_data->conn.remote_bda), p_data->conn.server_if, + p_data->conn.reason, p_data->conn.conn_id); + + blufi_cb_env.conn_id = p_data->conn.conn_id; + + /*return whether the remote device is currently connected*/ + int is_connected = BTA_DmGetConnectionState(p_data->conn.remote_bda); + LOG_DEBUG("is_connected=%d\n", is_connected); + BTA_DmBleBroadcast(0); //stop adv + break; + case BTA_GATTS_DISCONNECT_EVT: + //set the connection flag to true + blufi_cb_env.connected = false; + break; + case BTA_GATTS_OPEN_EVT: + break; + case BTA_GATTS_CLOSE_EVT: + if (blufi_cb_env.connected && (blufi_cb_env.conn_id == p_data->conn.conn_id)) { + //set the connection channal congested flag to true + blufi_cb_env.congest = p_data->congest.congested; + } + break; + case BTA_GATTS_LISTEN_EVT: + break; + case BTA_GATTS_CONGEST_EVT: + break; + default: + break; + } } static tGATT_STATUS btc_blufi_profile_init(void) { - tBT_UUID app_uuid = {LEN_UUID_16, {SVC_BLUFI_UUID}}; - + tBT_UUID app_uuid = {LEN_UUID_16, {SVC_BLUFI_UUID}}; - if(blufi_cb_env.enabled) - { - LOG_ERROR("blufi svc already initaliezd"); - return GATT_ERROR; - } - else - { - memset(&blufi_cb_env,0,sizeof(tBLUFI_CB_ENV)); - } - - - /* register the blufi profile to the BTA_GATTS module*/ - BTA_GATTS_AppRegister(&app_uuid, blufi_profile_cb); - return GATT_SUCCESS; + if (blufi_cb_env.enabled) { + LOG_ERROR("blufi svc already initaliezd"); + return GATT_ERROR; + } else { + memset(&blufi_cb_env, 0, sizeof(tBLUFI_CB_ENV)); + } + + + /* register the blufi profile to the BTA_GATTS module*/ + BTA_GATTS_AppRegister(&app_uuid, blufi_profile_cb); + + return GATT_SUCCESS; } static void blufi_msg_notify(UINT8 *blufi_msg, UINT8 len) { - BOOLEAN conn_status = blufi_cb_env.connected; - UINT16 conn_id = blufi_cb_env.conn_id; - UINT16 attr_id = blufi_cb_env.blufi_inst.blufi_hdl; - //notify rsp==false; indicate rsp==true. - BOOLEAN rsp = false; - if(!conn_status && blufi_cb_env.congest) - { - LOG_ERROR("the conneciton for blufi profile has been loss"); - return; - } - - BTA_GATTS_HandleValueIndication (conn_id, attr_id, len, - blufi_msg, rsp); + BOOLEAN conn_status = blufi_cb_env.connected; + UINT16 conn_id = blufi_cb_env.conn_id; + UINT16 attr_id = blufi_cb_env.blufi_inst.blufi_hdl; + //notify rsp==false; indicate rsp==true. + BOOLEAN rsp = false; + if (!conn_status && blufi_cb_env.congest) { + LOG_ERROR("the conneciton for blufi profile has been loss"); + return; + } + + BTA_GATTS_HandleValueIndication (conn_id, attr_id, len, + blufi_msg, rsp); } static void btc_blufi_config_success(void) { - LOG_DEBUG("config success\n"); - blufi_msg_notify(success_msg, strlen(success_msg)); + LOG_DEBUG("config success\n"); + blufi_msg_notify(success_msg, strlen(success_msg)); } static void btc_blufi_config_failed(void) { - LOG_DEBUG("config faield\n"); - blufi_msg_notify(failed_msg, strlen(failed_msg)); + LOG_DEBUG("config faield\n"); + blufi_msg_notify(failed_msg, strlen(failed_msg)); } void btc_blufi_cb_handler(btc_msg_t *msg) { - esp_blufi_cb_param_t param; + esp_blufi_cb_param_t param; - switch (msg->act) { - case BTC_BLUFI_CB_ACT_INIT_FINISH: - param.init_finish.state = ESP_BLUFI_INIT_OK; - BTC_BLUFI_CB_TO_APP(ESP_BLUFI_EVENT_INIT_FINISH, ¶m); - break; - case BTC_BLUFI_CB_ACT_DEINIT_FINISH: - /* TODO: but now nothing */ - break; - case BTC_BLUFI_CB_ACT_RECV_DATA: - memcpy(¶m.recv_data, msg->arg, sizeof(struct blufi_recv_evt_param)); - - BTC_BLUFI_CB_TO_APP(ESP_BLUFI_EVENT_RECV_DATA, ¶m); - break; - default: - LOG_ERROR("%s UNKNOWN %d\n", __func__, msg->act); - break; - } + switch (msg->act) { + case BTC_BLUFI_CB_ACT_INIT_FINISH: + param.init_finish.state = ESP_BLUFI_INIT_OK; + BTC_BLUFI_CB_TO_APP(ESP_BLUFI_EVENT_INIT_FINISH, ¶m); + break; + case BTC_BLUFI_CB_ACT_DEINIT_FINISH: + /* TODO: but now nothing */ + break; + case BTC_BLUFI_CB_ACT_RECV_DATA: + memcpy(¶m.recv_data, msg->arg, sizeof(struct blufi_recv_evt_param)); + + BTC_BLUFI_CB_TO_APP(ESP_BLUFI_EVENT_RECV_DATA, ¶m); + break; + default: + LOG_ERROR("%s UNKNOWN %d\n", __func__, msg->act); + break; + } } void btc_blufi_call_handler(btc_msg_t *msg) { - btc_blufi_args_t *arg = (btc_blufi_args_t *)msg->arg; + btc_blufi_args_t *arg = (btc_blufi_args_t *)msg->arg; - switch (msg->act) { - case BTC_BLUFI_ACT_INIT: - btc_blufi_profile_init(); - break; - case BTC_BLUFI_ACT_DEINIT: - /* TODO: but now nothing */ - break; - case BTC_BLUFI_ACT_SEND_CFG_STATE: - if (arg->cfg_state.state == ESP_BLUFI_CONFIG_OK) { - btc_blufi_config_success(); - } else { - btc_blufi_config_failed(); - } - break; - default: - LOG_ERROR("%s UNKNOWN %d\n", __func__, msg->act); - break; - } + switch (msg->act) { + case BTC_BLUFI_ACT_INIT: + btc_blufi_profile_init(); + break; + case BTC_BLUFI_ACT_DEINIT: + /* TODO: but now nothing */ + break; + case BTC_BLUFI_ACT_SEND_CFG_STATE: + if (arg->cfg_state.state == ESP_BLUFI_CONFIG_OK) { + btc_blufi_config_success(); + } else { + btc_blufi_config_failed(); + } + break; + default: + LOG_ERROR("%s UNKNOWN %d\n", __func__, msg->act); + break; + } } diff --git a/components/bt/bluedroid/btc/profile/esp/blufi/include/blufi_adv.h b/components/bt/bluedroid/btc/profile/esp/blufi/include/blufi_adv.h index 4f79bf016b..39869ec9e4 100644 --- a/components/bt/bluedroid/btc/profile/esp/blufi/include/blufi_adv.h +++ b/components/bt/bluedroid/btc/profile/esp/blufi/include/blufi_adv.h @@ -20,21 +20,20 @@ #include "esp_bt_defs.h" typedef enum { - BLE_ADV_DATA_IDX = 0, - BLE_SCAN_RSP_DATA_IDX = 1, - ADV_SCAN_IDX_MAX, + BLE_ADV_DATA_IDX = 0, + BLE_SCAN_RSP_DATA_IDX = 1, + ADV_SCAN_IDX_MAX, } ADV_SCAN_IDX_t; -typedef struct -{ - char *adv_name; //set the device name to be sent on the advertising - tBTA_BLE_ADV_DATA ble_adv_data; -}tBLUFI_BLE_ADV_DATA; +typedef struct { + char *adv_name; //set the device name to be sent on the advertising + tBTA_BLE_ADV_DATA ble_adv_data; +} tBLUFI_BLE_ADV_DATA; extern void BlufiBleConfigadvData(tBLUFI_BLE_ADV_DATA *adv_data, - tBTA_SET_ADV_DATA_CMPL_CBACK *p_adv_data_cback); + tBTA_SET_ADV_DATA_CMPL_CBACK *p_adv_data_cback); extern void BlufiBleSetScanRsp(tBLUFI_BLE_ADV_DATA *scan_rsp_data, - tBTA_SET_ADV_DATA_CMPL_CBACK *p_scan_rsp_data_cback); + tBTA_SET_ADV_DATA_CMPL_CBACK *p_scan_rsp_data_cback); #endif /* __BLUFI_ADV_H__ */ diff --git a/components/bt/bluedroid/btc/profile/esp/blufi/include/blufi_int.h b/components/bt/bluedroid/btc/profile/esp/blufi/include/blufi_int.h index 9fc2da662e..f46a41a2e4 100644 --- a/components/bt/bluedroid/btc/profile/esp/blufi/include/blufi_int.h +++ b/components/bt/bluedroid/btc/profile/esp/blufi/include/blufi_int.h @@ -16,39 +16,37 @@ #define __BLUFI_INT_H__ //define the blufi serivce uuid -#define SVC_BLUFI_UUID 0xFFFF +#define SVC_BLUFI_UUID 0xFFFF //define the blufi Char uuid -#define CHAR_BLUFI_UUID 0xFF01 +#define CHAR_BLUFI_UUID 0xFF01 -#define BLUFI_HDL_NUM 4 +#define BLUFI_HDL_NUM 4 -#define BLUFI_VAL_MAX_LEN (128) +#define BLUFI_VAL_MAX_LEN (128) #define BLUFI_MAX_STRING_DATA 128 -typedef struct -{ +typedef struct { UINT8 app_id; UINT16 blufi_hdl; -}tBLUFI_INST; +} tBLUFI_INST; /* service engine control block */ -typedef struct -{ +typedef struct { BOOLEAN enabled; - BOOLEAN is_primery; + BOOLEAN is_primery; UINT8 inst_id; tGATT_IF gatt_if; - tBLUFI_INST blufi_inst; - BOOLEAN in_use; - BOOLEAN congest; - UINT16 conn_id; - BOOLEAN connected; - BD_ADDR remote_bda; - UINT32 trans_id; - UINT8 cur_srvc_id; + tBLUFI_INST blufi_inst; + BOOLEAN in_use; + BOOLEAN congest; + UINT16 conn_id; + BOOLEAN connected; + BD_ADDR remote_bda; + UINT32 trans_id; + UINT8 cur_srvc_id; } tBLUFI_CB_ENV; #endif /* __BLUFI_INT_H__ */ diff --git a/components/bt/bluedroid/btc/profile/esp/include/btc_blufi_prf.h b/components/bt/bluedroid/btc/profile/esp/include/btc_blufi_prf.h index fc2d0f6269..27096408c3 100644 --- a/components/bt/bluedroid/btc/profile/esp/include/btc_blufi_prf.h +++ b/components/bt/bluedroid/btc/profile/esp/include/btc_blufi_prf.h @@ -20,30 +20,30 @@ #include "esp_blufi_api.h" typedef enum { - BTC_BLUFI_ACT_INIT = 0, - BTC_BLUFI_ACT_DEINIT, - BTC_BLUFI_ACT_SEND_CFG_STATE, + BTC_BLUFI_ACT_INIT = 0, + BTC_BLUFI_ACT_DEINIT, + BTC_BLUFI_ACT_SEND_CFG_STATE, } btc_blufi_act_t; typedef enum { - BTC_BLUFI_CB_ACT_INIT_FINISH = 0, - BTC_BLUFI_CB_ACT_DEINIT_FINISH, - BTC_BLUFI_CB_ACT_RECV_DATA, + BTC_BLUFI_CB_ACT_INIT_FINISH = 0, + BTC_BLUFI_CB_ACT_DEINIT_FINISH, + BTC_BLUFI_CB_ACT_RECV_DATA, } btc_blufi_cb_act_t; typedef union { #if 0 - //BTC_BLUFI_ACT_INIT = 0, - struct blufi_init_param { - } init; - //BTC_BLUFI_ACT_DEINIT, - struct blufi_deinit_param { - } deinit; + //BTC_BLUFI_ACT_INIT = 0, + struct blufi_init_param { + } init; + //BTC_BLUFI_ACT_DEINIT, + struct blufi_deinit_param { + } deinit; #endif - //BTC_BLUFI_ACT_SEND_CFG_STATE, - struct blufi_send_cfg_state_pram { - esp_blufi_config_state_t state; - } cfg_state; + //BTC_BLUFI_ACT_SEND_CFG_STATE, + struct blufi_send_cfg_state_pram { + esp_blufi_config_state_t state; + } cfg_state; } btc_blufi_args_t; void btc_blufi_cb_handler(btc_msg_t *msg); diff --git a/components/bt/bluedroid/btc/profile/esp/include/button_pro.h b/components/bt/bluedroid/btc/profile/esp/include/button_pro.h index f6397f2535..cbc2d68d51 100644 --- a/components/bt/bluedroid/btc/profile/esp/include/button_pro.h +++ b/components/bt/bluedroid/btc/profile/esp/include/button_pro.h @@ -25,14 +25,14 @@ #define KEY_NO_RESOURCES GATT_NO_RESOURCES //define the key serivce uuid -#define ATT_SVC_BUTTON 0xFFFF +#define ATT_SVC_BUTTON 0xFFFF //define the key Char uuid -#define ATT_CHAR_BUTTON_WIT 0xFF01 -#define ATT_CHAR_BUTTON_NTF 0xFF02 +#define ATT_CHAR_BUTTON_WIT 0xFF01 +#define ATT_CHAR_BUTTON_NTF 0xFF02 -#define BUTTON_PRESS_NTF_CFG 0x01 +#define BUTTON_PRESS_NTF_CFG 0x01 -#define BUTTON_VAL_MAX_LEN (10) +#define BUTTON_VAL_MAX_LEN (10) #define BUTT_MAX_APPS GATT_CL_MAX_LCB @@ -44,18 +44,16 @@ typedef void (*but_prf_cb_t)(uint8_t app_id, uint8_t event, uint16_t len, uint8_ #define BUT_MAX_INT_NUM 4 #endif -enum -{ - RECEIVE_NET_PASSWD_EVT, - RECEIVE_NET_SSD_EVT, - RECEIVE_EVT_MAX +enum { + RECEIVE_NET_PASSWD_EVT, + RECEIVE_NET_SSD_EVT, + RECEIVE_EVT_MAX }; /// button Service Attributes Indexes -enum -{ +enum { KEY_IDX_SVC, - KEY_IDX_BUTTON_WIT_CHAR, + KEY_IDX_BUTTON_WIT_CHAR, KEY_IDX_BUTTON_WIT_VAL, KEY_IDX_BUTTON_NTF_CHAR, KEY_IDX_BUTTON_NTF_VAL, @@ -64,48 +62,44 @@ enum KEY_IDX_NB, }; -typedef struct -{ - BD_ADDR remote_bda; - BOOLEAN need_rsp; - uint16_t clt_cfg; -}but_write_data_t; +typedef struct { + BD_ADDR remote_bda; + BOOLEAN need_rsp; + uint16_t clt_cfg; +} but_write_data_t; -typedef struct -{ +typedef struct { BOOLEAN in_use; - BOOLEAN congest; + BOOLEAN congest; uint16_t conn_id; BOOLEAN connected; BD_ADDR remote_bda; uint32_t trans_id; uint8_t cur_srvc_id; -}but_clcb_t; +} but_clcb_t; -typedef struct -{ +typedef struct { uint8_t app_id; uint16_t but_wirt_hdl; uint16_t but_ntf_hdl; uint16_t but_cfg_hdl; - + but_prf_cb_t p_cback; -}but_inst_t; +} but_inst_t; /* service engine control block */ -typedef struct -{ - but_clcb_t clcb; /* connection link*/ +typedef struct { + but_clcb_t clcb; /* connection link*/ esp_gatt_if_t gatt_if; BOOLEAN enabled; - BOOLEAN is_primery; - but_inst_t button_inst; + BOOLEAN is_primery; + but_inst_t button_inst; uint8_t inst_id; -}button_env_cb_t; +} button_env_cb_t; void Button_CreateService(void); diff --git a/components/bt/bluedroid/btc/profile/esp/include/wx_airsync_prf.h b/components/bt/bluedroid/btc/profile/esp/include/wx_airsync_prf.h index 89d65282d4..f008ce6438 100644 --- a/components/bt/bluedroid/btc/profile/esp/include/wx_airsync_prf.h +++ b/components/bt/bluedroid/btc/profile/esp/include/wx_airsync_prf.h @@ -13,8 +13,8 @@ // limitations under the License. #include "prf_defs.h" - -#if (WX_AIRSYNC_CFG) + +#if (WX_AIRSYNC_CFG) #include "bt_target.h" #include "gatt_api.h" @@ -25,23 +25,22 @@ /// Maximum Transmission Unit #define ATT_DEFAULT_MTU (23) -#define BLE_WECHAT_MAX_DATA_LEN (ATT_DEFAULT_MTU - 3) +#define BLE_WECHAT_MAX_DATA_LEN (ATT_DEFAULT_MTU - 3) - - //define the key serivce uuid -#define ATT_SVC_AIRSYNC 0xFEE7 - //define the airsync Char uuid -#define ATT_CHAR_AIRSYNC_WIT 0xFEC7 -#define ATT_CHAR_AIRSYBC_NTF 0xFEC8 -#define ATT_CHAR_AIRSYNC_READ 0xFEC9 + +//define the key serivce uuid +#define ATT_SVC_AIRSYNC 0xFEE7 +//define the airsync Char uuid +#define ATT_CHAR_AIRSYNC_WIT 0xFEC7 +#define ATT_CHAR_AIRSYBC_NTF 0xFEC8 +#define ATT_CHAR_AIRSYNC_READ 0xFEC9 typedef void (tAIRSYNC_CBACK)(UINT8 app_id, UINT8 event, UINT8 len, UINT8 *data); /// WX AirSync Service Attributes Indexes -enum -{ +enum { WX_IDX_SVC, WX_IDX_AIRSYNC_WIT_CHAR, WX_IDX_AIRSYNC_WIT_VAL, @@ -54,49 +53,45 @@ enum WX_IDX_NB, }; -typedef struct -{ +typedef struct { BD_ADDR remote_bda; BOOLEAN need_rsp; UINT16 clt_cfg; -}tAirSync_WRITE_DATA; +} tAirSync_WRITE_DATA; -typedef struct -{ - BOOLEAN in_use; - BOOLEAN congest; - UINT16 conn_id; - BOOLEAN connected; - BD_ADDR remote_bda; - UINT32 trans_id; - UINT8 cur_srvc_id; +typedef struct { + BOOLEAN in_use; + BOOLEAN congest; + UINT16 conn_id; + BOOLEAN connected; + BD_ADDR remote_bda; + UINT32 trans_id; + UINT8 cur_srvc_id; -}tAirSync_CLCB; +} tAirSync_CLCB; -typedef struct -{ - UINT8 app_id; - UINT16 airsync_wirt_hdl; - UINT16 airsync_ntf_hdl; - UINT16 airsync_read_hdl; - UINT16 airsync_cfg_hdl; - - tAIRSYNC_CBACK *p_cback; +typedef struct { + UINT8 app_id; + UINT16 airsync_wirt_hdl; + UINT16 airsync_ntf_hdl; + UINT16 airsync_read_hdl; + UINT16 airsync_cfg_hdl; -}tAirSync_INST; + tAIRSYNC_CBACK *p_cback; + +} tAirSync_INST; /* service engine control block */ -typedef struct -{ - tAirSync_CLCB clcb; /* connection link*/ - tGATT_IF gatt_if; - BOOLEAN enabled; - BOOLEAN is_primery; - tAirSync_INST airsync_inst; - UINT8 inst_id; -}tAIRSYNC_CB_ENV; +typedef struct { + tAirSync_CLCB clcb; /* connection link*/ + tGATT_IF gatt_if; + BOOLEAN enabled; + BOOLEAN is_primery; + tAirSync_INST airsync_inst; + UINT8 inst_id; +} tAIRSYNC_CB_ENV; void AirSync_CreateService(void); @@ -111,5 +106,5 @@ tGATT_STATUS AirSync_Init(tAIRSYNC_CBACK *call_back); void AirSync_msg_notify(UINT8 len, UINT8 *button_msg); extern tAIRSYNC_CB_ENV airsync_cb_env; - -#endif ///WX_AIRSYNC_CFG + +#endif ///WX_AIRSYNC_CFG diff --git a/components/bt/bluedroid/btc/profile/esp/wechat_AirSync/wx_airsync_prf.c b/components/bt/bluedroid/btc/profile/esp/wechat_AirSync/wx_airsync_prf.c index ac7efe58d4..06d159aa32 100644 --- a/components/bt/bluedroid/btc/profile/esp/wechat_AirSync/wx_airsync_prf.c +++ b/components/bt/bluedroid/btc/profile/esp/wechat_AirSync/wx_airsync_prf.c @@ -17,7 +17,7 @@ #if (WX_AIRSYNC_CFG) #include - + #include #include #include @@ -47,126 +47,120 @@ static void airsync_profile_cb(esp_gatts_evt_t event, esp_gatts_t *p_data); ** ** Description the callback function after the profile has been register to the BTA manager module ** -** Returns NULL +** Returns NULL ** *******************************************************************************/ static void airsync_profile_cb(esp_gatts_evt_t event, esp_gatts_t *p_data) { - esp_gatts_rsp_t rsp; - esp_bt_uuid_t uuid = {LEN_UUID_16, {ATT_SVC_AIRSYNC}}; - tAirSync_INST *p_inst = &airsync_cb_env.airsync_inst; - - - LOG_ERROR("airsync profile cb event = %x\n",event); - switch(event) - { - case ESP_GATTS_REG_EVT: - - if(p_data->reg_oper.status != BTA_GATT_OK) - { - LOG_ERROR("button profile register failed\n"); - } - airsync_cb_env.gatt_if = p_data->reg_oper.server_if; - airsync_cb_env.enabled = true; - - if(p_data->reg_oper.uuid.uu.uuid16 == ATT_SVC_AIRSYNC) - { - AirSync_CreateService(); - } - break; - case ESP_GATTS_READ_EVT: - - if(airsync_cb_env.clcb.connected && airsync_cb_env.enabled){ - //tBTA_GATTS_RSP rsp; - memset(&rsp,0,sizeof(tBTA_GATTS_API_RSP)); - rsp.attr_value.handle = p_data->req_data.p_data->read_req.handle; - rsp.attr_value.len = 2; - esp_ble_gatts_send_rsp(p_data->req_data.conn_id,p_data->req_data.trans_id, - p_data->req_data.status,&rsp); - } - break; - case ESP_GATTS_WRITE_EVT: - if(airsync_cb_env.clcb.connected && airsync_cb_env.enabled){ - esp_ble_gatts_send_rsp(p_data->req_data.conn_id,p_data->req_data.trans_id, - p_data->req_data.status,NULL); + esp_gatts_rsp_t rsp; + esp_bt_uuid_t uuid = {LEN_UUID_16, {ATT_SVC_AIRSYNC}}; + tAirSync_INST *p_inst = &airsync_cb_env.airsync_inst; - } - break; - case ESP_GATTS_CFM_EVT: - - break; - case ESP_GATTS_CREATE_EVT: - uuid.uu.uuid16 = ATT_CHAR_AIRSYNC_WIT; - - airsync_cb_env.clcb.cur_srvc_id= p_data->create.service_id; - airsync_cb_env.is_primery = p_data->create.is_primary; - //start the airsync service after created - esp_ble_gatts_start_srvc(p_data->create.service_id); - //add the frist airsync characteristic --> write characteristic - esp_ble_gatts_add_char(airsync_cb_env.clcb.cur_srvc_id,&uuid, - (GATT_PERM_WRITE|GATT_PERM_READ), - (GATT_CHAR_PROP_BIT_READ|GATT_CHAR_PROP_BIT_WRITE)); - break; - - case ESP_GATTS_ADD_CHAR_EVT: - if(p_data->add_result.char_uuid.uu.uuid16 == ATT_CHAR_AIRSYNC_WIT) - { - uuid.uu.uuid16 = ATT_CHAR_AIRSYBC_NTF; - //tBTA_GATT_PERM perm = GATT_PERM_READ; - //tBTA_GATT_CHAR_PROP prop = (GATT_CHAR_PROP_BIT_READ|GATT_CHAR_PROP_BIT_NOTIFY); - //save the att handle to the env - airsync_cb_env.airsync_inst.airsync_wirt_hdl = p_data->add_result.attr_id; - //add the second airsync characteristic --> Notify characteristic - esp_ble_gatts_add_char(airsync_cb_env.clcb.cur_srvc_id,&uuid, - GATT_PERM_READ,(GATT_CHAR_PROP_BIT_READ|GATT_CHAR_PROP_BIT_INDICATE)); - }else if(p_data->add_result.char_uuid.uu.uuid16 == ATT_CHAR_AIRSYBC_NTF){ - //tBTA_GATT_PERM perm = (GATT_PERM_WRITE|GATT_PERM_WRITE); - uuid.uu.uuid16 = GATT_UUID_CHAR_CLIENT_CONFIG; - airsync_cb_env.airsync_inst.airsync_ntf_hdl = p_data->add_result.attr_id; - esp_ble_gatts_add_char_descr (airsync_cb_env.clcb.cur_srvc_id, - (GATT_PERM_WRITE|GATT_PERM_WRITE), - &uuid); - uuid.uu.uuid16 = ATT_CHAR_AIRSYNC_READ; - //add the third airsync characteristic --> Read characteristic - esp_ble_gatts_add_char(airsync_cb_env.clcb.cur_srvc_id,&uuid, - GATT_PERM_READ, - GATT_CHAR_PROP_BIT_READ); - }else if(p_data->add_result.char_uuid.uu.uuid16 == ATT_CHAR_AIRSYNC_READ){ - airsync_cb_env.airsync_inst.airsync_read_hdl = p_data->add_result.attr_id; - } - - break; - case ESP_GATTS_ADD_CHAR_DESCR_EVT: - if(p_data->add_result.char_uuid.uu.uuid16 == GATT_UUID_CHAR_CLIENT_CONFIG) - { - airsync_cb_env.airsync_inst.airsync_cfg_hdl = p_data->add_result.attr_id; - } - break; - case ESP_GATTS_CONNECT_EVT: - //set the connection flag to true - airsync_env_clcb_alloc(p_data->conn.conn_id, p_data->conn.remote_bda); - break; - case ESP_GATTS_DISCONNECT_EVT: - //set the connection flag to true - airsync_cb_env.clcb.connected = false; - break; - case ESP_GATTS_OPEN_EVT: - break; - case ESP_GATTS_CLOSE_EVT: - if(airsync_cb_env.clcb.connected && (airsync_cb_env.clcb.conn_id == p_data->conn.conn_id)) - { - //set the connection channal congested flag to true - airsync_cb_env.clcb.congest = p_data->congest.congested; - } - break; - case ESP_GATTS_CONGEST_EVT: - //set the congest flag - airsync_cb_env.clcb.congest = p_data->congest.congested; - break; - default: - break; - } + LOG_ERROR("airsync profile cb event = %x\n", event); + switch (event) { + case ESP_GATTS_REG_EVT: + + if (p_data->reg_oper.status != BTA_GATT_OK) { + LOG_ERROR("button profile register failed\n"); + } + airsync_cb_env.gatt_if = p_data->reg_oper.server_if; + airsync_cb_env.enabled = true; + + if (p_data->reg_oper.uuid.uu.uuid16 == ATT_SVC_AIRSYNC) { + AirSync_CreateService(); + } + break; + case ESP_GATTS_READ_EVT: + + if (airsync_cb_env.clcb.connected && airsync_cb_env.enabled) { + //tBTA_GATTS_RSP rsp; + memset(&rsp, 0, sizeof(tBTA_GATTS_API_RSP)); + rsp.attr_value.handle = p_data->req_data.p_data->read_req.handle; + rsp.attr_value.len = 2; + esp_ble_gatts_send_rsp(p_data->req_data.conn_id, p_data->req_data.trans_id, + p_data->req_data.status, &rsp); + } + break; + case ESP_GATTS_WRITE_EVT: + if (airsync_cb_env.clcb.connected && airsync_cb_env.enabled) { + esp_ble_gatts_send_rsp(p_data->req_data.conn_id, p_data->req_data.trans_id, + p_data->req_data.status, NULL); + + } + break; + case ESP_GATTS_CFM_EVT: + + break; + case ESP_GATTS_CREATE_EVT: + uuid.uu.uuid16 = ATT_CHAR_AIRSYNC_WIT; + + airsync_cb_env.clcb.cur_srvc_id = p_data->create.service_id; + airsync_cb_env.is_primery = p_data->create.is_primary; + //start the airsync service after created + esp_ble_gatts_start_srvc(p_data->create.service_id); + //add the frist airsync characteristic --> write characteristic + esp_ble_gatts_add_char(airsync_cb_env.clcb.cur_srvc_id, &uuid, + (GATT_PERM_WRITE | GATT_PERM_READ), + (GATT_CHAR_PROP_BIT_READ | GATT_CHAR_PROP_BIT_WRITE)); + break; + + case ESP_GATTS_ADD_CHAR_EVT: + if (p_data->add_result.char_uuid.uu.uuid16 == ATT_CHAR_AIRSYNC_WIT) { + uuid.uu.uuid16 = ATT_CHAR_AIRSYBC_NTF; + //tBTA_GATT_PERM perm = GATT_PERM_READ; + //tBTA_GATT_CHAR_PROP prop = (GATT_CHAR_PROP_BIT_READ|GATT_CHAR_PROP_BIT_NOTIFY); + //save the att handle to the env + airsync_cb_env.airsync_inst.airsync_wirt_hdl = p_data->add_result.attr_id; + //add the second airsync characteristic --> Notify characteristic + esp_ble_gatts_add_char(airsync_cb_env.clcb.cur_srvc_id, &uuid, + GATT_PERM_READ, (GATT_CHAR_PROP_BIT_READ | GATT_CHAR_PROP_BIT_INDICATE)); + } else if (p_data->add_result.char_uuid.uu.uuid16 == ATT_CHAR_AIRSYBC_NTF) { + //tBTA_GATT_PERM perm = (GATT_PERM_WRITE|GATT_PERM_WRITE); + uuid.uu.uuid16 = GATT_UUID_CHAR_CLIENT_CONFIG; + airsync_cb_env.airsync_inst.airsync_ntf_hdl = p_data->add_result.attr_id; + esp_ble_gatts_add_char_descr (airsync_cb_env.clcb.cur_srvc_id, + (GATT_PERM_WRITE | GATT_PERM_WRITE), + &uuid); + + uuid.uu.uuid16 = ATT_CHAR_AIRSYNC_READ; + //add the third airsync characteristic --> Read characteristic + esp_ble_gatts_add_char(airsync_cb_env.clcb.cur_srvc_id, &uuid, + GATT_PERM_READ, + GATT_CHAR_PROP_BIT_READ); + } else if (p_data->add_result.char_uuid.uu.uuid16 == ATT_CHAR_AIRSYNC_READ) { + airsync_cb_env.airsync_inst.airsync_read_hdl = p_data->add_result.attr_id; + } + + break; + case ESP_GATTS_ADD_CHAR_DESCR_EVT: + if (p_data->add_result.char_uuid.uu.uuid16 == GATT_UUID_CHAR_CLIENT_CONFIG) { + airsync_cb_env.airsync_inst.airsync_cfg_hdl = p_data->add_result.attr_id; + } + break; + case ESP_GATTS_CONNECT_EVT: + //set the connection flag to true + airsync_env_clcb_alloc(p_data->conn.conn_id, p_data->conn.remote_bda); + break; + case ESP_GATTS_DISCONNECT_EVT: + //set the connection flag to true + airsync_cb_env.clcb.connected = false; + break; + case ESP_GATTS_OPEN_EVT: + break; + case ESP_GATTS_CLOSE_EVT: + if (airsync_cb_env.clcb.connected && (airsync_cb_env.clcb.conn_id == p_data->conn.conn_id)) { + //set the connection channal congested flag to true + airsync_cb_env.clcb.congest = p_data->congest.congested; + } + break; + case ESP_GATTS_CONGEST_EVT: + //set the congest flag + airsync_cb_env.clcb.congest = p_data->congest.congested; + break; + default: + break; + } } @@ -176,20 +170,20 @@ static void airsync_profile_cb(esp_gatts_evt_t event, esp_gatts_t *p_data) ** ** Description Create a Service for the airsync profile ** -** Returns NULL +** Returns NULL ** *******************************************************************************/ void AirSync_CreateService(void) { - esp_gatts_if_t server_if ; - esp_bt_uuid_t uuid = {LEN_UUID_16, {ATT_SVC_AIRSYNC}}; - UINT16 num_handle = WX_IDX_NB; - UINT8 inst = 0x00; - server_if = airsync_cb_env.gatt_if; - airsync_cb_env.inst_id = inst; - - esp_ble_gatts_create_srvc(server_if,&uuid,inst,num_handle,true); - + esp_gatts_if_t server_if ; + esp_bt_uuid_t uuid = {LEN_UUID_16, {ATT_SVC_AIRSYNC}}; + UINT16 num_handle = WX_IDX_NB; + UINT8 inst = 0x00; + server_if = airsync_cb_env.gatt_if; + airsync_cb_env.inst_id = inst; + + esp_ble_gatts_create_srvc(server_if, &uuid, inst, num_handle, true); + } /******************************************************************************* @@ -203,19 +197,18 @@ void AirSync_CreateService(void) *******************************************************************************/ tAirSync_CLCB *airsync_env_clcb_alloc (UINT16 conn_id, BD_ADDR remote_bda) { - tAirSync_CLCB *p_clcb = NULL; - p_clcb = &airsync_cb_env.clcb; - - if(!p_clcb->in_use) - { - p_clcb->in_use = TRUE; - p_clcb->conn_id = conn_id; - LOG_ERROR("p_clcb->conn_id = %x\n",conn_id); - p_clcb->connected = TRUE; - memcpy(p_clcb->remote_bda,remote_bda,BD_ADDR_LEN); - } + tAirSync_CLCB *p_clcb = NULL; + p_clcb = &airsync_cb_env.clcb; - return p_clcb; + if (!p_clcb->in_use) { + p_clcb->in_use = TRUE; + p_clcb->conn_id = conn_id; + LOG_ERROR("p_clcb->conn_id = %x\n", conn_id); + p_clcb->connected = TRUE; + memcpy(p_clcb->remote_bda, remote_bda, BD_ADDR_LEN); + } + + return p_clcb; } /******************************************************************************* @@ -229,18 +222,16 @@ tAirSync_CLCB *airsync_env_clcb_alloc (UINT16 conn_id, BD_ADDR remote_bda) *******************************************************************************/ UINT16 airsync_env_find_conn_id_by_bd_adddr(BD_ADDR remote_bda) { - UINT8 i_clcb; - tAirSync_CLCB *p_clcb = NULL; + UINT8 i_clcb; + tAirSync_CLCB *p_clcb = NULL; - for(i_clcb = 0, p_clcb = &airsync_cb_env.clcb; i_clcb < 1; i_clcb++, p_clcb++) - { - if(p_clcb->in_use && p_clcb->connected &&memcmp(p_clcb->remote_bda,remote_bda,BD_ADDR_LEN)) - { - return p_clcb->conn_id; - } - } + for (i_clcb = 0, p_clcb = &airsync_cb_env.clcb; i_clcb < 1; i_clcb++, p_clcb++) { + if (p_clcb->in_use && p_clcb->connected && memcmp(p_clcb->remote_bda, remote_bda, BD_ADDR_LEN)) { + return p_clcb->conn_id; + } + } - return GATT_INVALID_CONN_ID; + return GATT_INVALID_CONN_ID; } @@ -253,32 +244,28 @@ UINT16 airsync_env_find_conn_id_by_bd_adddr(BD_ADDR remote_bda) *******************************************************************************/ tGATT_STATUS AirSync_Init(tAIRSYNC_CBACK *call_back) { - esp_bt_uuid_t app_uuid = {LEN_UUID_16,{ATT_SVC_AIRSYNC}}; - + esp_bt_uuid_t app_uuid = {LEN_UUID_16, {ATT_SVC_AIRSYNC}}; - if(airsync_cb_env.enabled) - { - LOG_ERROR("airsync svc already initaliezd\n"); - return ESP_GATT_ERROR; - } - else - { - memset(&airsync_cb_env,0,sizeof(tAIRSYNC_CB_ENV)); - } - - if(call_back != NULL) - { + if (airsync_cb_env.enabled) { + LOG_ERROR("airsync svc already initaliezd\n"); + return ESP_GATT_ERROR; + } else { + memset(&airsync_cb_env, 0, sizeof(tAIRSYNC_CB_ENV)); + } + + + if (call_back != NULL) { airsync_cb_env.airsync_inst.p_cback = call_back; - } + } - - /* register the airsync profile to the BTA_GATTS module*/ - esp_ble_gatts_app_register(&app_uuid,airsync_profile_cb); - airsync_cb_env.enabled = TRUE; + /* register the airsync profile to the BTA_GATTS module*/ + esp_ble_gatts_app_register(&app_uuid, airsync_profile_cb); - return ESP_GATT_OK; + airsync_cb_env.enabled = TRUE; + + return ESP_GATT_OK; } -#endif ///WX_AIRSYNC_CFG +#endif ///WX_AIRSYNC_CFG diff --git a/components/bt/bluedroid/btc/profile/std/avrc/avrc_api.c b/components/bt/bluedroid/btc/profile/std/avrc/avrc_api.c old mode 100755 new mode 100644 index c911de5c19..dc10d01179 --- a/components/bt/bluedroid/btc/profile/std/avrc/avrc_api.c +++ b/components/bt/bluedroid/btc/profile/std/avrc/avrc_api.c @@ -38,8 +38,7 @@ #define MAX(a, b) ((a) > (b) ? (a) : (b)) #endif -static const UINT8 avrc_ctrl_event_map[] = -{ +static const UINT8 avrc_ctrl_event_map[] = { AVRC_OPEN_IND_EVT, /* AVCT_CONNECT_CFM_EVT */ AVRC_OPEN_IND_EVT, /* AVCT_CONNECT_IND_EVT */ AVRC_CLOSE_IND_EVT, /* AVCT_DISCONNECT_CFM_EVT */ @@ -72,17 +71,16 @@ static const UINT8 avrc_ctrl_event_map[] = ** ******************************************************************************/ static void avrc_ctrl_cback(UINT8 handle, UINT8 event, UINT16 result, - BD_ADDR peer_addr) + BD_ADDR peer_addr) { UINT8 avrc_event; - if (event <= AVRC_MAX_RCV_CTRL_EVT && avrc_cb.ccb[handle].p_ctrl_cback) - { + if (event <= AVRC_MAX_RCV_CTRL_EVT && avrc_cb.ccb[handle].p_ctrl_cback) { avrc_event = avrc_ctrl_event_map[event]; - if (event == AVCT_CONNECT_CFM_EVT) - { - if (result != 0) /* failed */ + if (event == AVCT_CONNECT_CFM_EVT) { + if (result != 0) { /* failed */ avrc_event = AVRC_CLOSE_IND_EVT; + } } (*avrc_cb.ccb[handle].p_ctrl_cback)(handle, avrc_event, result, peer_addr); } @@ -98,7 +96,7 @@ static void avrc_ctrl_cback(UINT8 handle, UINT8 event, UINT16 result, ** Returns A pointer to the data payload. ** ******************************************************************************/ -static UINT8 * avrc_get_data_ptr(BT_HDR *p_pkt) +static UINT8 *avrc_get_data_ptr(BT_HDR *p_pkt) { return (UINT8 *)(p_pkt + 1) + p_pkt->offset; } @@ -113,7 +111,7 @@ static UINT8 * avrc_get_data_ptr(BT_HDR *p_pkt) ** Returns The buffer with the copied data. ** ******************************************************************************/ -static BT_HDR * avrc_copy_packet(BT_HDR *p_pkt, int rsp_pkt_len) +static BT_HDR *avrc_copy_packet(BT_HDR *p_pkt, int rsp_pkt_len) { const int offset = MAX(AVCT_MSG_OFFSET, p_pkt->offset); const int pkt_len = MAX(rsp_pkt_len, p_pkt->len); @@ -161,7 +159,7 @@ static void avrc_prep_end_frag(UINT8 handle) p_pkt_new = p_fcb->p_fmsg; p_pkt_new->len -= (AVRC_MAX_CTRL_DATA_LEN - AVRC_VENDOR_HDR_SIZE - AVRC_MIN_META_HDR_SIZE); p_pkt_new->offset += (AVRC_MAX_CTRL_DATA_LEN - AVRC_VENDOR_HDR_SIZE - AVRC_MIN_META_HDR_SIZE); - p_data = (UINT8 *)(p_pkt_new+1) + p_pkt_new->offset; + p_data = (UINT8 *)(p_pkt_new + 1) + p_pkt_new->offset; *p_data++ = rsp_type; *p_data++ = (AVRC_SUB_PANEL << AVRC_SUBTYPE_SHIFT); *p_data++ = AVRC_OP_VENDOR; @@ -195,19 +193,17 @@ static void avrc_send_continue_frag(UINT8 handle, UINT8 label) AVRC_TRACE_DEBUG("%s handle = %u label = %u len = %d", __func__, handle, label, p_pkt->len); - if (p_pkt->len > AVRC_MAX_CTRL_DATA_LEN) - { + if (p_pkt->len > AVRC_MAX_CTRL_DATA_LEN) { int offset_len = MAX(AVCT_MSG_OFFSET, p_pkt->offset); p_pkt_old = p_fcb->p_fmsg; p_pkt = (BT_HDR *)GKI_getbuf((UINT16)(AVRC_PACKET_LEN + offset_len + BT_HDR_SIZE)); - if (p_pkt) - { + if (p_pkt) { p_pkt->len = AVRC_MAX_CTRL_DATA_LEN; p_pkt->offset = AVCT_MSG_OFFSET; p_pkt->layer_specific = p_pkt_old->layer_specific; p_pkt->event = p_pkt_old->event; - p_old = (UINT8 *)(p_pkt_old+1) + p_pkt_old->offset; - p_data = (UINT8 *)(p_pkt+1) + p_pkt->offset; + p_old = (UINT8 *)(p_pkt_old + 1) + p_pkt_old->offset; + p_data = (UINT8 *)(p_pkt + 1) + p_pkt->offset; memcpy (p_data, p_old, AVRC_MAX_CTRL_DATA_LEN); /* use AVRC continue packet type */ p_data += AVRC_VENDOR_HDR_SIZE; @@ -218,15 +214,13 @@ static void avrc_send_continue_frag(UINT8 handle, UINT8 label) /* prepare the left over for as an end fragment */ avrc_prep_end_frag (handle); - } - else - { + } else { /* use the current GKI buffer to send Internal error status */ p_pkt = p_fcb->p_fmsg; p_fcb->p_fmsg = NULL; p_fcb->frag_enabled = FALSE; AVRC_TRACE_ERROR ("AVRC_MsgReq no buffers for fragmentation - send internal error" ); - p_data = (UINT8 *)(p_pkt+1) + p_pkt->offset; + p_data = (UINT8 *)(p_pkt + 1) + p_pkt->offset; *p_data++ = AVRC_PDU_REQUEST_CONTINUATION_RSP; *p_data++ = 0; UINT16_TO_BE_STREAM(p_data, 0); @@ -236,9 +230,7 @@ static void avrc_send_continue_frag(UINT8 handle, UINT8 label) AVRC_BldResponse( handle, (tAVRC_RESPONSE *)&rej_rsp, &p_pkt); cr = AVCT_RSP; } - } - else - { + } else { /* end fragment. clean the control block */ p_fcb->frag_enabled = FALSE; p_fcb->p_fmsg = NULL; @@ -255,8 +247,8 @@ static void avrc_send_continue_frag(UINT8 handle, UINT8 label) ** Returns if not NULL, the response to send right away. ** ******************************************************************************/ -static BT_HDR * avrc_proc_vendor_command(UINT8 handle, UINT8 label, - BT_HDR *p_pkt, tAVRC_MSG_VENDOR *p_msg) +static BT_HDR *avrc_proc_vendor_command(UINT8 handle, UINT8 label, + BT_HDR *p_pkt, tAVRC_MSG_VENDOR *p_msg) { BT_HDR *p_rsp = NULL; UINT8 *p_data; @@ -266,37 +258,30 @@ static BT_HDR * avrc_proc_vendor_command(UINT8 handle, UINT8 label, tAVRC_STS status = AVRC_STS_NO_ERROR; tAVRC_FRAG_CB *p_fcb; - p_begin = (UINT8 *)(p_pkt+1) + p_pkt->offset; + p_begin = (UINT8 *)(p_pkt + 1) + p_pkt->offset; p_data = p_begin + AVRC_VENDOR_HDR_SIZE; pkt_type = *(p_data + 1) & AVRC_PKT_TYPE_MASK; - if (pkt_type != AVRC_PKT_SINGLE) - { + if (pkt_type != AVRC_PKT_SINGLE) { /* reject - commands can only be in single packets at AVRCP level */ AVRC_TRACE_ERROR ("commands must be in single packet pdu:0x%x", *p_data ); /* use the current GKI buffer to send the reject */ status = AVRC_STS_BAD_CMD; } /* check if there are fragments waiting to be sent */ - else if (avrc_cb.fcb[handle].frag_enabled) - { + else if (avrc_cb.fcb[handle].frag_enabled) { p_fcb = &avrc_cb.fcb[handle]; - if (p_msg->company_id == AVRC_CO_METADATA) - { - switch (*p_data) - { + if (p_msg->company_id == AVRC_CO_METADATA) { + switch (*p_data) { case AVRC_PDU_ABORT_CONTINUATION_RSP: /* aborted by CT - send accept response */ abort_frag = TRUE; - p_begin = (UINT8 *)(p_pkt+1) + p_pkt->offset; + p_begin = (UINT8 *)(p_pkt + 1) + p_pkt->offset; *p_begin = (AVRC_RSP_ACCEPT & AVRC_CTYPE_MASK); - if (*(p_data + 4) != p_fcb->frag_pdu) - { + if (*(p_data + 4) != p_fcb->frag_pdu) { *p_begin = (AVRC_RSP_REJ & AVRC_CTYPE_MASK); *(p_data + 4) = AVRC_STS_BAD_PARAM; - } - else - { + } else { p_data = (p_begin + AVRC_VENDOR_HDR_SIZE + 2); UINT16_TO_BE_STREAM(p_data, 0); p_pkt->len = (p_data - p_begin); @@ -306,17 +291,14 @@ static BT_HDR * avrc_proc_vendor_command(UINT8 handle, UINT8 label, break; case AVRC_PDU_REQUEST_CONTINUATION_RSP: - if (*(p_data + 4) == p_fcb->frag_pdu) - { + if (*(p_data + 4) == p_fcb->frag_pdu) { avrc_send_continue_frag(handle, label); p_msg->hdr.opcode = AVRC_OP_DROP_N_FREE; - } - else - { + } else { /* the pdu id does not match - reject the command using the current GKI buffer */ AVRC_TRACE_ERROR("avrc_proc_vendor_command continue pdu: 0x%x does not match \ current re-assembly pdu: 0x%x", - *(p_data + 4), p_fcb->frag_pdu); + *(p_data + 4), p_fcb->frag_pdu); status = AVRC_STS_BAD_PARAM; abort_frag = TRUE; } @@ -326,26 +308,23 @@ static BT_HDR * avrc_proc_vendor_command(UINT8 handle, UINT8 label, /* implicit abort */ abort_frag = TRUE; } - } - else - { + } else { abort_frag = TRUE; /* implicit abort */ } - if (abort_frag) - { - if (p_fcb->p_fmsg) + if (abort_frag) { + if (p_fcb->p_fmsg) { GKI_freebuf(p_fcb->p_fmsg); + } p_fcb->p_fmsg = NULL; p_fcb->frag_enabled = FALSE; } } - if (status != AVRC_STS_NO_ERROR) - { + if (status != AVRC_STS_NO_ERROR) { /* use the current GKI buffer to build/send the reject message */ - p_data = (UINT8 *)(p_pkt+1) + p_pkt->offset; + p_data = (UINT8 *)(p_pkt + 1) + p_pkt->offset; *p_data++ = AVRC_RSP_REJ; p_data += AVRC_VENDOR_HDR_SIZE; /* pdu */ *p_data++ = 0; /* pkt_type */ @@ -369,7 +348,7 @@ static BT_HDR * avrc_proc_vendor_command(UINT8 handle, UINT8 label, ** ******************************************************************************/ static UINT8 avrc_proc_far_msg(UINT8 handle, UINT8 label, UINT8 cr, BT_HDR **pp_pkt, - tAVRC_MSG_VENDOR *p_msg) + tAVRC_MSG_VENDOR *p_msg) { BT_HDR *p_pkt = *pp_pkt; UINT8 *p_data; @@ -383,7 +362,7 @@ static UINT8 avrc_proc_far_msg(UINT8 handle, UINT8 label, UINT8 cr, BT_HDR **pp_ tAVRC_RASM_CB *p_rcb; tAVRC_NEXT_CMD avrc_cmd; - p_data = (UINT8 *)(p_pkt+1) + p_pkt->offset; + p_data = (UINT8 *)(p_pkt + 1) + p_pkt->offset; /* Skip over vendor header (ctype, subunit*, opcode, CO_ID) */ p_data += AVRC_VENDOR_HDR_SIZE; @@ -391,35 +370,29 @@ static UINT8 avrc_proc_far_msg(UINT8 handle, UINT8 label, UINT8 cr, BT_HDR **pp_ pkt_type = *(p_data + 1) & AVRC_PKT_TYPE_MASK; AVRC_TRACE_DEBUG ("pkt_type %d", pkt_type ); p_rcb = &avrc_cb.rcb[handle]; - if (p_msg->company_id == AVRC_CO_METADATA) - { + if (p_msg->company_id == AVRC_CO_METADATA) { /* check if the message needs to be re-assembled */ - if (pkt_type == AVRC_PKT_SINGLE || pkt_type == AVRC_PKT_START) - { + if (pkt_type == AVRC_PKT_SINGLE || pkt_type == AVRC_PKT_START) { /* previous fragments need to be dropped, when received another new message */ p_rcb->rasm_offset = 0; - if (p_rcb->p_rmsg) - { + if (p_rcb->p_rmsg) { GKI_freebuf(p_rcb->p_rmsg); p_rcb->p_rmsg = NULL; } } - if (pkt_type != AVRC_PKT_SINGLE && cr == AVCT_RSP) - { + if (pkt_type != AVRC_PKT_SINGLE && cr == AVCT_RSP) { /* not a single response packet - need to re-assemble metadata messages */ - if (pkt_type == AVRC_PKT_START) - { + if (pkt_type == AVRC_PKT_START) { /* Allocate buffer for re-assembly */ p_rcb->rasm_pdu = *p_data; - if ((p_rcb->p_rmsg = (BT_HDR *)GKI_getbuf(GKI_MAX_BUF_SIZE)) != NULL) - { + if ((p_rcb->p_rmsg = (BT_HDR *)GKI_getbuf(GKI_MAX_BUF_SIZE)) != NULL) { /* Copy START packet to buffer for re-assembling fragments*/ memcpy(p_rcb->p_rmsg, p_pkt, sizeof(BT_HDR)); /* Copy bt hdr */ /* Copy metadata message */ memcpy((UINT8 *)(p_rcb->p_rmsg + 1), - (UINT8 *)(p_pkt+1) + p_pkt->offset, p_pkt->len); + (UINT8 *)(p_pkt + 1) + p_pkt->offset, p_pkt->len); /* offset of start of metadata response in reassembly buffer */ p_rcb->p_rmsg->offset = p_rcb->rasm_offset = 0; @@ -427,9 +400,7 @@ static UINT8 avrc_proc_far_msg(UINT8 handle, UINT8 label, UINT8 cr, BT_HDR **pp_ /* Free original START packet, replace with pointer to reassembly buffer */ GKI_freebuf(p_pkt); *pp_pkt = p_rcb->p_rmsg; - } - else - { + } else { /* Unable to allocate buffer for fragmented avrc message. Reuse START buffer for reassembly (re-assembled message may fit into ACL buf) */ AVRC_TRACE_DEBUG ("Unable to allocate buffer for fragmented avrc message, \ @@ -441,9 +412,7 @@ static UINT8 avrc_proc_far_msg(UINT8 handle, UINT8 label, UINT8 cr, BT_HDR **pp_ /* set offset to point to where to copy next - use the same re-asm logic as AVCT */ p_rcb->p_rmsg->offset += p_rcb->p_rmsg->len; req_continue = TRUE; - } - else if (p_rcb->p_rmsg == NULL) - { + } else if (p_rcb->p_rmsg == NULL) { /* Received a CONTINUE/END, but no corresponding START (or previous fragmented response was dropped) */ AVRC_TRACE_DEBUG ("Received a CONTINUE/END without no corresponding START \ @@ -451,17 +420,14 @@ static UINT8 avrc_proc_far_msg(UINT8 handle, UINT8 label, UINT8 cr, BT_HDR **pp_ drop_code = 5; GKI_freebuf(p_pkt); *pp_pkt = NULL; - } - else - { + } else { /* get size of buffer holding assembled message */ buf_len = GKI_get_buf_size (p_rcb->p_rmsg) - sizeof(BT_HDR); /* adjust offset and len of fragment for header byte */ p_pkt->offset += (AVRC_VENDOR_HDR_SIZE + AVRC_MIN_META_HDR_SIZE); p_pkt->len -= (AVRC_VENDOR_HDR_SIZE + AVRC_MIN_META_HDR_SIZE); /* verify length */ - if ((p_rcb->p_rmsg->offset + p_pkt->len) > buf_len) - { + if ((p_rcb->p_rmsg->offset + p_pkt->len) > buf_len) { AVRC_TRACE_WARNING("Fragmented message too big! - report the partial message"); p_pkt->len = buf_len - p_rcb->p_rmsg->offset; pkt_type = AVRC_PKT_END; @@ -471,14 +437,13 @@ static UINT8 avrc_proc_far_msg(UINT8 handle, UINT8 label, UINT8 cr, BT_HDR **pp_ memcpy((UINT8 *)(p_rcb->p_rmsg + 1) + p_rcb->p_rmsg->offset, (UINT8 *)(p_pkt + 1) + p_pkt->offset, p_pkt->len); - if (pkt_type == AVRC_PKT_END) - { + if (pkt_type == AVRC_PKT_END) { p_rcb->p_rmsg->offset = p_rcb->rasm_offset; p_rcb->p_rmsg->len += p_pkt->len; p_pkt_new = p_rcb->p_rmsg; p_rcb->rasm_offset = 0; p_rcb->p_rmsg = NULL; - p_msg->p_vendor_data = (UINT8 *)(p_pkt_new+1) + p_pkt_new->offset; + p_msg->p_vendor_data = (UINT8 *)(p_pkt_new + 1) + p_pkt_new->offset; p_msg->hdr.ctype = p_msg->p_vendor_data[0] & AVRC_CTYPE_MASK; /* 6 = ctype, subunit*, opcode & CO_ID */ p_msg->p_vendor_data += AVRC_VENDOR_HDR_SIZE; @@ -487,10 +452,8 @@ static UINT8 avrc_proc_far_msg(UINT8 handle, UINT8 label, UINT8 cr, BT_HDR **pp_ *p_data++ = AVRC_PKT_SINGLE; UINT16_TO_BE_STREAM(p_data, (p_msg->vendor_len - AVRC_MIN_META_HDR_SIZE)); AVRC_TRACE_DEBUG("end frag:%d, total len:%d, offset:%d", p_pkt->len, - p_pkt_new->len, p_pkt_new->offset); - } - else - { + p_pkt_new->len, p_pkt_new->offset); + } else { p_rcb->p_rmsg->offset += p_pkt->len; p_rcb->p_rmsg->len += p_pkt->len; p_pkt_new = NULL; @@ -501,29 +464,22 @@ static UINT8 avrc_proc_far_msg(UINT8 handle, UINT8 label, UINT8 cr, BT_HDR **pp_ } } - if (cr == AVCT_CMD) - { + if (cr == AVCT_CMD) { p_rsp = avrc_proc_vendor_command(handle, label, *pp_pkt, p_msg); - if (p_rsp) - { + if (p_rsp) { AVCT_MsgReq( handle, label, AVCT_RSP, p_rsp); drop_code = 3; - } - else if (p_msg->hdr.opcode == AVRC_OP_DROP) - { + } else if (p_msg->hdr.opcode == AVRC_OP_DROP) { drop_code = 1; - } - else if (p_msg->hdr.opcode == AVRC_OP_DROP_N_FREE) + } else if (p_msg->hdr.opcode == AVRC_OP_DROP_N_FREE) { drop_code = 4; + } - } - else if (cr == AVCT_RSP && req_continue == TRUE) - { + } else if (cr == AVCT_RSP && req_continue == TRUE) { avrc_cmd.pdu = AVRC_PDU_REQUEST_CONTINUATION_RSP; avrc_cmd.status = AVRC_STS_NO_ERROR; avrc_cmd.target_pdu = p_rcb->rasm_pdu; - if (AVRC_BldCommand ((tAVRC_COMMAND *)&avrc_cmd, &p_cmd) == AVRC_STS_NO_ERROR) - { + if (AVRC_BldCommand ((tAVRC_COMMAND *)&avrc_cmd, &p_cmd) == AVRC_STS_NO_ERROR) { drop_code = 2; AVRC_MsgReq (handle, (UINT8)(label), AVRC_CMD_CTRL, p_cmd); } @@ -545,7 +501,7 @@ static UINT8 avrc_proc_far_msg(UINT8 handle, UINT8 label, UINT8 cr, BT_HDR **pp_ ** ******************************************************************************/ static void avrc_msg_cback(UINT8 handle, UINT8 label, UINT8 cr, - BT_HDR *p_pkt) + BT_HDR *p_pkt) { UINT8 opcode; tAVRC_MSG msg; @@ -563,8 +519,7 @@ static void avrc_msg_cback(UINT8 handle, UINT8 label, UINT8 cr, tAVRC_MSG_VENDOR *p_msg = &msg.vendor; if (cr == AVCT_CMD && - (p_pkt->layer_specific & AVCT_DATA_CTRL && AVRC_PACKET_LEN < sizeof(p_pkt->len))) - { + (p_pkt->layer_specific & AVCT_DATA_CTRL && AVRC_PACKET_LEN < sizeof(p_pkt->len))) { /* Ignore the invalid AV/C command frame */ #if (BT_USE_TRACES == TRUE) p_drop_msg = "dropped - too long AV/C cmd frame size"; @@ -573,8 +528,7 @@ static void avrc_msg_cback(UINT8 handle, UINT8 label, UINT8 cr, return; } - if (cr == AVCT_REJ) - { + if (cr == AVCT_REJ) { /* The peer thinks that this PID is no longer open - remove this handle */ /* */ GKI_freebuf(p_pkt); @@ -582,26 +536,23 @@ static void avrc_msg_cback(UINT8 handle, UINT8 label, UINT8 cr, return; } - p_data = (UINT8 *)(p_pkt+1) + p_pkt->offset; + p_data = (UINT8 *)(p_pkt + 1) + p_pkt->offset; memset(&msg, 0, sizeof(tAVRC_MSG) ); { msg.hdr.ctype = p_data[0] & AVRC_CTYPE_MASK; AVRC_TRACE_DEBUG("avrc_msg_cback handle:%d, ctype:%d, offset:%d, len: %d", - handle, msg.hdr.ctype, p_pkt->offset, p_pkt->len); + handle, msg.hdr.ctype, p_pkt->offset, p_pkt->len); msg.hdr.subunit_type = (p_data[1] & AVRC_SUBTYPE_MASK) >> AVRC_SUBTYPE_SHIFT; msg.hdr.subunit_id = p_data[1] & AVRC_SUBID_MASK; opcode = p_data[2]; } if ( ((avrc_cb.ccb[handle].control & AVRC_CT_TARGET) && (cr == AVCT_CMD)) || - ((avrc_cb.ccb[handle].control & AVRC_CT_CONTROL) && (cr == AVCT_RSP)) ) - { + ((avrc_cb.ccb[handle].control & AVRC_CT_CONTROL) && (cr == AVCT_RSP)) ) { - switch(opcode) - { + switch (opcode) { case AVRC_OP_UNIT_INFO: - if (cr == AVCT_CMD) - { + if (cr == AVCT_CMD) { /* send the response to the peer */ p_rsp = avrc_copy_packet(p_pkt, AVRC_OP_UNIT_INFO_RSP_LEN); p_rsp_data = avrc_get_data_ptr(p_rsp); @@ -619,9 +570,7 @@ static void avrc_msg_cback(UINT8 handle, UINT8 label, UINT8 cr, #if (BT_USE_TRACES == TRUE) p_drop_msg = "auto respond"; #endif - } - else - { + } else { /* parse response */ p_data += 4; /* 3 bytes: ctype, subunit*, opcode + octet 3 (is 7)*/ msg.unit.unit_type = (*p_data & AVRC_SUBTYPE_MASK) >> AVRC_SUBTYPE_SHIFT; @@ -632,8 +581,7 @@ static void avrc_msg_cback(UINT8 handle, UINT8 label, UINT8 cr, break; case AVRC_OP_SUB_INFO: - if (cr == AVCT_CMD) - { + if (cr == AVCT_CMD) { /* send the response to the peer */ p_rsp = avrc_copy_packet(p_pkt, AVRC_OP_SUB_UNIT_INFO_RSP_LEN); p_rsp_data = avrc_get_data_ptr(p_rsp); @@ -650,32 +598,30 @@ static void avrc_msg_cback(UINT8 handle, UINT8 label, UINT8 cr, #if (BT_USE_TRACES == TRUE) p_drop_msg = "auto responded"; #endif - } - else - { + } else { /* parse response */ p_data += AVRC_AVC_HDR_SIZE; /* 3 bytes: ctype, subunit*, opcode */ msg.sub.page = (*p_data++ >> AVRC_SUB_PAGE_SHIFT) & AVRC_SUB_PAGE_MASK; xx = 0; - while (*p_data != AVRC_CMD_OPRND_PAD && xx> AVRC_SUBTYPE_SHIFT; - if (msg.sub.subunit_type[xx] == AVRC_SUB_PANEL) + if (msg.sub.subunit_type[xx] == AVRC_SUB_PANEL) { msg.sub.panel = TRUE; + } xx++; } } break; case AVRC_OP_VENDOR: - p_data = (UINT8 *)(p_pkt+1) + p_pkt->offset; + p_data = (UINT8 *)(p_pkt + 1) + p_pkt->offset; p_begin = p_data; - if (p_pkt->len < AVRC_VENDOR_HDR_SIZE) /* 6 = ctype, subunit*, opcode & CO_ID */ - { - if (cr == AVCT_CMD) + if (p_pkt->len < AVRC_VENDOR_HDR_SIZE) { /* 6 = ctype, subunit*, opcode & CO_ID */ + if (cr == AVCT_CMD) { reject = TRUE; - else + } else { drop = TRUE; + } break; } p_data += AVRC_AVC_HDR_SIZE; /* skip the first 3 bytes: ctype, subunit*, opcode */ @@ -685,30 +631,29 @@ static void avrc_msg_cback(UINT8 handle, UINT8 label, UINT8 cr, #if (AVRC_METADATA_INCLUDED == TRUE) UINT8 drop_code = 0; - if (p_msg->company_id == AVRC_CO_METADATA) - { + if (p_msg->company_id == AVRC_CO_METADATA) { /* Validate length for metadata message */ - if (p_pkt->len < (AVRC_VENDOR_HDR_SIZE + AVRC_MIN_META_HDR_SIZE)) - { - if (cr == AVCT_CMD) + if (p_pkt->len < (AVRC_VENDOR_HDR_SIZE + AVRC_MIN_META_HDR_SIZE)) { + if (cr == AVCT_CMD) { reject = TRUE; - else + } else { drop = TRUE; + } break; } /* Check+handle fragmented messages */ drop_code = avrc_proc_far_msg(handle, label, cr, &p_pkt, p_msg); - if (drop_code > 0) + if (drop_code > 0) { drop = TRUE; + } } - if (drop_code > 0) - { - if (drop_code != 4) + if (drop_code > 0) { + if (drop_code != 4) { do_free = FALSE; + } #if (BT_USE_TRACES == TRUE) - switch (drop_code) - { + switch (drop_code) { case 1: p_drop_msg = "sent_frag"; break; @@ -730,48 +675,47 @@ static void avrc_msg_cback(UINT8 handle, UINT8 label, UINT8 cr, break; case AVRC_OP_PASS_THRU: - if (p_pkt->len < 5) /* 3 bytes: ctype, subunit*, opcode & op_id & len */ - { - if (cr == AVCT_CMD) + if (p_pkt->len < 5) { /* 3 bytes: ctype, subunit*, opcode & op_id & len */ + if (cr == AVCT_CMD) { reject = TRUE; - else + } else { drop = TRUE; + } break; } p_data += AVRC_AVC_HDR_SIZE; /* skip the first 3 bytes: ctype, subunit*, opcode */ msg.pass.op_id = (AVRC_PASS_OP_ID_MASK & *p_data); - if (AVRC_PASS_STATE_MASK & *p_data) + if (AVRC_PASS_STATE_MASK & *p_data) { msg.pass.state = TRUE; - else + } else { msg.pass.state = FALSE; + } p_data++; msg.pass.pass_len = *p_data++; - if (msg.pass.pass_len != p_pkt->len - 5) + if (msg.pass.pass_len != p_pkt->len - 5) { msg.pass.pass_len = p_pkt->len - 5; - if (msg.pass.pass_len) + } + if (msg.pass.pass_len) { msg.pass.p_pass_data = p_data; - else + } else { msg.pass.p_pass_data = NULL; + } break; default: - if ((avrc_cb.ccb[handle].control & AVRC_CT_TARGET) && (cr == AVCT_CMD)) - { + if ((avrc_cb.ccb[handle].control & AVRC_CT_TARGET) && (cr == AVCT_CMD)) { /* reject unsupported opcode */ reject = TRUE; } drop = TRUE; break; } - } - else /* drop the event */ - { - drop = TRUE; + } else { /* drop the event */ + drop = TRUE; } - if (reject) - { + if (reject) { /* reject unsupported opcode */ p_rsp = avrc_copy_packet(p_pkt, AVRC_OP_REJ_MSG_LEN); p_rsp_data = avrc_get_data_ptr(p_rsp); @@ -783,30 +727,28 @@ static void avrc_msg_cback(UINT8 handle, UINT8 label, UINT8 cr, drop = TRUE; } - if (p_rsp) - { + if (p_rsp) { /* set to send response right away */ AVCT_MsgReq( handle, label, cr, p_rsp); drop = TRUE; } - if (drop == FALSE) - { + if (drop == FALSE) { msg.hdr.opcode = opcode; (*avrc_cb.ccb[handle].p_msg_cback)(handle, label, opcode, &msg); } #if (BT_USE_TRACES == TRUE) - else - { + else { AVRC_TRACE_WARNING("avrc_msg_cback %s msg handle:%d, control:%d, cr:%d, opcode:x%x", - p_drop_msg, - handle, avrc_cb.ccb[handle].control, cr, opcode); + p_drop_msg, + handle, avrc_cb.ccb[handle].control, cr, opcode); } #endif - if (do_free) + if (do_free) { GKI_freebuf(p_pkt); + } } @@ -828,38 +770,34 @@ static void avrc_msg_cback(UINT8 handle, UINT8 label, UINT8 cr, ** NULL if p_msg is NULL. ** ******************************************************************************/ -static BT_HDR * avrc_pass_msg(tAVRC_MSG_PASS *p_msg) +static BT_HDR *avrc_pass_msg(tAVRC_MSG_PASS *p_msg) { BT_HDR *p_cmd = NULL; UINT8 *p_data; assert(p_msg != NULL); - assert(AVRC_CMD_POOL_SIZE > (AVRC_MIN_CMD_LEN+p_msg->pass_len)); + assert(AVRC_CMD_POOL_SIZE > (AVRC_MIN_CMD_LEN + p_msg->pass_len)); - if ((p_cmd = (BT_HDR *) GKI_getpoolbuf(AVRC_CMD_POOL_ID)) != NULL) - { + if ((p_cmd = (BT_HDR *) GKI_getpoolbuf(AVRC_CMD_POOL_ID)) != NULL) { p_cmd->offset = AVCT_MSG_OFFSET; p_cmd->layer_specific = AVCT_DATA_CTRL; p_data = (UINT8 *)(p_cmd + 1) + p_cmd->offset; *p_data++ = (p_msg->hdr.ctype & AVRC_CTYPE_MASK); *p_data++ = (AVRC_SUB_PANEL << AVRC_SUBTYPE_SHIFT); /* Panel subunit & id=0 */ *p_data++ = AVRC_OP_PASS_THRU; - *p_data = (AVRC_PASS_OP_ID_MASK&p_msg->op_id); - if (p_msg->state) + *p_data = (AVRC_PASS_OP_ID_MASK & p_msg->op_id); + if (p_msg->state) { *p_data |= AVRC_PASS_STATE_MASK; + } p_data++; - if (p_msg->op_id == AVRC_ID_VENDOR) - { + if (p_msg->op_id == AVRC_ID_VENDOR) { *p_data++ = p_msg->pass_len; - if (p_msg->pass_len && p_msg->p_pass_data) - { + if (p_msg->pass_len && p_msg->p_pass_data) { memcpy(p_data, p_msg->p_pass_data, p_msg->pass_len); p_data += p_msg->pass_len; } - } - else /* set msg len to 0 for other op_id */ - { + } else { /* set msg len to 0 for other op_id */ /* set msg len to 0 for other op_id */ *p_data++ = 0; } @@ -925,8 +863,7 @@ UINT16 AVRC_Open(UINT8 *p_handle, tAVRC_CONN_CB *p_ccb, BD_ADDR_PTR peer_addr) cc.control = p_ccb->control; /* Control role (Control/Target) */ status = AVCT_CreateConn(p_handle, &cc, peer_addr); - if (status == AVCT_SUCCESS) - { + if (status == AVCT_SUCCESS) { memcpy(&avrc_cb.ccb[*p_handle], p_ccb, sizeof(tAVRC_CONN_CB)); #if (AVRC_METADATA_INCLUDED == TRUE) memset(&avrc_cb.fcb[*p_handle], 0, sizeof(tAVRC_FRAG_CB)); @@ -934,7 +871,7 @@ UINT16 AVRC_Open(UINT8 *p_handle, tAVRC_CONN_CB *p_ccb, BD_ADDR_PTR peer_addr) #endif } AVRC_TRACE_DEBUG("AVRC_Open role: %d, control:%d status:%d, handle:%d", cc.role, cc.control, - status, *p_handle); + status, *p_handle); return status; } @@ -991,17 +928,18 @@ UINT16 AVRC_MsgReq (UINT8 handle, UINT8 label, UINT8 ctype, BT_HDR *p_pkt) UINT16 len; BT_HDR *p_pkt_new; - if (!p_pkt) + if (!p_pkt) { return AVRC_BAD_PARAM; + } AVRC_TRACE_DEBUG("%s handle = %u label = %u ctype = %u len = %d", __func__, handle, label, ctype, p_pkt->len); - if (ctype >= AVRC_RSP_NOT_IMPL) + if (ctype >= AVRC_RSP_NOT_IMPL) { cr = AVCT_RSP; + } - if (p_pkt->event == AVRC_OP_VENDOR) - { + if (p_pkt->event == AVRC_OP_VENDOR) { /* add AVRCP Vendor Dependent headers */ p_start = ((UINT8 *)(p_pkt + 1) + p_pkt->offset); p_pkt->offset -= AVRC_VENDOR_HDR_SIZE; @@ -1011,9 +949,7 @@ UINT16 AVRC_MsgReq (UINT8 handle, UINT8 label, UINT8 ctype, BT_HDR *p_pkt) *p_data++ = (AVRC_SUB_PANEL << AVRC_SUBTYPE_SHIFT); *p_data++ = AVRC_OP_VENDOR; AVRC_CO_ID_TO_BE_STREAM(p_data, AVRC_CO_METADATA); - } - else if (p_pkt->event == AVRC_OP_PASS_THRU) - { + } else if (p_pkt->event == AVRC_OP_PASS_THRU) { /* add AVRCP Pass Through headers */ p_start = ((UINT8 *)(p_pkt + 1) + p_pkt->offset); p_pkt->offset -= AVRC_PASS_THRU_SIZE; @@ -1029,26 +965,23 @@ UINT16 AVRC_MsgReq (UINT8 handle, UINT8 label, UINT8 ctype, BT_HDR *p_pkt) /* abandon previous fragments */ p_fcb = &avrc_cb.fcb[handle]; - if (p_fcb->frag_enabled) + if (p_fcb->frag_enabled) { p_fcb->frag_enabled = FALSE; + } - if (p_fcb->p_fmsg) - { + if (p_fcb->p_fmsg) { GKI_freebuf(p_fcb->p_fmsg); p_fcb->p_fmsg = NULL; } /* AVRCP spec has not defined any control channel commands that needs fragmentation at this level * check for fragmentation only on the response */ - if ((cr == AVCT_RSP) && (chk_frag == TRUE)) - { - if (p_pkt->len > AVRC_MAX_CTRL_DATA_LEN) - { + if ((cr == AVCT_RSP) && (chk_frag == TRUE)) { + if (p_pkt->len > AVRC_MAX_CTRL_DATA_LEN) { int offset_len = MAX(AVCT_MSG_OFFSET, p_pkt->offset); p_pkt_new = (BT_HDR *)GKI_getbuf((UINT16)(AVRC_PACKET_LEN + offset_len - + BT_HDR_SIZE)); - if (p_pkt_new && (p_start != NULL)) - { + + BT_HDR_SIZE)); + if (p_pkt_new && (p_start != NULL)) { p_fcb->frag_enabled = TRUE; p_fcb->p_fmsg = p_pkt; p_fcb->frag_pdu = *p_start; @@ -1058,7 +991,7 @@ UINT16 AVRC_MsgReq (UINT8 handle, UINT8 label, UINT8 ctype, BT_HDR *p_pkt) p_pkt->offset = p_pkt_new->offset; p_pkt->layer_specific = p_pkt_new->layer_specific; p_pkt->event = p_pkt_new->event; - p_data = (UINT8 *)(p_pkt+1) + p_pkt->offset; + p_data = (UINT8 *)(p_pkt + 1) + p_pkt->offset; p_start -= AVRC_VENDOR_HDR_SIZE; memcpy (p_data, p_start, AVRC_MAX_CTRL_DATA_LEN); /* use AVRC start packet type */ @@ -1073,9 +1006,7 @@ UINT16 AVRC_MsgReq (UINT8 handle, UINT8 label, UINT8 ctype, BT_HDR *p_pkt) avrc_prep_end_frag (handle); AVRC_TRACE_DEBUG ("%s p_pkt len:%d/%d, next len:%d", __func__, p_pkt->len, len, p_fcb->p_fmsg->len ); - } - else - { + } else { AVRC_TRACE_ERROR ("AVRC_MsgReq no buffers for fragmentation" ); GKI_freebuf(p_pkt); return AVRC_NO_RESOURCES; @@ -1117,12 +1048,12 @@ UINT16 AVRC_PassCmd(UINT8 handle, UINT8 label, tAVRC_MSG_PASS *p_msg) { BT_HDR *p_buf; assert(p_msg != NULL); - if (p_msg) - { + if (p_msg) { p_msg->hdr.ctype = AVRC_CMD_CTRL; p_buf = avrc_pass_msg(p_msg); - if (p_buf) + if (p_buf) { return AVCT_MsgReq( handle, label, AVCT_CMD, p_buf); + } } return AVRC_NO_RESOURCES; } @@ -1156,11 +1087,11 @@ UINT16 AVRC_PassRsp(UINT8 handle, UINT8 label, tAVRC_MSG_PASS *p_msg) { BT_HDR *p_buf; assert(p_msg != NULL); - if (p_msg) - { + if (p_msg) { p_buf = avrc_pass_msg(p_msg); - if (p_buf) + if (p_buf) { return AVCT_MsgReq( handle, label, AVCT_RSP, p_buf); + } } return AVRC_NO_RESOURCES; } diff --git a/components/bt/bluedroid/btc/profile/std/avrc/avrc_bld_ct.c b/components/bt/bluedroid/btc/profile/std/avrc/avrc_bld_ct.c old mode 100755 new mode 100644 index 7e23967684..8110a3eb57 --- a/components/bt/bluedroid/btc/profile/std/avrc/avrc_bld_ct.c +++ b/components/bt/bluedroid/btc/profile/std/avrc/avrc_bld_ct.c @@ -96,7 +96,7 @@ static tAVRC_STS avrc_bld_set_abs_volume_cmd (tAVRC_SET_VOLUME_CMD *p_cmd, BT_HD ** Otherwise, the error code. ** *******************************************************************************/ -static tAVRC_STS avrc_bld_vol_change_notfn(BT_HDR * p_pkt) +static tAVRC_STS avrc_bld_vol_change_notfn(BT_HDR *p_pkt) { UINT8 *p_data, *p_start; @@ -107,7 +107,7 @@ static tAVRC_STS avrc_bld_vol_change_notfn(BT_HDR * p_pkt) p_data = p_start + 2; /* pdu + rsvd */ /* add fixed length 5 -*/ UINT16_TO_BE_STREAM(p_data, 5); - UINT8_TO_BE_STREAM(p_data,AVRC_EVT_VOLUME_CHANGE); + UINT8_TO_BE_STREAM(p_data, AVRC_EVT_VOLUME_CHANGE); UINT32_TO_BE_STREAM(p_data, 0); p_pkt->len = (p_data - p_start); return AVRC_STS_NO_ERROR; @@ -126,15 +126,14 @@ static tAVRC_STS avrc_bld_vol_change_notfn(BT_HDR * p_pkt) *******************************************************************************/ static BT_HDR *avrc_bld_init_cmd_buffer(tAVRC_COMMAND *p_cmd) { - UINT16 offset = 0, chnl = AVCT_DATA_CTRL, len=AVRC_META_CMD_POOL_SIZE; - BT_HDR *p_pkt=NULL; + UINT16 offset = 0, chnl = AVCT_DATA_CTRL, len = AVRC_META_CMD_POOL_SIZE; + BT_HDR *p_pkt = NULL; UINT8 opcode; opcode = avrc_opcode_from_pdu(p_cmd->pdu); AVRC_TRACE_API("avrc_bld_init_cmd_buffer: pdu=%x, opcode=%x", p_cmd->pdu, opcode); - switch (opcode) - { + switch (opcode) { case AVRC_OP_PASS_THRU: offset = AVRC_MSG_PASS_THRU_OFFSET; break; @@ -146,8 +145,7 @@ static BT_HDR *avrc_bld_init_cmd_buffer(tAVRC_COMMAND *p_cmd) /* allocate and initialize the buffer */ p_pkt = (BT_HDR *)GKI_getbuf(len); - if (p_pkt) - { + if (p_pkt) { UINT8 *p_data, *p_start; p_pkt->layer_specific = chnl; @@ -157,11 +155,11 @@ static BT_HDR *avrc_bld_init_cmd_buffer(tAVRC_COMMAND *p_cmd) p_start = p_data; /* pass thru - group navigation - has a two byte op_id, so dont do it here */ - if (opcode != AVRC_OP_PASS_THRU) + if (opcode != AVRC_OP_PASS_THRU) { *p_data++ = p_cmd->pdu; + } - switch (opcode) - { + switch (opcode) { case AVRC_OP_VENDOR: /* reserved 0, packet_type 0 */ UINT8_TO_BE_STREAM(p_data, 0); @@ -195,17 +193,14 @@ tAVRC_STS AVRC_BldCommand( tAVRC_COMMAND *p_cmd, BT_HDR **pp_pkt) BOOLEAN alloc = FALSE; AVRC_TRACE_API("AVRC_BldCommand: pdu=%x status=%x", p_cmd->cmd.pdu, p_cmd->cmd.status); - if (!p_cmd || !pp_pkt) - { + if (!p_cmd || !pp_pkt) { AVRC_TRACE_API("AVRC_BldCommand. Invalid parameters passed. p_cmd=%p, pp_pkt=%p", - p_cmd, pp_pkt); + p_cmd, pp_pkt); return AVRC_STS_BAD_PARAM; } - if (*pp_pkt == NULL) - { - if ((*pp_pkt = avrc_bld_init_cmd_buffer(p_cmd)) == NULL) - { + if (*pp_pkt == NULL) { + if ((*pp_pkt = avrc_bld_init_cmd_buffer(p_cmd)) == NULL) { AVRC_TRACE_API("AVRC_BldCommand: Failed to initialize command buffer"); return AVRC_STS_INTERNAL_ERR; } @@ -214,8 +209,7 @@ tAVRC_STS AVRC_BldCommand( tAVRC_COMMAND *p_cmd, BT_HDR **pp_pkt) status = AVRC_STS_NO_ERROR; p_pkt = *pp_pkt; - switch (p_cmd->pdu) - { + switch (p_cmd->pdu) { case AVRC_PDU_REQUEST_CONTINUATION_RSP: /* 0x40 */ status = avrc_bld_next_cmd(&p_cmd->continu, p_pkt); break; @@ -231,15 +225,15 @@ tAVRC_STS AVRC_BldCommand( tAVRC_COMMAND *p_cmd, BT_HDR **pp_pkt) case AVRC_PDU_REGISTER_NOTIFICATION: /* 0x31 */ #if (AVRC_ADV_CTRL_INCLUDED == TRUE) - if(AVRC_EVT_VOLUME_CHANGE==p_cmd->reg_notif.event_id) - status=avrc_bld_vol_change_notfn(p_pkt); + if (AVRC_EVT_VOLUME_CHANGE == p_cmd->reg_notif.event_id) { + status = avrc_bld_vol_change_notfn(p_pkt); + } #endif break; } - if (alloc && (status != AVRC_STS_NO_ERROR) ) - { + if (alloc && (status != AVRC_STS_NO_ERROR) ) { GKI_freebuf(p_pkt); *pp_pkt = NULL; } diff --git a/components/bt/bluedroid/btc/profile/std/avrc/avrc_bld_tg.c b/components/bt/bluedroid/btc/profile/std/avrc/avrc_bld_tg.c old mode 100755 new mode 100644 index 32e513f2a1..1f0a033f87 --- a/components/bt/bluedroid/btc/profile/std/avrc/avrc_bld_tg.c +++ b/components/bt/bluedroid/btc/profile/std/avrc/avrc_bld_tg.c @@ -46,8 +46,7 @@ static tAVRC_STS avrc_bld_get_capability_rsp (tAVRC_GET_CAPS_RSP *p_rsp, BT_HDR UINT8 *p_event_id; tAVRC_STS status = AVRC_STS_NO_ERROR; - if (!(AVRC_IS_VALID_CAP_ID(p_rsp->capability_id))) - { + if (!(AVRC_IS_VALID_CAP_ID(p_rsp->capability_id))) { AVRC_TRACE_ERROR("avrc_bld_get_capability_rsp bad parameter. p_rsp: %x", p_rsp); status = AVRC_STS_BAD_PARAM; return status; @@ -62,35 +61,26 @@ static tAVRC_STS avrc_bld_get_capability_rsp (tAVRC_GET_CAPS_RSP *p_rsp, BT_HDR UINT8_TO_BE_STREAM(p_data, p_rsp->capability_id); p_count = p_data; - if (len == 0) - { + if (len == 0) { *p_count = p_rsp->count; p_data++; len = 2; /* move past the capability_id and count */ - } - else - { + } else { p_data = p_start + p_pkt->len; *p_count += p_rsp->count; } - if (p_rsp->capability_id == AVRC_CAP_COMPANY_ID) - { + if (p_rsp->capability_id == AVRC_CAP_COMPANY_ID) { p_company_id = p_rsp->param.company_id; - for (xx=0; xx< p_rsp->count; xx++) - { + for (xx = 0; xx < p_rsp->count; xx++) { UINT24_TO_BE_STREAM(p_data, p_company_id[xx]); } len += p_rsp->count * 3; - } - else - { + } else { p_event_id = p_rsp->param.event_id; *p_count = 0; - for (xx=0; xx< p_rsp->count; xx++) - { - if (AVRC_IS_VALID_EVENT_ID(p_event_id[xx])) - { + for (xx = 0; xx < p_rsp->count; xx++) { + if (AVRC_IS_VALID_EVENT_ID(p_event_id[xx])) { (*p_count)++; UINT8_TO_BE_STREAM(p_data, p_event_id[xx]); } @@ -128,21 +118,16 @@ static tAVRC_STS avrc_bld_list_app_settings_attr_rsp (tAVRC_LIST_APP_ATTR_RSP *p BE_STREAM_TO_UINT16(len, p_data); p_num = p_data; - if (len == 0) - { + if (len == 0) { /* first time initialize the attribute count */ *p_num = 0; p_data++; - } - else - { + } else { p_data = p_start + p_pkt->len; } - for (xx=0; xxnum_attr; xx++) - { - if(AVRC_IsValidPlayerAttr(p_rsp->attrs[xx])) - { + for (xx = 0; xx < p_rsp->num_attr; xx++) { + if (AVRC_IsValidPlayerAttr(p_rsp->attrs[xx])) { (*p_num)++; UINT8_TO_BE_STREAM(p_data, p_rsp->attrs[xx]); } @@ -167,7 +152,7 @@ static tAVRC_STS avrc_bld_list_app_settings_attr_rsp (tAVRC_LIST_APP_ATTR_RSP *p ** *******************************************************************************/ static tAVRC_STS avrc_bld_list_app_settings_values_rsp (tAVRC_LIST_APP_VALUES_RSP *p_rsp, - BT_HDR *p_pkt) + BT_HDR *p_pkt) { UINT8 *p_data, *p_start, *p_len, *p_num; UINT8 xx; @@ -182,20 +167,16 @@ static tAVRC_STS avrc_bld_list_app_settings_values_rsp (tAVRC_LIST_APP_VALUES_RS BE_STREAM_TO_UINT16(len, p_data); p_num = p_data; /* first time initialize the attribute count */ - if (len == 0) - { + if (len == 0) { *p_num = p_rsp->num_val; p_data++; - } - else - { + } else { p_data = p_start + p_pkt->len; *p_num += p_rsp->num_val; } - for (xx=0; xxnum_val; xx++) - { + for (xx = 0; xx < p_rsp->num_val; xx++) { UINT8_TO_BE_STREAM(p_data, p_rsp->vals[xx]); } @@ -217,14 +198,13 @@ static tAVRC_STS avrc_bld_list_app_settings_values_rsp (tAVRC_LIST_APP_VALUES_RS ** *******************************************************************************/ static tAVRC_STS avrc_bld_get_cur_app_setting_value_rsp (tAVRC_GET_CUR_APP_VALUE_RSP *p_rsp, - BT_HDR *p_pkt) + BT_HDR *p_pkt) { UINT8 *p_data, *p_start, *p_len, *p_count; UINT16 len; UINT8 xx; - if (!p_rsp->p_vals) - { + if (!p_rsp->p_vals) { AVRC_TRACE_ERROR("avrc_bld_get_cur_app_setting_value_rsp NULL parameter"); return AVRC_STS_BAD_PARAM; } @@ -236,21 +216,16 @@ static tAVRC_STS avrc_bld_get_cur_app_setting_value_rsp (tAVRC_GET_CUR_APP_VALUE BE_STREAM_TO_UINT16(len, p_data); p_count = p_data; - if (len == 0) - { + if (len == 0) { /* first time initialize the attribute count */ *p_count = 0; p_data++; - } - else - { + } else { p_data = p_start + p_pkt->len; } - for (xx=0; xxnum_val; xx++) - { - if (avrc_is_valid_player_attrib_value(p_rsp->p_vals[xx].attr_id, p_rsp->p_vals[xx].attr_val)) - { + for (xx = 0; xx < p_rsp->num_val; xx++) { + if (avrc_is_valid_player_attrib_value(p_rsp->p_vals[xx].attr_id, p_rsp->p_vals[xx].attr_val)) { (*p_count)++; UINT8_TO_BE_STREAM(p_data, p_rsp->p_vals[xx].attr_id); UINT8_TO_BE_STREAM(p_data, p_rsp->p_vals[xx].attr_val); @@ -303,8 +278,7 @@ static tAVRC_STS avrc_bld_app_setting_text_rsp (tAVRC_GET_APP_ATTR_TXT_RSP *p_rs tAVRC_STS sts = AVRC_STS_NO_ERROR; UINT8 num_added = 0; - if (!p_rsp->p_attrs) - { + if (!p_rsp->p_attrs) { AVRC_TRACE_ERROR("avrc_bld_app_setting_text_rsp NULL parameter"); return AVRC_STS_BAD_PARAM; } @@ -316,28 +290,22 @@ static tAVRC_STS avrc_bld_app_setting_text_rsp (tAVRC_GET_APP_ATTR_TXT_RSP *p_rs BE_STREAM_TO_UINT16(len, p_data); p_count = p_data; - if (len == 0) - { + if (len == 0) { *p_count = 0; p_data++; - } - else - { + } else { p_data = p_start + p_pkt->len; } - for (xx=0; xxnum_attr; xx++) - { - if (len_left < (p_rsp->p_attrs[xx].str_len + 4)) - { + for (xx = 0; xx < p_rsp->num_attr; xx++) { + if (len_left < (p_rsp->p_attrs[xx].str_len + 4)) { AVRC_TRACE_ERROR("avrc_bld_app_setting_text_rsp out of room (str_len:%d, left:%d)", - xx, p_rsp->p_attrs[xx].str_len, len_left); + xx, p_rsp->p_attrs[xx].str_len, len_left); p_rsp->num_attr = num_added; sts = AVRC_STS_INTERNAL_ERR; break; } - if ( !p_rsp->p_attrs[xx].str_len || !p_rsp->p_attrs[xx].p_str ) - { + if ( !p_rsp->p_attrs[xx].str_len || !p_rsp->p_attrs[xx].p_str ) { AVRC_TRACE_ERROR("avrc_bld_app_setting_text_rsp NULL attr text[%d]", xx); continue; } @@ -367,7 +335,7 @@ static tAVRC_STS avrc_bld_app_setting_text_rsp (tAVRC_GET_APP_ATTR_TXT_RSP *p_rs ** *******************************************************************************/ static tAVRC_STS avrc_bld_get_app_setting_attr_text_rsp (tAVRC_GET_APP_ATTR_TXT_RSP *p_rsp, - BT_HDR *p_pkt) + BT_HDR *p_pkt) { AVRC_TRACE_API("avrc_bld_get_app_setting_attr_text_rsp"); return avrc_bld_app_setting_text_rsp(p_rsp, p_pkt); @@ -385,7 +353,7 @@ static tAVRC_STS avrc_bld_get_app_setting_attr_text_rsp (tAVRC_GET_APP_ATTR_TXT_ ** *******************************************************************************/ static tAVRC_STS avrc_bld_get_app_setting_value_text_rsp (tAVRC_GET_APP_ATTR_TXT_RSP *p_rsp, - BT_HDR *p_pkt) + BT_HDR *p_pkt) { AVRC_TRACE_API("avrc_bld_get_app_setting_value_text_rsp"); return avrc_bld_app_setting_text_rsp(p_rsp, p_pkt); @@ -451,8 +419,7 @@ static tAVRC_STS avrc_bld_get_elem_attrs_rsp (tAVRC_GET_ELEM_ATTRS_RSP *p_rsp, B UINT8 xx; AVRC_TRACE_API("avrc_bld_get_elem_attrs_rsp"); - if (!p_rsp->p_attrs) - { + if (!p_rsp->p_attrs) { AVRC_TRACE_ERROR("avrc_bld_get_elem_attrs_rsp NULL parameter"); return AVRC_STS_BAD_PARAM; } @@ -464,25 +431,19 @@ static tAVRC_STS avrc_bld_get_elem_attrs_rsp (tAVRC_GET_ELEM_ATTRS_RSP *p_rsp, B BE_STREAM_TO_UINT16(len, p_data); p_count = p_data; - if (len == 0) - { + if (len == 0) { *p_count = 0; p_data++; - } - else - { + } else { p_data = p_start + p_pkt->len; } - for (xx=0; xxnum_attr; xx++) - { - if (!AVRC_IS_VALID_MEDIA_ATTRIBUTE(p_rsp->p_attrs[xx].attr_id)) - { + for (xx = 0; xx < p_rsp->num_attr; xx++) { + if (!AVRC_IS_VALID_MEDIA_ATTRIBUTE(p_rsp->p_attrs[xx].attr_id)) { AVRC_TRACE_ERROR("avrc_bld_get_elem_attrs_rsp invalid attr id[%d]: %d", xx, p_rsp->p_attrs[xx].attr_id); continue; } - if ( !p_rsp->p_attrs[xx].name.p_str ) - { + if ( !p_rsp->p_attrs[xx].name.p_str ) { p_rsp->p_attrs[xx].name.str_len = 0; } UINT32_TO_BE_STREAM(p_data, p_rsp->p_attrs[xx].attr_id); @@ -551,18 +512,14 @@ static tAVRC_STS avrc_bld_notify_rsp (tAVRC_REG_NOTIF_RSP *p_rsp, BT_HDR *p_pkt) p_data += 2; UINT8_TO_BE_STREAM(p_data, p_rsp->event_id); - switch (p_rsp->event_id) - { + switch (p_rsp->event_id) { case AVRC_EVT_PLAY_STATUS_CHANGE: /* 0x01 */ /* p_rsp->param.play_status >= AVRC_PLAYSTATE_STOPPED is always TRUE */ if ((p_rsp->param.play_status <= AVRC_PLAYSTATE_REV_SEEK) || - (p_rsp->param.play_status == AVRC_PLAYSTATE_ERROR) ) - { + (p_rsp->param.play_status == AVRC_PLAYSTATE_ERROR) ) { UINT8_TO_BE_STREAM(p_data, p_rsp->param.play_status); len = 2; - } - else - { + } else { AVRC_TRACE_ERROR("bad play state"); status = AVRC_STS_BAD_PARAM; } @@ -584,58 +541,48 @@ static tAVRC_STS avrc_bld_notify_rsp (tAVRC_REG_NOTIF_RSP *p_rsp, BT_HDR *p_pkt) break; case AVRC_EVT_BATTERY_STATUS_CHANGE: /* 0x06 */ - if (AVRC_IS_VALID_BATTERY_STATUS(p_rsp->param.battery_status)) - { + if (AVRC_IS_VALID_BATTERY_STATUS(p_rsp->param.battery_status)) { UINT8_TO_BE_STREAM(p_data, p_rsp->param.battery_status); len = 2; - } - else - { + } else { AVRC_TRACE_ERROR("bad battery status"); status = AVRC_STS_BAD_PARAM; } break; case AVRC_EVT_SYSTEM_STATUS_CHANGE: /* 0x07 */ - if (AVRC_IS_VALID_SYSTEM_STATUS(p_rsp->param.system_status)) - { + if (AVRC_IS_VALID_SYSTEM_STATUS(p_rsp->param.system_status)) { UINT8_TO_BE_STREAM(p_data, p_rsp->param.system_status); len = 2; - } - else - { + } else { AVRC_TRACE_ERROR("bad system status"); status = AVRC_STS_BAD_PARAM; } break; case AVRC_EVT_APP_SETTING_CHANGE: /* 0x08 */ - if (p_rsp->param.player_setting.num_attr > AVRC_MAX_APP_SETTINGS) + if (p_rsp->param.player_setting.num_attr > AVRC_MAX_APP_SETTINGS) { p_rsp->param.player_setting.num_attr = AVRC_MAX_APP_SETTINGS; + } - if (p_rsp->param.player_setting.num_attr > 0) - { + if (p_rsp->param.player_setting.num_attr > 0) { UINT8_TO_BE_STREAM(p_data, p_rsp->param.player_setting.num_attr); len = 2; - for (xx=0; xxparam.player_setting.num_attr; xx++) - { + for (xx = 0; xx < p_rsp->param.player_setting.num_attr; xx++) { if (avrc_is_valid_player_attrib_value(p_rsp->param.player_setting.attr_id[xx], - p_rsp->param.player_setting.attr_value[xx])) - { + p_rsp->param.player_setting.attr_value[xx])) { UINT8_TO_BE_STREAM(p_data, p_rsp->param.player_setting.attr_id[xx]); UINT8_TO_BE_STREAM(p_data, p_rsp->param.player_setting.attr_value[xx]); - } - else - { + } else { AVRC_TRACE_ERROR("bad player app seeting attribute or value"); status = AVRC_STS_BAD_PARAM; break; } len += 2; } - } - else + } else { status = AVRC_STS_BAD_PARAM; + } break; default: @@ -685,14 +632,13 @@ tAVRC_STS avrc_bld_group_navigation_rsp (UINT16 navi_id, BT_HDR *p_pkt) { UINT8 *p_data; - if (!AVRC_IS_VALID_GROUP(navi_id)) - { + if (!AVRC_IS_VALID_GROUP(navi_id)) { AVRC_TRACE_ERROR("avrc_bld_group_navigation_rsp bad navigation op id: %d", navi_id); return AVRC_STS_BAD_PARAM; } AVRC_TRACE_API("avrc_bld_group_navigation_rsp"); - p_data = (UINT8 *)(p_pkt+1) + p_pkt->offset; + p_data = (UINT8 *)(p_pkt + 1) + p_pkt->offset; UINT16_TO_BE_STREAM(p_data, navi_id); p_pkt->len = 2; return AVRC_STS_NO_ERROR; @@ -737,36 +683,34 @@ static tAVRC_STS avrc_bld_rejected_rsp( tAVRC_RSP *p_rsp, BT_HDR *p_pkt ) *******************************************************************************/ static BT_HDR *avrc_bld_init_rsp_buffer(tAVRC_RESPONSE *p_rsp) { - UINT16 offset = AVRC_MSG_PASS_THRU_OFFSET, chnl = AVCT_DATA_CTRL, len=AVRC_META_CMD_POOL_SIZE; - BT_HDR *p_pkt=NULL; + UINT16 offset = AVRC_MSG_PASS_THRU_OFFSET, chnl = AVCT_DATA_CTRL, len = AVRC_META_CMD_POOL_SIZE; + BT_HDR *p_pkt = NULL; UINT8 opcode = avrc_opcode_from_pdu(p_rsp->pdu); AVRC_TRACE_API("avrc_bld_init_rsp_buffer: pdu=%x, opcode=%x/%x", p_rsp->pdu, opcode, - p_rsp->rsp.opcode); + p_rsp->rsp.opcode); if (opcode != p_rsp->rsp.opcode && p_rsp->rsp.status != AVRC_STS_NO_ERROR && - avrc_is_valid_opcode(p_rsp->rsp.opcode)) - { + avrc_is_valid_opcode(p_rsp->rsp.opcode)) { opcode = p_rsp->rsp.opcode; AVRC_TRACE_API("opcode=%x", opcode); } - switch (opcode) - { + switch (opcode) { case AVRC_OP_PASS_THRU: offset = AVRC_MSG_PASS_THRU_OFFSET; break; case AVRC_OP_VENDOR: offset = AVRC_MSG_VENDOR_OFFSET; - if (p_rsp->pdu == AVRC_PDU_GET_ELEMENT_ATTR) + if (p_rsp->pdu == AVRC_PDU_GET_ELEMENT_ATTR) { len = AVRC_BROWSE_POOL_SIZE; + } break; } /* allocate and initialize the buffer */ p_pkt = (BT_HDR *)GKI_getbuf(len); - if (p_pkt) - { + if (p_pkt) { UINT8 *p_data, *p_start; p_pkt->layer_specific = chnl; @@ -776,11 +720,11 @@ static BT_HDR *avrc_bld_init_rsp_buffer(tAVRC_RESPONSE *p_rsp) p_start = p_data; /* pass thru - group navigation - has a two byte op_id, so dont do it here */ - if (opcode != AVRC_OP_PASS_THRU) + if (opcode != AVRC_OP_PASS_THRU) { *p_data++ = p_rsp->pdu; + } - switch (opcode) - { + switch (opcode) { case AVRC_OP_VENDOR: /* reserved 0, packet_type 0 */ UINT8_TO_BE_STREAM(p_data, 0); @@ -814,17 +758,14 @@ tAVRC_STS AVRC_BldResponse( UINT8 handle, tAVRC_RESPONSE *p_rsp, BT_HDR **pp_pkt BOOLEAN alloc = FALSE; UNUSED(handle); - if (!p_rsp || !pp_pkt) - { + if (!p_rsp || !pp_pkt) { AVRC_TRACE_API("AVRC_BldResponse. Invalid parameters passed. p_rsp=%p, pp_pkt=%p", - p_rsp, pp_pkt); + p_rsp, pp_pkt); return AVRC_STS_BAD_PARAM; } - if (*pp_pkt == NULL) - { - if ((*pp_pkt = avrc_bld_init_rsp_buffer(p_rsp)) == NULL) - { + if (*pp_pkt == NULL) { + if ((*pp_pkt = avrc_bld_init_rsp_buffer(p_rsp)) == NULL) { AVRC_TRACE_API("AVRC_BldResponse: Failed to initialize response buffer"); return AVRC_STS_INTERNAL_ERR; } @@ -834,13 +775,11 @@ tAVRC_STS AVRC_BldResponse( UINT8 handle, tAVRC_RESPONSE *p_rsp, BT_HDR **pp_pkt p_pkt = *pp_pkt; AVRC_TRACE_API("AVRC_BldResponse: pdu=%x status=%x", p_rsp->rsp.pdu, p_rsp->rsp.status); - if (p_rsp->rsp.status != AVRC_STS_NO_ERROR) - { - return( avrc_bld_rejected_rsp(&p_rsp->rsp, p_pkt) ); + if (p_rsp->rsp.status != AVRC_STS_NO_ERROR) { + return ( avrc_bld_rejected_rsp(&p_rsp->rsp, p_pkt) ); } - switch (p_rsp->pdu) - { + switch (p_rsp->pdu) { case AVRC_PDU_NEXT_GROUP: case AVRC_PDU_PREV_GROUP: status = avrc_bld_group_navigation_rsp(p_rsp->pdu, p_pkt); @@ -903,8 +842,7 @@ tAVRC_STS AVRC_BldResponse( UINT8 handle, tAVRC_RESPONSE *p_rsp, BT_HDR **pp_pkt break; } - if (alloc && (status != AVRC_STS_NO_ERROR) ) - { + if (alloc && (status != AVRC_STS_NO_ERROR) ) { GKI_freebuf(p_pkt); *pp_pkt = NULL; } diff --git a/components/bt/bluedroid/btc/profile/std/avrc/avrc_opt.c b/components/bt/bluedroid/btc/profile/std/avrc/avrc_opt.c old mode 100755 new mode 100644 index de1a00cef8..e628032e64 --- a/components/bt/bluedroid/btc/profile/std/avrc/avrc_opt.c +++ b/components/bt/bluedroid/btc/profile/std/avrc/avrc_opt.c @@ -43,7 +43,7 @@ ** NULL if p_msg is NULL. ** ******************************************************************************/ -static BT_HDR * avrc_vendor_msg(tAVRC_MSG_VENDOR *p_msg) +static BT_HDR *avrc_vendor_msg(tAVRC_MSG_VENDOR *p_msg) { BT_HDR *p_cmd; UINT8 *p_data; @@ -51,10 +51,10 @@ static BT_HDR * avrc_vendor_msg(tAVRC_MSG_VENDOR *p_msg) assert(p_msg != NULL); #if AVRC_METADATA_INCLUDED == TRUE - assert(AVRC_META_CMD_POOL_SIZE > (AVRC_MIN_CMD_LEN+p_msg->vendor_len)); + assert(AVRC_META_CMD_POOL_SIZE > (AVRC_MIN_CMD_LEN + p_msg->vendor_len)); if ((p_cmd = (BT_HDR *) GKI_getpoolbuf(AVRC_META_CMD_POOL_ID)) != NULL) #else - assert(AVRC_CMD_POOL_SIZE > (AVRC_MIN_CMD_LEN+p_msg->vendor_len)); + assert(AVRC_CMD_POOL_SIZE > (AVRC_MIN_CMD_LEN + p_msg->vendor_len)); if ((p_cmd = (BT_HDR *) GKI_getpoolbuf(AVRC_CMD_POOL_ID)) != NULL) #endif { @@ -64,8 +64,7 @@ static BT_HDR * avrc_vendor_msg(tAVRC_MSG_VENDOR *p_msg) *p_data++ = (p_msg->hdr.subunit_type << AVRC_SUBTYPE_SHIFT) | p_msg->hdr.subunit_id; *p_data++ = AVRC_OP_VENDOR; AVRC_CO_ID_TO_BE_STREAM(p_data, p_msg->company_id); - if(p_msg->vendor_len && p_msg->p_vendor_data) - { + if (p_msg->vendor_len && p_msg->p_vendor_data) { memcpy(p_data, p_msg->p_vendor_data, p_msg->vendor_len); } p_cmd->len = (UINT16) (p_data + p_msg->vendor_len - (UINT8 *)(p_cmd + 1) - p_cmd->offset); @@ -100,8 +99,7 @@ UINT16 AVRC_UnitCmd(UINT8 handle, UINT8 label) BT_HDR *p_cmd; UINT8 *p_data; - if ((p_cmd = (BT_HDR *) GKI_getpoolbuf(AVRC_CMD_POOL_ID)) != NULL) - { + if ((p_cmd = (BT_HDR *) GKI_getpoolbuf(AVRC_CMD_POOL_ID)) != NULL) { p_cmd->offset = AVCT_MSG_OFFSET; p_data = (UINT8 *)(p_cmd + 1) + p_cmd->offset; *p_data++ = AVRC_CMD_STATUS; @@ -145,15 +143,14 @@ UINT16 AVRC_SubCmd(UINT8 handle, UINT8 label, UINT8 page) BT_HDR *p_cmd; UINT8 *p_data; - if ((p_cmd = (BT_HDR *) GKI_getpoolbuf(AVRC_CMD_POOL_ID)) != NULL) - { + if ((p_cmd = (BT_HDR *) GKI_getpoolbuf(AVRC_CMD_POOL_ID)) != NULL) { p_cmd->offset = AVCT_MSG_OFFSET; p_data = (UINT8 *)(p_cmd + 1) + p_cmd->offset; *p_data++ = AVRC_CMD_STATUS; /* unit & id ignore */ *p_data++ = (AVRC_SUB_UNIT << AVRC_SUBTYPE_SHIFT) | AVRC_SUBID_IGNORE; *p_data++ = AVRC_OP_SUB_INFO; - *p_data++ = ((page&AVRC_SUB_PAGE_MASK) << AVRC_SUB_PAGE_SHIFT) | AVRC_SUB_EXT_CODE; + *p_data++ = ((page & AVRC_SUB_PAGE_MASK) << AVRC_SUB_PAGE_SHIFT) | AVRC_SUB_EXT_CODE; memset(p_data, AVRC_CMD_OPRND_PAD, AVRC_SUB_OPRND_BYTES); p_cmd->len = p_data + AVRC_SUB_OPRND_BYTES - (UINT8 *)(p_cmd + 1) - p_cmd->offset; p_cmd->layer_specific = AVCT_DATA_CTRL; @@ -187,10 +184,11 @@ UINT16 AVRC_SubCmd(UINT8 handle, UINT8 label, UINT8 page) UINT16 AVRC_VendorCmd(UINT8 handle, UINT8 label, tAVRC_MSG_VENDOR *p_msg) { BT_HDR *p_buf = avrc_vendor_msg(p_msg); - if (p_buf) + if (p_buf) { return AVCT_MsgReq( handle, label, AVCT_CMD, p_buf); - else + } else { return AVCT_NO_RESOURCES; + } } @@ -222,10 +220,11 @@ UINT16 AVRC_VendorCmd(UINT8 handle, UINT8 label, tAVRC_MSG_VENDOR *p_msg) UINT16 AVRC_VendorRsp(UINT8 handle, UINT8 label, tAVRC_MSG_VENDOR *p_msg) { BT_HDR *p_buf = avrc_vendor_msg(p_msg); - if (p_buf) + if (p_buf) { return AVCT_MsgReq( handle, label, AVCT_RSP, p_buf); - else + } else { return AVCT_NO_RESOURCES; + } } diff --git a/components/bt/bluedroid/btc/profile/std/avrc/avrc_pars_ct.c b/components/bt/bluedroid/btc/profile/std/avrc/avrc_pars_ct.c old mode 100755 new mode 100644 index 3db5a8dc98..2228bbfe6a --- a/components/bt/bluedroid/btc/profile/std/avrc/avrc_pars_ct.c +++ b/components/bt/bluedroid/btc/profile/std/avrc/avrc_pars_ct.c @@ -44,36 +44,35 @@ static tAVRC_STS avrc_pars_vendor_rsp(tAVRC_MSG_VENDOR *p_msg, tAVRC_RESPONSE *p tAVRC_STS status = AVRC_STS_NO_ERROR; UINT8 *p; UINT16 len; - UINT8 eventid=0; + UINT8 eventid = 0; /* Check the vendor data */ - if (p_msg->vendor_len == 0) + if (p_msg->vendor_len == 0) { return AVRC_STS_NO_ERROR; - if (p_msg->p_vendor_data == NULL) + } + if (p_msg->p_vendor_data == NULL) { return AVRC_STS_INTERNAL_ERR; + } p = p_msg->p_vendor_data; BE_STREAM_TO_UINT8 (p_result->pdu, p); p++; /* skip the reserved/packe_type byte */ BE_STREAM_TO_UINT16 (len, p); AVRC_TRACE_DEBUG("avrc_pars_vendor_rsp() ctype:0x%x pdu:0x%x, len:%d/0x%x", p_msg->hdr.ctype, p_result->pdu, len, len); - if (p_msg->hdr.ctype == AVRC_RSP_REJ) - { + if (p_msg->hdr.ctype == AVRC_RSP_REJ) { p_result->rsp.status = *p; return p_result->rsp.status; } - switch (p_result->pdu) - { - /* case AVRC_PDU_REQUEST_CONTINUATION_RSP: 0x40 */ - /* case AVRC_PDU_ABORT_CONTINUATION_RSP: 0x41 */ + switch (p_result->pdu) { + /* case AVRC_PDU_REQUEST_CONTINUATION_RSP: 0x40 */ + /* case AVRC_PDU_ABORT_CONTINUATION_RSP: 0x41 */ #if (AVRC_ADV_CTRL_INCLUDED == TRUE) case AVRC_PDU_SET_ABSOLUTE_VOLUME: /* 0x50 */ - if (len != 1) + if (len != 1) { status = AVRC_STS_INTERNAL_ERR; - else - { + } else { BE_STREAM_TO_UINT8 (p_result->volume.volume, p); } break; @@ -82,16 +81,15 @@ static tAVRC_STS avrc_pars_vendor_rsp(tAVRC_MSG_VENDOR *p_msg, tAVRC_RESPONSE *p case AVRC_PDU_REGISTER_NOTIFICATION: /* 0x31 */ #if (AVRC_ADV_CTRL_INCLUDED == TRUE) BE_STREAM_TO_UINT8 (eventid, p); - if(AVRC_EVT_VOLUME_CHANGE==eventid - && (AVRC_RSP_CHANGED==p_msg->hdr.ctype || AVRC_RSP_INTERIM==p_msg->hdr.ctype - || AVRC_RSP_REJ==p_msg->hdr.ctype || AVRC_RSP_NOT_IMPL==p_msg->hdr.ctype)) - { - p_result->reg_notif.status=p_msg->hdr.ctype; - p_result->reg_notif.event_id=eventid; + if (AVRC_EVT_VOLUME_CHANGE == eventid + && (AVRC_RSP_CHANGED == p_msg->hdr.ctype || AVRC_RSP_INTERIM == p_msg->hdr.ctype + || AVRC_RSP_REJ == p_msg->hdr.ctype || AVRC_RSP_NOT_IMPL == p_msg->hdr.ctype)) { + p_result->reg_notif.status = p_msg->hdr.ctype; + p_result->reg_notif.event_id = eventid; BE_STREAM_TO_UINT8 (p_result->reg_notif.param.volume, p); } - AVRC_TRACE_DEBUG("avrc_pars_vendor_rsp PDU reg notif response:event %x, volume %x",eventid, - p_result->reg_notif.param.volume); + AVRC_TRACE_DEBUG("avrc_pars_vendor_rsp PDU reg notif response:event %x, volume %x", eventid, + p_result->reg_notif.param.volume); #endif /* (AVRC_ADV_CTRL_INCLUDED == TRUE) */ break; default: @@ -119,18 +117,15 @@ tAVRC_STS AVRC_ParsResponse (tAVRC_MSG *p_msg, tAVRC_RESPONSE *p_result, UINT8 * UNUSED(p_buf); UNUSED(buf_len); - if (p_msg && p_result) - { - switch (p_msg->hdr.opcode) - { + if (p_msg && p_result) { + switch (p_msg->hdr.opcode) { case AVRC_OP_VENDOR: /* 0x00 Vendor-dependent commands */ status = avrc_pars_vendor_rsp(&p_msg->vendor, p_result); break; case AVRC_OP_PASS_THRU: /* 0x7C panel subunit opcode */ status = avrc_pars_pass_thru(&p_msg->pass, &id); - if (status == AVRC_STS_NO_ERROR) - { + if (status == AVRC_STS_NO_ERROR) { p_result->pdu = (UINT8)id; } break; diff --git a/components/bt/bluedroid/btc/profile/std/avrc/avrc_pars_tg.c b/components/bt/bluedroid/btc/profile/std/avrc/avrc_pars_tg.c old mode 100755 new mode 100644 index b709c0f8f7..47f342f632 --- a/components/bt/bluedroid/btc/profile/std/avrc/avrc_pars_tg.c +++ b/components/bt/bluedroid/btc/profile/std/avrc/avrc_pars_tg.c @@ -52,73 +52,74 @@ static tAVRC_STS avrc_pars_vendor_cmd(tAVRC_MSG_VENDOR *p_msg, tAVRC_COMMAND *p_ UINT16 size_needed; /* Check the vendor data */ - if (p_msg->vendor_len == 0) + if (p_msg->vendor_len == 0) { return AVRC_STS_NO_ERROR; - if (p_msg->p_vendor_data == NULL) + } + if (p_msg->p_vendor_data == NULL) { return AVRC_STS_INTERNAL_ERR; + } p = p_msg->p_vendor_data; p_result->pdu = *p++; AVRC_TRACE_DEBUG("avrc_pars_vendor_cmd() pdu:0x%x", p_result->pdu); - if (!AVRC_IsValidAvcType (p_result->pdu, p_msg->hdr.ctype)) - { + if (!AVRC_IsValidAvcType (p_result->pdu, p_msg->hdr.ctype)) { AVRC_TRACE_DEBUG("avrc_pars_vendor_cmd() detects wrong AV/C type!"); status = AVRC_STS_BAD_CMD; } p++; /* skip the reserved byte */ BE_STREAM_TO_UINT16 (len, p); - if ((len+4) != (p_msg->vendor_len)) - { + if ((len + 4) != (p_msg->vendor_len)) { status = AVRC_STS_INTERNAL_ERR; } - if (status != AVRC_STS_NO_ERROR) + if (status != AVRC_STS_NO_ERROR) { return status; + } - switch (p_result->pdu) - { + switch (p_result->pdu) { case AVRC_PDU_GET_CAPABILITIES: /* 0x10 */ p_result->get_caps.capability_id = *p++; - if (!AVRC_IS_VALID_CAP_ID(p_result->get_caps.capability_id)) + if (!AVRC_IS_VALID_CAP_ID(p_result->get_caps.capability_id)) { status = AVRC_STS_BAD_PARAM; - else if (len != 1) + } else if (len != 1) { status = AVRC_STS_INTERNAL_ERR; + } break; case AVRC_PDU_LIST_PLAYER_APP_ATTR: /* 0x11 */ /* no additional parameters */ - if (len != 0) + if (len != 0) { status = AVRC_STS_INTERNAL_ERR; + } break; case AVRC_PDU_LIST_PLAYER_APP_VALUES: /* 0x12 */ p_result->list_app_values.attr_id = *p++; - if (!AVRC_IS_VALID_ATTRIBUTE(p_result->list_app_values.attr_id)) + if (!AVRC_IS_VALID_ATTRIBUTE(p_result->list_app_values.attr_id)) { status = AVRC_STS_BAD_PARAM; - else if (len != 1) + } else if (len != 1) { status = AVRC_STS_INTERNAL_ERR; + } break; case AVRC_PDU_GET_CUR_PLAYER_APP_VALUE: /* 0x13 */ case AVRC_PDU_GET_PLAYER_APP_ATTR_TEXT: /* 0x15 */ BE_STREAM_TO_UINT8 (p_result->get_cur_app_val.num_attr, p); - if (len != (p_result->get_cur_app_val.num_attr+1)) - { + if (len != (p_result->get_cur_app_val.num_attr + 1)) { status = AVRC_STS_INTERNAL_ERR; break; } p_u8 = p_result->get_cur_app_val.attrs; - for (xx=0, yy=0; xx< p_result->get_cur_app_val.num_attr; xx++) - { + for (xx = 0, yy = 0; xx < p_result->get_cur_app_val.num_attr; xx++) { /* only report the valid player app attributes */ - if (AVRC_IsValidPlayerAttr(*p)) + if (AVRC_IsValidPlayerAttr(*p)) { p_u8[yy++] = *p; + } p++; } p_result->get_cur_app_val.num_attr = yy; - if (yy == 0) - { + if (yy == 0) { status = AVRC_STS_BAD_PARAM; } break; @@ -126,53 +127,44 @@ static tAVRC_STS avrc_pars_vendor_cmd(tAVRC_MSG_VENDOR *p_msg, tAVRC_COMMAND *p_ case AVRC_PDU_SET_PLAYER_APP_VALUE: /* 0x14 */ BE_STREAM_TO_UINT8 (p_result->set_app_val.num_val, p); size_needed = sizeof(tAVRC_APP_SETTING); - if (p_buf && (len == ((p_result->set_app_val.num_val<<1) + 1))) - { + if (p_buf && (len == ((p_result->set_app_val.num_val << 1) + 1))) { p_result->set_app_val.p_vals = (tAVRC_APP_SETTING *)p_buf; p_app_set = p_result->set_app_val.p_vals; - for (xx=0; ((xx< p_result->set_app_val.num_val) && (buf_len > size_needed)); xx++) - { + for (xx = 0; ((xx < p_result->set_app_val.num_val) && (buf_len > size_needed)); xx++) { p_app_set[xx].attr_id = *p++; p_app_set[xx].attr_val = *p++; - if (!avrc_is_valid_player_attrib_value(p_app_set[xx].attr_id, p_app_set[xx].attr_val)) + if (!avrc_is_valid_player_attrib_value(p_app_set[xx].attr_id, p_app_set[xx].attr_val)) { status = AVRC_STS_BAD_PARAM; + } } - if (xx != p_result->set_app_val.num_val) - { + if (xx != p_result->set_app_val.num_val) { AVRC_TRACE_ERROR("AVRC_PDU_SET_PLAYER_APP_VALUE not enough room:%d orig num_val:%d", - xx, p_result->set_app_val.num_val); + xx, p_result->set_app_val.num_val); p_result->set_app_val.num_val = xx; } - } - else - { + } else { AVRC_TRACE_ERROR("AVRC_PDU_SET_PLAYER_APP_VALUE NULL decode buffer or bad len"); status = AVRC_STS_INTERNAL_ERR; } break; case AVRC_PDU_GET_PLAYER_APP_VALUE_TEXT:/* 0x16 */ - if (len < 3) + if (len < 3) { status = AVRC_STS_INTERNAL_ERR; - else - { + } else { BE_STREAM_TO_UINT8 (p_result->get_app_val_txt.attr_id, p); - if (!AVRC_IS_VALID_ATTRIBUTE(p_result->get_app_val_txt.attr_id)) + if (!AVRC_IS_VALID_ATTRIBUTE(p_result->get_app_val_txt.attr_id)) { status = AVRC_STS_BAD_PARAM; - else - { + } else { BE_STREAM_TO_UINT8 (p_result->get_app_val_txt.num_val, p); - if ( (len - 2/* attr_id & num_val */) != p_result->get_app_val_txt.num_val) + if ( (len - 2/* attr_id & num_val */) != p_result->get_app_val_txt.num_val) { status = AVRC_STS_INTERNAL_ERR; - else - { + } else { p_u8 = p_result->get_app_val_txt.vals; - for (xx=0; xx< p_result->get_app_val_txt.num_val; xx++) - { + for (xx = 0; xx < p_result->get_app_val_txt.num_val; xx++) { p_u8[xx] = *p++; if (!avrc_is_valid_player_attrib_value(p_result->get_app_val_txt.attr_id, - p_u8[xx])) - { + p_u8[xx])) { status = AVRC_STS_BAD_PARAM; break; } @@ -183,20 +175,18 @@ static tAVRC_STS avrc_pars_vendor_cmd(tAVRC_MSG_VENDOR *p_msg, tAVRC_COMMAND *p_ break; case AVRC_PDU_INFORM_DISPLAY_CHARSET: /* 0x17 */ - if (len < 3) + if (len < 3) { status = AVRC_STS_INTERNAL_ERR; - else - { + } else { BE_STREAM_TO_UINT8 (p_result->inform_charset.num_id, p); - if ( (len - 1/* num_id */) != p_result->inform_charset.num_id * 2) + if ( (len - 1/* num_id */) != p_result->inform_charset.num_id * 2) { status = AVRC_STS_INTERNAL_ERR; - else - { + } else { p_u16 = p_result->inform_charset.charsets; - if (p_result->inform_charset.num_id > AVRC_MAX_CHARSET_SIZE) + if (p_result->inform_charset.num_id > AVRC_MAX_CHARSET_SIZE) { p_result->inform_charset.num_id = AVRC_MAX_CHARSET_SIZE; - for (xx=0; xx< p_result->inform_charset.num_id; xx++) - { + } + for (xx = 0; xx < p_result->inform_charset.num_id; xx++) { BE_STREAM_TO_UINT16 (p_u16[xx], p); } } @@ -204,64 +194,61 @@ static tAVRC_STS avrc_pars_vendor_cmd(tAVRC_MSG_VENDOR *p_msg, tAVRC_COMMAND *p_ break; case AVRC_PDU_INFORM_BATTERY_STAT_OF_CT:/* 0x18 */ - if (len != 1) + if (len != 1) { status = AVRC_STS_INTERNAL_ERR; - else - { + } else { p_result->inform_battery_status.battery_status = *p++; - if (!AVRC_IS_VALID_BATTERY_STATUS(p_result->inform_battery_status.battery_status)) + if (!AVRC_IS_VALID_BATTERY_STATUS(p_result->inform_battery_status.battery_status)) { status = AVRC_STS_BAD_PARAM; + } } break; case AVRC_PDU_GET_ELEMENT_ATTR: /* 0x20 */ - if (len < 9) /* UID/8 and num_attr/1 */ + if (len < 9) { /* UID/8 and num_attr/1 */ status = AVRC_STS_INTERNAL_ERR; - else - { + } else { BE_STREAM_TO_UINT32 (u32, p); BE_STREAM_TO_UINT32 (u32_2, p); - if (u32== 0 && u32_2 == 0) - { + if (u32 == 0 && u32_2 == 0) { BE_STREAM_TO_UINT8 (p_result->get_elem_attrs.num_attr, p); - if ( (len - 9/* UID/8 and num_attr/1 */) != (p_result->get_elem_attrs.num_attr * 4)) + if ( (len - 9/* UID/8 and num_attr/1 */) != (p_result->get_elem_attrs.num_attr * 4)) { status = AVRC_STS_INTERNAL_ERR; - else - { + } else { p_u32 = p_result->get_elem_attrs.attrs; - if (p_result->get_elem_attrs.num_attr > AVRC_MAX_ELEM_ATTR_SIZE) + if (p_result->get_elem_attrs.num_attr > AVRC_MAX_ELEM_ATTR_SIZE) { p_result->get_elem_attrs.num_attr = AVRC_MAX_ELEM_ATTR_SIZE; - for (xx=0; xx< p_result->get_elem_attrs.num_attr; xx++) - { + } + for (xx = 0; xx < p_result->get_elem_attrs.num_attr; xx++) { BE_STREAM_TO_UINT32 (p_u32[xx], p); } } - } - else + } else { status = AVRC_STS_NOT_FOUND; + } } break; case AVRC_PDU_GET_PLAY_STATUS: /* 0x30 */ /* no additional parameters */ - if (len != 0) + if (len != 0) { status = AVRC_STS_INTERNAL_ERR; + } break; case AVRC_PDU_REGISTER_NOTIFICATION: /* 0x31 */ - if (len != 5) + if (len != 5) { status = AVRC_STS_INTERNAL_ERR; - else - { + } else { BE_STREAM_TO_UINT8 (p_result->reg_notif.event_id, p); BE_STREAM_TO_UINT32 (p_result->reg_notif.param, p); } break; - case AVRC_PDU_SET_ABSOLUTE_VOLUME: - { - if(len!=1) + case AVRC_PDU_SET_ABSOLUTE_VOLUME: { + if (len != 1) { status = AVRC_STS_INTERNAL_ERR; + } break; } @@ -291,18 +278,15 @@ tAVRC_STS AVRC_ParsCommand (tAVRC_MSG *p_msg, tAVRC_COMMAND *p_result, UINT8 *p_ tAVRC_STS status = AVRC_STS_INTERNAL_ERR; UINT16 id; - if (p_msg && p_result) - { - switch (p_msg->hdr.opcode) - { + if (p_msg && p_result) { + switch (p_msg->hdr.opcode) { case AVRC_OP_VENDOR: /* 0x00 Vendor-dependent commands */ status = avrc_pars_vendor_cmd(&p_msg->vendor, p_result, p_buf, buf_len); break; case AVRC_OP_PASS_THRU: /* 0x7C panel subunit opcode */ status = avrc_pars_pass_thru(&p_msg->pass, &id); - if (status == AVRC_STS_NO_ERROR) - { + if (status == AVRC_STS_NO_ERROR) { p_result->pdu = (UINT8)id; } break; diff --git a/components/bt/bluedroid/btc/profile/std/avrc/avrc_sdp.c b/components/bt/bluedroid/btc/profile/std/avrc/avrc_sdp.c old mode 100755 new mode 100644 index ba10c1c5a5..cd21ae6e5e --- a/components/bt/bluedroid/btc/profile/std/avrc/avrc_sdp.c +++ b/components/bt/bluedroid/btc/profile/std/avrc/avrc_sdp.c @@ -43,8 +43,7 @@ tAVRC_CB avrc_cb; #endif /* update AVRC_NUM_PROTO_ELEMS if this constant is changed */ -const tSDP_PROTOCOL_ELEM avrc_proto_list [] = -{ +const tSDP_PROTOCOL_ELEM avrc_proto_list [] = { {UUID_PROTOCOL_L2CAP, 1, {AVCT_PSM, 0} }, #if SDP_AVCTP_1_4 == TRUE {UUID_PROTOCOL_AVCTP, 1, {AVCT_REV_1_4, 0} } @@ -62,12 +61,14 @@ const tSDP_PROTOCOL_ELEM avrc_proto_list [] = }; #if SDP_AVRCP_1_4 == TRUE -const tSDP_PROTO_LIST_ELEM avrc_add_proto_list [] = -{ - {AVRC_NUM_PROTO_ELEMS, +const tSDP_PROTO_LIST_ELEM avrc_add_proto_list [] = { { - {UUID_PROTOCOL_L2CAP, 1, {AVCT_BR_PSM, 0} }, - {UUID_PROTOCOL_AVCTP, 1, {AVCT_REV_1_3, 0} }}} + AVRC_NUM_PROTO_ELEMS, + { + {UUID_PROTOCOL_L2CAP, 1, {AVCT_BR_PSM, 0} }, + {UUID_PROTOCOL_AVCTP, 1, {AVCT_REV_1_3, 0} } + } + } }; #endif @@ -138,7 +139,7 @@ static void avrc_sdp_cback(UINT16 status) ** ******************************************************************************/ UINT16 AVRC_FindService(UINT16 service_uuid, BD_ADDR bd_addr, - tAVRC_SDP_DB_PARAMS *p_db, tAVRC_FIND_CBACK *p_cback) + tAVRC_SDP_DB_PARAMS *p_db, tAVRC_FIND_CBACK *p_cback) { tSDP_UUID uuid_list; BOOLEAN result = TRUE; @@ -147,24 +148,26 @@ UINT16 AVRC_FindService(UINT16 service_uuid, BD_ADDR bd_addr, ATTR_ID_BT_PROFILE_DESC_LIST, ATTR_ID_SERVICE_NAME, ATTR_ID_SUPPORTED_FEATURES, - ATTR_ID_PROVIDER_NAME}; + ATTR_ID_PROVIDER_NAME + }; AVRC_TRACE_API("AVRC_FindService uuid: %x", service_uuid); - if( (service_uuid != UUID_SERVCLASS_AV_REM_CTRL_TARGET && service_uuid != UUID_SERVCLASS_AV_REMOTE_CONTROL) || - p_db == NULL || p_db->p_db == NULL || p_cback == NULL) + if ( (service_uuid != UUID_SERVCLASS_AV_REM_CTRL_TARGET && service_uuid != UUID_SERVCLASS_AV_REMOTE_CONTROL) || + p_db == NULL || p_db->p_db == NULL || p_cback == NULL) { return AVRC_BAD_PARAM; + } /* check if it is busy */ - if( avrc_cb.service_uuid == UUID_SERVCLASS_AV_REM_CTRL_TARGET || - avrc_cb.service_uuid == UUID_SERVCLASS_AV_REMOTE_CONTROL) + if ( avrc_cb.service_uuid == UUID_SERVCLASS_AV_REM_CTRL_TARGET || + avrc_cb.service_uuid == UUID_SERVCLASS_AV_REMOTE_CONTROL) { return AVRC_NO_RESOURCES; + } /* set up discovery database */ uuid_list.len = LEN_UUID_16; uuid_list.uu.uuid16 = service_uuid; - if(p_db->p_attrs == NULL || p_db->num_attr == 0) - { + if (p_db->p_attrs == NULL || p_db->num_attr == 0) { p_db->p_attrs = a2d_attr_list; p_db->num_attr = AVRC_NUM_ATTR; } @@ -172,8 +175,7 @@ UINT16 AVRC_FindService(UINT16 service_uuid, BD_ADDR bd_addr, result = SDP_InitDiscoveryDb(p_db->p_db, p_db->db_len, 1, &uuid_list, p_db->num_attr, p_db->p_attrs); - if (result == TRUE) - { + if (result == TRUE) { /* store service_uuid and discovery db pointer */ avrc_cb.p_db = p_db->p_db; avrc_cb.service_uuid = service_uuid; @@ -218,7 +220,7 @@ UINT16 AVRC_FindService(UINT16 service_uuid, BD_ADDR bd_addr, ** ******************************************************************************/ UINT16 AVRC_AddRecord(UINT16 service_uuid, char *p_service_name, - char *p_provider_name, UINT16 categories, UINT32 sdp_handle) + char *p_provider_name, UINT16 categories, UINT32 sdp_handle) { UINT16 browse_list[1]; BOOLEAN result = TRUE; @@ -230,21 +232,20 @@ UINT16 AVRC_AddRecord(UINT16 service_uuid, char *p_service_name, AVRC_TRACE_API("AVRC_AddRecord uuid: %x", service_uuid); - if( service_uuid != UUID_SERVCLASS_AV_REM_CTRL_TARGET && service_uuid != UUID_SERVCLASS_AV_REMOTE_CONTROL ) + if ( service_uuid != UUID_SERVCLASS_AV_REM_CTRL_TARGET && service_uuid != UUID_SERVCLASS_AV_REMOTE_CONTROL ) { return AVRC_BAD_PARAM; + } /* add service class id list */ class_list[0] = service_uuid; #if SDP_AVCTP_1_4 == TRUE - if( service_uuid == UUID_SERVCLASS_AV_REMOTE_CONTROL ) - { + if ( service_uuid == UUID_SERVCLASS_AV_REMOTE_CONTROL ) { class_list[1] = UUID_SERVCLASS_AV_REM_CTRL_CONTROL; count = 2; } #else #if SDP_AVRCP_1_4 == TRUE - if( service_uuid == UUID_SERVCLASS_AV_REMOTE_CONTROL ) - { + if ( service_uuid == UUID_SERVCLASS_AV_REMOTE_CONTROL ) { class_list[1] = UUID_SERVCLASS_AV_REM_CTRL_CONTROL; count = 2; } @@ -273,20 +274,18 @@ UINT16 AVRC_AddRecord(UINT16 service_uuid, char *p_service_name, p = temp; UINT16_TO_BE_STREAM(p, categories); result &= SDP_AddAttribute(sdp_handle, ATTR_ID_SUPPORTED_FEATURES, UINT_DESC_TYPE, - (UINT32)2, (UINT8*)temp); + (UINT32)2, (UINT8 *)temp); /* add provider name */ - if (p_provider_name != NULL) - { + if (p_provider_name != NULL) { result &= SDP_AddAttribute(sdp_handle, ATTR_ID_PROVIDER_NAME, TEXT_STR_DESC_TYPE, - (UINT32)(strlen(p_provider_name)+1), (UINT8 *) p_provider_name); + (UINT32)(strlen(p_provider_name) + 1), (UINT8 *) p_provider_name); } /* add service name */ - if (p_service_name != NULL) - { + if (p_service_name != NULL) { result &= SDP_AddAttribute(sdp_handle, ATTR_ID_SERVICE_NAME, TEXT_STR_DESC_TYPE, - (UINT32)(strlen(p_service_name)+1), (UINT8 *) p_service_name); + (UINT32)(strlen(p_service_name) + 1), (UINT8 *) p_service_name); } /* add browse group list */ @@ -322,8 +321,9 @@ UINT16 AVRC_AddRecord(UINT16 service_uuid, char *p_service_name, ******************************************************************************/ UINT8 AVRC_SetTraceLevel (UINT8 new_level) { - if (new_level != 0xFF) + if (new_level != 0xFF) { avrc_cb.trace_level = new_level; + } return (avrc_cb.trace_level); } diff --git a/components/bt/bluedroid/btc/profile/std/avrc/avrc_utils.c b/components/bt/bluedroid/btc/profile/std/avrc/avrc_utils.c old mode 100755 new mode 100644 index 432ecc0cd6..e307218a02 --- a/components/bt/bluedroid/btc/profile/std/avrc/avrc_utils.c +++ b/components/bt/bluedroid/btc/profile/std/avrc/avrc_utils.c @@ -36,12 +36,10 @@ *******************************************************************************/ BOOLEAN AVRC_IsValidAvcType(UINT8 pdu_id, UINT8 avc_type) { - BOOLEAN result=FALSE; + BOOLEAN result = FALSE; - if (avc_type < AVRC_RSP_NOT_IMPL) /* command msg */ - { - switch (pdu_id) - { + if (avc_type < AVRC_RSP_NOT_IMPL) { /* command msg */ + switch (pdu_id) { case AVRC_PDU_GET_CAPABILITIES: /* 0x10 */ case AVRC_PDU_LIST_PLAYER_APP_ATTR: /* 0x11 */ case AVRC_PDU_LIST_PLAYER_APP_VALUES: /* 0x12 */ @@ -50,30 +48,32 @@ BOOLEAN AVRC_IsValidAvcType(UINT8 pdu_id, UINT8 avc_type) case AVRC_PDU_GET_PLAYER_APP_VALUE_TEXT: /* 0x16 */ case AVRC_PDU_GET_ELEMENT_ATTR: /* 0x20 */ case AVRC_PDU_GET_PLAY_STATUS: /* 0x30 */ - if (avc_type == AVRC_CMD_STATUS) - result=TRUE; - break; + if (avc_type == AVRC_CMD_STATUS) { + result = TRUE; + } + break; case AVRC_PDU_SET_PLAYER_APP_VALUE: /* 0x14 */ case AVRC_PDU_INFORM_DISPLAY_CHARSET: /* 0x17 */ case AVRC_PDU_INFORM_BATTERY_STAT_OF_CT: /* 0x18 */ case AVRC_PDU_REQUEST_CONTINUATION_RSP: /* 0x40 */ case AVRC_PDU_ABORT_CONTINUATION_RSP: /* 0x41 */ - if (avc_type == AVRC_CMD_CTRL) - result=TRUE; - break; + if (avc_type == AVRC_CMD_CTRL) { + result = TRUE; + } + break; case AVRC_PDU_REGISTER_NOTIFICATION: /* 0x31 */ - if (avc_type == AVRC_CMD_NOTIF) - result=TRUE; - break; + if (avc_type == AVRC_CMD_NOTIF) { + result = TRUE; + } + break; } - } - else /* response msg */ - { + } else { /* response msg */ if (avc_type >= AVRC_RSP_NOT_IMPL && - avc_type <= AVRC_RSP_INTERIM ) - result=TRUE; + avc_type <= AVRC_RSP_INTERIM ) { + result = TRUE; + } } return result; @@ -90,32 +90,35 @@ BOOLEAN AVRC_IsValidAvcType(UINT8 pdu_id, UINT8 avc_type) *******************************************************************************/ BOOLEAN avrc_is_valid_player_attrib_value(UINT8 attrib, UINT8 value) { - BOOLEAN result=FALSE; + BOOLEAN result = FALSE; - switch(attrib) - { + switch (attrib) { case AVRC_PLAYER_SETTING_EQUALIZER: - if ((value > 0) && - (value <= AVRC_PLAYER_VAL_ON)) - result=TRUE; - break; + if ((value > 0) && + (value <= AVRC_PLAYER_VAL_ON)) { + result = TRUE; + } + break; case AVRC_PLAYER_SETTING_REPEAT: - if ((value > 0) && - (value <= AVRC_PLAYER_VAL_GROUP_REPEAT)) - result=TRUE; - break; + if ((value > 0) && + (value <= AVRC_PLAYER_VAL_GROUP_REPEAT)) { + result = TRUE; + } + break; case AVRC_PLAYER_SETTING_SHUFFLE: case AVRC_PLAYER_SETTING_SCAN: - if ((value > 0) && - (value <= AVRC_PLAYER_VAL_GROUP_SHUFFLE)) - result=TRUE; - break; + if ((value > 0) && + (value <= AVRC_PLAYER_VAL_GROUP_SHUFFLE)) { + result = TRUE; + } + break; } - if (attrib >= AVRC_PLAYER_SETTING_LOW_MENU_EXT) - result = TRUE; + if (attrib >= AVRC_PLAYER_SETTING_LOW_MENU_EXT) { + result = TRUE; + } if (!result) AVRC_TRACE_ERROR( @@ -136,12 +139,11 @@ BOOLEAN avrc_is_valid_player_attrib_value(UINT8 attrib, UINT8 value) *******************************************************************************/ BOOLEAN AVRC_IsValidPlayerAttr(UINT8 attr) { - BOOLEAN result=FALSE; + BOOLEAN result = FALSE; if ( (attr >= AVRC_PLAYER_SETTING_EQUALIZER && attr <= AVRC_PLAYER_SETTING_SCAN) || - (attr >= AVRC_PLAYER_SETTING_LOW_MENU_EXT) ) - { - result = TRUE; + (attr >= AVRC_PLAYER_SETTING_LOW_MENU_EXT) ) { + result = TRUE; } return result; @@ -167,15 +169,12 @@ tAVRC_STS avrc_pars_pass_thru(tAVRC_MSG_PASS *p_msg, UINT16 *p_vendor_unique_id) UINT16 id; tAVRC_STS status = AVRC_STS_BAD_CMD; - if (p_msg->op_id == AVRC_ID_VENDOR && p_msg->pass_len == AVRC_PASS_THRU_GROUP_LEN) - { + if (p_msg->op_id == AVRC_ID_VENDOR && p_msg->pass_len == AVRC_PASS_THRU_GROUP_LEN) { p_data = p_msg->p_pass_data; AVRC_BE_STREAM_TO_CO_ID (co_id, p_data); - if (co_id == AVRC_CO_METADATA) - { + if (co_id == AVRC_CO_METADATA) { BE_STREAM_TO_UINT16 (id, p_data); - if (AVRC_IS_VALID_GROUP(id)) - { + if (AVRC_IS_VALID_GROUP(id)) { *p_vendor_unique_id = id; status = AVRC_STS_NO_ERROR; } @@ -197,8 +196,7 @@ UINT8 avrc_opcode_from_pdu(UINT8 pdu) { UINT8 opcode = 0; - switch (pdu) - { + switch (pdu) { case AVRC_PDU_NEXT_GROUP: case AVRC_PDU_PREV_GROUP: /* pass thru */ opcode = AVRC_OP_PASS_THRU; @@ -224,8 +222,7 @@ UINT8 avrc_opcode_from_pdu(UINT8 pdu) BOOLEAN avrc_is_valid_opcode(UINT8 opcode) { BOOLEAN is_valid = FALSE; - switch (opcode) - { + switch (opcode) { case AVRC_OP_BROWSE: case AVRC_OP_PASS_THRU: case AVRC_OP_VENDOR: diff --git a/components/bt/bluedroid/btc/profile/std/avrc/include/avrc_int.h b/components/bt/bluedroid/btc/profile/std/avrc/include/avrc_int.h old mode 100755 new mode 100644 index 6bb7014488..689692437e --- a/components/bt/bluedroid/btc/profile/std/avrc/include/avrc_int.h +++ b/components/bt/bluedroid/btc/profile/std/avrc/include/avrc_int.h @@ -98,24 +98,21 @@ #if (AVRC_METADATA_INCLUDED == TRUE) /* type for Metadata fragmentation control block */ -typedef struct -{ +typedef struct { BT_HDR *p_fmsg; /* the fragmented message */ UINT8 frag_pdu; /* the PDU ID for fragmentation */ BOOLEAN frag_enabled; /* fragmentation flag */ } tAVRC_FRAG_CB; /* type for Metadata re-assembly control block */ -typedef struct -{ +typedef struct { BT_HDR *p_rmsg; /* the received message */ UINT16 rasm_offset; /* re-assembly flag, the offset of the start fragment */ UINT8 rasm_pdu; /* the PDU ID for re-assembly */ } tAVRC_RASM_CB; #endif -typedef struct -{ +typedef struct { tAVRC_CONN_CB ccb[AVCT_NUM_CONN]; #if (AVRC_METADATA_INCLUDED == TRUE) tAVRC_FRAG_CB fcb[AVCT_NUM_CONN]; @@ -146,7 +143,7 @@ extern tAVRC_CB *avrc_cb_ptr; extern BOOLEAN avrc_is_valid_pdu_id(UINT8 pdu_id); extern BOOLEAN avrc_is_valid_player_attrib_value(UINT8 attrib, UINT8 value); -extern BT_HDR * avrc_alloc_ctrl_pkt (UINT8 pdu); +extern BT_HDR *avrc_alloc_ctrl_pkt (UINT8 pdu); extern tAVRC_STS avrc_pars_pass_thru(tAVRC_MSG_PASS *p_msg, UINT16 *p_vendor_unique_id); extern UINT8 avrc_opcode_from_pdu(UINT8 pdu); extern BOOLEAN avrc_is_valid_opcode(UINT8 opcode); diff --git a/components/bt/bluedroid/btc/profile/std/battery/battery_prf.c b/components/bt/bluedroid/btc/profile/std/battery/battery_prf.c index ed32ff2f09..63558cd621 100644 --- a/components/bt/bluedroid/btc/profile/std/battery/battery_prf.c +++ b/components/bt/bluedroid/btc/profile/std/battery/battery_prf.c @@ -16,12 +16,12 @@ #include #include #include - + //#include "bluedroid_test.h" #include "bta_api.h" #include "bta_gatt_api.h" #include "controller.h" - + #include "gatt_int.h" #include "bt_trace.h" #include "btm_api.h" @@ -31,7 +31,7 @@ #if BLE_INCLUDED == true #define BA_MAX_CHAR_NUM 1 -#define BA_MAX_ATTR_NUM (BA_MAX_CHAR_NUM * 5 + 1) +#define BA_MAX_ATTR_NUM (BA_MAX_CHAR_NUM * 5 + 1) /*max 3 descriptors, 1 desclaration and 1 value*/ #ifndef BATTER_LEVEL_PROP @@ -48,7 +48,7 @@ esp_gatts_if_t server_if; tBATTERY_CB battery_cb; tGATT_CHAR_PROP prop = GATT_CHAR_PROP_BIT_READ; -tBA_REG_INFO ba_reg_info; +tBA_REG_INFO ba_reg_info; UINT8 attr_handle_bit = 0x00; extern tDIS_CB dis_cb; @@ -58,189 +58,173 @@ esp_bt_uuid_t bas_uuid = {LEN_UUID_16, {UUID_SERVCLASS_BATTERY}}; ** ** Description battery service register callback function *******************************************************************************/ -static void bas_gatts_callback(esp_gatts_evt_t event, tBTA_GATTS* p_data) +static void bas_gatts_callback(esp_gatts_evt_t event, tBTA_GATTS *p_data) { - switch (event) - { - case ESP_GATTS_REG_EVT: - { - esp_gatt_status_t status = p_data->reg_oper.status; - server_if = p_data->reg_oper.server_if; - LOG_ERROR("BAS register completed: event=%d, status=%d, server_if=%d\n", - event, status, server_if); + switch (event) { + case ESP_GATTS_REG_EVT: { + esp_gatt_status_t status = p_data->reg_oper.status; + server_if = p_data->reg_oper.server_if; + LOG_ERROR("BAS register completed: event=%d, status=%d, server_if=%d\n", + event, status, server_if); - UINT8 app_id = 0xff; - bas_init(server_if, app_id); + UINT8 app_id = 0xff; + bas_init(server_if, app_id); - tDIS_ATTR_MASK mask = 0x01ff; - DIS_Init(server_if, mask); + tDIS_ATTR_MASK mask = 0x01ff; + DIS_Init(server_if, mask); + } + break; + + /*connect callback*/ + case ESP_GATTS_CONNECT_EVT: { + LOG_ERROR("\ndevice is connected "BT_BD_ADDR_STR", server_if=%d,reason=0x%x,connect_id=%d\n", + BT_BD_ADDR_HEX(p_data->conn.remote_bda), p_data->conn.server_if, + p_data->conn.reason, p_data->conn.conn_id); + /*return whether the remote device is currently connected*/ + int is_connected = BTA_DmGetConnectionState(p_data->conn.remote_bda); + LOG_ERROR("is_connected=%d\n", is_connected); + } + break; + + /*create service callback*/ + case ESP_GATTS_CREATE_EVT: { + LOG_ERROR("create service:server_if=%d,service_id=0x%x,service_uuid=0x%x\n", + p_data->create.server_if, p_data->create.service_id, + p_data->create.uuid.uu.uuid16); + UINT16 service_uuid = p_data->create.uuid.uu.uuid16; + UINT16 service_id = p_data->create.service_id; + if (service_uuid == 0x180f) { + tBT_UUID uuid = {LEN_UUID_16, {GATT_UUID_BATTERY_LEVEL}}; + bas_AddChar(service_id, &uuid); } - break; - - /*connect callback*/ - case ESP_GATTS_CONNECT_EVT: - { - LOG_ERROR("\ndevice is connected "BT_BD_ADDR_STR", server_if=%d,reason=0x%x,connect_id=%d\n", - BT_BD_ADDR_HEX(p_data->conn.remote_bda), p_data->conn.server_if, - p_data->conn.reason, p_data->conn.conn_id); - /*return whether the remote device is currently connected*/ - int is_connected = BTA_DmGetConnectionState(p_data->conn.remote_bda); - LOG_ERROR("is_connected=%d\n",is_connected); + if (service_uuid == 0x180a) { + dis_cb.service_handle = service_id; + dis_cb.max_handle = service_id + DIS_MAX_ATTR_NUM; + dis_AddChar(service_id); } - break; - - /*create service callback*/ - case ESP_GATTS_CREATE_EVT: - { - LOG_ERROR("create service:server_if=%d,service_id=0x%x,service_uuid=0x%x\n", - p_data->create.server_if, p_data->create.service_id, - p_data->create.uuid.uu.uuid16); - UINT16 service_uuid = p_data->create.uuid.uu.uuid16; - UINT16 service_id = p_data->create.service_id; - if (service_uuid == 0x180f) - { - tBT_UUID uuid = {LEN_UUID_16, {GATT_UUID_BATTERY_LEVEL}}; - bas_AddChar(service_id, &uuid); - } - if (service_uuid == 0x180a) - { - dis_cb.service_handle = service_id; - dis_cb.max_handle = service_id + DIS_MAX_ATTR_NUM; - dis_AddChar(service_id); - } + } + break; + + case ESP_GATTS_ADD_CHAR_EVT: { + LOG_ERROR("create characteristic:server_if=%d,service_id=0x%x,char_uuid=0x%x\n", + p_data->add_result.server_if, p_data->add_result.service_id, + p_data->add_result.char_uuid.uu.uuid16); + UINT16 char_uuid = p_data->add_result.char_uuid.uu.uuid16; + UINT16 service_id = p_data->add_result.service_id; + if (char_uuid == GATT_UUID_BATTERY_LEVEL) { + bas_AddCharDescr(service_id, p_data->add_result.attr_id); } - break; - - case ESP_GATTS_ADD_CHAR_EVT: - { - LOG_ERROR("create characteristic:server_if=%d,service_id=0x%x,char_uuid=0x%x\n", - p_data->add_result.server_if, p_data->add_result.service_id, - p_data->add_result.char_uuid.uu.uuid16); - UINT16 char_uuid = p_data->add_result.char_uuid.uu.uuid16; - UINT16 service_id = p_data->add_result.service_id; - if(char_uuid == GATT_UUID_BATTERY_LEVEL) - bas_AddCharDescr(service_id, p_data->add_result.attr_id); - if(char_uuid == GATT_UUID_SYSTEM_ID | GATT_UUID_MODEL_NUMBER_STR | GATT_UUID_PNP_ID | + if (char_uuid == GATT_UUID_SYSTEM_ID | GATT_UUID_MODEL_NUMBER_STR | GATT_UUID_PNP_ID | GATT_UUID_SERIAL_NUMBER_STR | GATT_UUID_FW_VERSION_STR | GATT_UUID_HW_VERSION_STR | - GATT_UUID_SW_VERSION_STR | GATT_UUID_MANU_NAME | GATT_UUID_IEEE_DATA) - { - switch (char_uuid) - { - case GATT_UUID_SYSTEM_ID: - dis_cb.dis_attr[0].handle = service_id; break; - case GATT_UUID_MODEL_NUMBER_STR: - dis_cb.dis_attr[1].handle = service_id; break; - case GATT_UUID_SERIAL_NUMBER_STR: - dis_cb.dis_attr[2].handle = service_id; break; - case GATT_UUID_FW_VERSION_STR: - dis_cb.dis_attr[3].handle = service_id; break; - case GATT_UUID_HW_VERSION_STR: - dis_cb.dis_attr[4].handle = service_id; break; - case GATT_UUID_SW_VERSION_STR: - dis_cb.dis_attr[5].handle = service_id; break; - case GATT_UUID_MANU_NAME: - dis_cb.dis_attr[6].handle = service_id; break; - case GATT_UUID_IEEE_DATA: - dis_cb.dis_attr[7].handle = service_id; break; - case GATT_UUID_PNP_ID: - dis_cb.dis_attr[8].handle = service_id; break; - } + GATT_UUID_SW_VERSION_STR | GATT_UUID_MANU_NAME | GATT_UUID_IEEE_DATA) { + switch (char_uuid) { + case GATT_UUID_SYSTEM_ID: + dis_cb.dis_attr[0].handle = service_id; break; + case GATT_UUID_MODEL_NUMBER_STR: + dis_cb.dis_attr[1].handle = service_id; break; + case GATT_UUID_SERIAL_NUMBER_STR: + dis_cb.dis_attr[2].handle = service_id; break; + case GATT_UUID_FW_VERSION_STR: + dis_cb.dis_attr[3].handle = service_id; break; + case GATT_UUID_HW_VERSION_STR: + dis_cb.dis_attr[4].handle = service_id; break; + case GATT_UUID_SW_VERSION_STR: + dis_cb.dis_attr[5].handle = service_id; break; + case GATT_UUID_MANU_NAME: + dis_cb.dis_attr[6].handle = service_id; break; + case GATT_UUID_IEEE_DATA: + dis_cb.dis_attr[7].handle = service_id; break; + case GATT_UUID_PNP_ID: + dis_cb.dis_attr[8].handle = service_id; break; } } - break; + } + break; - case ESP_GATTS_ADD_CHAR_DESCR_EVT: - { - - LOG_ERROR("create descriptor:server_if=%d,service_id=0x%x,attr_id=0x%x,char_uuid=0x%x\n", - p_data->add_result.server_if, p_data->add_result.service_id, - p_data->add_result.attr_id, p_data->add_result.char_uuid.uu.uuid16); - bas_AddCharDescr(p_data->add_result.service_id, p_data->add_result.attr_id); + case ESP_GATTS_ADD_CHAR_DESCR_EVT: { + + LOG_ERROR("create descriptor:server_if=%d,service_id=0x%x,attr_id=0x%x,char_uuid=0x%x\n", + p_data->add_result.server_if, p_data->add_result.service_id, + p_data->add_result.attr_id, p_data->add_result.char_uuid.uu.uuid16); + bas_AddCharDescr(p_data->add_result.service_id, p_data->add_result.attr_id); + } + break; + + case ESP_GATTS_START_EVT: { + LOG_ERROR("start service:server_if=%d,service_id=0x%x\n", p_data->srvc_oper.server_if, + p_data->srvc_oper.service_id); + bas_service_cmpl(p_data->srvc_oper.service_id, p_data->srvc_oper.status); + + /*start advertising*/ + //if(p_data->srvc_oper.status == GATT_SUCCESS) + // BTA_GATTS_Listen(server_if, true, NULL); + // BTA_GATTC_Broadcast(client_if, true); //non-connectable + } + break; + + case ESP_GATTS_READ_EVT: { + UINT32 trans_id = p_data->req_data.trans_id; + UINT16 conn_id = p_data->req_data.conn_id; + UINT16 handle = p_data->req_data.p_data->read_req.handle; + bool is_long = p_data->req_data.p_data->read_req.is_long; + LOG_ERROR("read request:event=0x%x,handle=0x%x,trans_id=0x%x,conn_id=0x%x\n", + event, handle, trans_id, conn_id); + + if (dis_valid_handle_range(handle)) { + tGATT_VALUE p_value; + p_value.handle = handle; + p_value.conn_id = conn_id; + p_value.offset = p_data->req_data.p_data->read_req.offset; + dis_s_read_attr_value(p_data->req_data.p_data, &p_value, trans_id, conn_id); + } else { + bas_s_read_attr_value(p_data->req_data.p_data, trans_id, conn_id); } - break; + } + break; - case ESP_GATTS_START_EVT: - { - LOG_ERROR("start service:server_if=%d,service_id=0x%x\n", p_data->srvc_oper.server_if, - p_data->srvc_oper.service_id); - bas_service_cmpl(p_data->srvc_oper.service_id, p_data->srvc_oper.status); - - /*start advertising*/ - //if(p_data->srvc_oper.status == GATT_SUCCESS) - // BTA_GATTS_Listen(server_if, true, NULL); - // BTA_GATTC_Broadcast(client_if, true); //non-connectable - } - break; + case ESP_GATTS_WRITE_EVT: { - case ESP_GATTS_READ_EVT: - { - UINT32 trans_id = p_data->req_data.trans_id; - UINT16 conn_id = p_data->req_data.conn_id; - UINT16 handle = p_data->req_data.p_data->read_req.handle; - bool is_long = p_data->req_data.p_data->read_req.is_long; - LOG_ERROR("read request:event=0x%x,handle=0x%x,trans_id=0x%x,conn_id=0x%x\n", - event, handle, trans_id, conn_id); + UINT32 trans_id = p_data->req_data.trans_id; + UINT16 conn_id = p_data->req_data.conn_id; + UINT16 handle = p_data->req_data.p_data->write_req.handle; + LOG_ERROR("write request:event=0x%x,handle=0x%x,trans_id=0x%x,conn_id=0x%x\n", + event, handle, trans_id, conn_id); + bas_s_write_attr_value(p_data->req_data.p_data, trans_id, conn_id, + p_data->req_data.remote_bda); + } + break; - if (dis_valid_handle_range(handle)) - { - tGATT_VALUE p_value; - p_value.handle = handle; - p_value.conn_id = conn_id; - p_value.offset = p_data->req_data.p_data->read_req.offset; - dis_s_read_attr_value(p_data->req_data.p_data, &p_value, trans_id, conn_id); - } - else - bas_s_read_attr_value(p_data->req_data.p_data, trans_id, conn_id); - } - break; + case ESP_GATTS_EXEC_WRITE_EVT: { + UINT32 trans_id = p_data->req_data.trans_id; + UINT16 conn_id = p_data->req_data.conn_id; + UINT8 exec_write = p_data->req_data.p_data->exec_write; + LOG_ERROR("execute write request:event=0x%x,exce_write=0x%x,trans_id=0x%x,conn_id=0x%x\n", + event, exec_write, trans_id, conn_id); + } + break; - case ESP_GATTS_WRITE_EVT: - { - - UINT32 trans_id = p_data->req_data.trans_id; - UINT16 conn_id = p_data->req_data.conn_id; - UINT16 handle = p_data->req_data.p_data->write_req.handle; - LOG_ERROR("write request:event=0x%x,handle=0x%x,trans_id=0x%x,conn_id=0x%x\n", - event, handle, trans_id, conn_id); - bas_s_write_attr_value(p_data->req_data.p_data, trans_id, conn_id, - p_data->req_data.remote_bda); - } - break; + case ESP_GATTS_MTU_EVT: { + UINT32 trans_id = p_data->req_data.trans_id; + UINT16 conn_id = p_data->req_data.conn_id; + UINT16 mtu = p_data->req_data.p_data->mtu; + LOG_ERROR("exchange mtu request:event=0x%x,mtu=0x%x,trans_id=0x%x,conn_id=0x%x\n", + event, mtu, trans_id, conn_id); + } + break; - case ESP_GATTS_EXEC_WRITE_EVT: - { - UINT32 trans_id = p_data->req_data.trans_id; - UINT16 conn_id = p_data->req_data.conn_id; - UINT8 exec_write = p_data->req_data.p_data->exec_write; - LOG_ERROR("execute write request:event=0x%x,exce_write=0x%x,trans_id=0x%x,conn_id=0x%x\n", - event, exec_write, trans_id, conn_id); - } - break; + case ESP_GATTS_CFM_EVT: { - case ESP_GATTS_MTU_EVT: - { - UINT32 trans_id = p_data->req_data.trans_id; - UINT16 conn_id = p_data->req_data.conn_id; - UINT16 mtu = p_data->req_data.p_data->mtu; - LOG_ERROR("exchange mtu request:event=0x%x,mtu=0x%x,trans_id=0x%x,conn_id=0x%x\n", - event, mtu, trans_id, conn_id); - } - break; + UINT32 trans_id = p_data->req_data.trans_id; + UINT16 conn_id = p_data->req_data.conn_id; + LOG_ERROR("configue request:trans_id=0x%x,conn_id=0x%x\n", + trans_id, conn_id); + } + break; - case ESP_GATTS_CFM_EVT: - { - - UINT32 trans_id = p_data->req_data.trans_id; - UINT16 conn_id = p_data->req_data.conn_id; - LOG_ERROR("configue request:trans_id=0x%x,conn_id=0x%x\n", - trans_id, conn_id); - } - break; - - default: + default: LOG_ERROR("unsettled event: %d\n", event); - break; + break; } } @@ -249,53 +233,47 @@ static void bas_gatts_callback(esp_gatts_evt_t event, tBTA_GATTS* p_data) ** ** Description battery service callback for client request *******************************************************************************/ -static void bas_callback(UINT32 trans_id, UINT16 conn_id, UINT8 app_id, - UINT8 event, tBA_WRITE_DATA *p_data) +static void bas_callback(UINT32 trans_id, UINT16 conn_id, UINT8 app_id, + UINT8 event, tBA_WRITE_DATA *p_data) { tBA_RSP_DATA p_rsp; tGATT_STATUS st = ESP_GATT_OK; - switch(event) - { - case BA_READ_LEVEL_REQ : - { - LOG_ERROR("read battery level\n"); - p_rsp.ba_level = 60; //battery level - Battery_Rsp(trans_id, conn_id, app_id, st, event, &p_rsp); - } - break; + switch (event) { + case BA_READ_LEVEL_REQ : { + LOG_ERROR("read battery level\n"); + p_rsp.ba_level = 60; //battery level + Battery_Rsp(trans_id, conn_id, app_id, st, event, &p_rsp); + } + break; - case BA_READ_PRE_FMT_REQ : - { - LOG_ERROR("read presentation format\n"); - } - break; + case BA_READ_PRE_FMT_REQ : { + LOG_ERROR("read presentation format\n"); + } + break; - case BA_READ_CLT_CFG_REQ : - { - LOG_ERROR("read client characteristic configuration request\n"); - p_rsp.clt_cfg = 0x0001; //notification - Battery_Rsp(trans_id, conn_id, app_id, st, event, &p_rsp); - } - break; + case BA_READ_CLT_CFG_REQ : { + LOG_ERROR("read client characteristic configuration request\n"); + p_rsp.clt_cfg = 0x0001; //notification + Battery_Rsp(trans_id, conn_id, app_id, st, event, &p_rsp); + } + break; - case BA_READ_RPT_REF_REQ : - { - LOG_ERROR("read report reference descriptor\n"); - } - break; + case BA_READ_RPT_REF_REQ : { + LOG_ERROR("read report reference descriptor\n"); + } + break; - /*battery level notify*/ - case BA_WRITE_CLT_CFG_REQ : - { - LOG_ERROR("write client characteristic configuration request\n"); - Battery_Rsp(trans_id, conn_id, app_id, st, event, NULL); - - int battery_level = 50; - Battery_Notify(conn_id, app_id, p_data->remote_bda, battery_level); - } - break; + /*battery level notify*/ + case BA_WRITE_CLT_CFG_REQ : { + LOG_ERROR("write client characteristic configuration request\n"); + Battery_Rsp(trans_id, conn_id, app_id, st, event, NULL); - default: + int battery_level = 50; + Battery_Notify(conn_id, app_id, p_data->remote_bda, battery_level); + } + break; + + default: break; } @@ -308,40 +286,46 @@ static void bas_callback(UINT32 trans_id, UINT16 conn_id, UINT8 app_id, ******************************************************************************/ void bas_s_read_attr_value(tGATTS_DATA *p_data, UINT32 trans_id, UINT16 conn_id) { - - tBA_INST *p_inst = &battery_cb.battery_inst[0]; - UINT8 i; - esp_gatt_status_t st = ESP_GATT_NOT_FOUND; - UINT16 handle = p_data->read_req.handle; + + tBA_INST *p_inst = &battery_cb.battery_inst[0]; + UINT8 i; + esp_gatt_status_t st = ESP_GATT_NOT_FOUND; + UINT16 handle = p_data->read_req.handle; - for (i = 0; i < BA_MAX_INT_NUM; i ++, p_inst ++) - { - // read battery level + for (i = 0; i < BA_MAX_INT_NUM; i ++, p_inst ++) { + // read battery level if (handle == p_inst->ba_level_hdl || - handle == p_inst->clt_cfg_hdl || - handle == p_inst->rpt_ref_hdl || - handle == p_inst->pres_fmt_hdl) - { - if (p_data->read_req.is_long) + handle == p_inst->clt_cfg_hdl || + handle == p_inst->rpt_ref_hdl || + handle == p_inst->pres_fmt_hdl) { + if (p_data->read_req.is_long) { st = ESP_GATT_NOT_LONG; - - if (p_inst->p_cback) - { - if (handle == p_inst->ba_level_hdl) p_inst->pending_evt = BA_READ_LEVEL_REQ; - if (handle == p_inst->clt_cfg_hdl) p_inst->pending_evt = BA_READ_CLT_CFG_REQ; - if (handle == p_inst->pres_fmt_hdl) p_inst->pending_evt = BA_READ_PRE_FMT_REQ; - if (handle == p_inst->rpt_ref_hdl) p_inst->pending_evt = BA_READ_RPT_REF_REQ ; - - // p_inst->pending_clcb_idx = clcb_idx; - p_inst->pending_handle = handle; - //act = SRVC_ACT_PENDING; - (*p_inst->p_cback)(trans_id, conn_id, p_inst->app_id, p_inst->pending_evt, NULL); - } - else /* application is not registered */ - st = ESP_GATT_ERR_UNLIKELY; - break; } + + if (p_inst->p_cback) { + if (handle == p_inst->ba_level_hdl) { + p_inst->pending_evt = BA_READ_LEVEL_REQ; + } + if (handle == p_inst->clt_cfg_hdl) { + p_inst->pending_evt = BA_READ_CLT_CFG_REQ; + } + if (handle == p_inst->pres_fmt_hdl) { + p_inst->pending_evt = BA_READ_PRE_FMT_REQ; + } + if (handle == p_inst->rpt_ref_hdl) { + p_inst->pending_evt = BA_READ_RPT_REF_REQ ; + } + + // p_inst->pending_clcb_idx = clcb_idx; + p_inst->pending_handle = handle; + //act = SRVC_ACT_PENDING; + (*p_inst->p_cback)(trans_id, conn_id, p_inst->app_id, p_inst->pending_evt, NULL); + } else { /* application is not registered */ + st = ESP_GATT_ERR_UNLIKELY; + } + break; + } /* else attribute not found */ } } @@ -356,30 +340,27 @@ void bas_s_write_attr_value(tGATTS_DATA *p_data, UINT32 trans_id, UINT16 conn_id tBA_WRITE_DATA cfg; UINT8 *p = p_data->write_req.value; tBA_INST *p_inst = &battery_cb.battery_inst[0]; - UINT8 i; + UINT8 i; esp_gatt_status_t st = ESP_GATT_NOT_FOUND; UINT16 handle = p_data->write_req.handle; - for (i = 0; i < BA_MAX_INT_NUM; i ++, p_inst ++) - { - if (handle == p_inst->clt_cfg_hdl) - { - memcpy(cfg.remote_bda, bd_addr, BD_ADDR_LEN); - STREAM_TO_UINT16(cfg.clt_cfg, p); + for (i = 0; i < BA_MAX_INT_NUM; i ++, p_inst ++) { + if (handle == p_inst->clt_cfg_hdl) { + memcpy(cfg.remote_bda, bd_addr, BD_ADDR_LEN); + STREAM_TO_UINT16(cfg.clt_cfg, p); - if (p_inst->p_cback) - { - p_inst->pending_evt = BA_WRITE_CLT_CFG_REQ; - p_inst->pending_handle = handle; - cfg.need_rsp = p_data->write_req.need_rsp; - (*p_inst->p_cback)(trans_id, conn_id, p_inst->app_id, p_inst->pending_evt, &cfg); - } - else /* all other handle is not writable */ + if (p_inst->p_cback) { + p_inst->pending_evt = BA_WRITE_CLT_CFG_REQ; + p_inst->pending_handle = handle; + cfg.need_rsp = p_data->write_req.need_rsp; + (*p_inst->p_cback)(trans_id, conn_id, p_inst->app_id, p_inst->pending_evt, &cfg); + } else { /* all other handle is not writable */ st = ESP_GATT_WRITE_NOT_PERMIT; - break; } - + break; + } + } } /*************************************************************** @@ -391,8 +372,8 @@ void bas_s_write_attr_value(tGATTS_DATA *p_data, UINT32 trans_id, UINT16 conn_id ****************************************************************/ void bas_register(void) { - esp_ble_gatts_app_register(&bas_uuid, bas_gatts_callback); - + esp_ble_gatts_app_register(&bas_uuid, bas_gatts_callback); + } /*************************************************************** ** @@ -410,8 +391,7 @@ void bas_init(tBTA_GATTS_IF gatt_if, UINT16 app_id) ba_reg_info.ba_level_descr = BA_LEVEL_NOTIFY; ba_reg_info.transport = GATT_TRANSPORT_LE; ba_reg_info.p_cback = bas_callback; - if (battery_cb.inst_id == BA_MAX_INT_NUM) - { + if (battery_cb.inst_id == BA_MAX_INT_NUM) { GATT_TRACE_ERROR("MAX battery service has been reached\n"); return; } @@ -421,7 +401,7 @@ void bas_init(tBTA_GATTS_IF gatt_if, UINT16 app_id) LOG_ERROR("create battery service\n"); LOG_ERROR("inst_id=%d\n", battery_cb.inst_id); esp_ble_gatts_create_srvc (gatt_if, &bas_uuid, battery_cb.inst_id , - BA_MAX_ATTR_NUM, ba_reg_info.is_pri); + BA_MAX_ATTR_NUM, ba_reg_info.is_pri); battery_cb.inst_id ++; @@ -439,10 +419,11 @@ void bas_init(tBTA_GATTS_IF gatt_if, UINT16 app_id) ****************************************************************/ void bas_AddChar(UINT16 service_id, tBT_UUID *char_uuid) { - if (ba_reg_info.ba_level_descr & BA_LEVEL_NOTIFY) - prop |= GATT_CHAR_PROP_BIT_NOTIFY; - attr_handle_bit = 0x01; - esp_ble_gatts_add_char(service_id, char_uuid, BATTER_LEVEL_PERM, prop); + if (ba_reg_info.ba_level_descr & BA_LEVEL_NOTIFY) { + prop |= GATT_CHAR_PROP_BIT_NOTIFY; + } + attr_handle_bit = 0x01; + esp_ble_gatts_add_char(service_id, char_uuid, BATTER_LEVEL_PERM, prop); } @@ -459,41 +440,38 @@ void bas_AddCharDescr(UINT16 service_id, UINT16 attr_id) uuid.len = LEN_UUID_16; battery_cb.inst_id --; - tBA_INST *p_inst = &battery_cb.battery_inst[battery_cb.inst_id++]; + tBA_INST *p_inst = &battery_cb.battery_inst[battery_cb.inst_id++]; /*store the attribute handles*/ - if(attr_handle_bit == 0x01) + if (attr_handle_bit == 0x01) { p_inst->ba_level_hdl = attr_id; - else if(attr_handle_bit == 0x02) + } else if (attr_handle_bit == 0x02) { p_inst->clt_cfg_hdl = attr_id; - else if(attr_handle_bit == 0x04) + } else if (attr_handle_bit == 0x04) { p_inst->pres_fmt_hdl = attr_id; - else if(attr_handle_bit == 0x08) + } else if (attr_handle_bit == 0x08) { p_inst->rpt_ref_hdl = attr_id; - + } - if (ba_reg_info.ba_level_descr != 0) - { - if (ba_reg_info.ba_level_descr & BA_LEVEL_NOTIFY) - { + + if (ba_reg_info.ba_level_descr != 0) { + if (ba_reg_info.ba_level_descr & BA_LEVEL_NOTIFY) { uuid.uu.uuid16 = GATT_UUID_CHAR_CLIENT_CONFIG; ba_reg_info.ba_level_descr &= 0xfe; attr_handle_bit = 0x02; - esp_ble_gatts_add_char_descr(service_id, (GATT_PERM_READ|GATT_PERM_WRITE), &uuid); + esp_ble_gatts_add_char_descr(service_id, (GATT_PERM_READ | GATT_PERM_WRITE), &uuid); return; } - - /* need presentation format descriptor? */ - if (ba_reg_info.ba_level_descr & BA_LEVEL_PRE_FMT) - { + + /* need presentation format descriptor? */ + if (ba_reg_info.ba_level_descr & BA_LEVEL_PRE_FMT) { uuid.uu.uuid16 = GATT_UUID_CHAR_PRESENT_FORMAT; esp_ble_gatts_add_char_descr(service_id, GATT_PERM_READ, &uuid); ba_reg_info.ba_level_descr &= 0xfd; attr_handle_bit = 0x04; return; } - /* need report reference format descriptor? */ - if (ba_reg_info.ba_level_descr & BA_LEVEL_RPT_REF) - { + /* need report reference format descriptor? */ + if (ba_reg_info.ba_level_descr & BA_LEVEL_RPT_REF) { uuid.uu.uuid16 = GATT_UUID_RPT_REF_DESCR; ba_reg_info.ba_level_descr &= 0xfb; esp_ble_gatts_add_char_descr(service_id, GATT_PERM_READ, &uuid); @@ -501,9 +479,10 @@ void bas_AddCharDescr(UINT16 service_id, UINT16 attr_id) return; } } - - else + + else { esp_ble_gatts_start_srvc(service_id); + } } @@ -516,8 +495,7 @@ void bas_AddCharDescr(UINT16 service_id, UINT16 attr_id) ****************************************************************/ void bas_service_cmpl(UINT16 service_id, esp_gatt_status_t status) { - if(status != ESP_GATT_OK) - { + if (status != ESP_GATT_OK) { battery_cb.inst_id --; esp_ble_gatts_dele_srvc(service_id); } @@ -531,29 +509,28 @@ void bas_service_cmpl(UINT16 service_id, esp_gatt_status_t status) ** *******************************************************************************/ void Battery_Rsp (UINT32 trans_id, UINT16 conn_id, UINT8 app_id, - esp_gatt_status_t st, UINT8 event, tBA_RSP_DATA *p_rsp) + esp_gatt_status_t st, UINT8 event, tBA_RSP_DATA *p_rsp) { tBA_INST *p_inst = &battery_cb.battery_inst[0]; tGATTS_RSP rsp; UINT8 *pp; UINT8 i = 0; - while (i < BA_MAX_INT_NUM) - { - if (p_inst->app_id == app_id && p_inst->ba_level_hdl != 0) + while (i < BA_MAX_INT_NUM) { + if (p_inst->app_id == app_id && p_inst->ba_level_hdl != 0) { break; + } i ++; } - if (i == BA_MAX_INT_NUM) + if (i == BA_MAX_INT_NUM) { return; + } memset(&rsp, 0, sizeof(tGATTS_RSP)); - if (p_inst->pending_evt == event) - { - switch (event) - { + if (p_inst->pending_evt == event) { + switch (event) { case BA_READ_CLT_CFG_REQ: rsp.attr_value.handle = p_inst->pending_handle; rsp.attr_value.len = 2; @@ -590,7 +567,7 @@ void Battery_Rsp (UINT32 trans_id, UINT16 conn_id, UINT8 app_id, default: break; } - // p_inst->pending_clcb_idx = 0; + // p_inst->pending_clcb_idx = 0; p_inst->pending_evt = 0; p_inst->pending_handle = 0; } @@ -608,15 +585,16 @@ void Battery_Notify (UINT16 conn_id, UINT8 app_id, BD_ADDR remote_bda, UINT8 bat tBA_INST *p_inst = &battery_cb.battery_inst[0]; UINT8 i = 0; - while (i < BA_MAX_INT_NUM) - { - if (p_inst->app_id == app_id && p_inst->ba_level_hdl != 0) + while (i < BA_MAX_INT_NUM) { + if (p_inst->app_id == app_id && p_inst->ba_level_hdl != 0) { break; + } i ++; } - if (i == BA_MAX_INT_NUM || p_inst->clt_cfg_hdl == 0) + if (i == BA_MAX_INT_NUM || p_inst->clt_cfg_hdl == 0) { return; + } esp_ble_gatts_hdl_val_indica(conn_id, p_inst->ba_level_hdl, 1, &battery_level, false); //srvc_sr_notify(remote_bda, p_inst->ba_level_hdl, 1, &battery_level); diff --git a/components/bt/bluedroid/btc/profile/std/battery/include/srvc_battery_int.h b/components/bt/bluedroid/btc/profile/std/battery/include/srvc_battery_int.h index a9f81ae2e0..4979f101ed 100644 --- a/components/bt/bluedroid/btc/profile/std/battery/include/srvc_battery_int.h +++ b/components/bt/bluedroid/btc/profile/std/battery/include/srvc_battery_int.h @@ -30,8 +30,7 @@ #define BATTERY_LEVEL_SIZE 1 -typedef struct -{ +typedef struct { UINT8 app_id; UINT16 ba_level_hdl; UINT16 clt_cfg_hdl; @@ -44,15 +43,14 @@ typedef struct UINT8 pending_clcb_idx; UINT8 pending_evt; -}tBA_INST; +} tBA_INST; -typedef struct -{ +typedef struct { tBA_INST battery_inst[BA_MAX_INT_NUM]; UINT8 inst_id; BOOLEAN enabled; -}tBATTERY_CB; +} tBATTERY_CB; #ifdef __cplusplus extern "C" { @@ -69,9 +67,9 @@ extern tBATTERY_CB *battery_cb_ptr; extern BOOLEAN battery_valid_handle_range(UINT16 handle); -extern UINT8 battery_s_write_attr_value(UINT8 clcb_idx, tGATT_WRITE_REQ * p_value, - tGATT_STATUS *p_status); -extern UINT8 battery_s_read_attr_value (UINT8 clcb_idx, UINT16 handle, tGATT_VALUE *p_value, BOOLEAN is_long, tGATT_STATUS* p_status); +extern UINT8 battery_s_write_attr_value(UINT8 clcb_idx, tGATT_WRITE_REQ *p_value, + tGATT_STATUS *p_status); +extern UINT8 battery_s_read_attr_value (UINT8 clcb_idx, UINT16 handle, tGATT_VALUE *p_value, BOOLEAN is_long, tGATT_STATUS *p_status); diff --git a/components/bt/bluedroid/btc/profile/std/dis/dis_profile.c b/components/bt/bluedroid/btc/profile/std/dis/dis_profile.c index f5b076caa6..357db6eb76 100644 --- a/components/bt/bluedroid/btc/profile/std/dis/dis_profile.c +++ b/components/bt/bluedroid/btc/profile/std/dis/dis_profile.c @@ -29,7 +29,7 @@ #include "bta_api.h" #include "bta_gatt_api.h" #include "controller.h" - + #include "gatt_int.h" #include "bt_trace.h" #include "btm_api.h" @@ -45,10 +45,9 @@ + ((((UINT64)(*((p) + 4)))) << 32) + ((((UINT64)(*((p) + 5)))) << 40) + ((((UINT64)(*((p) + 6)))) << 48) + ((((UINT64)(*((p) + 7)))) << 56)); (p) += 8;} esp_bt_uuid_t uuid = {LEN_UUID_16, {UUID_SERVCLASS_DEVICE_INFO}}; -UINT16 i = 0; -tDIS_ATTR_MASK dis_mask; -static const UINT16 dis_attr_uuid[DIS_MAX_CHAR_NUM] = -{ +UINT16 i = 0; +tDIS_ATTR_MASK dis_mask; +static const UINT16 dis_attr_uuid[DIS_MAX_CHAR_NUM] = { GATT_UUID_SYSTEM_ID, GATT_UUID_MODEL_NUMBER_STR, GATT_UUID_SERIAL_NUMBER_STR, @@ -64,28 +63,27 @@ tDIS_CB dis_cb; static tDIS_ATTR_MASK dis_uuid_to_attr(UINT16 uuid) { - switch (uuid) - { - case GATT_UUID_SYSTEM_ID: - return DIS_ATTR_SYS_ID_BIT; - case GATT_UUID_MODEL_NUMBER_STR: - return DIS_ATTR_MODEL_NUM_BIT; - case GATT_UUID_SERIAL_NUMBER_STR: - return DIS_ATTR_SERIAL_NUM_BIT; - case GATT_UUID_FW_VERSION_STR: - return DIS_ATTR_FW_NUM_BIT; - case GATT_UUID_HW_VERSION_STR: - return DIS_ATTR_HW_NUM_BIT; - case GATT_UUID_SW_VERSION_STR: - return DIS_ATTR_SW_NUM_BIT; - case GATT_UUID_MANU_NAME: - return DIS_ATTR_MANU_NAME_BIT; - case GATT_UUID_IEEE_DATA: - return DIS_ATTR_IEEE_DATA_BIT; - case GATT_UUID_PNP_ID: - return DIS_ATTR_PNP_ID_BIT; - default: - return 0; + switch (uuid) { + case GATT_UUID_SYSTEM_ID: + return DIS_ATTR_SYS_ID_BIT; + case GATT_UUID_MODEL_NUMBER_STR: + return DIS_ATTR_MODEL_NUM_BIT; + case GATT_UUID_SERIAL_NUMBER_STR: + return DIS_ATTR_SERIAL_NUM_BIT; + case GATT_UUID_FW_VERSION_STR: + return DIS_ATTR_FW_NUM_BIT; + case GATT_UUID_HW_VERSION_STR: + return DIS_ATTR_HW_NUM_BIT; + case GATT_UUID_SW_VERSION_STR: + return DIS_ATTR_SW_NUM_BIT; + case GATT_UUID_MANU_NAME: + return DIS_ATTR_MANU_NAME_BIT; + case GATT_UUID_IEEE_DATA: + return DIS_ATTR_IEEE_DATA_BIT; + case GATT_UUID_PNP_ID: + return DIS_ATTR_PNP_ID_BIT; + default: + return 0; }; } @@ -96,17 +94,18 @@ static tDIS_ATTR_MASK dis_uuid_to_attr(UINT16 uuid) *******************************************************************************/ BOOLEAN dis_valid_handle_range(UINT16 handle) { - if (handle >= dis_cb.service_handle && handle <= dis_cb.max_handle) + if (handle >= dis_cb.service_handle && handle <= dis_cb.max_handle) { return TRUE; - else + } else { return FALSE; + } } /******************************************************************************* ** dis_write_attr_value ** ** Process write DIS attribute request. *******************************************************************************/ -UINT8 dis_write_attr_value(tGATT_WRITE_REQ * p_data, esp_gatt_status_t *p_status) +UINT8 dis_write_attr_value(tGATT_WRITE_REQ *p_data, esp_gatt_status_t *p_status) { UNUSED(p_data); @@ -131,65 +130,58 @@ void dis_s_read_attr_value (tGATTS_DATA *p_data, tGATT_VALUE *p_value, UINT32 tr UINT16 handle = p_data->read_req.handle; bool is_long = p_data->read_req.is_long; - for (i = 0; i < DIS_MAX_CHAR_NUM; i ++, p_db_attr ++) - { - if (handle == p_db_attr->handle) - { - if ((p_db_attr->uuid == GATT_UUID_PNP_ID || p_db_attr->uuid == GATT_UUID_SYSTEM_ID)&& - is_long == TRUE) - { + for (i = 0; i < DIS_MAX_CHAR_NUM; i ++, p_db_attr ++) { + if (handle == p_db_attr->handle) { + if ((p_db_attr->uuid == GATT_UUID_PNP_ID || p_db_attr->uuid == GATT_UUID_SYSTEM_ID) && + is_long == TRUE) { st = ESP_GATT_NOT_LONG; break; } st = ESP_GATT_NOT_FOUND; - switch (p_db_attr->uuid) - { - case GATT_UUID_MANU_NAME: - case GATT_UUID_MODEL_NUMBER_STR: - case GATT_UUID_SERIAL_NUMBER_STR: - case GATT_UUID_FW_VERSION_STR: - case GATT_UUID_HW_VERSION_STR: - case GATT_UUID_SW_VERSION_STR: - case GATT_UUID_IEEE_DATA: - pp = dis_cb.dis_value.data_string[p_db_attr->uuid - GATT_UUID_MODEL_NUMBER_STR]; - if (pp != NULL) - { - if (strlen ((char *)pp) > GATT_MAX_ATTR_LEN) - p_value->len = GATT_MAX_ATTR_LEN; - else - p_value->len = (UINT16)strlen ((char *)pp); + switch (p_db_attr->uuid) { + case GATT_UUID_MANU_NAME: + case GATT_UUID_MODEL_NUMBER_STR: + case GATT_UUID_SERIAL_NUMBER_STR: + case GATT_UUID_FW_VERSION_STR: + case GATT_UUID_HW_VERSION_STR: + case GATT_UUID_SW_VERSION_STR: + case GATT_UUID_IEEE_DATA: + pp = dis_cb.dis_value.data_string[p_db_attr->uuid - GATT_UUID_MODEL_NUMBER_STR]; + if (pp != NULL) { + if (strlen ((char *)pp) > GATT_MAX_ATTR_LEN) { + p_value->len = GATT_MAX_ATTR_LEN; + } else { + p_value->len = (UINT16)strlen ((char *)pp); } - else - p_value->len = 0; + } else { + p_value->len = 0; + } - if (offset > p_value->len) - { - st = ESP_GATT_INVALID_OFFSET; - break; - } - else - { - p_value->len -= offset; - pp += offset; - ARRAY_TO_STREAM(p, pp, p_value->len); - GATT_TRACE_EVENT("GATT_UUID_MANU_NAME len=0x%04x", p_value->len); - } + if (offset > p_value->len) { + st = ESP_GATT_INVALID_OFFSET; break; + } else { + p_value->len -= offset; + pp += offset; + ARRAY_TO_STREAM(p, pp, p_value->len); + GATT_TRACE_EVENT("GATT_UUID_MANU_NAME len=0x%04x", p_value->len); + } + break; - case GATT_UUID_SYSTEM_ID: - UINT64_TO_STREAM(p, dis_cb.dis_value.system_id); /* int_min */ - p_value->len = DIS_SYSTEM_ID_SIZE; - break; + case GATT_UUID_SYSTEM_ID: + UINT64_TO_STREAM(p, dis_cb.dis_value.system_id); /* int_min */ + p_value->len = DIS_SYSTEM_ID_SIZE; + break; - case GATT_UUID_PNP_ID: - UINT8_TO_STREAM(p, dis_cb.dis_value.pnp_id.vendor_id_src); - UINT16_TO_STREAM(p, dis_cb.dis_value.pnp_id.vendor_id); - UINT16_TO_STREAM(p, dis_cb.dis_value.pnp_id.product_id); - UINT16_TO_STREAM(p, dis_cb.dis_value.pnp_id.product_version); - p_value->len = DIS_PNP_ID_SIZE; - break; + case GATT_UUID_PNP_ID: + UINT8_TO_STREAM(p, dis_cb.dis_value.pnp_id.vendor_id_src); + UINT16_TO_STREAM(p, dis_cb.dis_value.pnp_id.vendor_id); + UINT16_TO_STREAM(p, dis_cb.dis_value.pnp_id.product_id); + UINT16_TO_STREAM(p, dis_cb.dis_value.pnp_id.product_version); + p_value->len = DIS_PNP_ID_SIZE; + break; } break; @@ -198,7 +190,7 @@ void dis_s_read_attr_value (tGATTS_DATA *p_data, tGATT_VALUE *p_value, UINT32 tr tGATTS_RSP rsp; rsp.attr_value = *p_value; esp_ble_gatts_send_rsp(conn_id, trans_id, st, &rsp); - + } @@ -214,14 +206,13 @@ void DIS_Init (esp_gatts_if_t gatt_if, tDIS_ATTR_MASK dis_attr_mask) tGATT_STATUS status; dis_mask = dis_attr_mask; - if (dis_cb.enabled) - { + if (dis_cb.enabled) { GATT_TRACE_ERROR("DIS already initalized"); return; } memset(&dis_cb, 0, sizeof(tDIS_CB)); - + esp_ble_gatts_create_srvc (gatt_if , &uuid, 0, DIS_MAX_ATTR_NUM, TRUE); } @@ -238,11 +229,10 @@ void dis_AddChar(UINT16 service_id) //dis_cb.service_handle = service_id; //dis_cb.max_handle = service_id + DIS_MAX_ATTR_NUM; tDIS_DB_ENTRY *p_db_attr = &dis_cb.dis_attr[0]; - while(dis_mask != 0 && i < DIS_MAX_CHAR_NUM) - { + while (dis_mask != 0 && i < DIS_MAX_CHAR_NUM) { uuid.uu.uuid16 = p_db_attr->uuid = dis_attr_uuid[i]; - esp_ble_gatts_add_char(dis_cb.service_handle, &uuid, GATT_PERM_READ, - GATT_CHAR_PROP_BIT_READ); + esp_ble_gatts_add_char(dis_cb.service_handle, &uuid, GATT_PERM_READ, + GATT_CHAR_PROP_BIT_READ); p_db_attr ++; i ++; dis_mask >>= 1; @@ -263,40 +253,33 @@ tDIS_STATUS DIS_SrUpdate(tDIS_ATTR_BIT dis_attr_bit, tDIS_ATTR *p_info) UINT8 i = 1; tDIS_STATUS st = DIS_SUCCESS; - if (dis_attr_bit & DIS_ATTR_SYS_ID_BIT) - { + if (dis_attr_bit & DIS_ATTR_SYS_ID_BIT) { dis_cb.dis_value.system_id = p_info->system_id; - } - else if (dis_attr_bit & DIS_ATTR_PNP_ID_BIT) - { + } else if (dis_attr_bit & DIS_ATTR_PNP_ID_BIT) { dis_cb.dis_value.pnp_id.vendor_id = p_info->pnp_id.vendor_id; dis_cb.dis_value.pnp_id.vendor_id_src = p_info->pnp_id.vendor_id_src; dis_cb.dis_value.pnp_id.product_id = p_info->pnp_id.product_id; dis_cb.dis_value.pnp_id.product_version = p_info->pnp_id.product_version; - } - else - { + } else { st = DIS_ILLEGAL_PARAM; - while (dis_attr_bit && i < (DIS_MAX_CHAR_NUM -1 )) - { - if (dis_attr_bit & (UINT16)(1 << i)) - { - if (dis_cb.dis_value.data_string[i - 1] != NULL) + while (dis_attr_bit && i < (DIS_MAX_CHAR_NUM - 1 )) { + if (dis_attr_bit & (UINT16)(1 << i)) { + if (dis_cb.dis_value.data_string[i - 1] != NULL) { GKI_freebuf(dis_cb.dis_value.data_string[i - 1]); -/* coverity[OVERRUN-STATIC] False-positive : when i = 8, (1 << i) == DIS_ATTR_PNP_ID_BIT, and it will never come down here -CID 49902: Out-of-bounds read (OVERRUN_STATIC) -Overrunning static array "dis_cb.dis_value.data_string", with 7 elements, at position 7 with index variable "i". -*/ - if ((dis_cb.dis_value.data_string[i - 1] = (UINT8 *)GKI_getbuf((UINT16)(p_info->data_str.len + 1))) != NULL) - { + } + /* coverity[OVERRUN-STATIC] False-positive : when i = 8, (1 << i) == DIS_ATTR_PNP_ID_BIT, and it will never come down here + CID 49902: Out-of-bounds read (OVERRUN_STATIC) + Overrunning static array "dis_cb.dis_value.data_string", with 7 elements, at position 7 with index variable "i". + */ + if ((dis_cb.dis_value.data_string[i - 1] = (UINT8 *)GKI_getbuf((UINT16)(p_info->data_str.len + 1))) != NULL) { memcpy(dis_cb.dis_value.data_string[i - 1], p_info->data_str.p_data, p_info->data_str.len); dis_cb.dis_value.data_string[i - 1][p_info->data_str.len] = 0; /* make sure null terminate */ st = DIS_SUCCESS; - } - else + } else { st = DIS_NO_RESOURCES; + } break; } diff --git a/components/bt/bluedroid/btc/profile/std/dis/include/srvc_dis_int.h b/components/bt/bluedroid/btc/profile/std/dis/include/srvc_dis_int.h index 74573195de..5da32d1e46 100644 --- a/components/bt/bluedroid/btc/profile/std/dis/include/srvc_dis_int.h +++ b/components/bt/bluedroid/btc/profile/std/dis/include/srvc_dis_int.h @@ -26,19 +26,17 @@ #define DIS_MAX_CHAR_NUM 9 -typedef struct -{ +typedef struct { UINT16 uuid; UINT16 handle; -}tDIS_DB_ENTRY; +} tDIS_DB_ENTRY; #define DIS_SYSTEM_ID_SIZE 8 #define DIS_PNP_ID_SIZE 7 -typedef struct -{ +typedef struct { tDIS_DB_ENTRY dis_attr[DIS_MAX_CHAR_NUM]; tDIS_VALUE dis_value; @@ -52,7 +50,7 @@ typedef struct UINT8 dis_read_uuid_idx; tDIS_ATTR_MASK request_mask; -}tDIS_CB; +} tDIS_CB; @@ -71,11 +69,11 @@ extern tDIS_CB *dis_cb_ptr; extern BOOLEAN dis_valid_handle_range(UINT16 handle); extern UINT8 dis_read_attr_value (UINT8 clcb_idx, UINT16 handle, tGATT_VALUE *p_value, - BOOLEAN is_long, tGATT_STATUS *p_status); -extern UINT8 dis_write_attr_value(tGATT_WRITE_REQ * p_data, tGATT_STATUS *p_status); + BOOLEAN is_long, tGATT_STATUS *p_status); +extern UINT8 dis_write_attr_value(tGATT_WRITE_REQ *p_data, tGATT_STATUS *p_status); extern void dis_c_cmpl_cback (tSRVC_CLCB *p_clcb, tGATTC_OPTYPE op, - tGATT_STATUS status, tGATT_CL_COMPLETE *p_data); + tGATT_STATUS status, tGATT_CL_COMPLETE *p_data); #ifdef __cplusplus diff --git a/components/bt/bluedroid/btc/profile/std/gap/btc_gap_ble.c b/components/bt/bluedroid/btc/profile/std/gap/btc_gap_ble.c index 49b6cd9690..3c879984e0 100644 --- a/components/bt/bluedroid/btc/profile/std/gap/btc_gap_ble.c +++ b/components/bt/bluedroid/btc/profile/std/gap/btc_gap_ble.c @@ -26,164 +26,147 @@ static tBTA_BLE_ADV_DATA gl_bta_adv_data; static tBTA_BLE_ADV_DATA gl_bta_scan_rsp_data; -#define BTC_GAP_BLE_CB_TO_APP(_event, _param) ((esp_profile_cb_t )btc_profile_cb_get(BTC_PID_GAP_BLE))(_event, _param) +#define BTC_GAP_BLE_CB_TO_APP(_event, _param) ((esp_profile_cb_t )btc_profile_cb_get(BTC_PID_GAP_BLE))(_event, _param) -static void btc_gap_adv_point_cleanup(void** buf) +static void btc_gap_adv_point_cleanup(void **buf) { - if (NULL == *buf) return; - GKI_freebuf(*buf); - *buf = NULL; + if (NULL == *buf) { + return; + } + GKI_freebuf(*buf); + *buf = NULL; } static void btc_cleanup_adv_data(tBTA_BLE_ADV_DATA *bta_adv_data) { - if (bta_adv_data == NULL) - return; + if (bta_adv_data == NULL) { + return; + } // Manufacturer data cleanup - if (bta_adv_data->p_manu != NULL) - { - btc_gap_adv_point_cleanup((void**) &bta_adv_data->p_manu->p_val); - btc_gap_adv_point_cleanup((void**) &bta_adv_data->p_manu); + if (bta_adv_data->p_manu != NULL) { + btc_gap_adv_point_cleanup((void **) &bta_adv_data->p_manu->p_val); + btc_gap_adv_point_cleanup((void **) &bta_adv_data->p_manu); } // Proprietary data cleanup - if (bta_adv_data->p_proprietary != NULL) - { + if (bta_adv_data->p_proprietary != NULL) { int i = 0; tBTA_BLE_PROP_ELEM *p_elem = bta_adv_data->p_proprietary->p_elem; while (i++ != bta_adv_data->p_proprietary->num_elem - && p_elem) - { - btc_gap_adv_point_cleanup((void**) &p_elem->p_val); + && p_elem) { + btc_gap_adv_point_cleanup((void **) &p_elem->p_val); ++p_elem; } - btc_gap_adv_point_cleanup((void**) &bta_adv_data->p_proprietary->p_elem); - btc_gap_adv_point_cleanup((void**) &bta_adv_data->p_proprietary); + btc_gap_adv_point_cleanup((void **) &bta_adv_data->p_proprietary->p_elem); + btc_gap_adv_point_cleanup((void **) &bta_adv_data->p_proprietary); } // Service list cleanup - if (bta_adv_data->p_services != NULL) - { - btc_gap_adv_point_cleanup((void**) &bta_adv_data->p_services->p_uuid); - btc_gap_adv_point_cleanup((void**) &bta_adv_data->p_services); + if (bta_adv_data->p_services != NULL) { + btc_gap_adv_point_cleanup((void **) &bta_adv_data->p_services->p_uuid); + btc_gap_adv_point_cleanup((void **) &bta_adv_data->p_services); } // Service data cleanup - if (bta_adv_data->p_service_data != NULL) - { - btc_gap_adv_point_cleanup((void**) &bta_adv_data->p_service_data->p_val); - btc_gap_adv_point_cleanup((void**) &bta_adv_data->p_service_data); + if (bta_adv_data->p_service_data != NULL) { + btc_gap_adv_point_cleanup((void **) &bta_adv_data->p_service_data->p_val); + btc_gap_adv_point_cleanup((void **) &bta_adv_data->p_service_data); } - btc_gap_adv_point_cleanup((void**) &bta_adv_data->p_services_128b); + btc_gap_adv_point_cleanup((void **) &bta_adv_data->p_services_128b); - if (bta_adv_data->p_service_32b != NULL) - { - btc_gap_adv_point_cleanup((void**) &bta_adv_data->p_service_32b->p_uuid); - btc_gap_adv_point_cleanup((void**) &bta_adv_data->p_service_32b); + if (bta_adv_data->p_service_32b != NULL) { + btc_gap_adv_point_cleanup((void **) &bta_adv_data->p_service_32b->p_uuid); + btc_gap_adv_point_cleanup((void **) &bta_adv_data->p_service_32b); } - if (bta_adv_data->p_sol_services != NULL) - { - btc_gap_adv_point_cleanup((void**) &bta_adv_data->p_sol_services->p_uuid); - btc_gap_adv_point_cleanup((void**) &bta_adv_data->p_sol_services); + if (bta_adv_data->p_sol_services != NULL) { + btc_gap_adv_point_cleanup((void **) &bta_adv_data->p_sol_services->p_uuid); + btc_gap_adv_point_cleanup((void **) &bta_adv_data->p_sol_services); } - if (bta_adv_data->p_sol_service_32b != NULL) - { - btc_gap_adv_point_cleanup((void**) &bta_adv_data->p_sol_service_32b->p_uuid); - btc_gap_adv_point_cleanup((void**) &bta_adv_data->p_sol_service_32b); + if (bta_adv_data->p_sol_service_32b != NULL) { + btc_gap_adv_point_cleanup((void **) &bta_adv_data->p_sol_service_32b->p_uuid); + btc_gap_adv_point_cleanup((void **) &bta_adv_data->p_sol_service_32b); } - btc_gap_adv_point_cleanup((void**) &bta_adv_data->p_sol_service_128b); + btc_gap_adv_point_cleanup((void **) &bta_adv_data->p_sol_service_128b); } static void btc_to_bta_adv_data(esp_ble_adv_data_t *p_adv_data, tBTA_BLE_ADV_DATA *bta_adv_data, uint32_t *data_mask) { - uint32_t mask; + uint32_t mask; - btc_cleanup_adv_data(bta_adv_data); + btc_cleanup_adv_data(bta_adv_data); memset(bta_adv_data, 0, sizeof(tBTA_BLE_ADV_DATA)); mask = 0; - if (p_adv_data->flag != 0) - { - mask = BTM_BLE_AD_BIT_FLAGS; + if (p_adv_data->flag != 0) { + mask = BTM_BLE_AD_BIT_FLAGS; } if (p_adv_data->include_name) { mask |= BTM_BLE_AD_BIT_DEV_NAME; - } + } if (p_adv_data->include_txpower) { mask |= BTM_BLE_AD_BIT_TX_PWR; - } + } if (p_adv_data->min_interval > 0 && p_adv_data->max_interval > 0 && - p_adv_data->max_interval >= p_adv_data->min_interval) - { + p_adv_data->max_interval >= p_adv_data->min_interval) { mask |= BTM_BLE_AD_BIT_INT_RANGE; bta_adv_data->int_range.low = p_adv_data->min_interval; bta_adv_data->int_range.hi = p_adv_data->max_interval; } - if (p_adv_data->include_txpower) - { - //TODO + if (p_adv_data->include_txpower) { + //TODO } - if (p_adv_data->appearance != 0) - { + if (p_adv_data->appearance != 0) { mask |= BTM_BLE_AD_BIT_APPEARANCE; bta_adv_data->appearance = p_adv_data->appearance; } - if (p_adv_data->manufacturer_len > 0 && p_adv_data->p_manufacturer_data != NULL) - { - bta_adv_data->p_manu = GKI_getbuf(sizeof(tBTA_BLE_MANU)); - if (bta_adv_data->p_manu != NULL) - { + if (p_adv_data->manufacturer_len > 0 && p_adv_data->p_manufacturer_data != NULL) { + bta_adv_data->p_manu = GKI_getbuf(sizeof(tBTA_BLE_MANU)); + if (bta_adv_data->p_manu != NULL) { bta_adv_data->p_manu->p_val = GKI_getbuf(p_adv_data->manufacturer_len); - if (bta_adv_data->p_manu->p_val != NULL) - { - mask |= BTM_BLE_AD_BIT_MANU; - bta_adv_data->p_manu->len = p_adv_data->manufacturer_len; - memcpy(bta_adv_data->p_manu->p_val, p_adv_data->p_manufacturer_data, p_adv_data->manufacturer_len); + if (bta_adv_data->p_manu->p_val != NULL) { + mask |= BTM_BLE_AD_BIT_MANU; + bta_adv_data->p_manu->len = p_adv_data->manufacturer_len; + memcpy(bta_adv_data->p_manu->p_val, p_adv_data->p_manufacturer_data, p_adv_data->manufacturer_len); } - } + } } tBTA_BLE_PROP_ELEM *p_elem_service_data = NULL; - if (p_adv_data->service_data_len > 0 && p_adv_data->p_service_data != NULL) - { - p_elem_service_data = GKI_getbuf(sizeof(tBTA_BLE_PROP_ELEM)); - if (p_elem_service_data != NULL) - { - p_elem_service_data->p_val = GKI_getbuf(p_adv_data->service_data_len); - if (p_elem_service_data->p_val != NULL) - { - p_elem_service_data->adv_type = BTM_BLE_AD_TYPE_SERVICE_DATA; - p_elem_service_data->len = p_adv_data->service_data_len; - memcpy(p_elem_service_data->p_val, p_adv_data->p_service_data, - p_adv_data->service_data_len); - } else { - GKI_freebuf(p_elem_service_data); - p_elem_service_data = NULL; - } - } + if (p_adv_data->service_data_len > 0 && p_adv_data->p_service_data != NULL) { + p_elem_service_data = GKI_getbuf(sizeof(tBTA_BLE_PROP_ELEM)); + if (p_elem_service_data != NULL) { + p_elem_service_data->p_val = GKI_getbuf(p_adv_data->service_data_len); + if (p_elem_service_data->p_val != NULL) { + p_elem_service_data->adv_type = BTM_BLE_AD_TYPE_SERVICE_DATA; + p_elem_service_data->len = p_adv_data->service_data_len; + memcpy(p_elem_service_data->p_val, p_adv_data->p_service_data, + p_adv_data->service_data_len); + } else { + GKI_freebuf(p_elem_service_data); + p_elem_service_data = NULL; + } + } } - if (NULL != p_elem_service_data) - { + if (NULL != p_elem_service_data) { bta_adv_data->p_proprietary = GKI_getbuf(sizeof(tBTA_BLE_PROPRIETARY)); - if (NULL != bta_adv_data->p_proprietary) - { + if (NULL != bta_adv_data->p_proprietary) { tBTA_BLE_PROP_ELEM *p_elem = NULL; tBTA_BLE_PROPRIETARY *p_prop = bta_adv_data->p_proprietary; p_prop->num_elem = 0; @@ -191,327 +174,312 @@ static void btc_to_bta_adv_data(esp_ble_adv_data_t *p_adv_data, tBTA_BLE_ADV_DAT p_prop->num_elem = 1; p_prop->p_elem = GKI_getbuf(sizeof(tBTA_BLE_PROP_ELEM) * p_prop->num_elem); p_elem = p_prop->p_elem; - if (NULL != p_elem) + if (NULL != p_elem) { memcpy(p_elem++, p_elem_service_data, sizeof(tBTA_BLE_PROP_ELEM)); + } GKI_freebuf(p_elem_service_data); } } - if (p_adv_data->service_uuid_len && p_adv_data->p_service_uuid) - { + if (p_adv_data->service_uuid_len && p_adv_data->p_service_uuid) { UINT16 *p_uuid_out16 = NULL; UINT32 *p_uuid_out32 = NULL; - for (int position = 0; position < p_adv_data->service_uuid_len; position += LEN_UUID_128) - { - tBT_UUID bt_uuid; + for (int position = 0; position < p_adv_data->service_uuid_len; position += LEN_UUID_128) { + tBT_UUID bt_uuid; - btc128_to_bta_uuid(&bt_uuid, p_adv_data->p_service_uuid + position); + btc128_to_bta_uuid(&bt_uuid, p_adv_data->p_service_uuid + position); - switch(bt_uuid.len) - { - case (LEN_UUID_16): - { - if (NULL == bta_adv_data->p_services) - { - bta_adv_data->p_services = GKI_getbuf(sizeof(tBTA_BLE_SERVICE)); - bta_adv_data->p_services->list_cmpl = FALSE; - bta_adv_data->p_services->num_service = 0; - bta_adv_data->p_services->p_uuid = GKI_getbuf(p_adv_data->service_uuid_len / LEN_UUID_128 * LEN_UUID_16); - p_uuid_out16 = bta_adv_data->p_services->p_uuid; - } - - if (NULL != bta_adv_data->p_services->p_uuid) - { - LOG_ERROR("%s - In 16-UUID_data", __FUNCTION__); - mask |= BTM_BLE_AD_BIT_SERVICE; - ++bta_adv_data->p_services->num_service; - *p_uuid_out16++ = bt_uuid.uu.uuid16; - } - break; + switch (bt_uuid.len) { + case (LEN_UUID_16): { + if (NULL == bta_adv_data->p_services) { + bta_adv_data->p_services = GKI_getbuf(sizeof(tBTA_BLE_SERVICE)); + bta_adv_data->p_services->list_cmpl = FALSE; + bta_adv_data->p_services->num_service = 0; + bta_adv_data->p_services->p_uuid = GKI_getbuf(p_adv_data->service_uuid_len / LEN_UUID_128 * LEN_UUID_16); + p_uuid_out16 = bta_adv_data->p_services->p_uuid; } - case (LEN_UUID_32): - { - if (NULL == bta_adv_data->p_service_32b) - { - bta_adv_data->p_service_32b = - GKI_getbuf(sizeof(tBTA_BLE_32SERVICE)); - bta_adv_data->p_service_32b->list_cmpl = FALSE; - bta_adv_data->p_service_32b->num_service = 0; - bta_adv_data->p_service_32b->p_uuid = - GKI_getbuf(p_adv_data->service_uuid_len / LEN_UUID_128 * LEN_UUID_32); - p_uuid_out32 = bta_adv_data->p_service_32b->p_uuid; - } + if (NULL != bta_adv_data->p_services->p_uuid) { + LOG_ERROR("%s - In 16-UUID_data", __FUNCTION__); + mask |= BTM_BLE_AD_BIT_SERVICE; + ++bta_adv_data->p_services->num_service; + *p_uuid_out16++ = bt_uuid.uu.uuid16; + } + break; + } - if (NULL != bta_adv_data->p_service_32b->p_uuid) - { - LOG_ERROR("%s - In 32-UUID_data", __FUNCTION__); - mask |= BTM_BLE_AD_BIT_SERVICE_32; - ++bta_adv_data->p_service_32b->num_service; - *p_uuid_out32++ = bt_uuid.uu.uuid32; - } - break; + case (LEN_UUID_32): { + if (NULL == bta_adv_data->p_service_32b) { + bta_adv_data->p_service_32b = + GKI_getbuf(sizeof(tBTA_BLE_32SERVICE)); + bta_adv_data->p_service_32b->list_cmpl = FALSE; + bta_adv_data->p_service_32b->num_service = 0; + bta_adv_data->p_service_32b->p_uuid = + GKI_getbuf(p_adv_data->service_uuid_len / LEN_UUID_128 * LEN_UUID_32); + p_uuid_out32 = bta_adv_data->p_service_32b->p_uuid; } - case (LEN_UUID_128): - { - /* Currently, only one 128-bit UUID is supported */ - if (NULL == bta_adv_data->p_services_128b) - { - bta_adv_data->p_services_128b = - GKI_getbuf(sizeof(tBTA_BLE_128SERVICE)); - if (NULL != bta_adv_data->p_services_128b) - { - LOG_ERROR("%s - In 128-UUID_data", __FUNCTION__); - mask |= BTM_BLE_AD_BIT_SERVICE_128; - memcpy(bta_adv_data->p_services_128b->uuid128, - bt_uuid.uu.uuid128, LEN_UUID_128); - LOG_DEBUG("%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x", bt_uuid.uu.uuid128[0], - bt_uuid.uu.uuid128[1],bt_uuid.uu.uuid128[2], bt_uuid.uu.uuid128[3], - bt_uuid.uu.uuid128[4],bt_uuid.uu.uuid128[5],bt_uuid.uu.uuid128[6], - bt_uuid.uu.uuid128[7],bt_uuid.uu.uuid128[8],bt_uuid.uu.uuid128[9], - bt_uuid.uu.uuid128[10],bt_uuid.uu.uuid128[11],bt_uuid.uu.uuid128[12], - bt_uuid.uu.uuid128[13],bt_uuid.uu.uuid128[14],bt_uuid.uu.uuid128[15]); - bta_adv_data->p_services_128b->list_cmpl = TRUE; - } - } - break; + if (NULL != bta_adv_data->p_service_32b->p_uuid) { + LOG_ERROR("%s - In 32-UUID_data", __FUNCTION__); + mask |= BTM_BLE_AD_BIT_SERVICE_32; + ++bta_adv_data->p_service_32b->num_service; + *p_uuid_out32++ = bt_uuid.uu.uuid32; } + break; + } - default: - break; - } + case (LEN_UUID_128): { + /* Currently, only one 128-bit UUID is supported */ + if (NULL == bta_adv_data->p_services_128b) { + bta_adv_data->p_services_128b = + GKI_getbuf(sizeof(tBTA_BLE_128SERVICE)); + if (NULL != bta_adv_data->p_services_128b) { + LOG_ERROR("%s - In 128-UUID_data", __FUNCTION__); + mask |= BTM_BLE_AD_BIT_SERVICE_128; + memcpy(bta_adv_data->p_services_128b->uuid128, + bt_uuid.uu.uuid128, LEN_UUID_128); + LOG_DEBUG("%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x", bt_uuid.uu.uuid128[0], + bt_uuid.uu.uuid128[1], bt_uuid.uu.uuid128[2], bt_uuid.uu.uuid128[3], + bt_uuid.uu.uuid128[4], bt_uuid.uu.uuid128[5], bt_uuid.uu.uuid128[6], + bt_uuid.uu.uuid128[7], bt_uuid.uu.uuid128[8], bt_uuid.uu.uuid128[9], + bt_uuid.uu.uuid128[10], bt_uuid.uu.uuid128[11], bt_uuid.uu.uuid128[12], + bt_uuid.uu.uuid128[13], bt_uuid.uu.uuid128[14], bt_uuid.uu.uuid128[15]); + bta_adv_data->p_services_128b->list_cmpl = TRUE; + } + } + break; + } + + default: + break; + } } } - *data_mask = mask; + *data_mask = mask; } static void btc_adv_data_callback(tBTA_STATUS status) { - esp_ble_gap_cb_param_t param; - bt_status_t ret; - btc_msg_t msg; + esp_ble_gap_cb_param_t param; + bt_status_t ret; + btc_msg_t msg; - msg.sig = BTC_SIG_API_CB; - msg.pid = BTC_PID_GAP_BLE; - msg.act = ESP_GAP_BLE_ADV_DATA_SET_COMPLETE_EVT; - param.adv_data_cmpl.status = status; + msg.sig = BTC_SIG_API_CB; + msg.pid = BTC_PID_GAP_BLE; + msg.act = ESP_GAP_BLE_ADV_DATA_SET_COMPLETE_EVT; + param.adv_data_cmpl.status = status; - ret = btc_transfer_context(&msg, ¶m, - sizeof(esp_ble_gap_cb_param_t), NULL); + ret = btc_transfer_context(&msg, ¶m, + sizeof(esp_ble_gap_cb_param_t), NULL); - if (ret != BT_STATUS_SUCCESS) { - LOG_ERROR("%s btc_transfer_context failed\n", __func__); - } + if (ret != BT_STATUS_SUCCESS) { + LOG_ERROR("%s btc_transfer_context failed\n", __func__); + } } static void btc_scan_rsp_data_callback(tBTA_STATUS status) { - esp_ble_gap_cb_param_t param; - bt_status_t ret; - btc_msg_t msg; + esp_ble_gap_cb_param_t param; + bt_status_t ret; + btc_msg_t msg; - msg.sig = BTC_SIG_API_CB; - msg.pid = BTC_PID_GAP_BLE; - msg.act = ESP_GAP_BLE_SCAN_RSP_DATA_SET_COMPLETE_EVT; - param.adv_data_cmpl.status = status; + msg.sig = BTC_SIG_API_CB; + msg.pid = BTC_PID_GAP_BLE; + msg.act = ESP_GAP_BLE_SCAN_RSP_DATA_SET_COMPLETE_EVT; + param.adv_data_cmpl.status = status; - ret = btc_transfer_context(&msg, ¶m, - sizeof(esp_ble_gap_cb_param_t), NULL); + ret = btc_transfer_context(&msg, ¶m, + sizeof(esp_ble_gap_cb_param_t), NULL); - if (ret != BT_STATUS_SUCCESS) { - LOG_ERROR("%s btc_transfer_context failed\n", __func__); - } + if (ret != BT_STATUS_SUCCESS) { + LOG_ERROR("%s btc_transfer_context failed\n", __func__); + } } static void btc_set_scan_param_callback(tGATT_IF client_if, tBTA_STATUS status ) { - esp_ble_gap_cb_param_t param; - bt_status_t ret; - btc_msg_t msg; + esp_ble_gap_cb_param_t param; + bt_status_t ret; + btc_msg_t msg; - msg.sig = BTC_SIG_API_CB; - msg.pid = BTC_PID_GAP_BLE; - msg.act = ESP_GAP_BLE_SCAN_PARAM_SET_COMPLETE_EVT; - param.adv_data_cmpl.status = status; + msg.sig = BTC_SIG_API_CB; + msg.pid = BTC_PID_GAP_BLE; + msg.act = ESP_GAP_BLE_SCAN_PARAM_SET_COMPLETE_EVT; + param.adv_data_cmpl.status = status; - ret = btc_transfer_context(&msg, ¶m, - sizeof(esp_ble_gap_cb_param_t), NULL); + ret = btc_transfer_context(&msg, ¶m, + sizeof(esp_ble_gap_cb_param_t), NULL); - if (ret != BT_STATUS_SUCCESS) { - LOG_ERROR("%s btc_transfer_context failed\n", __func__); - } + if (ret != BT_STATUS_SUCCESS) { + LOG_ERROR("%s btc_transfer_context failed\n", __func__); + } } static void btc_ble_set_adv_data(esp_ble_adv_data_t *adv_data, - tBTA_SET_ADV_DATA_CMPL_CBACK p_adv_data_cback) + tBTA_SET_ADV_DATA_CMPL_CBACK p_adv_data_cback) { - tBTA_BLE_AD_MASK data_mask = 0; + tBTA_BLE_AD_MASK data_mask = 0; - btc_to_bta_adv_data(adv_data, &gl_bta_adv_data, &data_mask); + btc_to_bta_adv_data(adv_data, &gl_bta_adv_data, &data_mask); - if (!adv_data->set_scan_rsp){ - BTA_DmBleSetAdvConfig(data_mask, &gl_bta_adv_data, p_adv_data_cback); - }else{ - BTA_DmBleSetScanRsp(data_mask, &gl_bta_adv_data, p_adv_data_cback); - } + if (!adv_data->set_scan_rsp) { + BTA_DmBleSetAdvConfig(data_mask, &gl_bta_adv_data, p_adv_data_cback); + } else { + BTA_DmBleSetScanRsp(data_mask, &gl_bta_adv_data, p_adv_data_cback); + } } static void btc_ble_set_scan_param(esp_ble_scan_params_t *ble_scan_params, - tBLE_SCAN_PARAM_SETUP_CBACK scan_param_setup_cback) + tBLE_SCAN_PARAM_SETUP_CBACK scan_param_setup_cback) { - //tBTA_BLE_AD_MASK data_mask = 0; - BTA_DmSetBleScanParams (ESP_DEFAULT_GATT_IF, - ble_scan_params->scan_interval, - ble_scan_params->scan_window, - ble_scan_params->scan_type, - scan_param_setup_cback); - //btc_to_bta_adv_data(scan_rsp_data, &gl_bta_scan_rsp_data, &data_mask); - //BTA_DmBleSetScanRsp(data_mask, &gl_bta_scan_rsp_data, p_scan_rsp_data_cback); + //tBTA_BLE_AD_MASK data_mask = 0; + BTA_DmSetBleScanParams (ESP_DEFAULT_GATT_IF, + ble_scan_params->scan_interval, + ble_scan_params->scan_window, + ble_scan_params->scan_type, + scan_param_setup_cback); + //btc_to_bta_adv_data(scan_rsp_data, &gl_bta_scan_rsp_data, &data_mask); + //BTA_DmBleSetScanRsp(data_mask, &gl_bta_scan_rsp_data, p_scan_rsp_data_cback); } void btc_ble_start_advertising (esp_ble_adv_params_t *ble_adv_params) { - tBTA_DM_DISC disc_mode = 0; - tBTA_DM_CONN conn_mode = 0; - tBLE_BD_ADDR peer_addr; + tBTA_DM_DISC disc_mode = 0; + tBTA_DM_CONN conn_mode = 0; + tBLE_BD_ADDR peer_addr; - if (ble_adv_params->adv_type == ADV_TYPE_NONCONN_IND){ - conn_mode = BTA_DM_BLE_NON_CONNECTABLE; - }else { - conn_mode = BTA_DM_BLE_CONNECTABLE; - } + if (ble_adv_params->adv_type == ADV_TYPE_NONCONN_IND) { + conn_mode = BTA_DM_BLE_NON_CONNECTABLE; + } else { + conn_mode = BTA_DM_BLE_CONNECTABLE; + } - if (ble_adv_params->adv_filter_policy == ADV_FILTER_ALLOW_SCAN_ANY_CON_ANY){ - disc_mode = BTA_DM_BLE_GENERAL_DISCOVERABLE; - }else if (ble_adv_params->adv_filter_policy == ADV_FILTER_ALLOW_SCAN_WLST_CON_ANY - || ble_adv_params->adv_filter_policy == ADV_FILTER_ALLOW_SCAN_ANY_CON_WLST){ - disc_mode = BTA_DM_BLE_LIMITED_DISCOVERABLE; - }else if (ble_adv_params->adv_filter_policy == ADV_FILTER_ALLOW_SCAN_WLST_CON_WLST){ - disc_mode = BTA_DM_BLE_NON_DISCOVERABLE; - } + if (ble_adv_params->adv_filter_policy == ADV_FILTER_ALLOW_SCAN_ANY_CON_ANY) { + disc_mode = BTA_DM_BLE_GENERAL_DISCOVERABLE; + } else if (ble_adv_params->adv_filter_policy == ADV_FILTER_ALLOW_SCAN_WLST_CON_ANY + || ble_adv_params->adv_filter_policy == ADV_FILTER_ALLOW_SCAN_ANY_CON_WLST) { + disc_mode = BTA_DM_BLE_LIMITED_DISCOVERABLE; + } else if (ble_adv_params->adv_filter_policy == ADV_FILTER_ALLOW_SCAN_WLST_CON_WLST) { + disc_mode = BTA_DM_BLE_NON_DISCOVERABLE; + } - if (!API_BLE_ISVALID_PARAM(ble_adv_params->adv_int_min, BTM_BLE_ADV_INT_MIN, BTM_BLE_ADV_INT_MAX) || - !API_BLE_ISVALID_PARAM(ble_adv_params->adv_int_max, BTM_BLE_ADV_INT_MIN, BTM_BLE_ADV_INT_MAX)) - { - LOG_ERROR("Invalid advertisting interval parameters.\n"); - return ; - } + if (!API_BLE_ISVALID_PARAM(ble_adv_params->adv_int_min, BTM_BLE_ADV_INT_MIN, BTM_BLE_ADV_INT_MAX) || + !API_BLE_ISVALID_PARAM(ble_adv_params->adv_int_max, BTM_BLE_ADV_INT_MIN, BTM_BLE_ADV_INT_MAX)) { + LOG_ERROR("Invalid advertisting interval parameters.\n"); + return ; + } - if ((ble_adv_params->adv_type < ADV_TYPE_IND) && - (ble_adv_params->adv_type > ADV_TYPE_DIRECT_IND_LOW) ) - { - LOG_ERROR("Invalid advertisting type parameters.\n"); - return; - } + if ((ble_adv_params->adv_type < ADV_TYPE_IND) && + (ble_adv_params->adv_type > ADV_TYPE_DIRECT_IND_LOW) ) { + LOG_ERROR("Invalid advertisting type parameters.\n"); + return; + } - if ((ble_adv_params->adv_filter_policy < ADV_FILTER_ALLOW_SCAN_ANY_CON_ANY) && - (ble_adv_params->adv_filter_policy > ADV_FILTER_ALLOW_SCAN_WLST_CON_WLST) ) - { - LOG_ERROR("Invalid advertisting type parameters.\n"); - return; - } - LOG_DEBUG("API_Ble_AppStartAdvertising\n"); + if ((ble_adv_params->adv_filter_policy < ADV_FILTER_ALLOW_SCAN_ANY_CON_ANY) && + (ble_adv_params->adv_filter_policy > ADV_FILTER_ALLOW_SCAN_WLST_CON_WLST) ) { + LOG_ERROR("Invalid advertisting type parameters.\n"); + return; + } + LOG_DEBUG("API_Ble_AppStartAdvertising\n"); - /// - memcpy(peer_addr.bda, ble_adv_params->peer_addr, ESP_BD_ADDR_LEN); - peer_addr.type = ble_adv_params->peer_addr_type; - BTA_DmSetBleAdvParamsAll(ble_adv_params->adv_int_min, - ble_adv_params->adv_int_max, - ble_adv_params->adv_type, - ble_adv_params->own_addr_type, - ble_adv_params->channel_map, - ble_adv_params->adv_filter_policy, - &peer_addr); + /// + memcpy(peer_addr.bda, ble_adv_params->peer_addr, ESP_BD_ADDR_LEN); + peer_addr.type = ble_adv_params->peer_addr_type; + BTA_DmSetBleAdvParamsAll(ble_adv_params->adv_int_min, + ble_adv_params->adv_int_max, + ble_adv_params->adv_type, + ble_adv_params->own_addr_type, + ble_adv_params->channel_map, + ble_adv_params->adv_filter_policy, + &peer_addr); - /*set connectable,discoverable, pairable and paired only modes of local device*/ - BTA_DmSetVisibility(disc_mode, conn_mode, (UINT8)BTA_DM_NON_PAIRABLE, (UINT8)BTA_DM_CONN_ALL); + /*set connectable,discoverable, pairable and paired only modes of local device*/ + BTA_DmSetVisibility(disc_mode, conn_mode, (UINT8)BTA_DM_NON_PAIRABLE, (UINT8)BTA_DM_CONN_ALL); } static void btc_scan_params_callback(tGATT_IF gatt_if, tBTM_STATUS status) { - esp_ble_gap_cb_param_t param; - bt_status_t ret; - btc_msg_t msg; + esp_ble_gap_cb_param_t param; + bt_status_t ret; + btc_msg_t msg; - msg.sig = BTC_SIG_API_CB; - msg.pid = BTC_PID_GAP_BLE; - msg.act = ESP_GAP_BLE_SCAN_PARAM_SET_COMPLETE_EVT; - param.scan_param_cmpl.status = status; + msg.sig = BTC_SIG_API_CB; + msg.pid = BTC_PID_GAP_BLE; + msg.act = ESP_GAP_BLE_SCAN_PARAM_SET_COMPLETE_EVT; + param.scan_param_cmpl.status = status; - ret = btc_transfer_context(&msg, ¶m, - sizeof(esp_ble_gap_cb_param_t), NULL); + ret = btc_transfer_context(&msg, ¶m, + sizeof(esp_ble_gap_cb_param_t), NULL); - if (ret != BT_STATUS_SUCCESS) { - LOG_ERROR("%s btc_transfer_context failed\n", __func__); - } + if (ret != BT_STATUS_SUCCESS) { + LOG_ERROR("%s btc_transfer_context failed\n", __func__); + } } static void btc_ble_set_scan_params(esp_ble_scan_params_t *scan_params, - tBLE_SCAN_PARAM_SETUP_CBACK scan_param_setup_cback) + tBLE_SCAN_PARAM_SETUP_CBACK scan_param_setup_cback) { - if (API_BLE_ISVALID_PARAM(scan_params->scan_interval, BTM_BLE_SCAN_INT_MIN, BTM_BLE_SCAN_INT_MAX) && - API_BLE_ISVALID_PARAM(scan_params->scan_window, BTM_BLE_SCAN_WIN_MIN, BTM_BLE_SCAN_WIN_MAX) && - (scan_params->scan_type == BTM_BLE_SCAN_MODE_ACTI || scan_params->scan_type == BTM_BLE_SCAN_MODE_PASS)) - { - BTA_DmSetBleScanFilterParams(0 /*client_if*/, - scan_params->scan_interval, - scan_params->scan_window, - scan_params->scan_type, - scan_params->own_addr_type, - scan_params->scan_filter_policy, - scan_param_setup_cback); - } + if (API_BLE_ISVALID_PARAM(scan_params->scan_interval, BTM_BLE_SCAN_INT_MIN, BTM_BLE_SCAN_INT_MAX) && + API_BLE_ISVALID_PARAM(scan_params->scan_window, BTM_BLE_SCAN_WIN_MIN, BTM_BLE_SCAN_WIN_MAX) && + (scan_params->scan_type == BTM_BLE_SCAN_MODE_ACTI || scan_params->scan_type == BTM_BLE_SCAN_MODE_PASS)) { + BTA_DmSetBleScanFilterParams(0 /*client_if*/, + scan_params->scan_interval, + scan_params->scan_window, + scan_params->scan_type, + scan_params->own_addr_type, + scan_params->scan_filter_policy, + scan_param_setup_cback); + } } static void btc_search_callback(tBTA_DM_SEARCH_EVT event, tBTA_DM_SEARCH *p_data) { - esp_ble_gap_cb_param_t param; - btc_msg_t msg; - - msg.sig = BTC_SIG_API_CB; - msg.pid = BTC_PID_GAP_BLE; - msg.act = ESP_GAP_BLE_SCAN_RESULT_EVT; - - param.scan_rst.search_evt = event; + esp_ble_gap_cb_param_t param; + btc_msg_t msg; + + msg.sig = BTC_SIG_API_CB; + msg.pid = BTC_PID_GAP_BLE; + msg.act = ESP_GAP_BLE_SCAN_RESULT_EVT; + + param.scan_rst.search_evt = event; switch (event) { - case BTA_DM_INQ_RES_EVT: { - bdcpy(param.scan_rst.bda, p_data->inq_res.bd_addr); - param.scan_rst.dev_type = p_data->inq_res.device_type; - param.scan_rst.rssi = p_data->inq_res.rssi; - param.scan_rst.ble_addr_type = p_data->inq_res.ble_addr_type; - param.scan_rst.flag = p_data->inq_res.flag; - memcpy(param.scan_rst.ble_adv, p_data->inq_res.p_eir, - ESP_BLE_ADV_DATA_LEN_MAX); - break; - } - case BTA_DM_INQ_CMPL_EVT: { - param.scan_rst.num_resps = p_data->inq_cmpl.num_resps; - LOG_ERROR("%s BLE observe complete. Num Resp %d\n", __FUNCTION__,p_data->inq_cmpl.num_resps); - break; - } - case BTA_DM_DISC_RES_EVT: - LOG_ERROR("BTA_DM_DISC_RES_EVT\n"); - break; - case BTA_DM_DISC_BLE_RES_EVT: - LOG_ERROR("BTA_DM_DISC_BLE_RES_EVT\n"); - break; - case BTA_DM_DISC_CMPL_EVT: - LOG_ERROR("BTA_DM_DISC_CMPL_EVT\n"); - break; - case BTA_DM_DI_DISC_CMPL_EVT: - LOG_ERROR("BTA_DM_DI_DISC_CMPL_EVT\n"); - break; - case BTA_DM_SEARCH_CANCEL_CMPL_EVT: - LOG_ERROR("BTA_DM_SEARCH_CANCEL_CMPL_EVT\n"); - break; - default: - LOG_ERROR("%s : Unknown event 0x%x\n", __FUNCTION__, event); + case BTA_DM_INQ_RES_EVT: { + bdcpy(param.scan_rst.bda, p_data->inq_res.bd_addr); + param.scan_rst.dev_type = p_data->inq_res.device_type; + param.scan_rst.rssi = p_data->inq_res.rssi; + param.scan_rst.ble_addr_type = p_data->inq_res.ble_addr_type; + param.scan_rst.flag = p_data->inq_res.flag; + memcpy(param.scan_rst.ble_adv, p_data->inq_res.p_eir, + ESP_BLE_ADV_DATA_LEN_MAX); + break; + } + case BTA_DM_INQ_CMPL_EVT: { + param.scan_rst.num_resps = p_data->inq_cmpl.num_resps; + LOG_ERROR("%s BLE observe complete. Num Resp %d\n", __FUNCTION__, p_data->inq_cmpl.num_resps); + break; + } + case BTA_DM_DISC_RES_EVT: + LOG_ERROR("BTA_DM_DISC_RES_EVT\n"); + break; + case BTA_DM_DISC_BLE_RES_EVT: + LOG_ERROR("BTA_DM_DISC_BLE_RES_EVT\n"); + break; + case BTA_DM_DISC_CMPL_EVT: + LOG_ERROR("BTA_DM_DISC_CMPL_EVT\n"); + break; + case BTA_DM_DI_DISC_CMPL_EVT: + LOG_ERROR("BTA_DM_DI_DISC_CMPL_EVT\n"); + break; + case BTA_DM_SEARCH_CANCEL_CMPL_EVT: + LOG_ERROR("BTA_DM_SEARCH_CANCEL_CMPL_EVT\n"); + break; + default: + LOG_ERROR("%s : Unknown event 0x%x\n", __FUNCTION__, event); return; } btc_transfer_context(&msg, ¶m, sizeof(esp_ble_gap_cb_param_t), NULL); @@ -520,200 +488,200 @@ static void btc_search_callback(tBTA_DM_SEARCH_EVT event, tBTA_DM_SEARCH *p_data static void btc_ble_start_scanning(uint8_t duration, tBTA_DM_SEARCH_CBACK *results_cb) { - if((duration != 0) && (results_cb != NULL)) - { - ///Start scan the device - BTA_DmBleObserve(true, duration, results_cb); - }else{ - LOG_ERROR("The scan duration or p_results_cb invalid\n"); - } + if ((duration != 0) && (results_cb != NULL)) { + ///Start scan the device + BTA_DmBleObserve(true, duration, results_cb); + } else { + LOG_ERROR("The scan duration or p_results_cb invalid\n"); + } } static void btc_ble_stop_scanning(void) { - uint8_t duration = 0; - BTA_DmBleObserve(false, duration, NULL); + uint8_t duration = 0; + BTA_DmBleObserve(false, duration, NULL); } static void btc_ble_stop_advertising(void) { - bool stop_adv = false; - - BTA_DmBleBroadcast(stop_adv); + bool stop_adv = false; + + BTA_DmBleBroadcast(stop_adv); } -static void btc_ble_update_conn_params(BD_ADDR bd_addr, uint16_t min_int, - uint16_t max_int, uint16_t latency, uint16_t timeout) +static void btc_ble_update_conn_params(BD_ADDR bd_addr, uint16_t min_int, + uint16_t max_int, uint16_t latency, uint16_t timeout) { - if (min_int > max_int){ - min_int = max_int; - } + if (min_int > max_int) { + min_int = max_int; + } - if (min_int < BTM_BLE_CONN_INT_MIN || max_int > BTM_BLE_CONN_INT_MAX){ - LOG_ERROR("Invalid interval value.\n"); - } + if (min_int < BTM_BLE_CONN_INT_MIN || max_int > BTM_BLE_CONN_INT_MAX) { + LOG_ERROR("Invalid interval value.\n"); + } - BTA_DmBleUpdateConnectionParams(bd_addr, min_int, max_int, - latency, timeout); + BTA_DmBleUpdateConnectionParams(bd_addr, min_int, max_int, + latency, timeout); } static void btc_ble_set_pkt_data_len(BD_ADDR remote_device, uint16_t tx_data_length) { - if (tx_data_length > BTM_BLE_DATA_SIZE_MAX){ - tx_data_length = BTM_BLE_DATA_SIZE_MAX; - }else if (tx_data_length < BTM_BLE_DATA_SIZE_MIN){ - tx_data_length = BTM_BLE_DATA_SIZE_MIN; - } + if (tx_data_length > BTM_BLE_DATA_SIZE_MAX) { + tx_data_length = BTM_BLE_DATA_SIZE_MAX; + } else if (tx_data_length < BTM_BLE_DATA_SIZE_MIN) { + tx_data_length = BTM_BLE_DATA_SIZE_MIN; + } - BTA_DmBleSetDataLength(remote_device, tx_data_length); + BTA_DmBleSetDataLength(remote_device, tx_data_length); } static void btc_ble_set_rand_addr (BD_ADDR rand_addr) { - if (rand_addr != NULL){ - BTA_DmSetRandAddress(rand_addr); - }else{ - LOG_ERROR("Invalid randrom address.\n"); - } + if (rand_addr != NULL) { + BTA_DmSetRandAddress(rand_addr); + } else { + LOG_ERROR("Invalid randrom address.\n"); + } } static void btc_ble_config_local_privacy(bool privacy_enable) { - BTA_DmBleConfigLocalPrivacy(privacy_enable); + BTA_DmBleConfigLocalPrivacy(privacy_enable); } void btc_gap_ble_cb_handler(btc_msg_t *msg) { - esp_ble_gap_cb_param_t *param = (esp_ble_gap_cb_param_t *)msg->arg; - - switch (msg->act) { - case ESP_GAP_BLE_ADV_DATA_SET_COMPLETE_EVT: - BTC_GAP_BLE_CB_TO_APP(ESP_GAP_BLE_ADV_DATA_SET_COMPLETE_EVT, param); - break; - case ESP_GAP_BLE_SCAN_RSP_DATA_SET_COMPLETE_EVT : - BTC_GAP_BLE_CB_TO_APP(ESP_GAP_BLE_SCAN_RSP_DATA_SET_COMPLETE_EVT, param); - break; - case ESP_GAP_BLE_SCAN_PARAM_SET_COMPLETE_EVT: - BTC_GAP_BLE_CB_TO_APP(ESP_GAP_BLE_SCAN_PARAM_SET_COMPLETE_EVT, param); - break; - case ESP_GAP_BLE_SCAN_RESULT_EVT: - BTC_GAP_BLE_CB_TO_APP(ESP_GAP_BLE_SCAN_RESULT_EVT, param); - break; - default: - break; + esp_ble_gap_cb_param_t *param = (esp_ble_gap_cb_param_t *)msg->arg; + + switch (msg->act) { + case ESP_GAP_BLE_ADV_DATA_SET_COMPLETE_EVT: + BTC_GAP_BLE_CB_TO_APP(ESP_GAP_BLE_ADV_DATA_SET_COMPLETE_EVT, param); + break; + case ESP_GAP_BLE_SCAN_RSP_DATA_SET_COMPLETE_EVT : + BTC_GAP_BLE_CB_TO_APP(ESP_GAP_BLE_SCAN_RSP_DATA_SET_COMPLETE_EVT, param); + break; + case ESP_GAP_BLE_SCAN_PARAM_SET_COMPLETE_EVT: + BTC_GAP_BLE_CB_TO_APP(ESP_GAP_BLE_SCAN_PARAM_SET_COMPLETE_EVT, param); + break; + case ESP_GAP_BLE_SCAN_RESULT_EVT: + BTC_GAP_BLE_CB_TO_APP(ESP_GAP_BLE_SCAN_RESULT_EVT, param); + break; + default: + break; + + } - } - } void btc_gap_ble_arg_deep_copy(btc_msg_t *msg, void *p_dest, void *p_src) { - switch (msg->act) - { - case BTC_GAP_BLE_ACT_CFG_ADV_DATA: { - btc_ble_gap_args_t *src = (btc_ble_gap_args_t *)p_src; - btc_ble_gap_args_t *dst = (btc_ble_gap_args_t*) p_dest; + switch (msg->act) { + case BTC_GAP_BLE_ACT_CFG_ADV_DATA: { + btc_ble_gap_args_t *src = (btc_ble_gap_args_t *)p_src; + btc_ble_gap_args_t *dst = (btc_ble_gap_args_t *) p_dest; - if (src->cfg_adv_data.adv_data.p_manufacturer_data) { - dst->cfg_adv_data.adv_data.p_manufacturer_data = GKI_getbuf(src->cfg_adv_data.adv_data.manufacturer_len); - memcpy(dst->cfg_adv_data.adv_data.p_manufacturer_data, src->cfg_adv_data.adv_data.p_manufacturer_data, - src->cfg_adv_data.adv_data.manufacturer_len); - } + if (src->cfg_adv_data.adv_data.p_manufacturer_data) { + dst->cfg_adv_data.adv_data.p_manufacturer_data = GKI_getbuf(src->cfg_adv_data.adv_data.manufacturer_len); + memcpy(dst->cfg_adv_data.adv_data.p_manufacturer_data, src->cfg_adv_data.adv_data.p_manufacturer_data, + src->cfg_adv_data.adv_data.manufacturer_len); + } - if (src->cfg_adv_data.adv_data.p_service_data) { - dst->cfg_adv_data.adv_data.p_service_data = GKI_getbuf(src->cfg_adv_data.adv_data.service_data_len); - memcpy(dst->cfg_adv_data.adv_data.p_service_data, src->cfg_adv_data.adv_data.p_service_data, src->cfg_adv_data.adv_data.service_data_len); - } + if (src->cfg_adv_data.adv_data.p_service_data) { + dst->cfg_adv_data.adv_data.p_service_data = GKI_getbuf(src->cfg_adv_data.adv_data.service_data_len); + memcpy(dst->cfg_adv_data.adv_data.p_service_data, src->cfg_adv_data.adv_data.p_service_data, src->cfg_adv_data.adv_data.service_data_len); + } - if (src->cfg_adv_data.adv_data.p_service_uuid) { - dst->cfg_adv_data.adv_data.p_service_uuid = GKI_getbuf(src->cfg_adv_data.adv_data.service_uuid_len); - memcpy(dst->cfg_adv_data.adv_data.p_service_uuid, src->cfg_adv_data.adv_data.p_service_uuid, src->cfg_adv_data.adv_data.service_uuid_len); - } - break; - } - default: - LOG_ERROR("Unhandled deep copy %d\n", msg->act); - break; - } + if (src->cfg_adv_data.adv_data.p_service_uuid) { + dst->cfg_adv_data.adv_data.p_service_uuid = GKI_getbuf(src->cfg_adv_data.adv_data.service_uuid_len); + memcpy(dst->cfg_adv_data.adv_data.p_service_uuid, src->cfg_adv_data.adv_data.p_service_uuid, src->cfg_adv_data.adv_data.service_uuid_len); + } + break; + } + default: + LOG_ERROR("Unhandled deep copy %d\n", msg->act); + break; + } } static void btc_gap_ble_arg_deep_free(btc_msg_t *msg) { - LOG_DEBUG("%s \n", __func__); - switch (msg->act) { - case BTC_GAP_BLE_ACT_CFG_ADV_DATA: { - esp_ble_adv_data_t *adv = &((btc_ble_gap_args_t *)msg->arg)->cfg_adv_data.adv_data; - if (adv->p_service_data) - GKI_freebuf(adv->p_service_data); + LOG_DEBUG("%s \n", __func__); + switch (msg->act) { + case BTC_GAP_BLE_ACT_CFG_ADV_DATA: { + esp_ble_adv_data_t *adv = &((btc_ble_gap_args_t *)msg->arg)->cfg_adv_data.adv_data; + if (adv->p_service_data) { + GKI_freebuf(adv->p_service_data); + } - if (adv->p_service_uuid) - GKI_freebuf(adv->p_service_uuid); + if (adv->p_service_uuid) { + GKI_freebuf(adv->p_service_uuid); + } - if (adv->p_manufacturer_data) - GKI_freebuf(adv->p_manufacturer_data); - break; - } - default: - LOG_DEBUG("Unhandled deep free %d\n", msg->act); - break; - } + if (adv->p_manufacturer_data) { + GKI_freebuf(adv->p_manufacturer_data); + } + break; + } + default: + LOG_DEBUG("Unhandled deep free %d\n", msg->act); + break; + } } void btc_gap_ble_call_handler(btc_msg_t *msg) { - btc_ble_gap_args_t *arg = (btc_ble_gap_args_t *)msg->arg; - + btc_ble_gap_args_t *arg = (btc_ble_gap_args_t *)msg->arg; + LOG_DEBUG("%s act %d\n", __FUNCTION__, msg->act); - switch (msg->act) { - case BTC_GAP_BLE_ACT_CFG_ADV_DATA: - { - if(arg->cfg_adv_data.adv_data.set_scan_rsp == false){ - btc_ble_set_adv_data(&arg->cfg_adv_data.adv_data, btc_adv_data_callback); - }else{ - btc_ble_set_adv_data(&arg->cfg_adv_data.adv_data, btc_scan_rsp_data_callback); - } - break; - } - case BTC_GAP_BLE_ACT_SET_SCAN_PARAM: - btc_ble_set_scan_param(&arg->set_scan_param.scan_params, btc_set_scan_param_callback); - break; - case BTC_GAP_BLE_ACT_START_SCAN: - btc_ble_start_scanning(arg->start_scan.duration, btc_search_callback); - break; - case BTC_GAP_BLE_ACT_STOP_SCAN: - btc_ble_stop_scanning(); - break; - case BTC_GAP_BLE_ACT_START_ADV: - btc_ble_start_advertising(&arg->start_adv.adv_params); - break; - case BTC_GAP_BLE_ACT_STOP_ADV: - btc_ble_stop_advertising(); - break; - case BTC_GAP_BLE_ACT_UPDATE_CONN_PARAM: - btc_ble_update_conn_params(arg->conn_update_params.conn_params.bda, - arg->conn_update_params.conn_params.min_int, - arg->conn_update_params.conn_params.max_int, - arg->conn_update_params.conn_params.latency, - arg->conn_update_params.conn_params.timeout); - break; - case BTC_GAP_BLE_ACT_SET_PKT_DATA_LEN: - btc_ble_set_pkt_data_len(arg->set_pkt_data_len.remote_device, arg->set_pkt_data_len.tx_data_length); - break; - case BTC_GAP_BLE_ACT_SET_RAND_ADDRESS: - btc_ble_set_rand_addr(arg->set_rand_addr.rand_addr); - break; - case BTC_GAP_BLE_ACT_CONFIG_LOCAL_PRIVACY: - btc_ble_config_local_privacy(arg->cfg_local_privacy.privacy_enable); - break; - case BTC_GAP_BLE_ACT_SET_DEV_NAME: - BTA_DmSetDeviceName(arg->set_dev_name.device_name); - break; - default: - break; - } + switch (msg->act) { + case BTC_GAP_BLE_ACT_CFG_ADV_DATA: { + if (arg->cfg_adv_data.adv_data.set_scan_rsp == false) { + btc_ble_set_adv_data(&arg->cfg_adv_data.adv_data, btc_adv_data_callback); + } else { + btc_ble_set_adv_data(&arg->cfg_adv_data.adv_data, btc_scan_rsp_data_callback); + } + break; + } + case BTC_GAP_BLE_ACT_SET_SCAN_PARAM: + btc_ble_set_scan_param(&arg->set_scan_param.scan_params, btc_set_scan_param_callback); + break; + case BTC_GAP_BLE_ACT_START_SCAN: + btc_ble_start_scanning(arg->start_scan.duration, btc_search_callback); + break; + case BTC_GAP_BLE_ACT_STOP_SCAN: + btc_ble_stop_scanning(); + break; + case BTC_GAP_BLE_ACT_START_ADV: + btc_ble_start_advertising(&arg->start_adv.adv_params); + break; + case BTC_GAP_BLE_ACT_STOP_ADV: + btc_ble_stop_advertising(); + break; + case BTC_GAP_BLE_ACT_UPDATE_CONN_PARAM: + btc_ble_update_conn_params(arg->conn_update_params.conn_params.bda, + arg->conn_update_params.conn_params.min_int, + arg->conn_update_params.conn_params.max_int, + arg->conn_update_params.conn_params.latency, + arg->conn_update_params.conn_params.timeout); + break; + case BTC_GAP_BLE_ACT_SET_PKT_DATA_LEN: + btc_ble_set_pkt_data_len(arg->set_pkt_data_len.remote_device, arg->set_pkt_data_len.tx_data_length); + break; + case BTC_GAP_BLE_ACT_SET_RAND_ADDRESS: + btc_ble_set_rand_addr(arg->set_rand_addr.rand_addr); + break; + case BTC_GAP_BLE_ACT_CONFIG_LOCAL_PRIVACY: + btc_ble_config_local_privacy(arg->cfg_local_privacy.privacy_enable); + break; + case BTC_GAP_BLE_ACT_SET_DEV_NAME: + BTA_DmSetDeviceName(arg->set_dev_name.device_name); + break; + default: + break; + } - btc_gap_ble_arg_deep_free(msg); + btc_gap_ble_arg_deep_free(msg); } diff --git a/components/bt/bluedroid/btc/profile/std/gap/btc_gap_bt.c b/components/bt/bluedroid/btc/profile/std/gap/btc_gap_bt.c index 8cadd79d70..52551ec0e1 100644 --- a/components/bt/bluedroid/btc/profile/std/gap/btc_gap_bt.c +++ b/components/bt/bluedroid/btc/profile/std/gap/btc_gap_bt.c @@ -21,7 +21,7 @@ esp_err_t esp_bt_gap_set_scan_mode(bt_scan_mode_t mode) tBTA_DM_DISC disc_mode; tBTA_DM_CONN conn_mode; - switch(mode) { + switch (mode) { case BT_SCAN_MODE_NONE: disc_mode = BTA_DM_NON_DISC; conn_mode = BTA_DM_NON_CONN; @@ -44,6 +44,6 @@ esp_err_t esp_bt_gap_set_scan_mode(bt_scan_mode_t mode) // BTIF_TRACE_EVENT("set property scan mode : %x", mode); BTA_DmSetVisibility(disc_mode, conn_mode, BTA_DM_IGNORE, BTA_DM_IGNORE); - + return ESP_OK; } diff --git a/components/bt/bluedroid/btc/profile/std/gatt/btc_gatt_util.c b/components/bt/bluedroid/btc/profile/std/gatt/btc_gatt_util.c index dc3595167f..c19ace2f78 100644 --- a/components/bt/bluedroid/btc/profile/std/gatt/btc_gatt_util.c +++ b/components/bt/bluedroid/btc/profile/std/gatt/btc_gatt_util.c @@ -21,65 +21,70 @@ #define GATTC_READ_VALUE_TYPE_AGG_FORMAT 0x2905 /* Characteristic Aggregate Format*/ static unsigned char BASE_UUID[16] = { - 0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80, - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + 0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80, + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; /******************************************************************************* * BTIF -> BTA conversion functions *******************************************************************************/ -int uuidType(unsigned char* p_uuid) +int uuidType(unsigned char *p_uuid) { int i = 0; int match = 0; int all_zero = 1; - for(i = 0; i != 16; ++i) - { - if (i == 12 || i == 13) + for (i = 0; i != 16; ++i) { + if (i == 12 || i == 13) { continue; + } - if (p_uuid[i] == BASE_UUID[i]) + if (p_uuid[i] == BASE_UUID[i]) { ++match; + } - if (p_uuid[i] != 0) + if (p_uuid[i] != 0) { all_zero = 0; + } } - if (all_zero) + if (all_zero) { return 0; - if (match == 12) + } + if (match == 12) { return LEN_UUID_32; - if (match == 14) + } + if (match == 14) { return LEN_UUID_16; + } return LEN_UUID_128; } int btc128_to_bta_uuid(tBT_UUID *p_dest, uint8_t *p_src) { - int i = 0; + int i = 0; - p_dest->len = uuidType(p_src); + p_dest->len = uuidType(p_src); - switch (p_dest->len) - { - case LEN_UUID_16: - p_dest->uu.uuid16 = (p_src[13] << 8) + p_src[12]; - break; + switch (p_dest->len) { + case LEN_UUID_16: + p_dest->uu.uuid16 = (p_src[13] << 8) + p_src[12]; + break; - case LEN_UUID_32: - p_dest->uu.uuid32 = (p_src[13] << 8) + p_src[12]; - p_dest->uu.uuid32 += (p_src[15] << 24) + (p_src[14] << 16); - break; + case LEN_UUID_32: + p_dest->uu.uuid32 = (p_src[13] << 8) + p_src[12]; + p_dest->uu.uuid32 += (p_src[15] << 24) + (p_src[14] << 16); + break; - case LEN_UUID_128: - for(i = 0; i != 16; ++i) - p_dest->uu.uuid128[i] = p_src[i]; - break; + case LEN_UUID_128: + for (i = 0; i != 16; ++i) { + p_dest->uu.uuid128[i] = p_src[i]; + } + break; - default: - LOG_ERROR("%s: Unknown UUID length %d!", __FUNCTION__, p_dest->len); - break; - } + default: + LOG_ERROR("%s: Unknown UUID length %d!", __FUNCTION__, p_dest->len); + break; + } } /******************************************************************************* @@ -88,28 +93,28 @@ int btc128_to_bta_uuid(tBT_UUID *p_dest, uint8_t *p_src) void btc_to_bta_uuid(tBT_UUID *p_dest, esp_bt_uuid_t *p_src) { - p_dest->len = p_src->len; - if (p_src->len == LEN_UUID_16) { - p_dest->uu.uuid16 = p_src->uuid.uuid16; - } else if (p_src->len == LEN_UUID_32) { - p_dest->uu.uuid32 = p_src->uuid.uuid32; - } else if (p_src->len == LEN_UUID_128) { - memcpy(&p_dest->uu.uuid128, p_src->uuid.uuid128, p_dest->len); - } else { - LOG_ERROR("%s UUID len is invalid %d\n", __func__, p_dest->len); - } + p_dest->len = p_src->len; + if (p_src->len == LEN_UUID_16) { + p_dest->uu.uuid16 = p_src->uuid.uuid16; + } else if (p_src->len == LEN_UUID_32) { + p_dest->uu.uuid32 = p_src->uuid.uuid32; + } else if (p_src->len == LEN_UUID_128) { + memcpy(&p_dest->uu.uuid128, p_src->uuid.uuid128, p_dest->len); + } else { + LOG_ERROR("%s UUID len is invalid %d\n", __func__, p_dest->len); + } } void btc_to_bta_gatt_id(tBTA_GATT_ID *p_dest, esp_gatt_id_t *p_src) { - p_dest->inst_id = p_src->inst_id; - btc_to_bta_uuid(&p_dest->uuid, &p_src->uuid); + p_dest->inst_id = p_src->inst_id; + btc_to_bta_uuid(&p_dest->uuid, &p_src->uuid); } void btc_to_bta_srvc_id(tBTA_GATT_SRVC_ID *p_dest, esp_gatt_srvc_id_t *p_src) { - p_dest->is_primary = p_src->is_primary; - btc_to_bta_gatt_id(&p_dest->id, &p_src->id); + p_dest->is_primary = p_src->is_primary; + btc_to_bta_gatt_id(&p_dest->id, &p_src->id); } @@ -118,28 +123,28 @@ void btc_to_bta_srvc_id(tBTA_GATT_SRVC_ID *p_dest, esp_gatt_srvc_id_t *p_src) *******************************************************************************/ void bta_to_btc_uuid(esp_bt_uuid_t *p_dest, tBT_UUID *p_src) { - p_dest->len = p_src->len; - if (p_src->len == LEN_UUID_16) { - p_dest->uuid.uuid16 = p_src->uu.uuid16; - } else if (p_src->len == LEN_UUID_32) { - p_dest->uuid.uuid32 = p_src->uu.uuid32; - } else if (p_src->len == LEN_UUID_128) { - memcpy(&p_dest->uuid.uuid128, p_src->uu.uuid128, p_dest->len); - } else { - LOG_ERROR("%s UUID len is invalid %d\n", __func__, p_dest->len); - } + p_dest->len = p_src->len; + if (p_src->len == LEN_UUID_16) { + p_dest->uuid.uuid16 = p_src->uu.uuid16; + } else if (p_src->len == LEN_UUID_32) { + p_dest->uuid.uuid32 = p_src->uu.uuid32; + } else if (p_src->len == LEN_UUID_128) { + memcpy(&p_dest->uuid.uuid128, p_src->uu.uuid128, p_dest->len); + } else { + LOG_ERROR("%s UUID len is invalid %d\n", __func__, p_dest->len); + } } void bta_to_btc_gatt_id(esp_gatt_id_t *p_dest, tBTA_GATT_ID *p_src) { - p_dest->inst_id = p_src->inst_id; - bta_to_btc_uuid(&p_dest->uuid, &p_src->uuid); + p_dest->inst_id = p_src->inst_id; + bta_to_btc_uuid(&p_dest->uuid, &p_src->uuid); } void bta_to_btc_srvc_id(esp_gatt_srvc_id_t *p_dest, tBTA_GATT_SRVC_ID *p_src) { - p_dest->is_primary = p_src->is_primary; - bta_to_btc_gatt_id(&p_dest->id, &p_src->id); + p_dest->is_primary = p_src->is_primary; + bta_to_btc_gatt_id(&p_dest->id, &p_src->id); } void btc_to_bta_response(tBTA_GATTS_RSP *p_dest, esp_gatt_rsp_t *p_src) @@ -153,21 +158,16 @@ void btc_to_bta_response(tBTA_GATTS_RSP *p_dest, esp_gatt_rsp_t *p_src) uint16_t get_uuid16(tBT_UUID *p_uuid) { - if (p_uuid->len == LEN_UUID_16) - { - return p_uuid->uu.uuid16; - } - else if (p_uuid->len == LEN_UUID_128) - { - UINT16 u16; - UINT8 *p = &p_uuid->uu.uuid128[LEN_UUID_128 - 4]; - STREAM_TO_UINT16(u16, p); - return u16; - } - else /* p_uuid->len == LEN_UUID_32 */ - { - return(UINT16) p_uuid->uu.uuid32; - } + if (p_uuid->len == LEN_UUID_16) { + return p_uuid->uu.uuid16; + } else if (p_uuid->len == LEN_UUID_128) { + UINT16 u16; + UINT8 *p = &p_uuid->uu.uuid128[LEN_UUID_128 - 4]; + STREAM_TO_UINT16(u16, p); + return u16; + } else { /* p_uuid->len == LEN_UUID_32 */ + return (UINT16) p_uuid->uu.uuid32; + } } uint16_t set_read_value(esp_ble_gattc_cb_param_t *p_dest, tBTA_GATTC_READ *p_src) { @@ -182,32 +182,27 @@ uint16_t set_read_value(esp_ble_gattc_cb_param_t *p_dest, tBTA_GATTC_READ *p_src descr_type = get_uuid16(&p_src->descr_type.uuid); - switch (descr_type) - { - case GATT_UUID_CHAR_AGG_FORMAT: - /* not supported */ - p_dest->read.value_type = GATTC_READ_VALUE_TYPE_AGG_FORMAT; - p_dest->read.value_len = 0; - break; + switch (descr_type) { + case GATT_UUID_CHAR_AGG_FORMAT: + /* not supported */ + p_dest->read.value_type = GATTC_READ_VALUE_TYPE_AGG_FORMAT; + p_dest->read.value_len = 0; + break; - default: - if (( p_src->status == BTA_GATT_OK ) &&(p_src->p_value != NULL)) - { - LOG_INFO("%s unformat.len = %d ", __FUNCTION__, p_src->p_value->unformat.len); - p_dest->read.value_len = p_src->p_value->unformat.len; - if ( p_src->p_value->unformat.len > 0 && p_src->p_value->unformat.p_value != NULL ) - { - p_dest->read.value = p_src->p_value->unformat.p_value; - } - len += p_src->p_value->unformat.len; - } - else - { - p_dest->read.value_len = 0; + default: + if (( p_src->status == BTA_GATT_OK ) && (p_src->p_value != NULL)) { + LOG_INFO("%s unformat.len = %d ", __FUNCTION__, p_src->p_value->unformat.len); + p_dest->read.value_len = p_src->p_value->unformat.len; + if ( p_src->p_value->unformat.len > 0 && p_src->p_value->unformat.p_value != NULL ) { + p_dest->read.value = p_src->p_value->unformat.p_value; } + len += p_src->p_value->unformat.len; + } else { + p_dest->read.value_len = 0; + } - p_dest->read.value_type = GATTC_READ_VALUE_TYPE_VALUE; - break; + p_dest->read.value_type = GATTC_READ_VALUE_TYPE_VALUE; + break; } return len; diff --git a/components/bt/bluedroid/btc/profile/std/gatt/btc_gattc.c b/components/bt/bluedroid/btc/profile/std/gatt/btc_gattc.c index fa74c1290e..8fe99c5e63 100644 --- a/components/bt/bluedroid/btc/profile/std/gatt/btc_gattc.c +++ b/components/bt/bluedroid/btc/profile/std/gatt/btc_gattc.c @@ -26,81 +26,82 @@ void btc_gattc_arg_deep_copy(btc_msg_t *msg, void *p_dest, void *p_src) { - btc_ble_gattc_args_t *dst = (btc_ble_gattc_args_t*) p_dest; - btc_ble_gattc_args_t *src = (btc_ble_gattc_args_t *)p_src; + btc_ble_gattc_args_t *dst = (btc_ble_gattc_args_t *) p_dest; + btc_ble_gattc_args_t *src = (btc_ble_gattc_args_t *)p_src; - switch (msg->act) { - case BTC_GATTC_ACT_WRITE_CHAR: { - dst->write_char.value = (uint8_t *)GKI_getbuf(src->write_char.value_len); - if (dst->write_char.value) { - memcpy(dst->write_char.value, src->write_char.value, src->write_char.value_len); - } else { - LOG_ERROR("%s %d no mem\n", __func__, msg->act); - } - break; - } - case BTC_GATTC_ACT_WRITE_CHAR_DESCR: { - dst->write_descr.value = (uint8_t *)GKI_getbuf(src->write_descr.value_len); - if (dst->write_descr.value) { - memcpy(dst->write_descr.value, src->write_descr.value, src->write_descr.value_len); - } else { - LOG_ERROR("%s %d no mem\n", __func__, msg->act); - } - break; - } - case BTC_GATTC_ACT_PREPARE_WRITE: { - dst->prep_write.value = (uint8_t *)GKI_getbuf(src->prep_write.value_len); - if (dst->prep_write.value) { - memcpy(dst->prep_write.value, src->prep_write.value, src->prep_write.value_len); - } else { - LOG_ERROR("%s %d no mem\n", __func__, msg->act); - } - break; - } - default: - LOG_DEBUG("%s Unhandled deep copy %d\n", __func__, msg->act); - break; - } + switch (msg->act) { + case BTC_GATTC_ACT_WRITE_CHAR: { + dst->write_char.value = (uint8_t *)GKI_getbuf(src->write_char.value_len); + if (dst->write_char.value) { + memcpy(dst->write_char.value, src->write_char.value, src->write_char.value_len); + } else { + LOG_ERROR("%s %d no mem\n", __func__, msg->act); + } + break; + } + case BTC_GATTC_ACT_WRITE_CHAR_DESCR: { + dst->write_descr.value = (uint8_t *)GKI_getbuf(src->write_descr.value_len); + if (dst->write_descr.value) { + memcpy(dst->write_descr.value, src->write_descr.value, src->write_descr.value_len); + } else { + LOG_ERROR("%s %d no mem\n", __func__, msg->act); + } + break; + } + case BTC_GATTC_ACT_PREPARE_WRITE: { + dst->prep_write.value = (uint8_t *)GKI_getbuf(src->prep_write.value_len); + if (dst->prep_write.value) { + memcpy(dst->prep_write.value, src->prep_write.value, src->prep_write.value_len); + } else { + LOG_ERROR("%s %d no mem\n", __func__, msg->act); + } + break; + } + default: + LOG_DEBUG("%s Unhandled deep copy %d\n", __func__, msg->act); + break; + } } void btc_gattc_arg_deep_free(btc_msg_t *msg) { - btc_ble_gattc_args_t *arg = (btc_ble_gattc_args_t*)msg->arg; + btc_ble_gattc_args_t *arg = (btc_ble_gattc_args_t *)msg->arg; - switch (msg->act) { - case BTC_GATTC_ACT_WRITE_CHAR: { - if (arg->write_char.value) { - GKI_freebuf(arg->write_char.value); - } - break; - } - case BTC_GATTC_ACT_WRITE_CHAR_DESCR: { - if (arg->write_descr.value) { - GKI_freebuf(arg->write_descr.value); - } - break; - } - case BTC_GATTC_ACT_PREPARE_WRITE: { - if (arg->prep_write.value) { - GKI_freebuf(arg->prep_write.value); - } - break; - } - default: - LOG_DEBUG("%s Unhandled deep free %d\n", __func__, msg->act); - break; - } + switch (msg->act) { + case BTC_GATTC_ACT_WRITE_CHAR: { + if (arg->write_char.value) { + GKI_freebuf(arg->write_char.value); + } + break; + } + case BTC_GATTC_ACT_WRITE_CHAR_DESCR: { + if (arg->write_descr.value) { + GKI_freebuf(arg->write_descr.value); + } + break; + } + case BTC_GATTC_ACT_PREPARE_WRITE: { + if (arg->prep_write.value) { + GKI_freebuf(arg->prep_write.value); + } + break; + } + default: + LOG_DEBUG("%s Unhandled deep free %d\n", __func__, msg->act); + break; + } } // TODO: to be finished, used in deep-copying data from lower layer static void btc_gattc_copy_req_data(btc_msg_t *msg, void *p_dest, void *p_src) { - tBTA_GATTC *p_dest_data = (tBTA_GATTC*) p_dest; - tBTA_GATTC *p_src_data = (tBTA_GATTC*) p_src; + tBTA_GATTC *p_dest_data = (tBTA_GATTC *) p_dest; + tBTA_GATTC *p_src_data = (tBTA_GATTC *) p_src; - if (!p_src_data || !p_dest_data) - return; + if (!p_src_data || !p_dest_data) { + return; + } // Allocate buffer for request data if necessary switch (msg->act) { @@ -117,7 +118,7 @@ static void btc_gattc_free_req_data(btc_msg_t *msg) static void btc_gattc_cback(tBTA_GATTC_EVT event, tBTA_GATTC *p_data) { - bt_status_t ret; + bt_status_t ret; btc_msg_t msg; msg.sig = BTC_SIG_API_CB; @@ -125,8 +126,9 @@ static void btc_gattc_cback(tBTA_GATTC_EVT event, tBTA_GATTC *p_data) msg.act = (uint8_t) event; ret = btc_transfer_context(&msg, p_data, sizeof(tBTA_GATTC), btc_gattc_copy_req_data); - if (ret) - LOG_ERROR("%s transfer failed\n", __func__); + if (ret) { + LOG_ERROR("%s transfer failed\n", __func__); + } } static void btc_gattc_app_register(btc_ble_gattc_args_t *arg) @@ -162,13 +164,13 @@ static void btc_gattc_cfg_mtu(btc_ble_gattc_args_t *arg) static void btc_gattc_search_service(btc_ble_gattc_args_t *arg) { tBT_UUID srvc_uuid; - - if (arg->search_srvc.filter_uuid_enable) { - btc_to_bta_uuid(&srvc_uuid, &arg->search_srvc.filter_uuid); - BTA_GATTC_ServiceSearchRequest(arg->search_srvc.conn_id, &srvc_uuid); - } else { - BTA_GATTC_ServiceSearchRequest(arg->search_srvc.conn_id, NULL); - } + + if (arg->search_srvc.filter_uuid_enable) { + btc_to_bta_uuid(&srvc_uuid, &arg->search_srvc.filter_uuid); + BTA_GATTC_ServiceSearchRequest(arg->search_srvc.conn_id, &srvc_uuid); + } else { + BTA_GATTC_ServiceSearchRequest(arg->search_srvc.conn_id, NULL); + } } static void btc_gattc_get_first_char(btc_ble_gattc_args_t *arg) @@ -177,14 +179,14 @@ static void btc_gattc_get_first_char(btc_ble_gattc_args_t *arg) tBTA_GATT_STATUS status; tBTA_GATTC_CHAR_ID out_char_id; tBTA_GATT_CHAR_PROP out_char_prop; - tBTA_GATT_SRVC_ID srvc_id; + tBTA_GATT_SRVC_ID srvc_id; esp_ble_gattc_cb_param_t param; - + btc_to_bta_srvc_id(&srvc_id, &arg->get_first_char.service_id); status = BTA_GATTC_GetFirstChar(arg->get_first_char.conn_id, &srvc_id, NULL, &out_char_id, &out_char_prop); if (status == 0) { - bta_to_btc_gatt_id(&char_id, &out_char_id.char_id); + bta_to_btc_gatt_id(&char_id, &out_char_id.char_id); } memset(¶m, 0, sizeof(esp_ble_gattc_cb_param_t)); @@ -208,12 +210,12 @@ static void btc_gattc_get_next_char(btc_ble_gattc_args_t *arg) btc_to_bta_gatt_id(&in_char_id.char_id, &arg->get_next_char.char_id); status = BTA_GATTC_GetNextChar(arg->get_next_char.conn_id, &in_char_id, NULL, - &out_char_id, &out_char_prop); + &out_char_id, &out_char_prop); if (status == 0) { - bta_to_btc_gatt_id(&char_id, &out_char_id.char_id); + bta_to_btc_gatt_id(&char_id, &out_char_id.char_id); } - + memset(¶m, 0, sizeof(esp_ble_gattc_cb_param_t)); param.get_char.conn_id = arg->get_next_char.conn_id; param.get_char.status = status; @@ -230,15 +232,15 @@ static void btc_gattc_get_first_descr(btc_ble_gattc_args_t *arg) tBTA_GATTC_CHAR_ID in_char_id; tBTA_GATTC_CHAR_DESCR_ID out_char_descr_id; esp_ble_gattc_cb_param_t param; - + btc_to_bta_srvc_id(&in_char_id.srvc_id, &arg->get_first_descr.service_id); btc_to_bta_gatt_id(&in_char_id.char_id, &arg->get_first_descr.char_id); - + status = BTA_GATTC_GetFirstCharDescr(arg->get_first_descr.conn_id, &in_char_id, NULL, - &out_char_descr_id); + &out_char_descr_id); if (status == 0) { - bta_to_btc_gatt_id(&descr_id, &out_char_descr_id.descr_id); + bta_to_btc_gatt_id(&descr_id, &out_char_descr_id.descr_id); } memset(¶m, 0, sizeof(esp_ble_gattc_cb_param_t)); @@ -257,15 +259,15 @@ static void btc_gattc_get_next_descr(btc_ble_gattc_args_t *arg) tBTA_GATTC_CHAR_DESCR_ID in_char_descr_id; tBTA_GATTC_CHAR_DESCR_ID out_char_descr_id; esp_ble_gattc_cb_param_t param; - + btc_to_bta_srvc_id(&in_char_descr_id.char_id.srvc_id, &arg->get_next_descr.service_id); btc_to_bta_gatt_id(&in_char_descr_id.char_id.char_id, &arg->get_next_descr.char_id); btc_to_bta_gatt_id(&in_char_descr_id.descr_id, &arg->get_next_descr.descr_id); - + status = BTA_GATTC_GetNextCharDescr(arg->get_next_descr.conn_id, &in_char_descr_id - , NULL, &out_char_descr_id); + , NULL, &out_char_descr_id); if (status == 0) { - bta_to_btc_gatt_id(&descr_id, &out_char_descr_id.descr_id); + bta_to_btc_gatt_id(&descr_id, &out_char_descr_id.descr_id); } memset(¶m, 0, sizeof(esp_ble_gattc_cb_param_t)); @@ -284,11 +286,11 @@ static void btc_gattc_get_first_incl_service(btc_ble_gattc_args_t *arg) tBTA_GATT_SRVC_ID srvc_id; tBTA_GATTC_INCL_SVC_ID out_incl_svc_id; esp_ble_gattc_cb_param_t param; - + btc_to_bta_srvc_id(&srvc_id, &arg->get_first_incl_srvc.service_id); status = BTA_GATTC_GetFirstIncludedService(arg->get_first_incl_srvc.conn_id, &srvc_id, - NULL, &out_incl_svc_id); + NULL, &out_incl_svc_id); bta_to_btc_srvc_id(&incl_srvc_id, &out_incl_svc_id.incl_svc_id); @@ -307,12 +309,12 @@ static void btc_gattc_get_next_incl_service(btc_ble_gattc_args_t *arg) tBTA_GATTC_INCL_SVC_ID in_incl_svc_id; tBTA_GATTC_INCL_SVC_ID out_incl_svc_id; esp_ble_gattc_cb_param_t param; - + btc_to_bta_srvc_id(&in_incl_svc_id.srvc_id, &arg->get_next_incl_srvc.service_id); btc_to_bta_srvc_id(&in_incl_svc_id.incl_svc_id, &arg->get_next_incl_srvc.start_service_id); status = BTA_GATTC_GetNextIncludedService(arg->get_next_incl_srvc.conn_id, &in_incl_svc_id, - NULL, &out_incl_svc_id); + NULL, &out_incl_svc_id); bta_to_btc_srvc_id(&incl_srvc_id, &out_incl_svc_id.incl_svc_id); @@ -338,7 +340,7 @@ static void btc_gattc_read_char_descr(btc_ble_gattc_args_t *arg) btc_to_bta_srvc_id(&in_char_descr_id.char_id.srvc_id, &arg->read_descr.service_id); btc_to_bta_gatt_id(&in_char_descr_id.char_id.char_id, &arg->read_descr.char_id); btc_to_bta_gatt_id(&in_char_descr_id.descr_id, &arg->read_descr.descr_id); - + BTA_GATTC_ReadCharDescr(arg->read_descr.conn_id, &in_char_descr_id, arg->read_descr.auth_req); } @@ -347,7 +349,7 @@ static void btc_gattc_write_char(btc_ble_gattc_args_t *arg) //TODO: check the write type tBTA_GATTC_CHAR_ID in_char_id; tBTA_GATTC_WRITE_TYPE write_type = BTA_GATTC_TYPE_WRITE; - + btc_to_bta_srvc_id(&in_char_id.srvc_id, &arg->write_char.service_id); btc_to_bta_gatt_id(&in_char_id.char_id, &arg->write_char.char_id); @@ -383,11 +385,11 @@ static void btc_gattc_prepare_write(btc_ble_gattc_args_t *arg) btc_to_bta_gatt_id(&in_char_id.char_id, &arg->prep_write.char_id); BTA_GATTC_PrepareWrite(arg->prep_write.conn_id, - &in_char_id, - arg->prep_write.offset, - arg->prep_write.value_len, - arg->prep_write.value, - arg->prep_write.auth_req); + &in_char_id, + arg->prep_write.offset, + arg->prep_write.value_len, + arg->prep_write.value, + arg->prep_write.auth_req); } static void btc_gattc_execute_wrtie(btc_ble_gattc_args_t *arg) @@ -400,13 +402,13 @@ static void btc_gattc_reg_for_notify(btc_ble_gattc_args_t *arg) tBTA_GATT_STATUS status; tBTA_GATTC_CHAR_ID in_char_id; esp_ble_gattc_cb_param_t param; - + btc_to_bta_srvc_id(&in_char_id.srvc_id, &arg->reg_for_notify.service_id); btc_to_bta_gatt_id(&in_char_id.char_id, &arg->reg_for_notify.char_id); - + status = BTA_GATTC_RegisterForNotifications(arg->reg_for_notify.gatt_if, - arg->reg_for_notify.remote_bda, - &in_char_id); + arg->reg_for_notify.remote_bda, + &in_char_id); memset(¶m, 0, sizeof(esp_ble_gattc_cb_param_t)); param.reg_for_notify.status = status; @@ -420,14 +422,14 @@ static void btc_gattc_unreg_for_notify(btc_ble_gattc_args_t *arg) tBTA_GATT_STATUS status; tBTA_GATTC_CHAR_ID in_char_id; esp_ble_gattc_cb_param_t param; - + btc_to_bta_srvc_id(&in_char_id.srvc_id, &arg->unreg_for_notify.service_id); btc_to_bta_gatt_id(&in_char_id.char_id, &arg->unreg_for_notify.char_id); - + status = BTA_GATTC_DeregisterForNotifications(arg->unreg_for_notify.gatt_if, - arg->unreg_for_notify.remote_bda, - &in_char_id); - + arg->unreg_for_notify.remote_bda, + &in_char_id); + memset(¶m, 0, sizeof(esp_ble_gattc_cb_param_t)); param.unreg_for_notify.status = status; memcpy(¶m.unreg_for_notify.srvc_id, &arg->unreg_for_notify.service_id, sizeof(esp_gatt_srvc_id_t)); @@ -488,8 +490,8 @@ void btc_gattc_call_handler(btc_msg_t *msg) btc_gattc_write_char_descr(arg); break; case BTC_GATTC_ACT_PREPARE_WRITE: - btc_gattc_prepare_write(arg); - break; + btc_gattc_prepare_write(arg); + break; case BTC_GATTC_ACT_EXECUTE_WRITE: btc_gattc_execute_wrtie(arg); break; @@ -501,10 +503,10 @@ void btc_gattc_call_handler(btc_msg_t *msg) break; default: LOG_ERROR("%s: Unhandled event (%d)!\n", __FUNCTION__, msg->act); - break; + break; } - btc_gattc_arg_deep_free(msg); + btc_gattc_arg_deep_free(msg); } void btc_gattc_cb_handler(btc_msg_t *msg) @@ -514,148 +516,148 @@ void btc_gattc_cb_handler(btc_msg_t *msg) memset(¶m, 0, sizeof(esp_ble_gattc_cb_param_t)); - switch (msg->act) { - case BTA_GATTC_REG_EVT: { - tBTA_GATTC_REG *reg_oper = &arg->reg_oper; - param.reg.status = reg_oper->status; - param.reg.gatt_if = reg_oper->client_if; - memcpy(¶m.reg.uuid, ®_oper->app_uuid, sizeof(esp_bt_uuid_t)); - BTC_GATTC_CB_TO_APP(ESP_GATTC_REG_EVT, ¶m); - break; - } - case BTA_GATTC_DEREG_EVT: { - BTC_GATTC_CB_TO_APP(ESP_GATTC_UNREG_EVT, NULL); - break; - } - case BTA_GATTC_READ_CHAR_EVT: { - set_read_value(¶m, &arg->read); - BTC_GATTC_CB_TO_APP(ESP_GATTC_READ_CHAR_EVT, ¶m); - break; - } + switch (msg->act) { + case BTA_GATTC_REG_EVT: { + tBTA_GATTC_REG *reg_oper = &arg->reg_oper; + param.reg.status = reg_oper->status; + param.reg.gatt_if = reg_oper->client_if; + memcpy(¶m.reg.uuid, ®_oper->app_uuid, sizeof(esp_bt_uuid_t)); + BTC_GATTC_CB_TO_APP(ESP_GATTC_REG_EVT, ¶m); + break; + } + case BTA_GATTC_DEREG_EVT: { + BTC_GATTC_CB_TO_APP(ESP_GATTC_UNREG_EVT, NULL); + break; + } + case BTA_GATTC_READ_CHAR_EVT: { + set_read_value(¶m, &arg->read); + BTC_GATTC_CB_TO_APP(ESP_GATTC_READ_CHAR_EVT, ¶m); + break; + } - case BTA_GATTC_WRITE_CHAR_EVT: - case BTA_GATTC_PREP_WRITE_EVT: { - tBTA_GATTC_WRITE *write = &arg->write; - uint32_t ret_evt = (msg->act == BTA_GATTC_WRITE_CHAR_EVT) ? - ESP_GATTC_WRITE_CHAR_EVT : ESP_GATTC_PREP_WRITE_EVT; - param.write.conn_id = write->conn_id; - param.write.status = write->status; - bta_to_btc_srvc_id(¶m.write.srvc_id, &write->srvc_id); - bta_to_btc_gatt_id(¶m.write.char_id, &write->char_id); - BTC_GATTC_CB_TO_APP(ret_evt, ¶m); - break; - } + case BTA_GATTC_WRITE_CHAR_EVT: + case BTA_GATTC_PREP_WRITE_EVT: { + tBTA_GATTC_WRITE *write = &arg->write; + uint32_t ret_evt = (msg->act == BTA_GATTC_WRITE_CHAR_EVT) ? + ESP_GATTC_WRITE_CHAR_EVT : ESP_GATTC_PREP_WRITE_EVT; + param.write.conn_id = write->conn_id; + param.write.status = write->status; + bta_to_btc_srvc_id(¶m.write.srvc_id, &write->srvc_id); + bta_to_btc_gatt_id(¶m.write.char_id, &write->char_id); + BTC_GATTC_CB_TO_APP(ret_evt, ¶m); + break; + } - case BTA_GATTC_EXEC_EVT: { - tBTA_GATTC_EXEC_CMPL *exec_cmpl = &arg->exec_cmpl; - param.exec_cmpl.conn_id = exec_cmpl->conn_id; - param.exec_cmpl.status = exec_cmpl->status; - BTC_GATTC_CB_TO_APP(ESP_GATTC_EXEC_EVT, ¶m); - break; - } + case BTA_GATTC_EXEC_EVT: { + tBTA_GATTC_EXEC_CMPL *exec_cmpl = &arg->exec_cmpl; + param.exec_cmpl.conn_id = exec_cmpl->conn_id; + param.exec_cmpl.status = exec_cmpl->status; + BTC_GATTC_CB_TO_APP(ESP_GATTC_EXEC_EVT, ¶m); + break; + } - case BTA_GATTC_SEARCH_CMPL_EVT: { - tBTA_GATTC_SEARCH_CMPL *search_cmpl = &arg->search_cmpl; - param.search_cmpl.conn_id = search_cmpl->conn_id; - param.search_cmpl.status = search_cmpl->status; - BTC_GATTC_CB_TO_APP(ESP_GATTC_SEARCH_CMPL_EVT, ¶m); - break; - } - case BTA_GATTC_SEARCH_RES_EVT: { - tBTA_GATTC_SRVC_RES *srvc_res = &arg->srvc_res; - param.search_res.conn_id = srvc_res->conn_id; - bta_to_btc_srvc_id(¶m.search_res.service_id, &srvc_res->service_uuid); - BTC_GATTC_CB_TO_APP(ESP_GATTC_SEARCH_RES_EVT, ¶m); - break; - } - case BTA_GATTC_READ_DESCR_EVT: { - set_read_value(¶m, &arg->read); - BTC_GATTC_CB_TO_APP(ESP_GATTC_READ_DESCR_EVT, ¶m); - break; - } - case BTA_GATTC_WRITE_DESCR_EVT: { - tBTA_GATTC_WRITE *write = &arg->write; - param.write.conn_id = write->conn_id; - param.write.status = write->status; - bta_to_btc_srvc_id(¶m.write.srvc_id, &write->srvc_id); - bta_to_btc_gatt_id(¶m.write.char_id, &write->char_id); - bta_to_btc_gatt_id(¶m.write.descr_id, &write->descr_type); - BTC_GATTC_CB_TO_APP(ESP_GATTC_WRITE_DESCR_EVT, ¶m); - break; - } - case BTA_GATTC_NOTIF_EVT: { - tBTA_GATTC_NOTIFY *notify = &arg->notify; - param.notify.conn_id = notify->conn_id; - memcpy(¶m.notify.bda, ¬ify->bda, sizeof(esp_bd_addr_t)); - bta_to_btc_srvc_id(¶m.notify.srvc_id, ¬ify->char_id.srvc_id); - bta_to_btc_gatt_id(¶m.notify.char_id, ¬ify->char_id.char_id); - bta_to_btc_gatt_id(¶m.notify.descr_id, ¬ify->descr_type); - param.notify.is_notify = (notify->is_notify == TRUE) ? true : false; - param.notify.value_len = (notify->len > ESP_GATT_MAX_ATTR_LEN) ? \ - ESP_GATT_MAX_ATTR_LEN : notify->len; - param.notify.value = notify->value; + case BTA_GATTC_SEARCH_CMPL_EVT: { + tBTA_GATTC_SEARCH_CMPL *search_cmpl = &arg->search_cmpl; + param.search_cmpl.conn_id = search_cmpl->conn_id; + param.search_cmpl.status = search_cmpl->status; + BTC_GATTC_CB_TO_APP(ESP_GATTC_SEARCH_CMPL_EVT, ¶m); + break; + } + case BTA_GATTC_SEARCH_RES_EVT: { + tBTA_GATTC_SRVC_RES *srvc_res = &arg->srvc_res; + param.search_res.conn_id = srvc_res->conn_id; + bta_to_btc_srvc_id(¶m.search_res.service_id, &srvc_res->service_uuid); + BTC_GATTC_CB_TO_APP(ESP_GATTC_SEARCH_RES_EVT, ¶m); + break; + } + case BTA_GATTC_READ_DESCR_EVT: { + set_read_value(¶m, &arg->read); + BTC_GATTC_CB_TO_APP(ESP_GATTC_READ_DESCR_EVT, ¶m); + break; + } + case BTA_GATTC_WRITE_DESCR_EVT: { + tBTA_GATTC_WRITE *write = &arg->write; + param.write.conn_id = write->conn_id; + param.write.status = write->status; + bta_to_btc_srvc_id(¶m.write.srvc_id, &write->srvc_id); + bta_to_btc_gatt_id(¶m.write.char_id, &write->char_id); + bta_to_btc_gatt_id(¶m.write.descr_id, &write->descr_type); + BTC_GATTC_CB_TO_APP(ESP_GATTC_WRITE_DESCR_EVT, ¶m); + break; + } + case BTA_GATTC_NOTIF_EVT: { + tBTA_GATTC_NOTIFY *notify = &arg->notify; + param.notify.conn_id = notify->conn_id; + memcpy(¶m.notify.bda, ¬ify->bda, sizeof(esp_bd_addr_t)); + bta_to_btc_srvc_id(¶m.notify.srvc_id, ¬ify->char_id.srvc_id); + bta_to_btc_gatt_id(¶m.notify.char_id, ¬ify->char_id.char_id); + bta_to_btc_gatt_id(¶m.notify.descr_id, ¬ify->descr_type); + param.notify.is_notify = (notify->is_notify == TRUE) ? true : false; + param.notify.value_len = (notify->len > ESP_GATT_MAX_ATTR_LEN) ? \ + ESP_GATT_MAX_ATTR_LEN : notify->len; + param.notify.value = notify->value; - if (notify->is_notify == FALSE) { - BTA_GATTC_SendIndConfirm(notify->conn_id, ¬ify->char_id); - } + if (notify->is_notify == FALSE) { + BTA_GATTC_SendIndConfirm(notify->conn_id, ¬ify->char_id); + } - BTC_GATTC_CB_TO_APP(ESP_GATTC_NOTIFY_EVT, ¶m); - break; - } - case BTA_GATTC_OPEN_EVT: { - tBTA_GATTC_OPEN *open = &arg->open; - param.open.status = open->status; - param.open.conn_id = open->conn_id; - param.open.gatt_if = open->client_if; - memcpy(¶m.open.remote_bda, &open->remote_bda, sizeof(esp_bd_addr_t)); - param.open.mtu = open->mtu; - BTC_GATTC_CB_TO_APP(ESP_GATTC_OPEN_EVT, ¶m); - break; - } - case BTA_GATTC_CLOSE_EVT: { - tBTA_GATTC_CLOSE *close = &arg->close; - param.close.status = close->status; - param.close.conn_id = close->conn_id; - param.close.gatt_if = close->client_if; - memcpy(¶m.close.remote_bda, &close->remote_bda, sizeof(esp_bd_addr_t)); - param.close.reason = close->reason; - BTC_GATTC_CB_TO_APP(ESP_GATTC_CLOSE_EVT, ¶m); - break; - } + BTC_GATTC_CB_TO_APP(ESP_GATTC_NOTIFY_EVT, ¶m); + break; + } + case BTA_GATTC_OPEN_EVT: { + tBTA_GATTC_OPEN *open = &arg->open; + param.open.status = open->status; + param.open.conn_id = open->conn_id; + param.open.gatt_if = open->client_if; + memcpy(¶m.open.remote_bda, &open->remote_bda, sizeof(esp_bd_addr_t)); + param.open.mtu = open->mtu; + BTC_GATTC_CB_TO_APP(ESP_GATTC_OPEN_EVT, ¶m); + break; + } + case BTA_GATTC_CLOSE_EVT: { + tBTA_GATTC_CLOSE *close = &arg->close; + param.close.status = close->status; + param.close.conn_id = close->conn_id; + param.close.gatt_if = close->client_if; + memcpy(¶m.close.remote_bda, &close->remote_bda, sizeof(esp_bd_addr_t)); + param.close.reason = close->reason; + BTC_GATTC_CB_TO_APP(ESP_GATTC_CLOSE_EVT, ¶m); + break; + } - case BTA_GATTC_CFG_MTU_EVT: { - tBTA_GATTC_CFG_MTU *cfg_mtu = &arg->cfg_mtu; - param.cfg_mtu.conn_id = cfg_mtu->conn_id; - param.cfg_mtu.status = cfg_mtu->status; - param.cfg_mtu.mtu = cfg_mtu->mtu; - BTC_GATTC_CB_TO_APP(ESP_GATTC_CFG_MTU_EVT, ¶m); - break; - } + case BTA_GATTC_CFG_MTU_EVT: { + tBTA_GATTC_CFG_MTU *cfg_mtu = &arg->cfg_mtu; + param.cfg_mtu.conn_id = cfg_mtu->conn_id; + param.cfg_mtu.status = cfg_mtu->status; + param.cfg_mtu.mtu = cfg_mtu->mtu; + BTC_GATTC_CB_TO_APP(ESP_GATTC_CFG_MTU_EVT, ¶m); + break; + } - case BTA_GATTC_ACL_EVT: { - BTC_GATTC_CB_TO_APP(ESP_GATTC_ACL_EVT, NULL); - break; - } - case BTA_GATTC_CANCEL_OPEN_EVT: { - BTC_GATTC_CB_TO_APP(ESP_GATTC_CANCEL_OPEN_EVT, NULL); - break; - } - case BTA_GATTC_CONGEST_EVT: { - tBTA_GATTC_CONGEST *congest = &arg->congest; - param.congest.conn_id = congest->conn_id; - param.congest.congested = (congest->congested == TRUE) ? true : false; - BTC_GATTC_CB_TO_APP(ESP_GATTC_CONGEST_EVT, ¶m); - break; - } - case BTA_GATTC_SRVC_CHG_EVT: { - memcpy(¶m.srvc_chg.remote_bda, &arg->remote_bda, sizeof(esp_bd_addr_t)); - BTC_GATTC_CB_TO_APP(ESP_GATTC_SRVC_CHG_EVT, ¶m); - break; - } - default: - LOG_ERROR("%s: Unhandled event (%d)!", __FUNCTION__, msg->act); - break; - } + case BTA_GATTC_ACL_EVT: { + BTC_GATTC_CB_TO_APP(ESP_GATTC_ACL_EVT, NULL); + break; + } + case BTA_GATTC_CANCEL_OPEN_EVT: { + BTC_GATTC_CB_TO_APP(ESP_GATTC_CANCEL_OPEN_EVT, NULL); + break; + } + case BTA_GATTC_CONGEST_EVT: { + tBTA_GATTC_CONGEST *congest = &arg->congest; + param.congest.conn_id = congest->conn_id; + param.congest.congested = (congest->congested == TRUE) ? true : false; + BTC_GATTC_CB_TO_APP(ESP_GATTC_CONGEST_EVT, ¶m); + break; + } + case BTA_GATTC_SRVC_CHG_EVT: { + memcpy(¶m.srvc_chg.remote_bda, &arg->remote_bda, sizeof(esp_bd_addr_t)); + BTC_GATTC_CB_TO_APP(ESP_GATTC_SRVC_CHG_EVT, ¶m); + break; + } + default: + LOG_ERROR("%s: Unhandled event (%d)!", __FUNCTION__, msg->act); + break; + } // free the deep-copied data btc_gattc_free_req_data(msg); diff --git a/components/bt/bluedroid/btc/profile/std/gatt/btc_gatts.c b/components/bt/bluedroid/btc/profile/std/gatt/btc_gatts.c index 147b037f7c..39e5f79363 100644 --- a/components/bt/bluedroid/btc/profile/std/gatt/btc_gatts.c +++ b/components/bt/bluedroid/btc/profile/std/gatt/btc_gatts.c @@ -23,417 +23,418 @@ #include "esp_gatts_api.h" -#define BTC_GATTS_CB_TO_APP(_event, _param) ((esp_profile_cb_t)btc_profile_cb_get(BTC_PID_GATTS))(_event, _param) +#define BTC_GATTS_CB_TO_APP(_event, _param) ((esp_profile_cb_t)btc_profile_cb_get(BTC_PID_GATTS))(_event, _param) #define A2C_GATTS_EVT(_bta_event) (_bta_event) //BTA TO BTC EVT #define C2A_GATTS_EVT(_btc_event) (_btc_event) //BTC TO BTA EVT void btc_gatts_arg_deep_copy(btc_msg_t *msg, void *p_dest, void *p_src) { - btc_ble_gatts_args_t *dst = (btc_ble_gatts_args_t*) p_dest; - btc_ble_gatts_args_t *src = (btc_ble_gatts_args_t *)p_src; + btc_ble_gatts_args_t *dst = (btc_ble_gatts_args_t *) p_dest; + btc_ble_gatts_args_t *src = (btc_ble_gatts_args_t *)p_src; - switch (msg->act) { - case BTC_GATTS_ACT_SEND_INDICATE: { - dst->send_ind.value = (uint8_t *)GKI_getbuf(src->send_ind.value_len); - if (dst->send_ind.value) { - memcpy(dst->send_ind.value, src->send_ind.value, src->send_ind.value_len); - } else { - LOG_ERROR("%s %d no mem\n", __func__, msg->act); - } - break; - } - case BTC_GATTS_ACT_SEND_RESPONSE: { - if (src->send_rsp.rsp) { - dst->send_rsp.rsp = (esp_gatt_rsp_t *)GKI_getbuf(sizeof(esp_gatt_rsp_t)); - if (dst->send_rsp.rsp) { - memcpy(dst->send_rsp.rsp, src->send_rsp.rsp, sizeof(esp_gatt_rsp_t)); - } else { - LOG_ERROR("%s %d no mem\n", __func__, msg->act); - } - } - break; - } - default: - LOG_DEBUG("%s Unhandled deep copy %d\n", __func__, msg->act); - break; - } + switch (msg->act) { + case BTC_GATTS_ACT_SEND_INDICATE: { + dst->send_ind.value = (uint8_t *)GKI_getbuf(src->send_ind.value_len); + if (dst->send_ind.value) { + memcpy(dst->send_ind.value, src->send_ind.value, src->send_ind.value_len); + } else { + LOG_ERROR("%s %d no mem\n", __func__, msg->act); + } + break; + } + case BTC_GATTS_ACT_SEND_RESPONSE: { + if (src->send_rsp.rsp) { + dst->send_rsp.rsp = (esp_gatt_rsp_t *)GKI_getbuf(sizeof(esp_gatt_rsp_t)); + if (dst->send_rsp.rsp) { + memcpy(dst->send_rsp.rsp, src->send_rsp.rsp, sizeof(esp_gatt_rsp_t)); + } else { + LOG_ERROR("%s %d no mem\n", __func__, msg->act); + } + } + break; + } + default: + LOG_DEBUG("%s Unhandled deep copy %d\n", __func__, msg->act); + break; + } } void btc_gatts_arg_deep_free(btc_msg_t *msg) { - btc_ble_gatts_args_t *arg = (btc_ble_gatts_args_t*)msg->arg; + btc_ble_gatts_args_t *arg = (btc_ble_gatts_args_t *)msg->arg; - switch (msg->act) { - case BTC_GATTS_ACT_SEND_INDICATE: { - if (arg->send_ind.value) { - GKI_freebuf(arg->send_ind.value); - } - break; - } - case BTC_GATTS_ACT_SEND_RESPONSE: { - if (arg->send_rsp.rsp) { - GKI_freebuf(arg->send_rsp.rsp); - } - break; - } - default: - LOG_DEBUG("%s Unhandled deep free %d\n", __func__, msg->act); - break; - } + switch (msg->act) { + case BTC_GATTS_ACT_SEND_INDICATE: { + if (arg->send_ind.value) { + GKI_freebuf(arg->send_ind.value); + } + break; + } + case BTC_GATTS_ACT_SEND_RESPONSE: { + if (arg->send_rsp.rsp) { + GKI_freebuf(arg->send_rsp.rsp); + } + break; + } + default: + LOG_DEBUG("%s Unhandled deep free %d\n", __func__, msg->act); + break; + } } static void btc_gatts_cb_param_copy_req(btc_msg_t *msg, void *p_dest, void *p_src) { - uint16_t event = msg->act; + uint16_t event = msg->act; - tBTA_GATTS *p_dest_data = (tBTA_GATTS*) p_dest; - tBTA_GATTS *p_src_data = (tBTA_GATTS*) p_src; + tBTA_GATTS *p_dest_data = (tBTA_GATTS *) p_dest; + tBTA_GATTS *p_src_data = (tBTA_GATTS *) p_src; - if (!p_src_data || !p_dest_data) + if (!p_src_data || !p_dest_data) { return; + } // Copy basic structure first memcpy(p_dest_data, p_src_data, sizeof(tBTA_GATTS)); // Allocate buffer for request data if necessary - switch (event) - { - case BTA_GATTS_READ_EVT: - case BTA_GATTS_WRITE_EVT: - case BTA_GATTS_EXEC_WRITE_EVT: - case BTA_GATTS_MTU_EVT: - p_dest_data->req_data.p_data = GKI_getbuf(sizeof(tBTA_GATTS_REQ_DATA)); - if (p_dest_data->req_data.p_data != NULL) - { - memcpy(p_dest_data->req_data.p_data, p_src_data->req_data.p_data, - sizeof(tBTA_GATTS_REQ_DATA)); - } - break; + switch (event) { + case BTA_GATTS_READ_EVT: + case BTA_GATTS_WRITE_EVT: + case BTA_GATTS_EXEC_WRITE_EVT: + case BTA_GATTS_MTU_EVT: + p_dest_data->req_data.p_data = GKI_getbuf(sizeof(tBTA_GATTS_REQ_DATA)); + if (p_dest_data->req_data.p_data != NULL) { + memcpy(p_dest_data->req_data.p_data, p_src_data->req_data.p_data, + sizeof(tBTA_GATTS_REQ_DATA)); + } + break; - default: - break; + default: + break; } } static void btc_gatts_cb_param_copy_free(btc_msg_t *msg, tBTA_GATTS *p_data) { - uint16_t event = msg->act; + uint16_t event = msg->act; - switch (event) - { - case BTA_GATTS_READ_EVT: - case BTA_GATTS_WRITE_EVT: - case BTA_GATTS_EXEC_WRITE_EVT: - case BTA_GATTS_MTU_EVT: - if (p_data && p_data->req_data.p_data) - GKI_freebuf(p_data->req_data.p_data); - break; + switch (event) { + case BTA_GATTS_READ_EVT: + case BTA_GATTS_WRITE_EVT: + case BTA_GATTS_EXEC_WRITE_EVT: + case BTA_GATTS_MTU_EVT: + if (p_data && p_data->req_data.p_data) { + GKI_freebuf(p_data->req_data.p_data); + } + break; - default: - break; + default: + break; } } static void btc_gatts_inter_cb(tBTA_GATTS_EVT event, tBTA_GATTS *p_data) { - bt_status_t status; - btc_msg_t msg; + bt_status_t status; + btc_msg_t msg; - msg.sig = BTC_SIG_API_CB; - msg.pid = BTC_PID_GATTS; - msg.act = event; + msg.sig = BTC_SIG_API_CB; + msg.pid = BTC_PID_GATTS; + msg.act = event; - status = btc_transfer_context(&msg, p_data, - sizeof(tBTA_GATTS), btc_gatts_cb_param_copy_req); + status = btc_transfer_context(&msg, p_data, + sizeof(tBTA_GATTS), btc_gatts_cb_param_copy_req); - if (status != BT_STATUS_SUCCESS) { - LOG_ERROR("%s btc_transfer_context failed\n", __func__); - } + if (status != BT_STATUS_SUCCESS) { + LOG_ERROR("%s btc_transfer_context failed\n", __func__); + } } void btc_gatts_call_handler(btc_msg_t *msg) { - btc_ble_gatts_args_t *arg = (btc_ble_gatts_args_t *)msg->arg; + btc_ble_gatts_args_t *arg = (btc_ble_gatts_args_t *)msg->arg; - switch (msg->act) { - case BTC_GATTS_ACT_APP_REGISTER: { - tBT_UUID uuid; + switch (msg->act) { + case BTC_GATTS_ACT_APP_REGISTER: { + tBT_UUID uuid; - uuid.len = LEN_UUID_16; - uuid.uu.uuid16 = arg->app_reg.app_id; - - BTA_GATTS_AppRegister(&uuid, btc_gatts_inter_cb); - - break; - } - case BTC_GATTS_ACT_APP_UNREGISTER: - BTA_GATTS_AppDeregister(arg->app_unreg.gatt_if); - break; - case BTC_GATTS_ACT_CREATE_SERVICE: { + uuid.len = LEN_UUID_16; + uuid.uu.uuid16 = arg->app_reg.app_id; + + BTA_GATTS_AppRegister(&uuid, btc_gatts_inter_cb); + + break; + } + case BTC_GATTS_ACT_APP_UNREGISTER: + BTA_GATTS_AppDeregister(arg->app_unreg.gatt_if); + break; + case BTC_GATTS_ACT_CREATE_SERVICE: { tBTA_GATT_SRVC_ID srvc_id; btc_to_bta_srvc_id(&srvc_id, &arg->create_srvc.service_id); BTA_GATTS_CreateService(arg->create_srvc.gatt_if, &srvc_id.id.uuid, srvc_id.id.inst_id, arg->create_srvc.num_handle, srvc_id.is_primary); - break; - } - case BTC_GATTS_ACT_DELETE_SERVICE: - BTA_GATTS_DeleteService(arg->delete_srvc.service_handle); - break; - case BTC_GATTS_ACT_START_SERVICE: - BTA_GATTS_StartService(arg->start_srvc.service_handle, BTA_GATT_TRANSPORT_LE); - break; - case BTC_GATTS_ACT_STOP_SERVICE: - BTA_GATTS_StopService(arg->stop_srvc.service_handle); - break; - case BTC_GATTS_ACT_ADD_INCLUDE_SERVICE: - BTA_GATTS_AddIncludeService(arg->add_incl_srvc.service_handle, arg->add_incl_srvc.included_service_handle); - break; - case BTC_GATTS_ACT_ADD_CHAR: { - tBT_UUID uuid; - btc_to_bta_uuid(&uuid, &arg->add_char.char_uuid); + break; + } + case BTC_GATTS_ACT_DELETE_SERVICE: + BTA_GATTS_DeleteService(arg->delete_srvc.service_handle); + break; + case BTC_GATTS_ACT_START_SERVICE: + BTA_GATTS_StartService(arg->start_srvc.service_handle, BTA_GATT_TRANSPORT_LE); + break; + case BTC_GATTS_ACT_STOP_SERVICE: + BTA_GATTS_StopService(arg->stop_srvc.service_handle); + break; + case BTC_GATTS_ACT_ADD_INCLUDE_SERVICE: + BTA_GATTS_AddIncludeService(arg->add_incl_srvc.service_handle, arg->add_incl_srvc.included_service_handle); + break; + case BTC_GATTS_ACT_ADD_CHAR: { + tBT_UUID uuid; + btc_to_bta_uuid(&uuid, &arg->add_char.char_uuid); - BTA_GATTS_AddCharacteristic(arg->add_char.service_handle, &uuid, - arg->add_char.perm, arg->add_char.property); - break; - } - case BTC_GATTS_ACT_ADD_CHAR_DESCR: { - tBT_UUID uuid; - btc_to_bta_uuid(&uuid, &arg->add_descr.descr_uuid); - BTA_GATTS_AddCharDescriptor(arg->add_descr.service_handle, arg->add_descr.perm, &uuid); - break; - } - case BTC_GATTS_ACT_SEND_INDICATE: - BTA_GATTS_HandleValueIndication(arg->send_ind.conn_id, arg->send_ind.attr_handle, + BTA_GATTS_AddCharacteristic(arg->add_char.service_handle, &uuid, + arg->add_char.perm, arg->add_char.property); + break; + } + case BTC_GATTS_ACT_ADD_CHAR_DESCR: { + tBT_UUID uuid; + btc_to_bta_uuid(&uuid, &arg->add_descr.descr_uuid); + BTA_GATTS_AddCharDescriptor(arg->add_descr.service_handle, arg->add_descr.perm, &uuid); + break; + } + case BTC_GATTS_ACT_SEND_INDICATE: + BTA_GATTS_HandleValueIndication(arg->send_ind.conn_id, arg->send_ind.attr_handle, arg->send_ind.value_len, arg->send_ind.value, arg->send_ind.need_confirm); - break; - case BTC_GATTS_ACT_SEND_RESPONSE: { - esp_ble_gatts_cb_param_t param; - esp_gatt_rsp_t *p_rsp = arg->send_rsp.rsp; + break; + case BTC_GATTS_ACT_SEND_RESPONSE: { + esp_ble_gatts_cb_param_t param; + esp_gatt_rsp_t *p_rsp = arg->send_rsp.rsp; - if (p_rsp) { - tBTA_GATTS_RSP rsp_struct; - btc_to_bta_response(&rsp_struct, p_rsp); - BTA_GATTS_SendRsp(arg->send_rsp.conn_id, arg->send_rsp.trans_id, - arg->send_rsp.status, &rsp_struct); - param.rsp.handle = rsp_struct.attr_value.handle; - } else { - BTA_GATTS_SendRsp(arg->send_rsp.conn_id, arg->send_rsp.trans_id, - arg->send_rsp.status, NULL); - } + if (p_rsp) { + tBTA_GATTS_RSP rsp_struct; + btc_to_bta_response(&rsp_struct, p_rsp); + BTA_GATTS_SendRsp(arg->send_rsp.conn_id, arg->send_rsp.trans_id, + arg->send_rsp.status, &rsp_struct); + param.rsp.handle = rsp_struct.attr_value.handle; + } else { + BTA_GATTS_SendRsp(arg->send_rsp.conn_id, arg->send_rsp.trans_id, + arg->send_rsp.status, NULL); + } - param.rsp.status = 0; - BTC_GATTS_CB_TO_APP(ESP_GATTS_RESPONSE_EVT, ¶m); - break; - } - case BTC_GATTS_ACT_OPEN: { - // Ensure device is in inquiry database - int addr_type = 0; - int device_type = 0; - tBTA_GATT_TRANSPORT transport = BTA_GATT_TRANSPORT_LE; + param.rsp.status = 0; + BTC_GATTS_CB_TO_APP(ESP_GATTS_RESPONSE_EVT, ¶m); + break; + } + case BTC_GATTS_ACT_OPEN: { + // Ensure device is in inquiry database + int addr_type = 0; + int device_type = 0; + tBTA_GATT_TRANSPORT transport = BTA_GATT_TRANSPORT_LE; - //TODO : implement address type and device type + //TODO : implement address type and device type #if 0 - if (_get_address_type(arg->remote_bda, &addr_type) && - btif_get_device_type(arg->remote_bda, &device_type) && - device_type != BT_DEVICE_TYPE_BREDR) { - BTA_DmAddBleDevice(p_cb->bd_addr.address, addr_type, device_type); - } + if (_get_address_type(arg->remote_bda, &addr_type) && + btif_get_device_type(arg->remote_bda, &device_type) && + device_type != BT_DEVICE_TYPE_BREDR) { + BTA_DmAddBleDevice(p_cb->bd_addr.address, addr_type, device_type); + } #else - //BTA_DmAddBleDevice(p_cb->bd_addr.address, addr_type, device_type); + //BTA_DmAddBleDevice(p_cb->bd_addr.address, addr_type, device_type); #endif - // Mark background connections - if (!arg->open.is_direct) - BTA_DmBleSetBgConnType(BTM_BLE_CONN_AUTO, NULL); + // Mark background connections + if (!arg->open.is_direct) { + BTA_DmBleSetBgConnType(BTM_BLE_CONN_AUTO, NULL); + } - transport = BTA_GATT_TRANSPORT_LE; + transport = BTA_GATT_TRANSPORT_LE; - // Connect! - BTA_GATTS_Open(arg->open.gatt_if, arg->open.remote_bda, - arg->open.is_direct, transport); - break; - } - case BTC_GATTS_ACT_CLOSE: - // TODO : implement cancel open - // Cancel pending foreground/background connections + // Connect! + BTA_GATTS_Open(arg->open.gatt_if, arg->open.remote_bda, + arg->open.is_direct, transport); + break; + } + case BTC_GATTS_ACT_CLOSE: + // TODO : implement cancel open + // Cancel pending foreground/background connections //BTA_GATTS_CancelOpen(p_cb->server_if, p_cb->bd_addr.address, TRUE); //BTA_GATTS_CancelOpen(p_cb->server_if, p_cb->bd_addr.address, FALSE); // Close active connection - if (arg->close.conn_id != 0) - BTA_GATTS_Close(arg->close.conn_id); + if (arg->close.conn_id != 0) { + BTA_GATTS_Close(arg->close.conn_id); + } - break; - default: - break; - } - btc_gatts_arg_deep_free(msg); + break; + default: + break; + } + btc_gatts_arg_deep_free(msg); } void btc_gatts_cb_handler(btc_msg_t *msg) { - esp_ble_gatts_cb_param_t param; - - tBTA_GATTS *p_data = (tBTA_GATTS *)msg->arg; + esp_ble_gatts_cb_param_t param; - switch (msg->act) { - case BTA_GATTS_REG_EVT: { - param.reg.status = p_data->reg_oper.status; - param.reg.gatt_if = p_data->reg_oper.server_if; - param.reg.app_id = p_data->reg_oper.uuid.uu.uuid16; + tBTA_GATTS *p_data = (tBTA_GATTS *)msg->arg; - BTC_GATTS_CB_TO_APP(ESP_GATTS_REG_EVT, ¶m); - break; - } - case BTA_GATTS_DEREG_EVT: - // do nothing - break; - case BTA_GATTS_READ_EVT: { - param.read.conn_id = p_data->req_data.conn_id; - param.read.trans_id = p_data->req_data.trans_id; - memcpy(param.read.bda, p_data->req_data.remote_bda, ESP_BD_ADDR_LEN); - param.read.handle = p_data->req_data.p_data->read_req.handle, - param.read.offset = p_data->req_data.p_data->read_req.offset, - param.read.is_long = p_data->req_data.p_data->read_req.is_long, + switch (msg->act) { + case BTA_GATTS_REG_EVT: { + param.reg.status = p_data->reg_oper.status; + param.reg.gatt_if = p_data->reg_oper.server_if; + param.reg.app_id = p_data->reg_oper.uuid.uu.uuid16; - BTC_GATTS_CB_TO_APP(ESP_GATTS_READ_EVT, ¶m); - break; - } - case BTA_GATTS_WRITE_EVT: { - param.write.conn_id = p_data->req_data.conn_id; - param.write.trans_id = p_data->req_data.trans_id; - memcpy(param.write.bda, p_data->req_data.remote_bda, ESP_BD_ADDR_LEN); - param.write.handle = p_data->req_data.p_data->write_req.handle; - param.write.offset = p_data->req_data.p_data->write_req.offset; - param.write.need_rsp = p_data->req_data.p_data->write_req.need_rsp; - param.write.is_prep = p_data->req_data.p_data->write_req.is_prep; - param.write.len = p_data->req_data.p_data->write_req.len; - param.write.value = p_data->req_data.p_data->write_req.value; - - BTC_GATTS_CB_TO_APP(ESP_GATTS_WRITE_EVT, ¶m); + BTC_GATTS_CB_TO_APP(ESP_GATTS_REG_EVT, ¶m); + break; + } + case BTA_GATTS_DEREG_EVT: + // do nothing + break; + case BTA_GATTS_READ_EVT: { + param.read.conn_id = p_data->req_data.conn_id; + param.read.trans_id = p_data->req_data.trans_id; + memcpy(param.read.bda, p_data->req_data.remote_bda, ESP_BD_ADDR_LEN); + param.read.handle = p_data->req_data.p_data->read_req.handle, + param.read.offset = p_data->req_data.p_data->read_req.offset, + param.read.is_long = p_data->req_data.p_data->read_req.is_long, - break; - } - case BTA_GATTS_EXEC_WRITE_EVT: { - param.exec_write.conn_id = p_data->req_data.conn_id; - param.exec_write.trans_id = p_data->req_data.trans_id; - memcpy(param.exec_write.bda, p_data->req_data.remote_bda, ESP_BD_ADDR_LEN); - param.exec_write.exec_write_flag = p_data->req_data.p_data->exec_write; - - BTC_GATTS_CB_TO_APP(ESP_GATTS_EXEC_WRITE_EVT, ¶m); + BTC_GATTS_CB_TO_APP(ESP_GATTS_READ_EVT, ¶m); + break; + } + case BTA_GATTS_WRITE_EVT: { + param.write.conn_id = p_data->req_data.conn_id; + param.write.trans_id = p_data->req_data.trans_id; + memcpy(param.write.bda, p_data->req_data.remote_bda, ESP_BD_ADDR_LEN); + param.write.handle = p_data->req_data.p_data->write_req.handle; + param.write.offset = p_data->req_data.p_data->write_req.offset; + param.write.need_rsp = p_data->req_data.p_data->write_req.need_rsp; + param.write.is_prep = p_data->req_data.p_data->write_req.is_prep; + param.write.len = p_data->req_data.p_data->write_req.len; + param.write.value = p_data->req_data.p_data->write_req.value; - break; - } - case BTA_GATTS_MTU_EVT: - param.mtu.conn_id = p_data->req_data.conn_id; - param.mtu.mtu = p_data->req_data.p_data->mtu; + BTC_GATTS_CB_TO_APP(ESP_GATTS_WRITE_EVT, ¶m); - BTC_GATTS_CB_TO_APP(ESP_GATTS_MTU_EVT, ¶m); - break; - case BTA_GATTS_CONF_EVT: - param.conf.conn_id = p_data->req_data.conn_id; - param.conf.status = p_data->req_data.status; + break; + } + case BTA_GATTS_EXEC_WRITE_EVT: { + param.exec_write.conn_id = p_data->req_data.conn_id; + param.exec_write.trans_id = p_data->req_data.trans_id; + memcpy(param.exec_write.bda, p_data->req_data.remote_bda, ESP_BD_ADDR_LEN); + param.exec_write.exec_write_flag = p_data->req_data.p_data->exec_write; - BTC_GATTS_CB_TO_APP(ESP_GATTS_CONF_EVT, ¶m); - break; - case BTA_GATTS_CREATE_EVT: - param.create.status = p_data->create.status; - param.create.gatt_if = p_data->create.server_if; - param.create.service_handle = p_data->create.service_id; - param.create.service_id.is_primary = p_data->create.is_primary; - param.create.service_id.id.inst_id = p_data->create.svc_instance; - bta_to_btc_uuid(¶m.create.service_id.id.uuid, &p_data->create.uuid); - BTC_GATTS_CB_TO_APP(ESP_GATTS_CREATE_EVT, ¶m); - break; - case BTA_GATTS_ADD_INCL_SRVC_EVT: - param.add_incl_srvc.status = p_data->add_result.status; - param.add_incl_srvc.gatt_if = p_data->add_result.server_if; - param.add_incl_srvc.attr_handle = p_data->add_result.attr_id; - param.add_incl_srvc.service_handle = p_data->add_result.service_id; + BTC_GATTS_CB_TO_APP(ESP_GATTS_EXEC_WRITE_EVT, ¶m); - BTC_GATTS_CB_TO_APP(ESP_GATTS_ADD_INCL_SRVC_EVT, ¶m); - break; - case BTA_GATTS_ADD_CHAR_EVT: - param.add_char.status = p_data->add_result.status; - param.add_char.gatt_if = p_data->add_result.server_if; - param.add_char.attr_handle = p_data->add_result.attr_id; - param.add_char.service_handle = p_data->add_result.service_id; - bta_to_btc_uuid(¶m.add_char.char_uuid, &p_data->add_result.char_uuid); + break; + } + case BTA_GATTS_MTU_EVT: + param.mtu.conn_id = p_data->req_data.conn_id; + param.mtu.mtu = p_data->req_data.p_data->mtu; - BTC_GATTS_CB_TO_APP(ESP_GATTS_ADD_CHAR_EVT, ¶m); - break; - case BTA_GATTS_ADD_CHAR_DESCR_EVT: - param.add_char_descr.status = p_data->add_result.status; - param.add_char_descr.gatt_if = p_data->add_result.server_if; - param.add_char_descr.attr_handle = p_data->add_result.attr_id; - param.add_char_descr.service_handle = p_data->add_result.service_id; - bta_to_btc_uuid(¶m.add_char_descr.char_uuid, &p_data->add_result.char_uuid); + BTC_GATTS_CB_TO_APP(ESP_GATTS_MTU_EVT, ¶m); + break; + case BTA_GATTS_CONF_EVT: + param.conf.conn_id = p_data->req_data.conn_id; + param.conf.status = p_data->req_data.status; - BTC_GATTS_CB_TO_APP(ESP_GATTS_ADD_CHAR_DESCR_EVT, ¶m); - break; - case BTA_GATTS_DELELTE_EVT: - param.del.status = p_data->srvc_oper.status; - param.del.gatt_if = p_data->srvc_oper.server_if; - param.del.service_handle = p_data->srvc_oper.service_id; + BTC_GATTS_CB_TO_APP(ESP_GATTS_CONF_EVT, ¶m); + break; + case BTA_GATTS_CREATE_EVT: + param.create.status = p_data->create.status; + param.create.gatt_if = p_data->create.server_if; + param.create.service_handle = p_data->create.service_id; + param.create.service_id.is_primary = p_data->create.is_primary; + param.create.service_id.id.inst_id = p_data->create.svc_instance; + bta_to_btc_uuid(¶m.create.service_id.id.uuid, &p_data->create.uuid); + BTC_GATTS_CB_TO_APP(ESP_GATTS_CREATE_EVT, ¶m); + break; + case BTA_GATTS_ADD_INCL_SRVC_EVT: + param.add_incl_srvc.status = p_data->add_result.status; + param.add_incl_srvc.gatt_if = p_data->add_result.server_if; + param.add_incl_srvc.attr_handle = p_data->add_result.attr_id; + param.add_incl_srvc.service_handle = p_data->add_result.service_id; - BTC_GATTS_CB_TO_APP(ESP_GATTS_DELELTE_EVT, ¶m); - break; - case BTA_GATTS_START_EVT: - param.start.status = p_data->srvc_oper.status; - param.start.gatt_if = p_data->srvc_oper.server_if; - param.start.service_handle = p_data->srvc_oper.service_id; + BTC_GATTS_CB_TO_APP(ESP_GATTS_ADD_INCL_SRVC_EVT, ¶m); + break; + case BTA_GATTS_ADD_CHAR_EVT: + param.add_char.status = p_data->add_result.status; + param.add_char.gatt_if = p_data->add_result.server_if; + param.add_char.attr_handle = p_data->add_result.attr_id; + param.add_char.service_handle = p_data->add_result.service_id; + bta_to_btc_uuid(¶m.add_char.char_uuid, &p_data->add_result.char_uuid); - BTC_GATTS_CB_TO_APP(ESP_GATTS_START_EVT, ¶m); - break; - case BTA_GATTS_STOP_EVT: - param.stop.status = p_data->srvc_oper.status; - param.stop.gatt_if = p_data->srvc_oper.server_if; - param.stop.service_handle = p_data->srvc_oper.service_id; + BTC_GATTS_CB_TO_APP(ESP_GATTS_ADD_CHAR_EVT, ¶m); + break; + case BTA_GATTS_ADD_CHAR_DESCR_EVT: + param.add_char_descr.status = p_data->add_result.status; + param.add_char_descr.gatt_if = p_data->add_result.server_if; + param.add_char_descr.attr_handle = p_data->add_result.attr_id; + param.add_char_descr.service_handle = p_data->add_result.service_id; + bta_to_btc_uuid(¶m.add_char_descr.char_uuid, &p_data->add_result.char_uuid); - BTC_GATTS_CB_TO_APP(ESP_GATTS_STOP_EVT, ¶m); - break; - case BTA_GATTS_CONNECT_EVT: - param.connect.conn_id = p_data->conn.conn_id; - param.connect.gatt_if = p_data->conn.server_if; - param.connect.is_connected = true; - memcpy(param.connect.remote_bda, p_data->conn.remote_bda, ESP_BD_ADDR_LEN); + BTC_GATTS_CB_TO_APP(ESP_GATTS_ADD_CHAR_DESCR_EVT, ¶m); + break; + case BTA_GATTS_DELELTE_EVT: + param.del.status = p_data->srvc_oper.status; + param.del.gatt_if = p_data->srvc_oper.server_if; + param.del.service_handle = p_data->srvc_oper.service_id; - BTC_GATTS_CB_TO_APP(ESP_GATTS_CONNECT_EVT, ¶m); - break; - case BTA_GATTS_DISCONNECT_EVT: - param.connect.conn_id = p_data->conn.conn_id; - param.connect.gatt_if = p_data->conn.server_if; - param.connect.is_connected = false; - memcpy(param.connect.remote_bda, p_data->conn.remote_bda, ESP_BD_ADDR_LEN); + BTC_GATTS_CB_TO_APP(ESP_GATTS_DELELTE_EVT, ¶m); + break; + case BTA_GATTS_START_EVT: + param.start.status = p_data->srvc_oper.status; + param.start.gatt_if = p_data->srvc_oper.server_if; + param.start.service_handle = p_data->srvc_oper.service_id; - BTC_GATTS_CB_TO_APP(ESP_GATTS_DISCONNECT_EVT, ¶m); - break; - case BTA_GATTS_OPEN_EVT: - // do nothing - case BTA_GATTS_CANCEL_OPEN_EVT: - // do nothing - case BTA_GATTS_CLOSE_EVT: - // do nothing - case BTA_GATTS_LISTEN_EVT: - // do nothing - break; - case BTA_GATTS_CONGEST_EVT: - param.congest.conn_id = p_data->congest.conn_id; - param.congest.congested = p_data->congest.congested; - break; - default: - // do nothing - break; - } + BTC_GATTS_CB_TO_APP(ESP_GATTS_START_EVT, ¶m); + break; + case BTA_GATTS_STOP_EVT: + param.stop.status = p_data->srvc_oper.status; + param.stop.gatt_if = p_data->srvc_oper.server_if; + param.stop.service_handle = p_data->srvc_oper.service_id; - btc_gatts_cb_param_copy_free(msg, p_data); + BTC_GATTS_CB_TO_APP(ESP_GATTS_STOP_EVT, ¶m); + break; + case BTA_GATTS_CONNECT_EVT: + param.connect.conn_id = p_data->conn.conn_id; + param.connect.gatt_if = p_data->conn.server_if; + param.connect.is_connected = true; + memcpy(param.connect.remote_bda, p_data->conn.remote_bda, ESP_BD_ADDR_LEN); - //ets_printf("yyy\n"); + BTC_GATTS_CB_TO_APP(ESP_GATTS_CONNECT_EVT, ¶m); + break; + case BTA_GATTS_DISCONNECT_EVT: + param.connect.conn_id = p_data->conn.conn_id; + param.connect.gatt_if = p_data->conn.server_if; + param.connect.is_connected = false; + memcpy(param.connect.remote_bda, p_data->conn.remote_bda, ESP_BD_ADDR_LEN); + + BTC_GATTS_CB_TO_APP(ESP_GATTS_DISCONNECT_EVT, ¶m); + break; + case BTA_GATTS_OPEN_EVT: + // do nothing + case BTA_GATTS_CANCEL_OPEN_EVT: + // do nothing + case BTA_GATTS_CLOSE_EVT: + // do nothing + case BTA_GATTS_LISTEN_EVT: + // do nothing + break; + case BTA_GATTS_CONGEST_EVT: + param.congest.conn_id = p_data->congest.conn_id; + param.congest.congested = p_data->congest.congested; + break; + default: + // do nothing + break; + } + + btc_gatts_cb_param_copy_free(msg, p_data); + + //ets_printf("yyy\n"); } diff --git a/components/bt/bluedroid/btc/profile/std/hid/include/hid_conn.h b/components/bt/bluedroid/btc/profile/std/hid/include/hid_conn.h old mode 100755 new mode 100644 index 79bb496b45..220ae9a5bc --- a/components/bt/bluedroid/btc/profile/std/hid/include/hid_conn.h +++ b/components/bt/bluedroid/btc/profile/std/hid/include/hid_conn.h @@ -28,8 +28,7 @@ /* Define the HID Connection Block */ -typedef struct hid_conn -{ +typedef struct hid_conn { #define HID_CONN_STATE_UNUSED (0) #define HID_CONN_STATE_CONNECTING_CTRL (1) #define HID_CONN_STATE_CONNECTING_INTR (2) diff --git a/components/bt/bluedroid/btc/profile/std/hid/include/hidh_int.h b/components/bt/bluedroid/btc/profile/std/hid/include/hidh_int.h old mode 100755 new mode 100644 index 3fedea2b12..afdb9308ef --- a/components/bt/bluedroid/btc/profile/std/hid/include/hidh_int.h +++ b/components/bt/bluedroid/btc/profile/std/hid/include/hidh_int.h @@ -34,12 +34,11 @@ enum { HID_DEV_CONNECTED }; -typedef struct per_device_ctb -{ +typedef struct per_device_ctb { BOOLEAN in_use; BD_ADDR addr; /* BD-Addr of the host device */ UINT16 attr_mask; /* 0x01- virtual_cable; 0x02- normally_connectable; 0x03- reconn_initiate; - 0x04- sdp_disable; */ + 0x04- sdp_disable; */ UINT8 state; /* Device state if in HOST-KNOWN mode */ UINT8 conn_substate; UINT8 conn_tries; /* Remembers to the number of connection attempts while CONNECTING */ @@ -47,8 +46,7 @@ typedef struct per_device_ctb tHID_CONN conn; /* L2CAP channel info */ } tHID_HOST_DEV_CTB; -typedef struct host_ctb -{ +typedef struct host_ctb { tHID_HOST_DEV_CTB devices[HID_HOST_MAX_DEVICES]; tHID_HOST_DEV_CALLBACK *callback; /* Application callbacks */ tL2CAP_CFG_INFO l2cap_cfg; @@ -64,7 +62,7 @@ typedef struct host_ctb } tHID_HOST_CTB; extern tHID_STATUS hidh_conn_snd_data(UINT8 dhandle, UINT8 trans_type, UINT8 param, \ - UINT16 data,UINT8 rpt_id, BT_HDR *buf); + UINT16 data, UINT8 rpt_id, BT_HDR *buf); extern tHID_STATUS hidh_conn_reg (void); extern void hidh_conn_dereg( void ); extern tHID_STATUS hidh_conn_disconnect (UINT8 dhandle); diff --git a/components/bt/bluedroid/btc/profile/std/hid_le/hid_le_prf.c b/components/bt/bluedroid/btc/profile/std/hid_le/hid_le_prf.c index 9978524dd2..06a882a739 100644 --- a/components/bt/bluedroid/btc/profile/std/hid_le/hid_le_prf.c +++ b/components/bt/bluedroid/btc/profile/std/hid_le/hid_le_prf.c @@ -16,7 +16,7 @@ #include "hid_le_prf.h" #include "prf_defs.h" -#if (HIDD_LE_PROFILE_CFG) +#if (HIDD_LE_PROFILE_CFG) hidd_le_env_t hidd_le_env; #define HI_UINT16(a) (((a) >> 8) & 0xFF) @@ -24,149 +24,147 @@ hidd_le_env_t hidd_le_env; // HID Information characteristic value -static const uint8_t hidInfo[HID_INFORMATION_LEN] = -{ - LO_UINT16(0x0111), HI_UINT16(0x0111), // bcdHID (USB HID version) - 0x00, // bCountryCode - HID_KBD_FLAGS // Flags +static const uint8_t hidInfo[HID_INFORMATION_LEN] = { + LO_UINT16(0x0111), HI_UINT16(0x0111), // bcdHID (USB HID version) + 0x00, // bCountryCode + HID_KBD_FLAGS // Flags }; // HID Report Map characteristic value // Keyboard report descriptor (using format for Boot interface descriptor) -static const uint8_t hidReportMap[] = -{ - 0x05, 0x01, // Usage Page (Generic Desktop) - 0x09, 0x02, // Usage (Mouse) - 0xA1, 0x01, // Collection (Application) - 0x85, 0x01, // Report Id (1) - 0x09, 0x01, // Usage (Pointer) - 0xA1, 0x00, // Collection (Physical) - 0x05, 0x09, // Usage Page (Buttons) - 0x19, 0x01, // Usage Minimum (01) - Button 1 - 0x29, 0x03, // Usage Maximum (03) - Button 3 - 0x15, 0x00, // Logical Minimum (0) - 0x25, 0x01, // Logical Maximum (1) - 0x75, 0x01, // Report Size (1) - 0x95, 0x03, // Report Count (3) - 0x81, 0x02, // Input (Data, Variable, Absolute) - Button states - 0x75, 0x05, // Report Size (5) - 0x95, 0x01, // Report Count (1) - 0x81, 0x01, // Input (Constant) - Padding or Reserved bits - 0x05, 0x01, // Usage Page (Generic Desktop) - 0x09, 0x30, // Usage (X) - 0x09, 0x31, // Usage (Y) - 0x09, 0x38, // Usage (Wheel) - 0x15, 0x81, // Logical Minimum (-127) - 0x25, 0x7F, // Logical Maximum (127) - 0x75, 0x08, // Report Size (8) - 0x95, 0x03, // Report Count (3) - 0x81, 0x06, // Input (Data, Variable, Relative) - X & Y coordinate - 0xC0, // End Collection - 0xC0, // End Collection +static const uint8_t hidReportMap[] = { + 0x05, 0x01, // Usage Page (Generic Desktop) + 0x09, 0x02, // Usage (Mouse) + 0xA1, 0x01, // Collection (Application) + 0x85, 0x01, // Report Id (1) + 0x09, 0x01, // Usage (Pointer) + 0xA1, 0x00, // Collection (Physical) + 0x05, 0x09, // Usage Page (Buttons) + 0x19, 0x01, // Usage Minimum (01) - Button 1 + 0x29, 0x03, // Usage Maximum (03) - Button 3 + 0x15, 0x00, // Logical Minimum (0) + 0x25, 0x01, // Logical Maximum (1) + 0x75, 0x01, // Report Size (1) + 0x95, 0x03, // Report Count (3) + 0x81, 0x02, // Input (Data, Variable, Absolute) - Button states + 0x75, 0x05, // Report Size (5) + 0x95, 0x01, // Report Count (1) + 0x81, 0x01, // Input (Constant) - Padding or Reserved bits + 0x05, 0x01, // Usage Page (Generic Desktop) + 0x09, 0x30, // Usage (X) + 0x09, 0x31, // Usage (Y) + 0x09, 0x38, // Usage (Wheel) + 0x15, 0x81, // Logical Minimum (-127) + 0x25, 0x7F, // Logical Maximum (127) + 0x75, 0x08, // Report Size (8) + 0x95, 0x03, // Report Count (3) + 0x81, 0x06, // Input (Data, Variable, Relative) - X & Y coordinate + 0xC0, // End Collection + 0xC0, // End Collection - 0x05, 0x01, // Usage Pg (Generic Desktop) - 0x09, 0x06, // Usage (Keyboard) - 0xA1, 0x01, // Collection: (Application) - 0x85, 0x02, // Report Id (2) - // - 0x05, 0x07, // Usage Pg (Key Codes) - 0x19, 0xE0, // Usage Min (224) - 0x29, 0xE7, // Usage Max (231) - 0x15, 0x00, // Log Min (0) - 0x25, 0x01, // Log Max (1) - // - // Modifier byte - 0x75, 0x01, // Report Size (1) - 0x95, 0x08, // Report Count (8) - 0x81, 0x02, // Input: (Data, Variable, Absolute) - // - // Reserved byte - 0x95, 0x01, // Report Count (1) - 0x75, 0x08, // Report Size (8) - 0x81, 0x01, // Input: (Constant) - // - // LED report - 0x95, 0x05, // Report Count (5) - 0x75, 0x01, // Report Size (1) - 0x05, 0x08, // Usage Pg (LEDs) - 0x19, 0x01, // Usage Min (1) - 0x29, 0x05, // Usage Max (5) - 0x91, 0x02, // Output: (Data, Variable, Absolute) - // - // LED report padding - 0x95, 0x01, // Report Count (1) - 0x75, 0x03, // Report Size (3) - 0x91, 0x01, // Output: (Constant) - // - // Key arrays (6 bytes) - 0x95, 0x06, // Report Count (6) - 0x75, 0x08, // Report Size (8) - 0x15, 0x00, // Log Min (0) - 0x25, 0x65, // Log Max (101) - 0x05, 0x07, // Usage Pg (Key Codes) - 0x19, 0x00, // Usage Min (0) - 0x29, 0x65, // Usage Max (101) - 0x81, 0x00, // Input: (Data, Array) - // - 0xC0, // End Collection - // - 0x05, 0x0C, // Usage Pg (Consumer Devices) - 0x09, 0x01, // Usage (Consumer Control) - 0xA1, 0x01, // Collection (Application) - 0x85, 0x03, // Report Id (3) - 0x09, 0x02, // Usage (Numeric Key Pad) - 0xA1, 0x02, // Collection (Logical) - 0x05, 0x09, // Usage Pg (Button) - 0x19, 0x01, // Usage Min (Button 1) - 0x29, 0x0A, // Usage Max (Button 10) - 0x15, 0x01, // Logical Min (1) - 0x25, 0x0A, // Logical Max (10) - 0x75, 0x04, // Report Size (4) - 0x95, 0x01, // Report Count (1) - 0x81, 0x00, // Input (Data, Ary, Abs) - 0xC0, // End Collection - 0x05, 0x0C, // Usage Pg (Consumer Devices) - 0x09, 0x86, // Usage (Channel) - 0x15, 0xFF, // Logical Min (-1) - 0x25, 0x01, // Logical Max (1) - 0x75, 0x02, // Report Size (2) - 0x95, 0x01, // Report Count (1) - 0x81, 0x46, // Input (Data, Var, Rel, Null) - 0x09, 0xE9, // Usage (Volume Up) - 0x09, 0xEA, // Usage (Volume Down) - 0x15, 0x00, // Logical Min (0) - 0x75, 0x01, // Report Size (1) - 0x95, 0x02, // Report Count (2) - 0x81, 0x02, // Input (Data, Var, Abs) - 0x09, 0xE2, // Usage (Mute) - 0x09, 0x30, // Usage (Power) - 0x09, 0x83, // Usage (Recall Last) - 0x09, 0x81, // Usage (Assign Selection) - 0x09, 0xB0, // Usage (Play) - 0x09, 0xB1, // Usage (Pause) - 0x09, 0xB2, // Usage (Record) - 0x09, 0xB3, // Usage (Fast Forward) - 0x09, 0xB4, // Usage (Rewind) - 0x09, 0xB5, // Usage (Scan Next) - 0x09, 0xB6, // Usage (Scan Prev) - 0x09, 0xB7, // Usage (Stop) - 0x15, 0x01, // Logical Min (1) - 0x25, 0x0C, // Logical Max (12) - 0x75, 0x04, // Report Size (4) - 0x95, 0x01, // Report Count (1) - 0x81, 0x00, // Input (Data, Ary, Abs) - 0x09, 0x80, // Usage (Selection) - 0xA1, 0x02, // Collection (Logical) - 0x05, 0x09, // Usage Pg (Button) - 0x19, 0x01, // Usage Min (Button 1) - 0x29, 0x03, // Usage Max (Button 3) - 0x15, 0x01, // Logical Min (1) - 0x25, 0x03, // Logical Max (3) - 0x75, 0x02, // Report Size (2) - 0x81, 0x00, // Input (Data, Ary, Abs) - 0xC0, // End Collection - 0x81, 0x03, // Input (Const, Var, Abs) - 0xC0 // End Collection + 0x05, 0x01, // Usage Pg (Generic Desktop) + 0x09, 0x06, // Usage (Keyboard) + 0xA1, 0x01, // Collection: (Application) + 0x85, 0x02, // Report Id (2) + // + 0x05, 0x07, // Usage Pg (Key Codes) + 0x19, 0xE0, // Usage Min (224) + 0x29, 0xE7, // Usage Max (231) + 0x15, 0x00, // Log Min (0) + 0x25, 0x01, // Log Max (1) + // + // Modifier byte + 0x75, 0x01, // Report Size (1) + 0x95, 0x08, // Report Count (8) + 0x81, 0x02, // Input: (Data, Variable, Absolute) + // + // Reserved byte + 0x95, 0x01, // Report Count (1) + 0x75, 0x08, // Report Size (8) + 0x81, 0x01, // Input: (Constant) + // + // LED report + 0x95, 0x05, // Report Count (5) + 0x75, 0x01, // Report Size (1) + 0x05, 0x08, // Usage Pg (LEDs) + 0x19, 0x01, // Usage Min (1) + 0x29, 0x05, // Usage Max (5) + 0x91, 0x02, // Output: (Data, Variable, Absolute) + // + // LED report padding + 0x95, 0x01, // Report Count (1) + 0x75, 0x03, // Report Size (3) + 0x91, 0x01, // Output: (Constant) + // + // Key arrays (6 bytes) + 0x95, 0x06, // Report Count (6) + 0x75, 0x08, // Report Size (8) + 0x15, 0x00, // Log Min (0) + 0x25, 0x65, // Log Max (101) + 0x05, 0x07, // Usage Pg (Key Codes) + 0x19, 0x00, // Usage Min (0) + 0x29, 0x65, // Usage Max (101) + 0x81, 0x00, // Input: (Data, Array) + // + 0xC0, // End Collection + // + 0x05, 0x0C, // Usage Pg (Consumer Devices) + 0x09, 0x01, // Usage (Consumer Control) + 0xA1, 0x01, // Collection (Application) + 0x85, 0x03, // Report Id (3) + 0x09, 0x02, // Usage (Numeric Key Pad) + 0xA1, 0x02, // Collection (Logical) + 0x05, 0x09, // Usage Pg (Button) + 0x19, 0x01, // Usage Min (Button 1) + 0x29, 0x0A, // Usage Max (Button 10) + 0x15, 0x01, // Logical Min (1) + 0x25, 0x0A, // Logical Max (10) + 0x75, 0x04, // Report Size (4) + 0x95, 0x01, // Report Count (1) + 0x81, 0x00, // Input (Data, Ary, Abs) + 0xC0, // End Collection + 0x05, 0x0C, // Usage Pg (Consumer Devices) + 0x09, 0x86, // Usage (Channel) + 0x15, 0xFF, // Logical Min (-1) + 0x25, 0x01, // Logical Max (1) + 0x75, 0x02, // Report Size (2) + 0x95, 0x01, // Report Count (1) + 0x81, 0x46, // Input (Data, Var, Rel, Null) + 0x09, 0xE9, // Usage (Volume Up) + 0x09, 0xEA, // Usage (Volume Down) + 0x15, 0x00, // Logical Min (0) + 0x75, 0x01, // Report Size (1) + 0x95, 0x02, // Report Count (2) + 0x81, 0x02, // Input (Data, Var, Abs) + 0x09, 0xE2, // Usage (Mute) + 0x09, 0x30, // Usage (Power) + 0x09, 0x83, // Usage (Recall Last) + 0x09, 0x81, // Usage (Assign Selection) + 0x09, 0xB0, // Usage (Play) + 0x09, 0xB1, // Usage (Pause) + 0x09, 0xB2, // Usage (Record) + 0x09, 0xB3, // Usage (Fast Forward) + 0x09, 0xB4, // Usage (Rewind) + 0x09, 0xB5, // Usage (Scan Next) + 0x09, 0xB6, // Usage (Scan Prev) + 0x09, 0xB7, // Usage (Stop) + 0x15, 0x01, // Logical Min (1) + 0x25, 0x0C, // Logical Max (12) + 0x75, 0x04, // Report Size (4) + 0x95, 0x01, // Report Count (1) + 0x81, 0x00, // Input (Data, Ary, Abs) + 0x09, 0x80, // Usage (Selection) + 0xA1, 0x02, // Collection (Logical) + 0x05, 0x09, // Usage Pg (Button) + 0x19, 0x01, // Usage Min (Button 1) + 0x29, 0x03, // Usage Max (Button 3) + 0x15, 0x01, // Logical Min (1) + 0x25, 0x03, // Logical Max (3) + 0x75, 0x02, // Report Size (2) + 0x81, 0x00, // Input (Data, Ary, Abs) + 0xC0, // End Collection + 0x81, 0x03, // Input (Const, Var, Abs) + 0xC0 // End Collection }; // HID report map length @@ -184,68 +182,67 @@ esp_bt_uuid_t char_report_map_uuid = {LEN_UUID_16, {CHAR_REPORT_MAP_UUID}}; esp_bt_uuid_t char_report_uuid = {LEN_UUID_16, {CHAR_REPORT_UUID}}; esp_bt_uuid_t char_proto_mode_uuid = {LEN_UUID_16, {CHAR_PROTOCOL_MODE_UUID}}; esp_bt_uuid_t char_kb_in_report_uuid = {LEN_UUID_16, {CHAR_BOOT_KB_IN_REPORT_UUID}}; -esp_bt_uuid_t char_kb_out_report_uuid = {LEN_UUID_16,{CHAR_BOOT_KB_OUT_REPORT_UUID}}; -esp_bt_uuid_t char_mouse_in_report_uuid = {LEN_UUID_16,{CHAR_BOOT_MOUSE_IN_REPORT_UUID}}; +esp_bt_uuid_t char_kb_out_report_uuid = {LEN_UUID_16, {CHAR_BOOT_KB_OUT_REPORT_UUID}}; +esp_bt_uuid_t char_mouse_in_report_uuid = {LEN_UUID_16, {CHAR_BOOT_MOUSE_IN_REPORT_UUID}}; /// Full HID device Database Description - Used to add attributes into the database -const char_desc_t hids_char_db[HIDD_LE_CHAR_MAX] = -{ +const char_desc_t hids_char_db[HIDD_LE_CHAR_MAX] = { // HID Information Characteristic Value - [HIDD_LE_INFO_CHAR] = { - &char_info_uuid, - GATT_PERM_READ, - GATT_CHAR_PROP_BIT_READ - }, + [HIDD_LE_INFO_CHAR] = { + &char_info_uuid, + GATT_PERM_READ, + GATT_CHAR_PROP_BIT_READ + }, // HID Control Point Characteristic Value [HIDD_LE_CTNL_PT_CHAR] = { - &char_ctnl_pt_uuid, - GATT_PERM_WRITE, - GATT_CHAR_PROP_BIT_WRITE_NR - }, + &char_ctnl_pt_uuid, + GATT_PERM_WRITE, + GATT_CHAR_PROP_BIT_WRITE_NR + }, // Report Map Characteristic Value [HIDD_LE_REPORT_MAP_CHAR] = { - &char_report_map_uuid, - GATT_PERM_READ, - GATT_CHAR_PROP_BIT_READ - }, - // Report Characteristic Value - [HIDD_LE_REPORT_CHAR] = { - &char_report_uuid, - (GATT_PERM_READ|GATT_PERM_WRITE), - (GATT_CHAR_PROP_BIT_READ|GATT_CHAR_PROP_BIT_WRITE|GATT_CHAR_PROP_BIT_WRITE_NR) - }, + &char_report_map_uuid, + GATT_PERM_READ, + GATT_CHAR_PROP_BIT_READ + }, + // Report Characteristic Value + [HIDD_LE_REPORT_CHAR] = { + &char_report_uuid, + (GATT_PERM_READ | GATT_PERM_WRITE), + (GATT_CHAR_PROP_BIT_READ | GATT_CHAR_PROP_BIT_WRITE | GATT_CHAR_PROP_BIT_WRITE_NR) + }, // Protocol Mode Characteristic Declaration [HIDD_LE_PROTO_MODE_CHAR] = { - &char_proto_mode_uuid, - GATT_PERM_READ, - GATT_CHAR_PROP_BIT_READ, - }, - + &char_proto_mode_uuid, + GATT_PERM_READ, + GATT_CHAR_PROP_BIT_READ, + }, + // Boot Keyboard Input Report Characteristic Value [HIDD_LE_BOOT_KB_IN_REPORT_CHAR] = { - &char_kb_in_report_uuid, - GATT_PERM_READ, - (GATT_CHAR_PROP_BIT_READ|GATT_CHAR_PROP_BIT_NOTIFY), - - }, - + &char_kb_in_report_uuid, + GATT_PERM_READ, + (GATT_CHAR_PROP_BIT_READ | GATT_CHAR_PROP_BIT_NOTIFY), + + }, + // Boot Keyboard Output Report Characteristic Value [HIDD_LE_BOOT_KB_OUT_REPORT_CHAR] = { - &char_kb_out_report_uuid, - GATT_PERM_READ, - (GATT_CHAR_PROP_BIT_READ|GATT_CHAR_PROP_BIT_WRITE|GATT_CHAR_PROP_BIT_WRITE_NR) - }, + &char_kb_out_report_uuid, + GATT_PERM_READ, + (GATT_CHAR_PROP_BIT_READ | GATT_CHAR_PROP_BIT_WRITE | GATT_CHAR_PROP_BIT_WRITE_NR) + }, // Boot Mouse Input Report Characteristic Value [HIDD_LE_BOOT_MOUSE_IN_REPORT_CHAR] = { - &char_mouse_in_report_uuid, - GATT_PERM_READ, - (GATT_CHAR_PROP_BIT_READ|GATT_CHAR_PROP_BIT_NOTIFY), - }, + &char_mouse_in_report_uuid, + GATT_PERM_READ, + (GATT_CHAR_PROP_BIT_READ | GATT_CHAR_PROP_BIT_NOTIFY), + }, }; static void hidd_add_characterisitc(const char_desc_t *char_desc); @@ -261,33 +258,30 @@ static void hidd_le_profile_cb(esp_gatts_evt_t event, esp_gatts_t *p_data); ** ** Description the callback function after the hid device profile has been register to the BTA manager module ** -** Returns NULL +** Returns NULL ** *******************************************************************************/ static void hidd_add_characterisitc(const char_desc_t *char_desc) -{ - uint16_t service_id; - if(char_desc == NULL) - { - LOG_ERROR("Invalid hid characteristic\n"); - return; - } - //check the hid device serivce has been register to the data base or not - if(!hidd_le_env.enabled) - { - LOG_ERROR("The hid device didn't register yet\n"); - return; - } - //get the service id from the env whitch has been register - service_id = hidd_le_env.hidd_clcb.cur_srvc_id; - if(char_desc->char_uuid != 0x00) - { - // start added the charact to the data base - esp_ble_gatts_add_char (service_id, - char_desc->char_uuid, - char_desc->perm, - char_desc->prop); - } +{ + uint16_t service_id; + if (char_desc == NULL) { + LOG_ERROR("Invalid hid characteristic\n"); + return; + } + //check the hid device serivce has been register to the data base or not + if (!hidd_le_env.enabled) { + LOG_ERROR("The hid device didn't register yet\n"); + return; + } + //get the service id from the env whitch has been register + service_id = hidd_le_env.hidd_clcb.cur_srvc_id; + if (char_desc->char_uuid != 0x00) { + // start added the charact to the data base + esp_ble_gatts_add_char (service_id, + char_desc->char_uuid, + char_desc->perm, + char_desc->prop); + } } @@ -297,148 +291,136 @@ static void hidd_add_characterisitc(const char_desc_t *char_desc) ** ** Description the callback function after the hid device profile has been register to the BTA manager module ** -** Returns NULL +** Returns NULL ** *******************************************************************************/ static void hidd_le_profile_cb(esp_gatts_evt_t event, esp_gatts_t *p_data) { - esp_gatts_rsp_t rsp; - esp_bt_uuid_t uuid = {LEN_UUID_16, {ATT_SVC_HID}}; - static uint8_t hid_char_idx; - hidd_clcb_t *p_clcb = NULL; - uint8_t app_id = 0xff; - - switch(event) - { - case ESP_GATTS_REG_EVT: - //check the register of the hid device profile has been succeess or not - if(p_data->reg_oper.status != ESP_GATT_OK) - { - LOG_ERROR("hidd profile register failed\n"); - } - hidd_le_env.hidd_inst.app_id = app_id; - //save the gatt interface in the hid device ENV - hidd_le_env.gatt_if = p_data->reg_oper.server_if; - //set the env flag to enable - hidd_le_env.enabled = true; - //create the hid device service to the service data base. - if(p_data->reg_oper.uuid.uu.uuid16 == ATT_SVC_HID) - { - hidd_le_create_service(true); - } - break; - case ESP_GATTS_CREATE_EVT: - if(p_data->create.uuid.uu.uuid16 == ATT_SVC_HID) - { - ///store the service id to the env - hidd_le_env.hidd_clcb.cur_srvc_id = p_data->create.service_id; - //start the button service after created - esp_ble_gatts_start_srvc(p_data->create.service_id); - hid_char_idx = HIDD_LE_INFO_CHAR; - //added the info character to the data base. - hidd_add_characterisitc(&hids_char_db[hid_char_idx]); - hid_char_idx++; - } - - break; - case ESP_GATTS_ADD_INCL_SRVC_EVT: - - break; - case ESP_GATTS_ADD_CHAR_EVT: - //save the charateristic handle to the env - hidd_le_env.hidd_inst.att_tbl[hid_char_idx-1] = p_data->add_result.attr_id; - LOG_ERROR("hanlder = %x, p_data->add_result.char_uuid.uu.uuid16 = %x\n",p_data->add_result.attr_id, - p_data->add_result.char_uuid.uu.uuid16); - LOG_ERROR("hid_char_idx=%x\n",hid_char_idx); - if(hid_char_idx <= HIDD_LE_CHAR_MAX) //added the characteristic until the index overflow - { - - if((p_data->add_result.char_uuid.uu.uuid16 == CHAR_BOOT_KB_IN_REPORT_UUID) || - (p_data->add_result.char_uuid.uu.uuid16 == CHAR_BOOT_MOUSE_IN_REPORT_UUID)) - { - // add the gattc config descriptor to the notify charateristic - //tBTA_GATT_PERM perm = (GATT_PERM_WRITE|GATT_PERM_WRITE); - uuid.uu.uuid16 = GATT_UUID_CHAR_CLIENT_CONFIG; - LOG_ERROR("p_data->add_result.char_uuid.uu.uuid16 = %x\n", - p_data->add_result.char_uuid.uu.uuid16); - esp_ble_gatts_add_char_descr (hidd_le_env.hidd_clcb.cur_srvc_id, - GATT_PERM_WRITE, - &uuid); - - - break; - } - hidd_add_characterisitc(&hids_char_db[hid_char_idx]); - } - hid_char_idx++; - break; - case ESP_GATTS_ADD_CHAR_DESCR_EVT: - if(p_data->add_result.char_uuid.uu.uuid16 == GATT_UUID_CHAR_CLIENT_CONFIG) - { - uuid.uu.uuid16 = GATT_UUID_RPT_REF_DESCR; - BTA_GATTS_AddCharDescriptor (hidd_le_env.hidd_clcb.cur_srvc_id, - GATT_PERM_READ, - &uuid); - LOG_ERROR("p_data->add_result.char_uuid.uu.uuid16 = %x\n", - p_data->add_result.char_uuid.uu.uuid16); - } - if(p_data->add_result.char_uuid.uu.uuid16 == GATT_UUID_RPT_REF_DESCR) - { - if(hid_char_idx < HIDD_LE_CHAR_MAX) - { - hidd_add_characterisitc(&hids_char_db[hid_char_idx]); - hid_char_idx++; - } - } - break; - case ESP_GATTS_READ_EVT: - { - LOG_ERROR("Hidd profile BTA_GATTS_READ_EVT\n"); - UINT32 trans_id = p_data->req_data.trans_id; - UINT16 conn_id = p_data->req_data.conn_id; - UINT16 handle = p_data->req_data.p_data->read_req.handle; - bool is_long = p_data->req_data.p_data->read_req.is_long; - LOG_ERROR("read request:event=0x%x,handle=0x%x,trans_id=0x%x,conn_id=0x%x\n", - event, handle, trans_id, conn_id); - - hidd_read_attr_value(p_data->req_data.p_data,trans_id); - } - break; - case ESP_GATTS_WRITE_EVT: - esp_ble_gatts_send_rsp (p_data->req_data.conn_id,p_data->req_data.trans_id, - p_data->req_data.status,NULL); - break; - case ESP_GATTS_CONNECT_EVT: - p_clcb = &hidd_le_env.hidd_clcb; - - if(!p_clcb->in_use) - { - p_clcb->in_use = TRUE; - p_clcb->conn_id = p_data->conn.conn_id;; - LOG_ERROR("hidd->conn_id = %x\n",p_data->conn.conn_id); - p_clcb->connected = TRUE; - memcpy(p_clcb->remote_bda, p_data->conn.remote_bda,BD_ADDR_LEN); - } - break; - case ESP_GATTS_DISCONNECT_EVT: - p_clcb = &hidd_le_env.hidd_clcb; - //set the connection flag to true - p_clcb->connected = false; - p_clcb->in_use = TRUE; - memset(p_clcb->remote_bda, 0, BD_ADDR_LEN); - break; - case ESP_GATTS_START_EVT: - break; - case ESP_GATTS_CONGEST_EVT: - if(hidd_le_env.hidd_clcb.connected && (hidd_le_env.hidd_clcb.conn_id == p_data->conn.conn_id)) - { - //set the connection channal congested flag to true - hidd_le_env.hidd_clcb.congest = p_data->congest.congested; - } - break; - default: - break; - } + esp_gatts_rsp_t rsp; + esp_bt_uuid_t uuid = {LEN_UUID_16, {ATT_SVC_HID}}; + static uint8_t hid_char_idx; + hidd_clcb_t *p_clcb = NULL; + uint8_t app_id = 0xff; + + switch (event) { + case ESP_GATTS_REG_EVT: + //check the register of the hid device profile has been succeess or not + if (p_data->reg_oper.status != ESP_GATT_OK) { + LOG_ERROR("hidd profile register failed\n"); + } + hidd_le_env.hidd_inst.app_id = app_id; + //save the gatt interface in the hid device ENV + hidd_le_env.gatt_if = p_data->reg_oper.server_if; + //set the env flag to enable + hidd_le_env.enabled = true; + //create the hid device service to the service data base. + if (p_data->reg_oper.uuid.uu.uuid16 == ATT_SVC_HID) { + hidd_le_create_service(true); + } + break; + case ESP_GATTS_CREATE_EVT: + if (p_data->create.uuid.uu.uuid16 == ATT_SVC_HID) { + ///store the service id to the env + hidd_le_env.hidd_clcb.cur_srvc_id = p_data->create.service_id; + //start the button service after created + esp_ble_gatts_start_srvc(p_data->create.service_id); + hid_char_idx = HIDD_LE_INFO_CHAR; + //added the info character to the data base. + hidd_add_characterisitc(&hids_char_db[hid_char_idx]); + hid_char_idx++; + } + + break; + case ESP_GATTS_ADD_INCL_SRVC_EVT: + + break; + case ESP_GATTS_ADD_CHAR_EVT: + //save the charateristic handle to the env + hidd_le_env.hidd_inst.att_tbl[hid_char_idx - 1] = p_data->add_result.attr_id; + LOG_ERROR("hanlder = %x, p_data->add_result.char_uuid.uu.uuid16 = %x\n", p_data->add_result.attr_id, + p_data->add_result.char_uuid.uu.uuid16); + LOG_ERROR("hid_char_idx=%x\n", hid_char_idx); + if (hid_char_idx <= HIDD_LE_CHAR_MAX) { //added the characteristic until the index overflow + + if ((p_data->add_result.char_uuid.uu.uuid16 == CHAR_BOOT_KB_IN_REPORT_UUID) || + (p_data->add_result.char_uuid.uu.uuid16 == CHAR_BOOT_MOUSE_IN_REPORT_UUID)) { + // add the gattc config descriptor to the notify charateristic + //tBTA_GATT_PERM perm = (GATT_PERM_WRITE|GATT_PERM_WRITE); + uuid.uu.uuid16 = GATT_UUID_CHAR_CLIENT_CONFIG; + LOG_ERROR("p_data->add_result.char_uuid.uu.uuid16 = %x\n", + p_data->add_result.char_uuid.uu.uuid16); + esp_ble_gatts_add_char_descr (hidd_le_env.hidd_clcb.cur_srvc_id, + GATT_PERM_WRITE, + &uuid); + + + break; + } + hidd_add_characterisitc(&hids_char_db[hid_char_idx]); + } + hid_char_idx++; + break; + case ESP_GATTS_ADD_CHAR_DESCR_EVT: + if (p_data->add_result.char_uuid.uu.uuid16 == GATT_UUID_CHAR_CLIENT_CONFIG) { + uuid.uu.uuid16 = GATT_UUID_RPT_REF_DESCR; + BTA_GATTS_AddCharDescriptor (hidd_le_env.hidd_clcb.cur_srvc_id, + GATT_PERM_READ, + &uuid); + LOG_ERROR("p_data->add_result.char_uuid.uu.uuid16 = %x\n", + p_data->add_result.char_uuid.uu.uuid16); + } + if (p_data->add_result.char_uuid.uu.uuid16 == GATT_UUID_RPT_REF_DESCR) { + if (hid_char_idx < HIDD_LE_CHAR_MAX) { + hidd_add_characterisitc(&hids_char_db[hid_char_idx]); + hid_char_idx++; + } + } + break; + case ESP_GATTS_READ_EVT: { + LOG_ERROR("Hidd profile BTA_GATTS_READ_EVT\n"); + UINT32 trans_id = p_data->req_data.trans_id; + UINT16 conn_id = p_data->req_data.conn_id; + UINT16 handle = p_data->req_data.p_data->read_req.handle; + bool is_long = p_data->req_data.p_data->read_req.is_long; + LOG_ERROR("read request:event=0x%x,handle=0x%x,trans_id=0x%x,conn_id=0x%x\n", + event, handle, trans_id, conn_id); + + hidd_read_attr_value(p_data->req_data.p_data, trans_id); + } + break; + case ESP_GATTS_WRITE_EVT: + esp_ble_gatts_send_rsp (p_data->req_data.conn_id, p_data->req_data.trans_id, + p_data->req_data.status, NULL); + break; + case ESP_GATTS_CONNECT_EVT: + p_clcb = &hidd_le_env.hidd_clcb; + + if (!p_clcb->in_use) { + p_clcb->in_use = TRUE; + p_clcb->conn_id = p_data->conn.conn_id;; + LOG_ERROR("hidd->conn_id = %x\n", p_data->conn.conn_id); + p_clcb->connected = TRUE; + memcpy(p_clcb->remote_bda, p_data->conn.remote_bda, BD_ADDR_LEN); + } + break; + case ESP_GATTS_DISCONNECT_EVT: + p_clcb = &hidd_le_env.hidd_clcb; + //set the connection flag to true + p_clcb->connected = false; + p_clcb->in_use = TRUE; + memset(p_clcb->remote_bda, 0, BD_ADDR_LEN); + break; + case ESP_GATTS_START_EVT: + break; + case ESP_GATTS_CONGEST_EVT: + if (hidd_le_env.hidd_clcb.connected && (hidd_le_env.hidd_clcb.conn_id == p_data->conn.conn_id)) { + //set the connection channal congested flag to true + hidd_le_env.hidd_clcb.congest = p_data->congest.congested; + } + break; + default: + break; + } } /******************************************************************************* @@ -448,23 +430,23 @@ static void hidd_le_profile_cb(esp_gatts_evt_t event, esp_gatts_t *p_data) ** Description Create a Service for the hid device profile ** ** Parameters is_primary: this service is the primary service or not,true is the primary service -** false is not the primary service +** false is not the primary service ** p_service_uuid: service UUID. -** -** Returns NULL +** +** Returns NULL ** *******************************************************************************/ void hidd_le_create_service(BOOLEAN is_primary) { - esp_gatts_if_t server_if ; - esp_bt_uuid_t uuid = {LEN_UUID_16, {ATT_SVC_HID}}; - //the number of the hid device attributes in the hid service. - UINT16 num_handle = HIDD_LE_IDX_NB; - UINT8 inst = 0x00; - server_if = hidd_le_env.gatt_if; - hidd_le_env.inst_id = inst; - //start create the hid device service - esp_ble_gatts_create_srvc (server_if,&uuid,inst,num_handle,is_primary); + esp_gatts_if_t server_if ; + esp_bt_uuid_t uuid = {LEN_UUID_16, {ATT_SVC_HID}}; + //the number of the hid device attributes in the hid service. + UINT16 num_handle = HIDD_LE_IDX_NB; + UINT8 inst = 0x00; + server_if = hidd_le_env.gatt_if; + hidd_le_env.inst_id = inst; + //start create the hid device service + esp_ble_gatts_create_srvc (server_if, &uuid, inst, num_handle, is_primary); } @@ -475,45 +457,44 @@ void hidd_le_create_service(BOOLEAN is_primary) ******************************************************************************/ void hidd_read_attr_value(tGATTS_DATA *p_data, uint32_t trans_id) { - hidd_inst_t *p_inst = &hidd_le_env.hidd_inst; + hidd_inst_t *p_inst = &hidd_le_env.hidd_inst; uint8_t i; - uint8_t status = ESP_GATT_OK; - uint8_t app_id = hidd_le_env.hidd_inst.app_id; - + uint8_t status = ESP_GATT_OK; + uint8_t app_id = hidd_le_env.hidd_inst.app_id; + esp_gatt_status_t st = ESP_GATT_NOT_FOUND; uint16_t handle = p_data->read_req.handle; - uint16_t conn_id = hidd_le_env.hidd_clcb.conn_id; + uint16_t conn_id = hidd_le_env.hidd_clcb.conn_id; - if (handle == p_inst->att_tbl[HIDD_LE_INFO_CHAR]) - { - //read hid device info evt - p_inst->pending_evt = HIDD_LE_READ_INFO_EVT; - - }else if(handle == p_inst->att_tbl[HIDD_LE_CTNL_PT_CHAR]){ - //read hid device contol point evt - p_inst->pending_evt = HIDD_LE_READ_CTNL_PT_EVT; - }else if(handle == p_inst->att_tbl[HIDD_LE_REPORT_MAP_CHAR]){ - //read hid device report map value evt - p_inst->pending_evt = HIDD_LE_READ_REPORT_MAP_EVT; - }else if(handle == p_inst->att_tbl[HIDD_LE_REPORT_CHAR]){ - //read hid device report evt - p_inst->pending_evt = HIDD_LE_READ_REPORT_EVT; - }else if(handle == p_inst->att_tbl[HIDD_LE_PROTO_MODE_CHAR]){ - //read hid device mode evt - p_inst->pending_evt = HIDD_LE_READ_PROTO_MODE_EVT; - }else if(handle == p_inst->att_tbl[HIDD_LE_BOOT_KB_IN_REPORT_CHAR]){ - //read hid boot keyboard in report evt - p_inst->pending_evt = HIDD_LE_BOOT_KB_IN_REPORT_EVT; - }else if(handle == p_inst->att_tbl[HIDD_LE_BOOT_KB_OUT_REPORT_CHAR]){ - //read hid boot keyboard out report evt - p_inst->pending_evt = HIDD_LE_BOOT_KB_OUT_REPORT_EVT; - }else if(handle == p_inst->att_tbl[HIDD_LE_BOOT_MOUSE_IN_REPORT_CHAR]){ - //read hid device boot mouse in report evt - p_inst->pending_evt = HIDD_LE_BOOT_MOUSE_IN_REPORT_EVT; - } + if (handle == p_inst->att_tbl[HIDD_LE_INFO_CHAR]) { + //read hid device info evt + p_inst->pending_evt = HIDD_LE_READ_INFO_EVT; - //start build the rsp message - hidd_rsp(trans_id, conn_id, app_id, status, p_inst->pending_evt, p_data); + } else if (handle == p_inst->att_tbl[HIDD_LE_CTNL_PT_CHAR]) { + //read hid device contol point evt + p_inst->pending_evt = HIDD_LE_READ_CTNL_PT_EVT; + } else if (handle == p_inst->att_tbl[HIDD_LE_REPORT_MAP_CHAR]) { + //read hid device report map value evt + p_inst->pending_evt = HIDD_LE_READ_REPORT_MAP_EVT; + } else if (handle == p_inst->att_tbl[HIDD_LE_REPORT_CHAR]) { + //read hid device report evt + p_inst->pending_evt = HIDD_LE_READ_REPORT_EVT; + } else if (handle == p_inst->att_tbl[HIDD_LE_PROTO_MODE_CHAR]) { + //read hid device mode evt + p_inst->pending_evt = HIDD_LE_READ_PROTO_MODE_EVT; + } else if (handle == p_inst->att_tbl[HIDD_LE_BOOT_KB_IN_REPORT_CHAR]) { + //read hid boot keyboard in report evt + p_inst->pending_evt = HIDD_LE_BOOT_KB_IN_REPORT_EVT; + } else if (handle == p_inst->att_tbl[HIDD_LE_BOOT_KB_OUT_REPORT_CHAR]) { + //read hid boot keyboard out report evt + p_inst->pending_evt = HIDD_LE_BOOT_KB_OUT_REPORT_EVT; + } else if (handle == p_inst->att_tbl[HIDD_LE_BOOT_MOUSE_IN_REPORT_CHAR]) { + //read hid device boot mouse in report evt + p_inst->pending_evt = HIDD_LE_BOOT_MOUSE_IN_REPORT_EVT; + } + + //start build the rsp message + hidd_rsp(trans_id, conn_id, app_id, status, p_inst->pending_evt, p_data); } /******************************************************************************* @@ -524,99 +505,98 @@ void hidd_read_attr_value(tGATTS_DATA *p_data, uint32_t trans_id) ** *******************************************************************************/ void hidd_rsp (uint32_t trans_id, uint16_t conn_id, uint8_t app_id, - esp_gatt_status_t status, uint8_t event, tGATTS_DATA *p_rsp) + esp_gatt_status_t status, uint8_t event, tGATTS_DATA *p_rsp) { hidd_inst_t *p_inst = &hidd_le_env.hidd_inst; tGATTS_RSP rsp; uint8_t *pp; - LOG_ERROR("conn_id = %x, trans_id = %x, event = %x\n", - conn_id,trans_id,event); - - if (p_inst->app_id == app_id) - return ; - + LOG_ERROR("conn_id = %x, trans_id = %x, event = %x\n", + conn_id, trans_id, event); + + if (p_inst->app_id == app_id) { + return ; + } + memset(&rsp, 0, sizeof(tGATTS_RSP)); - if (p_inst->pending_evt == event) - { - switch (event) - { + if (p_inst->pending_evt == event) { + switch (event) { case HIDD_LE_READ_INFO_EVT: - LOG_ERROR(" p_inst->att_tbl[HIDD_LE_INFO_CHAR] = %x\n", - p_inst->att_tbl[HIDD_LE_INFO_CHAR]); + LOG_ERROR(" p_inst->att_tbl[HIDD_LE_INFO_CHAR] = %x\n", + p_inst->att_tbl[HIDD_LE_INFO_CHAR]); rsp.attr_value.handle = p_inst->att_tbl[HIDD_LE_INFO_CHAR]; rsp.attr_value.len = HID_INFORMATION_LEN; - //copy the infomation value to the att value to sent to the peer device - memcpy(rsp.attr_value.value,hidInfo,HID_INFORMATION_LEN); - //start send the rsp to the peer device + //copy the infomation value to the att value to sent to the peer device + memcpy(rsp.attr_value.value, hidInfo, HID_INFORMATION_LEN); + //start send the rsp to the peer device esp_ble_gatts_send_rsp(conn_id, trans_id, status, &rsp); break; case HIDD_LE_READ_CTNL_PT_EVT: - LOG_ERROR(" p_inst->att_tbl[HIDD_LE_CTNL_PT_CHAR] = %x\n", - p_inst->att_tbl[HIDD_LE_CTNL_PT_CHAR]); + LOG_ERROR(" p_inst->att_tbl[HIDD_LE_CTNL_PT_CHAR] = %x\n", + p_inst->att_tbl[HIDD_LE_CTNL_PT_CHAR]); rsp.attr_value.handle = p_inst->att_tbl[HIDD_LE_CTNL_PT_CHAR]; rsp.attr_value.len = 0; - //start send the rsp to the peer device + //start send the rsp to the peer device esp_ble_gatts_send_rsp(conn_id, trans_id, status, &rsp); break; case HIDD_LE_READ_REPORT_MAP_EVT: - LOG_ERROR("p_inst->att_tbl[HIDD_LE_REPORT_MAP_CHAR] = %x\n", - p_inst->att_tbl[HIDD_LE_REPORT_MAP_CHAR]); + LOG_ERROR("p_inst->att_tbl[HIDD_LE_REPORT_MAP_CHAR] = %x\n", + p_inst->att_tbl[HIDD_LE_REPORT_MAP_CHAR]); rsp.attr_value.handle = p_inst->att_tbl[HIDD_LE_REPORT_MAP_CHAR]; rsp.attr_value.len = hidReportMapLen; //copy the infomation value to the att value to sent to the peer device - memcpy(rsp.attr_value.value,hidReportMap,hidReportMapLen); - //start send the rsp to the peer device + memcpy(rsp.attr_value.value, hidReportMap, hidReportMapLen); + //start send the rsp to the peer device esp_ble_gatts_send_rsp(conn_id, trans_id, status, &rsp); break; - case HIDD_LE_READ_REPORT_EVT: - LOG_ERROR("p_inst->att_tbl[HIDD_LE_BOOT_KB_IN_REPORT_CHAR] = %x\n", - p_inst->att_tbl[HIDD_LE_BOOT_KB_IN_REPORT_CHAR]); - rsp.attr_value.handle = p_inst->att_tbl[HIDD_LE_BOOT_KB_IN_REPORT_CHAR]; + case HIDD_LE_READ_REPORT_EVT: + LOG_ERROR("p_inst->att_tbl[HIDD_LE_BOOT_KB_IN_REPORT_CHAR] = %x\n", + p_inst->att_tbl[HIDD_LE_BOOT_KB_IN_REPORT_CHAR]); + rsp.attr_value.handle = p_inst->att_tbl[HIDD_LE_BOOT_KB_IN_REPORT_CHAR]; rsp.attr_value.len = 0; - + esp_ble_gatts_send_rsp(conn_id, trans_id, status, &rsp); - break; + break; case HIDD_LE_READ_PROTO_MODE_EVT: - LOG_ERROR("p_inst->att_tbl[HIDD_LE_PROTO_MODE_CHAR] = %x\n", - p_inst->att_tbl[HIDD_LE_PROTO_MODE_CHAR]); + LOG_ERROR("p_inst->att_tbl[HIDD_LE_PROTO_MODE_CHAR] = %x\n", + p_inst->att_tbl[HIDD_LE_PROTO_MODE_CHAR]); rsp.attr_value.handle = p_inst->att_tbl[HIDD_LE_PROTO_MODE_CHAR]; rsp.attr_value.len = 1; pp = rsp.attr_value.value; - //copy the infomation value to the att value to sent to the peer device - memcpy(rsp.attr_value.value,&hidProtocolMode,rsp.attr_value.len); + //copy the infomation value to the att value to sent to the peer device + memcpy(rsp.attr_value.value, &hidProtocolMode, rsp.attr_value.len); esp_ble_gatts_send_rsp(conn_id, trans_id, status, &rsp); break; - case HIDD_LE_BOOT_KB_IN_REPORT_EVT: - LOG_ERROR("p_inst->att_tbl[HIDD_LE_BOOT_KB_IN_REPORT_CHAR] = %x\n", - p_inst->att_tbl[HIDD_LE_BOOT_KB_IN_REPORT_CHAR]); - rsp.attr_value.handle = p_inst->att_tbl[HIDD_LE_BOOT_KB_IN_REPORT_CHAR]; + case HIDD_LE_BOOT_KB_IN_REPORT_EVT: + LOG_ERROR("p_inst->att_tbl[HIDD_LE_BOOT_KB_IN_REPORT_CHAR] = %x\n", + p_inst->att_tbl[HIDD_LE_BOOT_KB_IN_REPORT_CHAR]); + rsp.attr_value.handle = p_inst->att_tbl[HIDD_LE_BOOT_KB_IN_REPORT_CHAR]; rsp.attr_value.len = 0; - + esp_ble_gatts_send_rsp(conn_id, trans_id, status, &rsp); - break; - case HIDD_LE_BOOT_KB_OUT_REPORT_EVT: - LOG_ERROR("p_inst->att_tbl[HIDD_LE_BOOT_KB_IN_REPORT_CHAR] = %x\n", - p_inst->att_tbl[HIDD_LE_BOOT_KB_IN_REPORT_CHAR]); - rsp.attr_value.handle = p_inst->att_tbl[HIDD_LE_BOOT_KB_IN_REPORT_CHAR]; + break; + case HIDD_LE_BOOT_KB_OUT_REPORT_EVT: + LOG_ERROR("p_inst->att_tbl[HIDD_LE_BOOT_KB_IN_REPORT_CHAR] = %x\n", + p_inst->att_tbl[HIDD_LE_BOOT_KB_IN_REPORT_CHAR]); + rsp.attr_value.handle = p_inst->att_tbl[HIDD_LE_BOOT_KB_IN_REPORT_CHAR]; rsp.attr_value.len = 0; - + esp_ble_gatts_send_rsp(conn_id, trans_id, status, &rsp); - break; - case HIDD_LE_BOOT_MOUSE_IN_REPORT_EVT: - LOG_ERROR("p_inst->att_tbl[HIDD_LE_BOOT_KB_IN_REPORT_CHAR] = %x\n", - p_inst->att_tbl[HIDD_LE_BOOT_KB_IN_REPORT_CHAR]); - rsp.attr_value.handle = p_inst->att_tbl[HIDD_LE_BOOT_KB_IN_REPORT_CHAR]; + break; + case HIDD_LE_BOOT_MOUSE_IN_REPORT_EVT: + LOG_ERROR("p_inst->att_tbl[HIDD_LE_BOOT_KB_IN_REPORT_CHAR] = %x\n", + p_inst->att_tbl[HIDD_LE_BOOT_KB_IN_REPORT_CHAR]); + rsp.attr_value.handle = p_inst->att_tbl[HIDD_LE_BOOT_KB_IN_REPORT_CHAR]; rsp.attr_value.len = 0; - + esp_ble_gatts_send_rsp(conn_id, trans_id, status, &rsp); - break; + break; default: break; } - // p_inst->pending_clcb_idx = 0; + // p_inst->pending_clcb_idx = 0; p_inst->pending_evt = 0; p_inst->pending_hal = 0; } @@ -629,33 +609,30 @@ void hidd_rsp (uint32_t trans_id, uint16_t conn_id, uint8_t app_id, ** Function hidd_le_init ** ** Description Initializa the GATT Service for button profiles. -** Returns NULL +** Returns NULL *******************************************************************************/ esp_gatt_status_t hidd_le_init (void) { - tBT_UUID app_uuid = {LEN_UUID_16,{ATT_SVC_HID}}; + tBT_UUID app_uuid = {LEN_UUID_16, {ATT_SVC_HID}}; - if(hidd_le_env.enabled) - { - LOG_ERROR("hid device svc already initaliezd\n"); - return ESP_GATT_ERROR; - } - else - { - memset(&hidd_le_env,0,sizeof(hidd_le_env_t)); - } - - - /* - register the hid deivce profile to the BTA_GATTS module*/ - esp_ble_gatts_app_register(&app_uuid, hidd_le_profile_cb); + if (hidd_le_env.enabled) { + LOG_ERROR("hid device svc already initaliezd\n"); + return ESP_GATT_ERROR; + } else { + memset(&hidd_le_env, 0, sizeof(hidd_le_env_t)); + } - hidd_le_env.enabled = TRUE; - return ESP_GATT_OK; + /* + register the hid deivce profile to the BTA_GATTS module*/ + esp_ble_gatts_app_register(&app_uuid, hidd_le_profile_cb); + + hidd_le_env.enabled = TRUE; + + return ESP_GATT_OK; } -#endif ///HIDD_LE_PROFILE_CFG +#endif ///HIDD_LE_PROFILE_CFG diff --git a/components/bt/bluedroid/btc/profile/std/include/avdt_api.h b/components/bt/bluedroid/btc/profile/std/include/avdt_api.h old mode 100755 new mode 100644 index 41f8a12ded..59a9db778c --- a/components/bt/bluedroid/btc/profile/std/include/avdt_api.h +++ b/components/bt/bluedroid/btc/profile/std/include/avdt_api.h @@ -207,8 +207,7 @@ typedef UINT8 AVDT_REPORT_TYPE; ** Type Definitions *****************************************************************************/ -typedef struct -{ +typedef struct { UINT32 ntp_sec; /* NTP time: seconds relative to 0h UTC on 1 January 1900 */ UINT32 ntp_frac; /* NTP time: the fractional part */ UINT32 rtp_time; /* timestamp in RTP header */ @@ -217,8 +216,7 @@ typedef struct UINT32 octet_count; /* sender's octet count: same comment */ } tAVDT_SENDER_INFO; -typedef struct -{ +typedef struct { UINT8 frag_lost; /* fraction lost since last RR */ UINT32 packet_lost; /* cumulative number of packets lost since the beginning */ UINT32 seq_num_rcvd; /* extended highest sequence number received */ @@ -227,8 +225,7 @@ typedef struct UINT32 dlsr; /* delay since last SR */ } tAVDT_REPORT_BLK; -typedef union -{ +typedef union { tAVDT_SENDER_INFO sr; tAVDT_REPORT_BLK rr; UINT8 cname[AVDT_MAX_CNAME_SIZE + 1]; @@ -373,7 +370,7 @@ typedef void (tAVDT_DATA_CBACK)(UINT8 handle, BT_HDR *p_pkt, UINT32 time_stamp, ** This function is required for SNK endpoints and not applicable for SRC endpoints. */ typedef void (tAVDT_MEDIA_CBACK)(UINT8 handle, UINT8 *p_payload, UINT32 payload_len, - UINT32 time_stamp, UINT16 seq_num, UINT8 m_pt, UINT8 marker); + UINT32 time_stamp, UINT16 seq_num, UINT8 m_pt, UINT8 marker); #endif #if AVDT_REPORTING == TRUE @@ -382,7 +379,7 @@ typedef void (tAVDT_MEDIA_CBACK)(UINT8 handle, UINT8 *p_payload, UINT32 payload_ ** created with AVDT_PSC_REPORT. */ typedef void (tAVDT_REPORT_CBACK)(UINT8 handle, AVDT_REPORT_TYPE type, - tAVDT_REPORT_DATA *p_data); + tAVDT_REPORT_DATA *p_data); #endif typedef UINT16 (tAVDT_GETCAP_REQ) (BD_ADDR bd_addr, UINT8 seid, tAVDT_CFG *p_cfg, tAVDT_CTRL_CBACK *p_cback); diff --git a/components/bt/bluedroid/btc/profile/std/include/avrc_api.h b/components/bt/bluedroid/btc/profile/std/include/avrc_api.h old mode 100755 new mode 100644 index 2198074d9e..dad8b3bd20 --- a/components/bt/bluedroid/btc/profile/std/include/avrc_api.h +++ b/components/bt/bluedroid/btc/profile/std/include/avrc_api.h @@ -71,8 +71,8 @@ * send messages. */ #define AVRC_UNCONG_IND_EVT 3 - /* AVRC_BROWSE_OPEN_IND_EVT event is sent when the browse channel is successfully opened. - * This eventis sent in response to an AVRC_Open() or AVRC_OpenBrowse() . */ +/* AVRC_BROWSE_OPEN_IND_EVT event is sent when the browse channel is successfully opened. +* This eventis sent in response to an AVRC_Open() or AVRC_OpenBrowse() . */ #define AVRC_BROWSE_OPEN_IND_EVT 4 /* AVRC_BROWSE_CLOSE_IND_EVT event is sent when a browse channel is closed. @@ -121,8 +121,7 @@ /* This data type is used in AVRC_FindService() to initialize the SDP database * to hold the result service search. */ -typedef struct -{ +typedef struct { UINT32 db_len; /* Length, in bytes, of the discovery database */ tSDP_DISCOVERY_DB *p_db; /* Pointer to the discovery database */ UINT16 num_attr;/* The number of attributes in p_attrs */ @@ -143,7 +142,7 @@ typedef void (tAVRC_FIND_CBACK) (UINT16 status); /* This is the control callback function. This function passes events * listed in Table 20 to the application. */ typedef void (tAVRC_CTRL_CBACK) (UINT8 handle, UINT8 event, UINT16 result, - BD_ADDR peer_addr); + BD_ADDR peer_addr); /* This is the message callback function. It is executed when AVCTP has @@ -151,10 +150,9 @@ typedef void (tAVRC_CTRL_CBACK) (UINT8 handle, UINT8 event, UINT16 result, * callback function must copy the tAVRC_MSG structure passed to it as it * is not guaranteed to remain after the callback function exits. */ typedef void (tAVRC_MSG_CBACK) (UINT8 handle, UINT8 label, UINT8 opcode, - tAVRC_MSG *p_msg); + tAVRC_MSG *p_msg); -typedef struct -{ +typedef struct { tAVRC_CTRL_CBACK *p_ctrl_cback; /* pointer to application control callback */ tAVRC_MSG_CBACK *p_msg_cback; /* pointer to application message callback */ UINT32 company_id; /* the company ID */ @@ -204,7 +202,7 @@ extern "C" ** ******************************************************************************/ extern UINT16 AVRC_AddRecord(UINT16 service_uuid, char *p_service_name, - char *p_provider_name, UINT16 categories, UINT32 sdp_handle); + char *p_provider_name, UINT16 categories, UINT32 sdp_handle); /****************************************************************************** ** diff --git a/components/bt/bluedroid/btc/profile/std/include/avrc_defs.h b/components/bt/bluedroid/btc/profile/std/include/avrc_defs.h old mode 100755 new mode 100644 index d6ff8a0b59..fe261a74fd --- a/components/bt/bluedroid/btc/profile/std/include/avrc_defs.h +++ b/components/bt/bluedroid/btc/profile/std/include/avrc_defs.h @@ -754,8 +754,7 @@ typedef UINT8 tAVRC_UID[AVRC_UID_SIZE]; /* This structure contains the header parameters of an AV/C message. */ -typedef struct -{ +typedef struct { UINT8 ctype; /* Command type. */ UINT8 subunit_type; /* Subunit type. */ UINT8 subunit_id; /* Subunit ID. This value is typically ignored in AVRCP, @@ -765,8 +764,7 @@ typedef struct } tAVRC_HDR; /* This structure contains a UNIT INFO message. */ -typedef struct -{ +typedef struct { tAVRC_HDR hdr; /* Message header. */ UINT32 company_id; /* Company identifier. */ UINT8 unit_type; /* Unit type. Uses the same values as subunit type. */ @@ -774,11 +772,10 @@ typedef struct } tAVRC_MSG_UNIT; /* This structure contains a SUBUNIT INFO message. */ -typedef struct -{ +typedef struct { tAVRC_HDR hdr; /* Message header. */ UINT8 subunit_type[AVRC_SUB_TYPE_LEN]; - /* Array containing subunit type values. */ + /* Array containing subunit type values. */ BOOLEAN panel; /* TRUE if the panel subunit type is in the * subunit_type array, FALSE otherwise. */ UINT8 page; /* Specifies which part of the subunit type table is @@ -787,8 +784,7 @@ typedef struct } tAVRC_MSG_SUB; /* This structure contains a VENDOR DEPENDENT message. */ -typedef struct -{ +typedef struct { tAVRC_HDR hdr; /* Message header. */ UINT32 company_id; /* Company identifier. */ UINT8 *p_vendor_data;/* Pointer to vendor dependent data. */ @@ -796,8 +792,7 @@ typedef struct } tAVRC_MSG_VENDOR; /* PASS THROUGH message structure */ -typedef struct -{ +typedef struct { tAVRC_HDR hdr; /* hdr.ctype Unused. * hdr.subunit_type Unused. * hdr.subunit_id Unused. */ @@ -814,8 +809,7 @@ typedef struct #define AVRC_RSP AVCT_RSP /* Response message */ /* Browsing channel message structure */ -typedef struct -{ +typedef struct { tAVRC_HDR hdr; /* hdr.ctype AVRC_CMD or AVRC_RSP. * hdr.subunit_type Unused. * hdr.subunit_id Unused. */ @@ -825,8 +819,7 @@ typedef struct } tAVRC_MSG_BROWSE; /* This is a union of all message type structures. */ -typedef union -{ +typedef union { tAVRC_HDR hdr; /* Message header. */ tAVRC_MSG_UNIT unit; /* UNIT INFO message. */ tAVRC_MSG_SUB sub; /* SUBUNIT INFO message. */ @@ -842,7 +835,7 @@ typedef union (a <= AVRC_EVT_APP_SETTING_CHANGE)) ? TRUE : FALSE) #define AVRC_IS_VALID_ATTRIBUTE(a) (((((a > 0) && a <= AVRC_PLAYER_SETTING_SCAN)) || \ - (a >= AVRC_PLAYER_SETTING_LOW_MENU_EXT)) ? TRUE : FALSE) + (a >= AVRC_PLAYER_SETTING_LOW_MENU_EXT)) ? TRUE : FALSE) #define AVRC_IS_VALID_MEDIA_ATTRIBUTE(a) ((a >= AVRC_MEDIA_ATTR_ID_TITLE) && \ (a <= AVRC_MEDIA_ATTR_ID_PLAYING_TIME) ? TRUE : FALSE) @@ -889,20 +882,17 @@ typedef struct { #define AVRC_CAP_MAX_NUM_EVT_ID 16 #endif -typedef union -{ +typedef union { UINT32 company_id[AVRC_CAP_MAX_NUM_COMP_ID]; UINT8 event_id[AVRC_CAP_MAX_NUM_EVT_ID]; } tAVRC_CAPS_PARAM; -typedef struct -{ +typedef struct { UINT8 attr_id; UINT8 attr_val; } tAVRC_APP_SETTING; -typedef struct -{ +typedef struct { UINT8 attr_id; UINT16 charset_id; UINT8 str_len; @@ -911,8 +901,7 @@ typedef struct typedef UINT8 tAVRC_FEATURE_MASK[AVRC_FEATURE_MASK_SIZE]; -typedef struct -{ +typedef struct { UINT16 player_id; /* A unique identifier for this media player.*/ UINT8 major_type; /* Use AVRC_MJ_TYPE_AUDIO, AVRC_MJ_TYPE_VIDEO, AVRC_MJ_TYPE_BC_AUDIO, or AVRC_MJ_TYPE_BC_VIDEO.*/ UINT32 sub_type; /* Use AVRC_SUB_TYPE_NONE, AVRC_SUB_TYPE_AUDIO_BOOK, or AVRC_SUB_TYPE_PODCAST*/ @@ -922,8 +911,7 @@ typedef struct tAVRC_FULL_NAME name; /* The player name, name length and character set id.*/ } tAVRC_ITEM_PLAYER; -typedef struct -{ +typedef struct { tAVRC_UID uid; /* The uid of this folder */ UINT8 type; /* Use AVRC_FOLDER_TYPE_MIXED, AVRC_FOLDER_TYPE_TITLES, AVRC_FOLDER_TYPE_ALNUMS, AVRC_FOLDER_TYPE_ARTISTS, AVRC_FOLDER_TYPE_GENRES, @@ -932,28 +920,24 @@ typedef struct tAVRC_FULL_NAME name; /* The folder name, name length and character set id. */ } tAVRC_ITEM_FOLDER; -typedef struct -{ +typedef struct { UINT32 attr_id; /* Use AVRC_MEDIA_ATTR_ID_TITLE, AVRC_MEDIA_ATTR_ID_ARTIST, AVRC_MEDIA_ATTR_ID_ALBUM, AVRC_MEDIA_ATTR_ID_TRACK_NUM, AVRC_MEDIA_ATTR_ID_NUM_TRACKS, AVRC_MEDIA_ATTR_ID_GENRE, AVRC_MEDIA_ATTR_ID_PLAYING_TIME */ tAVRC_FULL_NAME name; /* The attribute value, value length and character set id. */ } tAVRC_ATTR_ENTRY; -typedef struct -{ +typedef struct { tAVRC_UID uid; /* The uid of this media element item */ UINT8 type; /* Use AVRC_MEDIA_TYPE_AUDIO or AVRC_MEDIA_TYPE_VIDEO. */ tAVRC_FULL_NAME name; /* The media name, name length and character set id. */ UINT8 attr_count; /* The number of attributes in p_attr_list */ - tAVRC_ATTR_ENTRY* p_attr_list; /* Attribute entry list. */ + tAVRC_ATTR_ENTRY *p_attr_list; /* Attribute entry list. */ } tAVRC_ITEM_MEDIA; -typedef struct -{ +typedef struct { UINT8 item_type; /* AVRC_ITEM_PLAYER, AVRC_ITEM_FOLDER, or AVRC_ITEM_MEDIA */ - union - { + union { tAVRC_ITEM_PLAYER player; /* The properties of a media player item.*/ tAVRC_ITEM_FOLDER folder; /* The properties of a folder item.*/ tAVRC_ITEM_MEDIA media; /* The properties of a media item.*/ @@ -961,8 +945,7 @@ typedef struct } tAVRC_ITEM; /* GetCapability */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */ @@ -970,8 +953,7 @@ typedef struct } tAVRC_GET_CAPS_CMD; /* ListPlayerAppValues */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */ @@ -979,8 +961,7 @@ typedef struct } tAVRC_LIST_APP_VALUES_CMD; /* GetCurAppValue */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */ @@ -989,8 +970,7 @@ typedef struct } tAVRC_GET_CUR_APP_VALUE_CMD; /* SetAppValue */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */ @@ -999,8 +979,7 @@ typedef struct } tAVRC_SET_APP_VALUE_CMD; /* GetAppAttrTxt */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */ @@ -1009,8 +988,7 @@ typedef struct } tAVRC_GET_APP_ATTR_TXT_CMD; /* GetAppValueTxt */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */ @@ -1020,8 +998,7 @@ typedef struct } tAVRC_GET_APP_VAL_TXT_CMD; /* InformCharset */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */ @@ -1030,8 +1007,7 @@ typedef struct } tAVRC_INFORM_CHARSET_CMD; /* InformBatteryStatus */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */ @@ -1039,8 +1015,7 @@ typedef struct } tAVRC_BATTERY_STATUS_CMD; /* GetElemAttrs */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */ @@ -1049,8 +1024,7 @@ typedef struct } tAVRC_GET_ELEM_ATTRS_CMD; /* RegNotify */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */ @@ -1059,8 +1033,7 @@ typedef struct } tAVRC_REG_NOTIF_CMD; /* SetAddrPlayer */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */ @@ -1068,8 +1041,7 @@ typedef struct } tAVRC_SET_ADDR_PLAYER_CMD; /* SetBrowsedPlayer */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */ @@ -1077,8 +1049,7 @@ typedef struct } tAVRC_SET_BR_PLAYER_CMD; /* SetAbsVolume */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */ @@ -1086,8 +1057,7 @@ typedef struct } tAVRC_SET_VOLUME_CMD; /* GetFolderItems */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */ @@ -1099,8 +1069,7 @@ typedef struct } tAVRC_GET_ITEMS_CMD; /* ChangePath */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */ @@ -1110,8 +1079,7 @@ typedef struct } tAVRC_CHG_PATH_CMD; /* GetItemAttrs */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */ @@ -1123,8 +1091,7 @@ typedef struct } tAVRC_GET_ATTRS_CMD; /* Search */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */ @@ -1132,8 +1099,7 @@ typedef struct } tAVRC_SEARCH_CMD; /* PlayItem */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */ @@ -1143,8 +1109,7 @@ typedef struct } tAVRC_PLAY_ITEM_CMD; /* AddToNowPlaying */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */ @@ -1153,24 +1118,21 @@ typedef struct UINT16 uid_counter; } tAVRC_ADD_TO_PLAY_CMD; -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */ } tAVRC_CMD; /* Continue and Abort */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */ UINT8 target_pdu; } tAVRC_NEXT_CMD; -typedef union -{ +typedef union { UINT8 pdu; tAVRC_CMD cmd; tAVRC_GET_CAPS_CMD get_caps; /* GetCapability */ @@ -1200,8 +1162,7 @@ typedef union } tAVRC_COMMAND; /* GetCapability */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse user. invalid one to generate according to pdu) */ @@ -1211,8 +1172,7 @@ typedef struct } tAVRC_GET_CAPS_RSP; /* ListPlayerAppAttr */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse user. invalid one to generate according to pdu) */ @@ -1221,8 +1181,7 @@ typedef struct } tAVRC_LIST_APP_ATTR_RSP; /* ListPlayerAppValues */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse user. invalid one to generate according to pdu) */ @@ -1231,8 +1190,7 @@ typedef struct } tAVRC_LIST_APP_VALUES_RSP; /* GetCurAppValue */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse user. invalid one to generate according to pdu) */ @@ -1241,8 +1199,7 @@ typedef struct } tAVRC_GET_CUR_APP_VALUE_RSP; /* GetAppAttrTxt */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse user. invalid one to generate according to pdu) */ @@ -1251,8 +1208,7 @@ typedef struct } tAVRC_GET_APP_ATTR_TXT_RSP; /* GetElemAttrs */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse user. invalid one to generate according to pdu) */ @@ -1261,8 +1217,7 @@ typedef struct } tAVRC_GET_ELEM_ATTRS_RSP; /* GetPlayStatus */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse user. invalid one to generate according to pdu) */ @@ -1272,8 +1227,7 @@ typedef struct } tAVRC_GET_PLAY_STATUS_RSP; /* notification event parameter for AddressedPlayer change */ -typedef struct -{ +typedef struct { UINT16 player_id; UINT16 uid_counter; } tAVRC_ADDR_PLAYER_PARAM; @@ -1283,15 +1237,13 @@ typedef struct #endif /* notification event parameter for Player Application setting change */ -typedef struct -{ +typedef struct { UINT8 num_attr; UINT8 attr_id[AVRC_MAX_APP_SETTINGS]; UINT8 attr_value[AVRC_MAX_APP_SETTINGS]; } tAVRC_PLAYER_APP_PARAM; -typedef union -{ +typedef union { tAVRC_PLAYSTATE play_status; tAVRC_UID track; UINT32 play_pos; @@ -1304,8 +1256,7 @@ typedef union } tAVRC_NOTIF_RSP_PARAM; /* RegNotify */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse user. invalid one to generate according to pdu) */ @@ -1314,8 +1265,7 @@ typedef struct } tAVRC_REG_NOTIF_RSP; /* SetAbsVolume */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse user. invalid one to generate according to pdu) */ @@ -1323,8 +1273,7 @@ typedef struct } tAVRC_SET_VOLUME_RSP; /* SetBrowsedPlayer */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse user. invalid one to generate according to pdu) */ @@ -1336,8 +1285,7 @@ typedef struct } tAVRC_SET_BR_PLAYER_RSP; /* GetFolderItems */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse user. invalid one to generate according to pdu) */ @@ -1347,8 +1295,7 @@ typedef struct } tAVRC_GET_ITEMS_RSP; /* ChangePath */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse user. invalid one to generate according to pdu) */ @@ -1356,8 +1303,7 @@ typedef struct } tAVRC_CHG_PATH_RSP; /* GetItemAttrs */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse user. invalid one to generate according to pdu) */ @@ -1366,8 +1312,7 @@ typedef struct } tAVRC_GET_ATTRS_RSP; /* Search */ -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse user. invalid one to generate according to pdu) */ @@ -1376,15 +1321,13 @@ typedef struct } tAVRC_SEARCH_RSP; -typedef struct -{ +typedef struct { UINT8 pdu; tAVRC_STS status; UINT8 opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse user. invalid one to generate according to pdu) */ } tAVRC_RSP; -typedef union -{ +typedef union { UINT8 pdu; tAVRC_RSP rsp; tAVRC_GET_CAPS_RSP get_caps; /* GetCapability */ diff --git a/components/bt/bluedroid/btc/profile/std/include/btc_gap_ble.h b/components/bt/bluedroid/btc/profile/std/include/btc_gap_ble.h index f312c30d71..64f1ff3246 100644 --- a/components/bt/bluedroid/btc/profile/std/include/btc_gap_ble.h +++ b/components/bt/bluedroid/btc/profile/std/include/btc_gap_ble.h @@ -19,61 +19,61 @@ #include "esp_gap_ble_api.h" typedef enum { - BTC_GAP_BLE_ACT_CFG_ADV_DATA = 0, - BTC_GAP_BLE_ACT_SET_SCAN_PARAM, - BTC_GAP_BLE_ACT_START_SCAN, - BTC_GAP_BLE_ACT_STOP_SCAN, - BTC_GAP_BLE_ACT_START_ADV, - BTC_GAP_BLE_ACT_STOP_ADV, - BTC_GAP_BLE_ACT_UPDATE_CONN_PARAM, - BTC_GAP_BLE_ACT_SET_PKT_DATA_LEN, - BTC_GAP_BLE_ACT_SET_RAND_ADDRESS, - BTC_GAP_BLE_ACT_CONFIG_LOCAL_PRIVACY, - BTC_GAP_BLE_ACT_SET_DEV_NAME, + BTC_GAP_BLE_ACT_CFG_ADV_DATA = 0, + BTC_GAP_BLE_ACT_SET_SCAN_PARAM, + BTC_GAP_BLE_ACT_START_SCAN, + BTC_GAP_BLE_ACT_STOP_SCAN, + BTC_GAP_BLE_ACT_START_ADV, + BTC_GAP_BLE_ACT_STOP_ADV, + BTC_GAP_BLE_ACT_UPDATE_CONN_PARAM, + BTC_GAP_BLE_ACT_SET_PKT_DATA_LEN, + BTC_GAP_BLE_ACT_SET_RAND_ADDRESS, + BTC_GAP_BLE_ACT_CONFIG_LOCAL_PRIVACY, + BTC_GAP_BLE_ACT_SET_DEV_NAME, } btc_gap_ble_act_t; /* btc_ble_gap_args_t */ typedef union { - //BTC_GAP_BLE_ACT_CFG_ADV_DATA = 0, - struct config_adv_data_args { - esp_ble_adv_data_t adv_data; - } cfg_adv_data; - //BTC_GAP_BLE_ACT_SET_SCAN_PARAM, - struct set_scan_params_args { - esp_ble_scan_params_t scan_params; - } set_scan_param; - //BTC_GAP_BLE_ACT_START_SCAN, - struct start_scan_args { - uint32_t duration; - } start_scan; - //BTC_GAP_BLE_ACT_STOP_SCAN, no args - //BTC_GAP_BLE_ACT_START_ADV, - struct start_adv_args { - esp_ble_adv_params_t adv_params; - } start_adv; - //BTC_GAP_BLE_ACT_STOP_ADV, no args - //BTC_GAP_BLE_ACT_UPDATE_CONN_PARAM, - struct conn_update_params_args { - esp_ble_conn_update_params_t conn_params; - } conn_update_params; - //BTC_GAP_BLE_ACT_SET_PKT_DATA_LEN - struct set_pkt_data_len_args { - esp_bd_addr_t remote_device; - uint16_t tx_data_length; - } set_pkt_data_len; - //BTC_GAP_BLE_ACT_SET_RAND_ADDRESS, - struct set_rand_addr_args { - esp_bd_addr_t rand_addr; - } set_rand_addr; - //BTC_GAP_BLE_ACT_CONFIG_LOCAL_PRIVACY, - struct cfg_local_privacy_args { - bool privacy_enable; - } cfg_local_privacy; - //BTC_GAP_BLE_ACT_SET_DEV_NAME, - struct set_dev_name_args { -#define ESP_GAP_DEVICE_NAME_MAX (32) - char device_name[ESP_GAP_DEVICE_NAME_MAX+1]; - } set_dev_name; + //BTC_GAP_BLE_ACT_CFG_ADV_DATA = 0, + struct config_adv_data_args { + esp_ble_adv_data_t adv_data; + } cfg_adv_data; + //BTC_GAP_BLE_ACT_SET_SCAN_PARAM, + struct set_scan_params_args { + esp_ble_scan_params_t scan_params; + } set_scan_param; + //BTC_GAP_BLE_ACT_START_SCAN, + struct start_scan_args { + uint32_t duration; + } start_scan; + //BTC_GAP_BLE_ACT_STOP_SCAN, no args + //BTC_GAP_BLE_ACT_START_ADV, + struct start_adv_args { + esp_ble_adv_params_t adv_params; + } start_adv; + //BTC_GAP_BLE_ACT_STOP_ADV, no args + //BTC_GAP_BLE_ACT_UPDATE_CONN_PARAM, + struct conn_update_params_args { + esp_ble_conn_update_params_t conn_params; + } conn_update_params; + //BTC_GAP_BLE_ACT_SET_PKT_DATA_LEN + struct set_pkt_data_len_args { + esp_bd_addr_t remote_device; + uint16_t tx_data_length; + } set_pkt_data_len; + //BTC_GAP_BLE_ACT_SET_RAND_ADDRESS, + struct set_rand_addr_args { + esp_bd_addr_t rand_addr; + } set_rand_addr; + //BTC_GAP_BLE_ACT_CONFIG_LOCAL_PRIVACY, + struct cfg_local_privacy_args { + bool privacy_enable; + } cfg_local_privacy; + //BTC_GAP_BLE_ACT_SET_DEV_NAME, + struct set_dev_name_args { +#define ESP_GAP_DEVICE_NAME_MAX (32) + char device_name[ESP_GAP_DEVICE_NAME_MAX + 1]; + } set_dev_name; } btc_ble_gap_args_t; void btc_gap_ble_call_handler(btc_msg_t *msg); diff --git a/components/bt/bluedroid/btc/profile/std/include/btc_gattc.h b/components/bt/bluedroid/btc/profile/std/include/btc_gattc.h index 47aea1790e..0768b1d0ab 100644 --- a/components/bt/bluedroid/btc/profile/std/include/btc_gattc.h +++ b/components/bt/bluedroid/btc/profile/std/include/btc_gattc.h @@ -46,132 +46,132 @@ typedef enum { /* btc_ble_gattc_args_t */ typedef union { //BTC_GATTC_ACT_APP_REGISTER, - struct app_reg_arg { - uint16_t app_id; - } app_reg; + struct app_reg_arg { + uint16_t app_id; + } app_reg; //BTC_GATTC_ACT_APP_UNREGISTER, - struct app_unreg_arg { - esp_gatt_if_t gatt_if; - } app_unreg; + struct app_unreg_arg { + esp_gatt_if_t gatt_if; + } app_unreg; //BTC_GATTC_ACT_OPEN, - struct open_arg { - esp_gatt_if_t gatt_if; - esp_bd_addr_t remote_bda; - bool is_direct; - } open; + struct open_arg { + esp_gatt_if_t gatt_if; + esp_bd_addr_t remote_bda; + bool is_direct; + } open; //BTC_GATTC_ACT_CLOSE, - struct close_arg { - uint16_t conn_id; - } close; + struct close_arg { + uint16_t conn_id; + } close; //BTC_GATTC_ACT_CFG_MTU, - struct cfg_mtu_arg { - uint16_t conn_id; - uint16_t mtu; - } cfg_mtu; + struct cfg_mtu_arg { + uint16_t conn_id; + uint16_t mtu; + } cfg_mtu; //BTC_GATTC_ACT_SEARCH_SERVICE, - struct search_srvc_arg { - uint16_t conn_id; - bool filter_uuid_enable; - esp_bt_uuid_t filter_uuid; - } search_srvc; + struct search_srvc_arg { + uint16_t conn_id; + bool filter_uuid_enable; + esp_bt_uuid_t filter_uuid; + } search_srvc; //BTC_GATTC_ACT_GET_FIRST_CHAR, - struct get_first_char_arg { - uint16_t conn_id; - esp_gatt_srvc_id_t service_id; - } get_first_char; + struct get_first_char_arg { + uint16_t conn_id; + esp_gatt_srvc_id_t service_id; + } get_first_char; //BTC_GATTC_ACT_GET_NEXT_CHAR, - struct get_next_char_arg { - uint16_t conn_id; - esp_gatt_srvc_id_t service_id; - esp_gatt_id_t char_id; - } get_next_char; + struct get_next_char_arg { + uint16_t conn_id; + esp_gatt_srvc_id_t service_id; + esp_gatt_id_t char_id; + } get_next_char; //BTC_GATTC_ACT_GET_FIRST_DESCR, - struct get_first_descr_arg { - uint16_t conn_id; - esp_gatt_srvc_id_t service_id; - esp_gatt_id_t char_id; - } get_first_descr; + struct get_first_descr_arg { + uint16_t conn_id; + esp_gatt_srvc_id_t service_id; + esp_gatt_id_t char_id; + } get_first_descr; //BTC_GATTC_ACT_GET_NEXT_DESCR, - struct get_next_descr_arg { - uint16_t conn_id; - esp_gatt_srvc_id_t service_id; - esp_gatt_id_t char_id; - esp_gatt_id_t descr_id; - } get_next_descr; + struct get_next_descr_arg { + uint16_t conn_id; + esp_gatt_srvc_id_t service_id; + esp_gatt_id_t char_id; + esp_gatt_id_t descr_id; + } get_next_descr; //BTC_GATTC_ACT_GET_FIRST_INCL_SERVICE, - struct get_first_incl_srvc_arg { - uint16_t conn_id; - esp_gatt_srvc_id_t service_id; - } get_first_incl_srvc; + struct get_first_incl_srvc_arg { + uint16_t conn_id; + esp_gatt_srvc_id_t service_id; + } get_first_incl_srvc; //BTC_GATTC_ACT_GET_NEXT_INCL_SERVICE, - struct get_next_incl_srvc_arg { - uint16_t conn_id; - esp_gatt_srvc_id_t service_id; - esp_gatt_srvc_id_t start_service_id; - } get_next_incl_srvc; + struct get_next_incl_srvc_arg { + uint16_t conn_id; + esp_gatt_srvc_id_t service_id; + esp_gatt_srvc_id_t start_service_id; + } get_next_incl_srvc; //BTC_GATTC_ACT_READ_CHAR, - struct read_char_arg { - uint16_t conn_id; - esp_gatt_srvc_id_t service_id; - esp_gatt_id_t char_id; - esp_gatt_auth_req_t auth_req; - } read_char; + struct read_char_arg { + uint16_t conn_id; + esp_gatt_srvc_id_t service_id; + esp_gatt_id_t char_id; + esp_gatt_auth_req_t auth_req; + } read_char; //BTC_GATTC_ACT_READ_CHAR_DESCR, - struct read_descr_arg { - uint16_t conn_id; - esp_gatt_srvc_id_t service_id; - esp_gatt_id_t char_id; - esp_gatt_id_t descr_id; - esp_gatt_auth_req_t auth_req; - } read_descr; + struct read_descr_arg { + uint16_t conn_id; + esp_gatt_srvc_id_t service_id; + esp_gatt_id_t char_id; + esp_gatt_id_t descr_id; + esp_gatt_auth_req_t auth_req; + } read_descr; //BTC_GATTC_ACT_WRITE_CHAR, - struct write_char_arg { - uint16_t conn_id; - uint16_t value_len; - esp_gatt_srvc_id_t service_id; - esp_gatt_id_t char_id; - uint8_t *value; - esp_gatt_auth_req_t auth_req; - } write_char; + struct write_char_arg { + uint16_t conn_id; + uint16_t value_len; + esp_gatt_srvc_id_t service_id; + esp_gatt_id_t char_id; + uint8_t *value; + esp_gatt_auth_req_t auth_req; + } write_char; //BTC_GATTC_ACT_WRITE_CHAR_DESCR, - struct write_descr_arg { - uint16_t conn_id; - uint16_t value_len; - esp_gatt_srvc_id_t service_id; - esp_gatt_id_t char_id; - esp_gatt_id_t descr_id; - uint8_t *value; - esp_gatt_auth_req_t auth_req; - } write_descr; + struct write_descr_arg { + uint16_t conn_id; + uint16_t value_len; + esp_gatt_srvc_id_t service_id; + esp_gatt_id_t char_id; + esp_gatt_id_t descr_id; + uint8_t *value; + esp_gatt_auth_req_t auth_req; + } write_descr; //BTC_GATTC_ACT_PREPARE_WRITE, - struct prep_write_arg { - uint16_t conn_id; - esp_gatt_srvc_id_t service_id; - esp_gatt_id_t char_id; - uint16_t offset; - uint16_t value_len; - uint8_t *value; - esp_gatt_auth_req_t auth_req; - } prep_write; + struct prep_write_arg { + uint16_t conn_id; + esp_gatt_srvc_id_t service_id; + esp_gatt_id_t char_id; + uint16_t offset; + uint16_t value_len; + uint8_t *value; + esp_gatt_auth_req_t auth_req; + } prep_write; //BTC_GATTC_ACT_EXECUTE_WRITE, - struct exec_write_arg { - uint16_t conn_id; - bool is_execute; - } exec_write; + struct exec_write_arg { + uint16_t conn_id; + bool is_execute; + } exec_write; //BTC_GATTC_ACT_REG_FOR_NOTIFY, - struct reg_for_notify_arg { - esp_gatt_if_t gatt_if; - esp_bd_addr_t remote_bda; - esp_gatt_srvc_id_t service_id; - esp_gatt_id_t char_id; - } reg_for_notify; + struct reg_for_notify_arg { + esp_gatt_if_t gatt_if; + esp_bd_addr_t remote_bda; + esp_gatt_srvc_id_t service_id; + esp_gatt_id_t char_id; + } reg_for_notify; //BTC_GATTC_ACT_UNREG_FOR_NOTIFY - struct unreg_for_notify_arg { - esp_gatt_if_t gatt_if; - esp_bd_addr_t remote_bda; - esp_gatt_srvc_id_t service_id; - esp_gatt_id_t char_id; - } unreg_for_notify; + struct unreg_for_notify_arg { + esp_gatt_if_t gatt_if; + esp_bd_addr_t remote_bda; + esp_gatt_srvc_id_t service_id; + esp_gatt_id_t char_id; + } unreg_for_notify; } btc_ble_gattc_args_t; void btc_gattc_call_handler(btc_msg_t *msg); diff --git a/components/bt/bluedroid/btc/profile/std/include/btc_gatts.h b/components/bt/bluedroid/btc/profile/std/include/btc_gatts.h index 9a3abd09eb..0ba0f8869a 100644 --- a/components/bt/bluedroid/btc/profile/std/include/btc_gatts.h +++ b/components/bt/bluedroid/btc/profile/std/include/btc_gatts.h @@ -21,92 +21,92 @@ #include "esp_gatts_api.h" typedef enum { - BTC_GATTS_ACT_APP_REGISTER = 0, - BTC_GATTS_ACT_APP_UNREGISTER, - BTC_GATTS_ACT_CREATE_SERVICE, - BTC_GATTS_ACT_DELETE_SERVICE, - BTC_GATTS_ACT_START_SERVICE, - BTC_GATTS_ACT_STOP_SERVICE, - BTC_GATTS_ACT_ADD_INCLUDE_SERVICE, - BTC_GATTS_ACT_ADD_CHAR, - BTC_GATTS_ACT_ADD_CHAR_DESCR, - BTC_GATTS_ACT_SEND_INDICATE, - BTC_GATTS_ACT_SEND_RESPONSE, - BTC_GATTS_ACT_OPEN, - BTC_GATTS_ACT_CLOSE, + BTC_GATTS_ACT_APP_REGISTER = 0, + BTC_GATTS_ACT_APP_UNREGISTER, + BTC_GATTS_ACT_CREATE_SERVICE, + BTC_GATTS_ACT_DELETE_SERVICE, + BTC_GATTS_ACT_START_SERVICE, + BTC_GATTS_ACT_STOP_SERVICE, + BTC_GATTS_ACT_ADD_INCLUDE_SERVICE, + BTC_GATTS_ACT_ADD_CHAR, + BTC_GATTS_ACT_ADD_CHAR_DESCR, + BTC_GATTS_ACT_SEND_INDICATE, + BTC_GATTS_ACT_SEND_RESPONSE, + BTC_GATTS_ACT_OPEN, + BTC_GATTS_ACT_CLOSE, } btc_gatts_act_t; /* btc_ble_gatts_args_t */ -typedef union{ - //BTC_GATTS_ACT_APP_REGISTER = 0, - struct app_reg_args { - uint16_t app_id; - } app_reg; - //BTC_GATTS_ACT_APP_UNREGISTER, - struct app_unreg_args { - esp_gatt_if_t gatt_if; - } app_unreg; - //BTC_GATTS_ACT_CREATE_SERVICE, - struct create_srvc_args { - esp_gatt_if_t gatt_if; - esp_gatt_srvc_id_t service_id; - uint16_t num_handle; - } create_srvc; - //BTC_GATTS_ACT_DELETE_SERVICE, - struct delete_srvc_args { - uint16_t service_handle; - } delete_srvc; - //BTC_GATTS_ACT_START_SERVICE, - struct start_srvc_args { - uint16_t service_handle; - } start_srvc; - //BTC_GATTS_ACT_STOP_SERVICE, - struct stop_srvc_args { - uint16_t service_handle; - } stop_srvc; - //BTC_GATTS_ACT_ADD_INCLUDE_SERVICE, - struct add_incl_srvc_args { - uint16_t service_handle; - uint16_t included_service_handle; - } add_incl_srvc; - //BTC_GATTS_ACT_ADD_CHAR, - struct add_char_args { - uint16_t service_handle; - esp_bt_uuid_t char_uuid; - esp_gatt_perm_t perm; - esp_gatt_char_prop_t property; - } add_char; - //BTC_GATTS_ACT_ADD_CHAR_DESCR, - struct add_descr_args { - uint16_t service_handle; - esp_bt_uuid_t descr_uuid; - esp_gatt_perm_t perm; - } add_descr; - //BTC_GATTS_ACT_SEND_INDICATE, - struct send_indicate_args { - uint16_t conn_id; - uint16_t attr_handle; - bool need_confirm; - uint16_t value_len; - uint8_t *value; - } send_ind; - //BTC_GATTS_ACT_SEND_RESPONSE, - struct send_rsp_args { - uint16_t conn_id; - uint32_t trans_id; - esp_gatt_status_t status; - esp_gatt_rsp_t *rsp; - } send_rsp; - //BTC_GATTS_ACT_OPEN, - struct open_args { - esp_gatt_if_t gatt_if; - esp_bd_addr_t remote_bda; - bool is_direct; - } open; - //BTC_GATTS_ACT_CLOSE, - struct close_args { - uint16_t conn_id; - } close; +typedef union { + //BTC_GATTS_ACT_APP_REGISTER = 0, + struct app_reg_args { + uint16_t app_id; + } app_reg; + //BTC_GATTS_ACT_APP_UNREGISTER, + struct app_unreg_args { + esp_gatt_if_t gatt_if; + } app_unreg; + //BTC_GATTS_ACT_CREATE_SERVICE, + struct create_srvc_args { + esp_gatt_if_t gatt_if; + esp_gatt_srvc_id_t service_id; + uint16_t num_handle; + } create_srvc; + //BTC_GATTS_ACT_DELETE_SERVICE, + struct delete_srvc_args { + uint16_t service_handle; + } delete_srvc; + //BTC_GATTS_ACT_START_SERVICE, + struct start_srvc_args { + uint16_t service_handle; + } start_srvc; + //BTC_GATTS_ACT_STOP_SERVICE, + struct stop_srvc_args { + uint16_t service_handle; + } stop_srvc; + //BTC_GATTS_ACT_ADD_INCLUDE_SERVICE, + struct add_incl_srvc_args { + uint16_t service_handle; + uint16_t included_service_handle; + } add_incl_srvc; + //BTC_GATTS_ACT_ADD_CHAR, + struct add_char_args { + uint16_t service_handle; + esp_bt_uuid_t char_uuid; + esp_gatt_perm_t perm; + esp_gatt_char_prop_t property; + } add_char; + //BTC_GATTS_ACT_ADD_CHAR_DESCR, + struct add_descr_args { + uint16_t service_handle; + esp_bt_uuid_t descr_uuid; + esp_gatt_perm_t perm; + } add_descr; + //BTC_GATTS_ACT_SEND_INDICATE, + struct send_indicate_args { + uint16_t conn_id; + uint16_t attr_handle; + bool need_confirm; + uint16_t value_len; + uint8_t *value; + } send_ind; + //BTC_GATTS_ACT_SEND_RESPONSE, + struct send_rsp_args { + uint16_t conn_id; + uint32_t trans_id; + esp_gatt_status_t status; + esp_gatt_rsp_t *rsp; + } send_rsp; + //BTC_GATTS_ACT_OPEN, + struct open_args { + esp_gatt_if_t gatt_if; + esp_bd_addr_t remote_bda; + bool is_direct; + } open; + //BTC_GATTS_ACT_CLOSE, + struct close_args { + uint16_t conn_id; + } close; } btc_ble_gatts_args_t; diff --git a/components/bt/bluedroid/btc/profile/std/include/dis_api.h b/components/bt/bluedroid/btc/profile/std/include/dis_api.h index 5c8d5243fa..5b8cfc5f78 100644 --- a/components/bt/bluedroid/btc/profile/std/include/dis_api.h +++ b/components/bt/bluedroid/btc/profile/std/include/dis_api.h @@ -67,51 +67,45 @@ typedef tDIS_ATTR_MASK tDIS_ATTR_BIT ; #define DIS_PNP_ID_SIZE 7 -typedef struct -{ +typedef struct { UINT16 uuid; UINT16 handle; -}tDIS_DB_ENTRY; +} tDIS_DB_ENTRY; -typedef struct -{ +typedef struct { UINT16 len; UINT8 *p_data; -}tDIS_STRING; +} tDIS_STRING; -typedef struct -{ +typedef struct { UINT16 vendor_id; UINT16 product_id; UINT16 product_version; UINT8 vendor_id_src; -}tDIS_PNP_ID; +} tDIS_PNP_ID; -typedef union -{ +typedef union { UINT64 system_id; tDIS_PNP_ID pnp_id; tDIS_STRING data_str; -}tDIS_ATTR; +} tDIS_ATTR; #define DIS_MAX_STRING_DATA 7 -typedef struct -{ +typedef struct { UINT16 attr_mask; UINT64 system_id; tDIS_PNP_ID pnp_id; UINT8 *data_string[DIS_MAX_STRING_DATA]; -}tDIS_VALUE; +} tDIS_VALUE; //typedef void (tDIS_READ_CBACK)(BD_ADDR addr, tDIS_VALUE *p_dis_value); -typedef struct -{ +typedef struct { tDIS_DB_ENTRY dis_attr[DIS_MAX_CHAR_NUM]; tDIS_VALUE dis_value; - + // tDIS_READ_CBACK *p_read_dis_cback; UINT16 service_handle; @@ -119,9 +113,9 @@ typedef struct bool enabled; - // UINT8 dis_read_uuid_idx; - // tDIS_ATTR_MASK request_mask; -}tDIS_CB; + // UINT8 dis_read_uuid_idx; + // tDIS_ATTR_MASK request_mask; +} tDIS_CB; /***************************************************************************** ** Data structure used by Battery Service @@ -133,12 +127,11 @@ typedef struct #define BATTERY_LEVEL_SIZE 1 -typedef struct -{ +typedef struct { BD_ADDR remote_bda; BOOLEAN need_rsp; UINT16 clt_cfg; -}tBA_WRITE_DATA; +} tBA_WRITE_DATA; #define BA_READ_CLT_CFG_REQ 1 #define BA_READ_PRE_FMT_REQ 2 @@ -153,25 +146,22 @@ typedef void (tBA_CBACK)(UINT32 trans_id, UINT16 conn_id, UINT8 app_id, UINT8 ev #define BA_LEVEL_RPT_REF 0x04 typedef UINT8 tBA_LEVEL_DESCR; -typedef struct -{ +typedef struct { BOOLEAN is_pri; tBA_LEVEL_DESCR ba_level_descr; tGATT_TRANSPORT transport; tBA_CBACK *p_cback; -}tBA_REG_INFO; +} tBA_REG_INFO; -typedef union -{ +typedef union { UINT8 ba_level; UINT16 clt_cfg; tGATT_CHAR_RPT_REF rpt_ref; tGATT_CHAR_PRES pres_fmt; -}tBA_RSP_DATA; +} tBA_RSP_DATA; -typedef struct -{ +typedef struct { UINT8 app_id; UINT16 ba_level_hdl; UINT16 clt_cfg_hdl; @@ -183,14 +173,13 @@ typedef struct UINT16 pending_handle; //UINT8 pending_clcb_idx; UINT8 pending_evt; -}tBA_INST; +} tBA_INST; -typedef struct -{ +typedef struct { tBA_INST battery_inst[BA_MAX_INT_NUM]; UINT8 inst_id; bool enabled; -}tBATTERY_CB; +} tBATTERY_CB; /***************************************************************************** ** External Function Declarations *****************************************************************************/ @@ -247,8 +236,8 @@ extern void dis_AddChar(UINT16 service_id); ** Process read DIS attribute request. *******************************************************************************/ -extern void dis_s_read_attr_value (tGATTS_DATA *p_data, tGATT_VALUE *p_value, - UINT32 trans_id, UINT16 conn_id); +extern void dis_s_read_attr_value (tGATTS_DATA *p_data, tGATT_VALUE *p_value, + UINT32 trans_id, UINT16 conn_id); /***************************************************************************** ** DIS Client Function *****************************************************************************/ @@ -262,7 +251,7 @@ extern void dis_s_read_attr_value (tGATTS_DATA *p_data, tGATT_VALUE *p_value, ** *******************************************************************************/ //extern BOOLEAN DIS_ReadDISInfo(BD_ADDR peer_bda, tDIS_READ_CBACK *p_cback, - // tDIS_ATTR_MASK mask); +// tDIS_ATTR_MASK mask); /******************************************************************************* ** BATTERY SERVICE API @@ -315,8 +304,8 @@ extern void bas_service_cmpl(UINT16 service_id, tBTA_GATT_STATUS status); ** Description Respond to a battery service request ** *******************************************************************************/ -extern void Battery_Rsp (UINT32 trans_id, UINT16 conn_id, UINT8 app_id, - tGATT_STATUS st, UINT8 event, tBA_RSP_DATA *p_rsp); +extern void Battery_Rsp (UINT32 trans_id, UINT16 conn_id, UINT8 app_id, + tGATT_STATUS st, UINT8 event, tBA_RSP_DATA *p_rsp); /******************************************************************************* ** ** Function Battery_Notify @@ -337,8 +326,8 @@ extern void bas_s_read_attr_value(tGATTS_DATA *p_data, UINT32 trans_id, UINT16 c ** ** Description it will be called when client send a write request ******************************************************************************/ -extern void bas_s_write_attr_value(tGATTS_DATA *p_data, UINT32 trans_id, - UINT16 conn_id, BD_ADDR bd_addr); +extern void bas_s_write_attr_value(tGATTS_DATA *p_data, UINT32 trans_id, + UINT16 conn_id, BD_ADDR bd_addr); extern void gatts_server_test(void); #ifdef __cplusplus diff --git a/components/bt/bluedroid/btc/profile/std/include/hid_le_prf.h b/components/bt/bluedroid/btc/profile/std/include/hid_le_prf.h index 15591ed1ae..6436573f81 100644 --- a/components/bt/bluedroid/btc/profile/std/include/hid_le_prf.h +++ b/components/bt/bluedroid/btc/profile/std/include/hid_le_prf.h @@ -32,7 +32,7 @@ #define HID_NUM_REPORTS 9 -#define ATT_SVC_HID 0x1812 +#define ATT_SVC_HID 0x1812 /// Maximal number of Report Char. that can be added in the DB for one HIDS - Up to 11 #define HIDD_LE_NB_REPORT_INST_MAX (5) @@ -76,8 +76,7 @@ /// HID Service Attributes Indexes -enum -{ +enum { HIDD_LE_IDX_SVC, // Included Service @@ -125,8 +124,7 @@ enum /// Attribute Table Indexes -enum -{ +enum { HIDD_LE_INFO_CHAR, HIDD_LE_CTNL_PT_CHAR, HIDD_LE_REPORT_MAP_CHAR, @@ -139,23 +137,21 @@ enum }; ///att read event table Indexs -enum -{ - HIDD_LE_READ_INFO_EVT, - HIDD_LE_READ_CTNL_PT_EVT, - HIDD_LE_READ_REPORT_MAP_EVT, - HIDD_LE_READ_REPORT_EVT, - HIDD_LE_READ_PROTO_MODE_EVT, - HIDD_LE_BOOT_KB_IN_REPORT_EVT, - HIDD_LE_BOOT_KB_OUT_REPORT_EVT, - HIDD_LE_BOOT_MOUSE_IN_REPORT_EVT, +enum { + HIDD_LE_READ_INFO_EVT, + HIDD_LE_READ_CTNL_PT_EVT, + HIDD_LE_READ_REPORT_MAP_EVT, + HIDD_LE_READ_REPORT_EVT, + HIDD_LE_READ_PROTO_MODE_EVT, + HIDD_LE_BOOT_KB_IN_REPORT_EVT, + HIDD_LE_BOOT_KB_OUT_REPORT_EVT, + HIDD_LE_BOOT_MOUSE_IN_REPORT_EVT, - HID_LE_EVT_MAX + HID_LE_EVT_MAX }; /// Client Characteristic Configuration Codes -enum -{ +enum { HIDD_LE_DESC_MASK = 0x10, HIDD_LE_BOOT_KB_IN_REPORT_CFG = HIDD_LE_BOOT_KB_IN_REPORT_CHAR | HIDD_LE_DESC_MASK, @@ -164,8 +160,7 @@ enum }; /// Features Flag Values -enum -{ +enum { HIDD_LE_CFG_KEYBOARD = 0x01, HIDD_LE_CFG_MOUSE = 0x02, HIDD_LE_CFG_PROTO_MODE = 0x04, @@ -175,8 +170,7 @@ enum }; /// Report Char. Configuration Flag Values -enum -{ +enum { HIDD_LE_CFG_REPORT_IN = 0x01, HIDD_LE_CFG_REPORT_OUT = 0x02, //HOGPD_CFG_REPORT_FEAT can be used as a mask to check Report type @@ -192,85 +186,80 @@ enum **************************************************************************************** */ - /// HIDD Features structure - typedef struct - { - /// Service Features - uint8_t svc_features; - /// Number of Report Char. instances to add in the database - uint8_t report_nb; - /// Report Char. Configuration - uint8_t report_char_cfg[HIDD_LE_NB_REPORT_INST_MAX]; - }hidd_feature_t; +/// HIDD Features structure +typedef struct { + /// Service Features + uint8_t svc_features; + /// Number of Report Char. instances to add in the database + uint8_t report_nb; + /// Report Char. Configuration + uint8_t report_char_cfg[HIDD_LE_NB_REPORT_INST_MAX]; +} hidd_feature_t; - typedef struct - { - BOOLEAN in_use; - BOOLEAN congest; - uint16_t conn_id; - BOOLEAN connected; - BD_ADDR remote_bda; - uint32_t trans_id; - uint8_t cur_srvc_id; - - }hidd_clcb_t; +typedef struct { + BOOLEAN in_use; + BOOLEAN congest; + uint16_t conn_id; + BOOLEAN connected; + BD_ADDR remote_bda; + uint32_t trans_id; + uint8_t cur_srvc_id; - // HID report mapping table -typedef struct -{ - uint16_t handle; // Handle of report characteristic - uint16_t cccdHandle; // Handle of CCCD for report characteristic - uint8_t id; // Report ID - uint8_t type; // Report type - uint8_t mode; // Protocol mode (report or boot) +} hidd_clcb_t; + +// HID report mapping table +typedef struct { + uint16_t handle; // Handle of report characteristic + uint16_t cccdHandle; // Handle of CCCD for report characteristic + uint8_t id; // Report ID + uint8_t type; // Report type + uint8_t mode; // Protocol mode (report or boot) } hidRptMap_t; - typedef struct - { - /// hidd profile id - uint8_t app_id; - /// Notified handle +typedef struct { + /// hidd profile id + uint8_t app_id; + /// Notified handle uint16_t ntf_handle; - ///Attribute handle Table + ///Attribute handle Table uint16_t att_tbl[HIDD_LE_CHAR_MAX]; - /// Supported Features - hidd_feature_t hidd_feature[HIDD_LE_NB_HIDS_INST_MAX]; - /// Current Protocol Mode + /// Supported Features + hidd_feature_t hidd_feature[HIDD_LE_NB_HIDS_INST_MAX]; + /// Current Protocol Mode uint8_t proto_mode[HIDD_LE_NB_HIDS_INST_MAX]; /// Number of HIDS added in the database uint8_t hids_nb; - uint8_t pending_evt; - uint16_t pending_hal; - }hidd_inst_t; + uint8_t pending_evt; + uint16_t pending_hal; +} hidd_inst_t; - /* service engine control block */ - typedef struct - { - hidd_clcb_t hidd_clcb; /* connection link*/ - esp_gatt_if_t gatt_if; - BOOLEAN enabled; - BOOLEAN is_primery; - hidd_inst_t hidd_inst; - uint8_t inst_id; - }hidd_le_env_t; +/* service engine control block */ +typedef struct { + hidd_clcb_t hidd_clcb; /* connection link*/ + esp_gatt_if_t gatt_if; + BOOLEAN enabled; + BOOLEAN is_primery; + hidd_inst_t hidd_inst; + uint8_t inst_id; +} hidd_le_env_t; - extern hidd_le_env_t hidd_le_env; +extern hidd_le_env_t hidd_le_env; - void hidd_le_create_service(BOOLEAN is_primary); +void hidd_le_create_service(BOOLEAN is_primary); - void hidd_rsp (uint32_t trans_id, uint16_t conn_id, uint8_t app_id, - esp_gatt_status_t status, uint8_t event, tGATTS_DATA *p_rsp); +void hidd_rsp (uint32_t trans_id, uint16_t conn_id, uint8_t app_id, + esp_gatt_status_t status, uint8_t event, tGATTS_DATA *p_rsp); - void hidd_read_attr_value(tGATTS_DATA *p_data, uint32_t trans_id); - - - tGATT_STATUS hidd_le_init (void); +void hidd_read_attr_value(tGATTS_DATA *p_data, uint32_t trans_id); -#endif ///HIDD_LE_PROFILE_CFG - +tGATT_STATUS hidd_le_init (void); + + +#endif ///HIDD_LE_PROFILE_CFG + diff --git a/components/bt/bluedroid/btc/profile/std/include/srvc_api.h b/components/bt/bluedroid/btc/profile/std/include/srvc_api.h index 09c5b3e4b9..a7a46b8e8f 100644 --- a/components/bt/bluedroid/btc/profile/std/include/srvc_api.h +++ b/components/bt/bluedroid/btc/profile/std/include/srvc_api.h @@ -48,37 +48,33 @@ typedef UINT16 tDIS_ATTR_MASK; typedef tDIS_ATTR_MASK tDIS_ATTR_BIT ; -typedef struct -{ +typedef struct { UINT16 len; UINT8 *p_data; -}tDIS_STRING; +} tDIS_STRING; -typedef struct -{ +typedef struct { UINT16 vendor_id; UINT16 product_id; UINT16 product_version; UINT8 vendor_id_src; -}tDIS_PNP_ID; +} tDIS_PNP_ID; -typedef union -{ +typedef union { UINT64 system_id; tDIS_PNP_ID pnp_id; tDIS_STRING data_str; -}tDIS_ATTR; +} tDIS_ATTR; #define DIS_MAX_STRING_DATA 7 -typedef struct -{ +typedef struct { UINT16 attr_mask; UINT64 system_id; tDIS_PNP_ID pnp_id; UINT8 *data_string[DIS_MAX_STRING_DATA]; -}tDIS_VALUE; +} tDIS_VALUE; typedef void (tDIS_READ_CBACK)(BD_ADDR addr, tDIS_VALUE *p_dis_value); @@ -86,12 +82,11 @@ typedef void (tDIS_READ_CBACK)(BD_ADDR addr, tDIS_VALUE *p_dis_value); /***************************************************************************** ** Data structure used by Battery Service *****************************************************************************/ -typedef struct -{ +typedef struct { BD_ADDR remote_bda; BOOLEAN need_rsp; UINT16 clt_cfg; -}tBA_WRITE_DATA; +} tBA_WRITE_DATA; #define BA_READ_CLT_CFG_REQ 1 #define BA_READ_PRE_FMT_REQ 2 @@ -106,22 +101,20 @@ typedef void (tBA_CBACK)(UINT8 app_id, UINT8 event, tBA_WRITE_DATA *p_data); #define BA_LEVEL_RPT_REF 0x04 typedef UINT8 tBA_LEVEL_DESCR; -typedef struct -{ +typedef struct { BOOLEAN is_pri; tBA_LEVEL_DESCR ba_level_descr; tGATT_TRANSPORT transport; tBA_CBACK *p_cback; -}tBA_REG_INFO; +} tBA_REG_INFO; -typedef union -{ +typedef union { UINT8 ba_level; UINT16 clt_cfg; tGATT_CHAR_RPT_REF rpt_ref; tGATT_CHAR_PRES pres_fmt; -}tBA_RSP_DATA; +} tBA_RSP_DATA; /***************************************************************************** ** External Function Declarations diff --git a/components/bt/bluedroid/btc/profile/std/sdp/btc_sdp.c b/components/bt/bluedroid/btc/profile/std/sdp/btc_sdp.c index a649882263..382f6dc021 100644 --- a/components/bt/bluedroid/btc/profile/std/sdp/btc_sdp.c +++ b/components/bt/bluedroid/btc/profile/std/sdp/btc_sdp.c @@ -22,7 +22,7 @@ esp_err_t esp_bt_sdp_enable(bt_sdp_cb_t *cback) return (status == BTA_SDP_SUCCESS) ? ESP_OK : ESP_FAIL; } -esp_err_t esp_bt_sdp_search(esp_bd_addr_t bd_addr, esp_bt_uuid_t* uuid) +esp_err_t esp_bt_sdp_search(esp_bd_addr_t bd_addr, esp_bt_uuid_t *uuid) { tBTA_SDP_STATUS status = BTA_SdpSearch(bd_addr, (tSDP_UUID *)uuid); return (status == BTA_SDP_SUCCESS) ? ESP_OK : ESP_FAIL; @@ -90,9 +90,9 @@ bool esp_bt_sdp_add_protocol_list (uint32_t handle, uint16_t num_elem, } bool esp_bt_sdp_add_addition_protocol_lists(uint32_t handle, uint16_t num_elem, - sdp_proto_list_elem_t *p_proto_list) + sdp_proto_list_elem_t *p_proto_list) { - return SDP_AddAdditionProtoLists(handle, num_elem, (tSDP_PROTO_LIST_ELEM *)p_proto_list); + return SDP_AddAdditionProtoLists(handle, num_elem, (tSDP_PROTO_LIST_ELEM *)p_proto_list); } bool esp_bt_sdp_add_profile_dscp_list (uint32_t handle, @@ -103,15 +103,15 @@ bool esp_bt_sdp_add_profile_dscp_list (uint32_t handle, } bool esp_bt_sdp_add_lang_base_attr_id_list(uint32_t handle, - uint16_t lang, uint16_t char_enc, - uint16_t base_id) + uint16_t lang, uint16_t char_enc, + uint16_t base_id) { return SDP_AddLanguageBaseAttrIDList(handle, lang, char_enc, base_id); } bool esp_bt_sdp_add_service_class_id_list(uint32_t handle, - uint16_t num_services, - uint16_t *p_service_uuids) + uint16_t num_services, + uint16_t *p_service_uuids) { return SDP_AddServiceClassIdList(handle, num_services, p_service_uuids); } diff --git a/components/bt/bluedroid/btc/profile/std/sdp/include/btc_sdp.h b/components/bt/bluedroid/btc/profile/std/sdp/include/btc_sdp.h index 36102b41f5..db7984b9b9 100644 --- a/components/bt/bluedroid/btc/profile/std/sdp/include/btc_sdp.h +++ b/components/bt/bluedroid/btc/profile/std/sdp/include/btc_sdp.h @@ -47,20 +47,19 @@ typedef struct { esp_bt_uuid_t uuid; int record_count; bt_sdp_record_t records[BT_SDP_MAX_RECORDS]; -} bt_sdp_search_comp_t; +} bt_sdp_search_comp_t; /* tBTA_SDP, bta_sdp_api.h */ -typedef union -{ +typedef union { bt_sdp_status_t status; bt_sdp_search_comp_t sdp_search_comp; } bt_sdp_t; -typedef void (bt_sdp_cb_t)(bt_sdp_evt_t event, bt_sdp_t *p_data, void * user_data); +typedef void (bt_sdp_cb_t)(bt_sdp_evt_t event, bt_sdp_t *p_data, void *user_data); esp_err_t esp_bt_sdp_enable(bt_sdp_cb_t *cback); -esp_err_t esp_bt_sdp_search(esp_bd_addr_t bd_addr, esp_bt_uuid_t* uuid); +esp_err_t esp_bt_sdp_search(esp_bd_addr_t bd_addr, esp_bt_uuid_t *uuid); esp_err_t esp_bt_sdp_create_record_by_user(void *user_data); @@ -83,8 +82,7 @@ typedef struct { } sdp_proto_elem_t; // tSDP_PROTOCOL_ELEM, sdp_api.h #define ESP_BT_SDP_MAX_LIST_ELEMS SDP_MAX_LIST_ELEMS // sdp_api.h -typedef struct -{ +typedef struct { uint16_t num_elems; sdp_proto_elem_t list_elem[ESP_BT_SDP_MAX_LIST_ELEMS]; } sdp_proto_list_elem_t; // tSDP_PROTO_LIST_ELEM, sdp_api.h @@ -112,19 +110,19 @@ bool esp_bt_sdp_add_protocol_list (uint32_t handle, uint16_t num_elem, sdp_proto_elem_t *p_elem_list); bool esp_bt_sdp_add_addition_protocol_lists(uint32_t handle, uint16_t num_elem, - sdp_proto_list_elem_t *p_proto_list); + sdp_proto_list_elem_t *p_proto_list); bool esp_bt_sdp_add_profile_dscp_list (uint32_t handle, uint16_t profile_uuid, uint16_t version); bool esp_bt_sdp_add_lang_base_attr_id_list(uint32_t handle, - uint16_t lang, uint16_t char_enc, - uint16_t base_id); + uint16_t lang, uint16_t char_enc, + uint16_t base_id); bool esp_bt_sdp_add_service_class_id_list(uint32_t handle, - uint16_t num_services, - uint16_t *p_service_uuids); + uint16_t num_services, + uint16_t *p_service_uuids); bool esp_bt_sdp_delete_attribute(uint32_t handle, uint16_t attr_id); diff --git a/components/bt/bluedroid/btc/profile/std/smp/esp_app_sec.c b/components/bt/bluedroid/btc/profile/std/smp/esp_app_sec.c index 60d48bf046..e1ec079b4a 100644 --- a/components/bt/bluedroid/btc/profile/std/smp/esp_app_sec.c +++ b/components/bt/bluedroid/btc/profile/std/smp/esp_app_sec.c @@ -29,7 +29,7 @@ tAPP_SEC_ENV app_sec_env; ** ** Function app_ble_sec_gen_tk ** -** Description This function is called to generate the ble tk +** Description This function is called to generate the ble tk ** ** Returns the generate tk value ** @@ -37,14 +37,14 @@ tAPP_SEC_ENV app_sec_env; UINT32 app_ble_sec_gen_tk(void) { // Generate a PIN Code (Between 100000 and 999999) - return (100000 + (random()%900000)); + return (100000 + (random() % 900000)); } /******************************************************************************* ** ** Function app_ble_sec_gen_ltk ** -** Description This function is called to generate the ble ltk +** Description This function is called to generate the ble ltk ** ** Returns NULL ** @@ -56,19 +56,17 @@ void app_ble_sec_gen_ltk(UINT8 key_size) app_sec_env.key_size = key_size; // Randomly generate the LTK and the Random Number - for (i = 0; i < RAND_NB_LEN; i++) - { - app_sec_env.rand_nb.nb[i] = random()%256; + for (i = 0; i < RAND_NB_LEN; i++) { + app_sec_env.rand_nb.nb[i] = random() % 256; } // Randomly generate the end of the LTK - for (i = 0; i < SEC_KEY_LEN; i++) - { - app_sec_env.ltk.key[i] = (((key_size) < (16 - i)) ? 0 : random()%256); + for (i = 0; i < SEC_KEY_LEN; i++) { + app_sec_env.ltk.key[i] = (((key_size) < (16 - i)) ? 0 : random() % 256); } // Randomly generate the EDIV - app_sec_env.ediv = random()%65536; + app_sec_env.ediv = random() % 65536; } @@ -92,14 +90,14 @@ void app_ble_sec_init() ** ** Function app_ble_security_start ** -** Description This function is called by the slave when the seurity start +** Description This function is called by the slave when the seurity start ** ** Returns NULL ** *******************************************************************************/ void app_ble_security_start(void) { - + } diff --git a/components/bt/bluedroid/btc/profile/std/smp/include/esp_sec_api.h b/components/bt/bluedroid/btc/profile/std/smp/include/esp_sec_api.h index 9c07b635a5..f9b0f9ec14 100644 --- a/components/bt/bluedroid/btc/profile/std/smp/include/esp_sec_api.h +++ b/components/bt/bluedroid/btc/profile/std/smp/include/esp_sec_api.h @@ -19,56 +19,53 @@ #define APP_SEC_IRK_FLAG (0) #define RAND_NB_LEN 0x08 -#define SEC_KEY_LEN 0x10 - - /* - * STRUCTURES DEFINITIONS - **************************************************************************************** - */ +#define SEC_KEY_LEN 0x10 - - /// Generic Security key structure -typedef struct - { - /// Key value MSB -> LSB - UINT8 key[SEC_KEY_LEN]; - }smp_sec_key; - - ///Random number structure -typedef struct -{ - ///8-byte array for random number - UINT8 nb[RAND_NB_LEN]; -}rand_nb; - - typedef struct - { - // LTK - smp_sec_key ltk; - // Random Number - rand_nb rand_nb; - // EDIV - UINT16 ediv; - // LTK key size - UINT8 key_size; - - // Last paired peer address type - UINT8 peer_addr_type; - // Last paired peer address - BD_ADDR peer_addr; - - // authentication level - UINT8 auth; - - }tAPP_SEC_ENV; - - extern tAPP_SEC_ENV app_sec_env; - - /* - * GLOBAL FUNCTIONS DECLARATIONS +/* + * STRUCTURES DEFINITIONS **************************************************************************************** */ + +/// Generic Security key structure +typedef struct { + /// Key value MSB -> LSB + UINT8 key[SEC_KEY_LEN]; +} smp_sec_key; + +///Random number structure +typedef struct { + ///8-byte array for random number + UINT8 nb[RAND_NB_LEN]; +} rand_nb; + +typedef struct { + // LTK + smp_sec_key ltk; + // Random Number + rand_nb rand_nb; + // EDIV + UINT16 ediv; + // LTK key size + UINT8 key_size; + + // Last paired peer address type + UINT8 peer_addr_type; + // Last paired peer address + BD_ADDR peer_addr; + + // authentication level + UINT8 auth; + +} tAPP_SEC_ENV; + +extern tAPP_SEC_ENV app_sec_env; + +/* +* GLOBAL FUNCTIONS DECLARATIONS +**************************************************************************************** +*/ + void app_ble_sec_init(void); void app_ble_sec_pairing_cmp_evt_send(UINT8); diff --git a/components/bt/bluedroid/btcore/bdaddr.c b/components/bt/bluedroid/btcore/bdaddr.c old mode 100755 new mode 100644 index 0f0c68ef93..e69bb53e1f --- a/components/bt/bluedroid/btcore/bdaddr.c +++ b/components/bt/bluedroid/btcore/bdaddr.c @@ -21,87 +21,103 @@ #include "bt_trace.h" #include "bdaddr.h" -static inline bool ets_isxdigit(char c) { - if ((c >= '0') && (c <= '9')) +static inline bool ets_isxdigit(char c) +{ + if ((c >= '0') && (c <= '9')) { + return true; + } + if ((c >= 'a') && (c <= 'f')) { + return true; + } + return ((c >= 'A') && (c <= 'F')); +} + +bool bdaddr_is_empty(const bt_bdaddr_t *addr) +{ + assert(addr != NULL); + + uint8_t zero[sizeof(bt_bdaddr_t)] = { 0 }; + return memcmp(addr, &zero, sizeof(bt_bdaddr_t)) == 0; +} + +bool bdaddr_equals(const bt_bdaddr_t *first, const bt_bdaddr_t *second) +{ + assert(first != NULL); + assert(second != NULL); + + return memcmp(first, second, sizeof(bt_bdaddr_t)) == 0; +} + +bt_bdaddr_t *bdaddr_copy(bt_bdaddr_t *dest, const bt_bdaddr_t *src) +{ + assert(dest != NULL); + assert(src != NULL); + + return (bt_bdaddr_t *)memcpy(dest, src, sizeof(bt_bdaddr_t)); +} + +const char *bdaddr_to_string(const bt_bdaddr_t *addr, char *string, size_t size) +{ + assert(addr != NULL); + assert(string != NULL); + + if (size < 18) { + return NULL; + } + + const uint8_t *ptr = addr->address; + sprintf(string, "%02x:%02x:%02x:%02x:%02x:%02x", + ptr[0], ptr[1], ptr[2], + ptr[3], ptr[4], ptr[5]); + return string; +} + +bool string_is_bdaddr(const char *string) +{ + assert(string != NULL); + + size_t len = strlen(string); + if (len != 17) { + return false; + } + + for (size_t i = 0; i < len; ++i) { + // Every 3rd char must be ':'. + if (((i + 1) % 3) == 0 && string[i] != ':') { + return false; + } + + // All other chars must be a hex digit. + if (((i + 1) % 3) != 0 && !ets_isxdigit(string[i])) { + return false; + } + } return true; - if ((c >= 'a') && (c <= 'f')) - return true; - return ((c >= 'A') && (c <= 'F')); } -bool bdaddr_is_empty(const bt_bdaddr_t *addr) { - assert(addr != NULL); +bool string_to_bdaddr(const char *string, bt_bdaddr_t *addr) +{ + assert(string != NULL); + assert(addr != NULL); - uint8_t zero[sizeof(bt_bdaddr_t)] = { 0 }; - return memcmp(addr, &zero, sizeof(bt_bdaddr_t)) == 0; + bt_bdaddr_t new_addr; + uint8_t *ptr = new_addr.address; + bool ret = sscanf(string, "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx", + &ptr[0], &ptr[1], &ptr[2], &ptr[3], &ptr[4], &ptr[5]) == 6; + + if (ret) { + memcpy(addr, &new_addr, sizeof(bt_bdaddr_t)); + } + + return ret; } -bool bdaddr_equals(const bt_bdaddr_t *first, const bt_bdaddr_t *second) { - assert(first != NULL); - assert(second != NULL); - - return memcmp(first, second, sizeof(bt_bdaddr_t)) == 0; -} - -bt_bdaddr_t *bdaddr_copy(bt_bdaddr_t *dest, const bt_bdaddr_t *src) { - assert(dest != NULL); - assert(src != NULL); - - return (bt_bdaddr_t *)memcpy(dest, src, sizeof(bt_bdaddr_t)); -} - -const char *bdaddr_to_string(const bt_bdaddr_t *addr, char *string, size_t size) { - assert(addr != NULL); - assert(string != NULL); - - if (size < 18) - return NULL; - - const uint8_t *ptr = addr->address; - sprintf(string, "%02x:%02x:%02x:%02x:%02x:%02x", - ptr[0], ptr[1], ptr[2], - ptr[3], ptr[4], ptr[5]); - return string; -} - -bool string_is_bdaddr(const char *string) { - assert(string != NULL); - - size_t len = strlen(string); - if (len != 17) - return false; - - for (size_t i = 0; i < len; ++i) { - // Every 3rd char must be ':'. - if (((i + 1) % 3) == 0 && string[i] != ':') - return false; - - // All other chars must be a hex digit. - if (((i + 1) % 3) != 0 && !ets_isxdigit(string[i])) - return false; - } - return true; -} - -bool string_to_bdaddr(const char *string, bt_bdaddr_t *addr) { - assert(string != NULL); - assert(addr != NULL); - - bt_bdaddr_t new_addr; - uint8_t *ptr = new_addr.address; - bool ret = sscanf(string, "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx", - &ptr[0], &ptr[1], &ptr[2], &ptr[3], &ptr[4], &ptr[5]) == 6; - - if (ret) - memcpy(addr, &new_addr, sizeof(bt_bdaddr_t)); - - return ret; -} - -hash_index_t hash_function_bdaddr(const void *key) { - hash_index_t hash = 5381; - const char *bytes = (const char *)key; - for (size_t i = 0; i < sizeof(bt_bdaddr_t); ++i) - hash = ((hash << 5) + hash) + bytes[i]; - return hash; +hash_index_t hash_function_bdaddr(const void *key) +{ + hash_index_t hash = 5381; + const char *bytes = (const char *)key; + for (size_t i = 0; i < sizeof(bt_bdaddr_t); ++i) { + hash = ((hash << 5) + hash) + bytes[i]; + } + return hash; } diff --git a/components/bt/bluedroid/btcore/include/device_features.h b/components/bt/bluedroid/btcore/include/device_features.h old mode 100755 new mode 100644 index e501a0b578..360d3768d6 --- a/components/bt/bluedroid/btcore/include/device_features.h +++ b/components/bt/bluedroid/btcore/include/device_features.h @@ -23,7 +23,7 @@ // Represents a page of device feature enabled/disabled bits returned // by the local controller. See the bluetooth spec for bit indexes. typedef struct { - uint8_t as_array[8]; + uint8_t as_array[8]; } bt_device_features_t; #endif /*_DEVICE_FEATURES_H_*/ diff --git a/components/bt/bluedroid/btcore/include/event_mask.h b/components/bt/bluedroid/btcore/include/event_mask.h old mode 100755 new mode 100644 index 6226676cbd..d4d036d568 --- a/components/bt/bluedroid/btcore/include/event_mask.h +++ b/components/bt/bluedroid/btcore/include/event_mask.h @@ -24,7 +24,7 @@ // HCI events the stack wishes to be informed about. See the bluetooth // spec for more information on what each bit means. typedef struct { - uint8_t as_array[8]; + uint8_t as_array[8]; } bt_event_mask_t; #endif /*_EVENT_MASK_H_*/ diff --git a/components/bt/bluedroid/btcore/include/version.h b/components/bt/bluedroid/btcore/include/version.h old mode 100755 new mode 100644 index 9d92a8f218..c63b03bd2f --- a/components/bt/bluedroid/btcore/include/version.h +++ b/components/bt/bluedroid/btcore/include/version.h @@ -21,11 +21,11 @@ #include typedef struct { - uint8_t hci_version; - uint16_t hci_revision; - uint8_t lmp_version; - uint16_t manufacturer; - uint16_t lmp_subversion; + uint8_t hci_version; + uint16_t hci_revision; + uint8_t lmp_version; + uint16_t manufacturer; + uint16_t lmp_subversion; } bt_version_t; #endif /*_VERSION_H_*/ diff --git a/components/bt/bluedroid/btif/bta_dm_co.c b/components/bt/bluedroid/btif/bta_dm_co.c old mode 100755 new mode 100644 index 26b22a9e83..9edad8c0c1 --- a/components/bt/bluedroid/btif/bta_dm_co.c +++ b/components/bt/bluedroid/btif/bta_dm_co.c @@ -31,8 +31,7 @@ #if (defined BLE_INCLUDED && BLE_INCLUDED == TRUE) #include "bte_appl.h" -tBTE_APPL_CFG bte_appl_cfg = -{ +tBTE_APPL_CFG bte_appl_cfg = { #if SMP_INCLUDED == TRUE BTA_LE_AUTH_REQ_SC_MITM_BOND, // Authentication requirements #else @@ -197,7 +196,7 @@ void bta_dm_co_rmt_oob(BD_ADDR bd_addr) #endif /* #if (defined(BTIF_INCLUDED) && BTIF_INCLUDED == TRUE) */ #endif - BTIF_TRACE_DEBUG("bta_dm_co_rmt_oob: result=%d",result); + BTIF_TRACE_DEBUG("bta_dm_co_rmt_oob: result=%d", result); bta_dm_ci_rmt_oob(result, bd_addr, p_c, p_r); } @@ -235,7 +234,7 @@ static void btui_sco_codec_callback(UINT16 event, UINT16 sco_handle) ** *******************************************************************************/ tBTA_DM_SCO_ROUTE_TYPE bta_dm_sco_co_init(UINT32 rx_bw, UINT32 tx_bw, - tBTA_CODEC_INFO * p_codec_type, UINT8 app_id) + tBTA_CODEC_INFO *p_codec_type, UINT8 app_id) { tBTM_SCO_ROUTE_TYPE route = BTA_DM_SCO_ROUTE_PCM; @@ -246,19 +245,16 @@ tBTA_DM_SCO_ROUTE_TYPE bta_dm_sco_co_init(UINT32 rx_bw, UINT32 tx_bw, /* HS invoke this call-out */ if ( #if (BTA_HS_INCLUDED == TRUE ) && (BTA_HS_INCLUDED == TRUE) - (app_id == BTUI_DM_SCO_4_HS_APP_ID && btui_cfg.hs_sco_over_hci) || + (app_id == BTUI_DM_SCO_4_HS_APP_ID && btui_cfg.hs_sco_over_hci) || #endif - /* AG invoke this call-out */ - (app_id != BTUI_DM_SCO_4_HS_APP_ID && btui_cfg.ag_sco_over_hci )) - { + /* AG invoke this call-out */ + (app_id != BTUI_DM_SCO_4_HS_APP_ID && btui_cfg.ag_sco_over_hci )) { route = btui_cb.sco_hci = BTA_DM_SCO_ROUTE_HCI; } /* no codec is is used for the SCO data */ - if (p_codec_type->codec_type == BTA_SCO_CODEC_PCM && route == BTA_DM_SCO_ROUTE_HCI) - { + if (p_codec_type->codec_type == BTA_SCO_CODEC_PCM && route == BTA_DM_SCO_ROUTE_HCI) { /* initialize SCO codec */ - if (!btui_sco_codec_init(rx_bw, tx_bw)) - { + if (!btui_sco_codec_init(rx_bw, tx_bw)) { BTIF_TRACE_ERROR("codec initialization exception!"); } } @@ -282,8 +278,7 @@ void bta_dm_sco_co_open(UINT16 handle, UINT8 pkt_size, UINT16 event) { tBTUI_SCO_CODEC_CFG cfg; - if (btui_cb.sco_hci) - { + if (btui_cb.sco_hci) { BTIF_TRACE_DEBUG("bta_dm_sco_co_open handle:%d pkt_size:%d", handle, pkt_size); /* use dedicated SCO buffer pool for SCO TX data */ cfg.pool_id = HCI_SCO_POOL_ID; @@ -308,8 +303,7 @@ void bta_dm_sco_co_open(UINT16 handle, UINT8 pkt_size, UINT16 event) *******************************************************************************/ void bta_dm_sco_co_close(void) { - if (btui_cb.sco_hci) - { + if (btui_cb.sco_hci) { BTIF_TRACE_DEBUG("bta_dm_sco_co_close close codec"); /* close sco codec */ btui_sco_codec_close(); @@ -329,10 +323,11 @@ void bta_dm_sco_co_close(void) *******************************************************************************/ void bta_dm_sco_co_in_data(BT_HDR *p_buf) { - if (btui_cfg.sco_use_mic) + if (btui_cfg.sco_use_mic) { btui_sco_codec_inqdata (p_buf); - else + } else { GKI_freebuf(p_buf); + } } /******************************************************************************* @@ -379,7 +374,7 @@ void bta_dm_co_le_io_key_req(BD_ADDR bd_addr, UINT8 *p_max_key_size, BTIF_TRACE_ERROR("##################################"); *p_max_key_size = 16; *p_init_key = *p_resp_key = - (BTA_LE_KEY_PENC|BTA_LE_KEY_PID|BTA_LE_KEY_PCSRK|BTA_LE_KEY_LENC|BTA_LE_KEY_LID|BTA_LE_KEY_LCSRK); + (BTA_LE_KEY_PENC | BTA_LE_KEY_PID | BTA_LE_KEY_PCSRK | BTA_LE_KEY_LENC | BTA_LE_KEY_LID | BTA_LE_KEY_LCSRK); } @@ -443,20 +438,25 @@ void bta_dm_co_ble_io_req(BD_ADDR bd_addr, tBTA_IO_CAP *p_io_cap, /* *p_auth_req by default is FALSE for devices with NoInputNoOutput; TRUE for other devices. */ - if (bte_appl_cfg.ble_auth_req) + if (bte_appl_cfg.ble_auth_req) { *p_auth_req = bte_appl_cfg.ble_auth_req | (bte_appl_cfg.ble_auth_req & 0x04) | ((*p_auth_req) & 0x04); + } - if (bte_appl_cfg.ble_io_cap <=4) + if (bte_appl_cfg.ble_io_cap <= 4) { *p_io_cap = bte_appl_cfg.ble_io_cap; + } - if (bte_appl_cfg.ble_init_key <= BTM_BLE_INITIATOR_KEY_SIZE) + if (bte_appl_cfg.ble_init_key <= BTM_BLE_INITIATOR_KEY_SIZE) { *p_init_key = bte_appl_cfg.ble_init_key; + } - if (bte_appl_cfg.ble_resp_key <= BTM_BLE_RESPONDER_KEY_SIZE) + if (bte_appl_cfg.ble_resp_key <= BTM_BLE_RESPONDER_KEY_SIZE) { *p_resp_key = bte_appl_cfg.ble_resp_key; + } - if (bte_appl_cfg.ble_max_key_size > 7 && bte_appl_cfg.ble_max_key_size <= 16) + if (bte_appl_cfg.ble_max_key_size > 7 && bte_appl_cfg.ble_max_key_size <= 16) { *p_max_key_size = bte_appl_cfg.ble_max_key_size; + } } diff --git a/components/bt/bluedroid/btif/bta_gattc_co.c b/components/bt/bluedroid/btif/bta_gattc_co.c old mode 100755 new mode 100644 index 3d0acd9e73..2a255885ad --- a/components/bt/bluedroid/btif/bta_gattc_co.c +++ b/components/bt/bluedroid/btif/bta_gattc_co.c @@ -32,18 +32,17 @@ #define GATT_CACHE_PREFIX "/data/misc/bluedroid/gatt_cache_" #ifdef BT_SUPPORT_NVM -static FILE* sCacheFD = 0; +static FILE *sCacheFD = 0; static void getFilename(char *buffer, BD_ADDR bda) { sprintf(buffer, "%s%02x%02x%02x%02x%02x%02x", GATT_CACHE_PREFIX - , bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]); + , bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]); } static void cacheClose() { - if (sCacheFD != 0) - { + if (sCacheFD != 0) { fclose(sCacheFD); sCacheFD = 0; } @@ -92,8 +91,9 @@ void bta_gattc_co_cache_open(BD_ADDR server_bda, UINT16 evt, UINT16 conn_id, BOO #ifdef BT_SUPPORT_NVM /* open NV cache and send call in */ tBTA_GATT_STATUS status = BTA_GATT_OK; - if (!btm_sec_is_a_bonded_dev(server_bda) || !cacheOpen(server_bda, to_save)) + if (!btm_sec_is_a_bonded_dev(server_bda) || !cacheOpen(server_bda, to_save)) { status = BTA_GATT_ERROR; + } BTIF_TRACE_DEBUG("%s() - status=%d", __FUNCTION__, status); bta_gattc_ci_cache_open(server_bda, evt, status, conn_id); @@ -123,13 +123,12 @@ void bta_gattc_co_cache_load(BD_ADDR server_bda, UINT16 evt, UINT16 start_index, tBTA_GATTC_NV_ATTR attr[BTA_GATTC_NV_LOAD_MAX]; tBTA_GATT_STATUS status = BTA_GATT_ERROR; #ifdef BT_SUPPORT_NVM - if (sCacheFD && (0 == fseek(sCacheFD, start_index * sizeof(tBTA_GATTC_NV_ATTR), SEEK_SET))) - { + if (sCacheFD && (0 == fseek(sCacheFD, start_index * sizeof(tBTA_GATTC_NV_ATTR), SEEK_SET))) { num_attr = fread(attr, sizeof(tBTA_GATTC_NV_ATTR), BTA_GATTC_NV_LOAD_MAX, sCacheFD); status = (num_attr < BTA_GATTC_NV_LOAD_MAX ? BTA_GATT_OK : BTA_GATT_MORE); } BTIF_TRACE_DEBUG("%s() - sCacheFD=%p, start_index=%d, read=%d, status=%d", - __FUNCTION__, sCacheFD, start_index, num_attr, status); + __FUNCTION__, sCacheFD, start_index, num_attr, status); #endif /* BT_SUPPORT_NVM */ bta_gattc_ci_cache_load(server_bda, evt, num_attr, attr, status, conn_id); @@ -157,8 +156,7 @@ void bta_gattc_co_cache_save (BD_ADDR server_bda, UINT16 evt, UINT16 num_attr, tBTA_GATT_STATUS status = BTA_GATT_OK; UNUSED(attr_index); #ifdef BT_SUPPORT_NVM - if (sCacheFD != 0) - { + if (sCacheFD != 0) { int num = fwrite(p_attr_list, sizeof(tBTA_GATTC_NV_ATTR), num_attr, sCacheFD); BTIF_TRACE_DEBUG("%s() wrote %d", __FUNCTION__, num); } diff --git a/components/bt/bluedroid/btif/bta_gatts_co.c b/components/bt/bluedroid/btif/bta_gatts_co.c old mode 100755 new mode 100644 index 160c1ed473..d6f0ca7317 --- a/components/bt/bluedroid/btif/bta_gatts_co.c +++ b/components/bt/bluedroid/btif/bta_gatts_co.c @@ -34,8 +34,7 @@ #define BTIF_GATTS_MAX_SRV_CHG_CLT_SIZE 50 -typedef struct -{ +typedef struct { BOOLEAN enable; UINT8 num_clients; tBTA_GATTS_SRV_CHG srv_chg[BTIF_GATTS_MAX_SRV_CHG_CLT_SIZE]; @@ -53,12 +52,11 @@ static btif_gatts_srv_chg_cb_t btif_gatts_srv_chg_cb; static void btif_gatts_check_init(void) { - btif_gatts_srv_chg_cb_t *p_cb= &btif_gatts_srv_chg_cb; + btif_gatts_srv_chg_cb_t *p_cb = &btif_gatts_srv_chg_cb; - if (!p_cb->enable) - { - memset(p_cb, 0, sizeof(btif_gatts_srv_chg_cb_t)); - p_cb->enable = TRUE; + if (!p_cb->enable) { + memset(p_cb, 0, sizeof(btif_gatts_srv_chg_cb_t)); + p_cb->enable = TRUE; } } @@ -68,25 +66,21 @@ static void btif_gatts_check_init(void) void btif_gatts_add_bonded_dev_from_nv(BD_ADDR bda) { - btif_gatts_srv_chg_cb_t *p_cb= &btif_gatts_srv_chg_cb; + btif_gatts_srv_chg_cb_t *p_cb = &btif_gatts_srv_chg_cb; BOOLEAN found = FALSE; UINT8 i; btif_gatts_check_init(); - for (i=0; i != p_cb->num_clients; ++i) - { - if (!memcmp(p_cb->srv_chg[i].bda, bda, sizeof(BD_ADDR))) - { + for (i = 0; i != p_cb->num_clients; ++i) { + if (!memcmp(p_cb->srv_chg[i].bda, bda, sizeof(BD_ADDR))) { found = TRUE; break; } } - if (!found) - { - if (p_cb->num_clients < BTIF_GATTS_MAX_SRV_CHG_CLT_SIZE) - { + if (!found) { + if (p_cb->num_clients < BTIF_GATTS_MAX_SRV_CHG_CLT_SIZE) { bdcpy(p_cb->srv_chg[p_cb->num_clients].bda, bda); p_cb->srv_chg[p_cb->num_clients].srv_changed = FALSE; p_cb->num_clients++; diff --git a/components/bt/bluedroid/device/controller.c b/components/bt/bluedroid/device/controller.c old mode 100755 new mode 100644 index 2d928b3057..c7fc98d6c8 --- a/components/bt/bluedroid/device/controller.c +++ b/components/bt/bluedroid/device/controller.c @@ -76,386 +76,419 @@ static bool secure_connections_supported; // Module lifecycle functions -static void start_up(void) { - BT_HDR *response; +static void start_up(void) +{ + BT_HDR *response; - // Send the initial reset command - response = AWAIT_COMMAND(packet_factory->make_reset()); - packet_parser->parse_generic_command_complete(response); - - // Request the classic buffer size next - response = AWAIT_COMMAND(packet_factory->make_read_buffer_size()); - packet_parser->parse_read_buffer_size_response( - response, &acl_data_size_classic, &acl_buffer_count_classic); - - // Tell the controller about our buffer sizes and buffer counts next - // TODO(zachoverflow): factor this out. eww l2cap contamination. And why just a hardcoded 10? - response = AWAIT_COMMAND( - packet_factory->make_host_buffer_size( - L2CAP_MTU_SIZE, - SCO_HOST_BUFFER_SIZE, - L2CAP_HOST_FC_ACL_BUFS, - 10 - ) - ); - - packet_parser->parse_generic_command_complete(response); - - // Read the local version info off the controller next, including - // information such as manufacturer and supported HCI version - response = AWAIT_COMMAND(packet_factory->make_read_local_version_info()); - packet_parser->parse_read_local_version_info_response(response, &bt_version); - - // Read the bluetooth address off the controller next - response = AWAIT_COMMAND(packet_factory->make_read_bd_addr()); - packet_parser->parse_read_bd_addr_response(response, &address); - - // Request the controller's supported commands next - response = AWAIT_COMMAND(packet_factory->make_read_local_supported_commands()); - packet_parser->parse_read_local_supported_commands_response( - response, - supported_commands, - HCI_SUPPORTED_COMMANDS_ARRAY_SIZE - ); - - // Read page 0 of the controller features next - uint8_t page_number = 0; - response = AWAIT_COMMAND(packet_factory->make_read_local_extended_features(page_number)); - packet_parser->parse_read_local_extended_features_response( - response, - &page_number, - &last_features_classic_page_index, - features_classic, - MAX_FEATURES_CLASSIC_PAGE_COUNT - ); - - assert(page_number == 0); - page_number++; - - // Inform the controller what page 0 features we support, based on what - // it told us it supports. We need to do this first before we request the - // next page, because the controller's response for page 1 may be - // dependent on what we configure from page 0 - simple_pairing_supported = HCI_SIMPLE_PAIRING_SUPPORTED(features_classic[0].as_array); - if (simple_pairing_supported) { - response = AWAIT_COMMAND(packet_factory->make_write_simple_pairing_mode(HCI_SP_MODE_ENABLED)); + // Send the initial reset command + response = AWAIT_COMMAND(packet_factory->make_reset()); packet_parser->parse_generic_command_complete(response); - } -#if (BLE_INCLUDED == TRUE) - if (HCI_LE_SPT_SUPPORTED(features_classic[0].as_array)) { - uint8_t simultaneous_le_host = HCI_SIMUL_LE_BREDR_SUPPORTED(features_classic[0].as_array) ? BTM_BLE_SIMULTANEOUS_HOST : 0; + // Request the classic buffer size next + response = AWAIT_COMMAND(packet_factory->make_read_buffer_size()); + packet_parser->parse_read_buffer_size_response( + response, &acl_data_size_classic, &acl_buffer_count_classic); + + // Tell the controller about our buffer sizes and buffer counts next + // TODO(zachoverflow): factor this out. eww l2cap contamination. And why just a hardcoded 10? response = AWAIT_COMMAND( - packet_factory->make_ble_write_host_support(BTM_BLE_HOST_SUPPORT, simultaneous_le_host) + packet_factory->make_host_buffer_size( + L2CAP_MTU_SIZE, + SCO_HOST_BUFFER_SIZE, + L2CAP_HOST_FC_ACL_BUFS, + 10 + ) + ); + + packet_parser->parse_generic_command_complete(response); + + // Read the local version info off the controller next, including + // information such as manufacturer and supported HCI version + response = AWAIT_COMMAND(packet_factory->make_read_local_version_info()); + packet_parser->parse_read_local_version_info_response(response, &bt_version); + + // Read the bluetooth address off the controller next + response = AWAIT_COMMAND(packet_factory->make_read_bd_addr()); + packet_parser->parse_read_bd_addr_response(response, &address); + + // Request the controller's supported commands next + response = AWAIT_COMMAND(packet_factory->make_read_local_supported_commands()); + packet_parser->parse_read_local_supported_commands_response( + response, + supported_commands, + HCI_SUPPORTED_COMMANDS_ARRAY_SIZE ); - packet_parser->parse_generic_command_complete(response); - } -#endif - - // Done telling the controller about what page 0 features we support - // Request the remaining feature pages - while (page_number <= last_features_classic_page_index && - page_number < MAX_FEATURES_CLASSIC_PAGE_COUNT) { + // Read page 0 of the controller features next + uint8_t page_number = 0; response = AWAIT_COMMAND(packet_factory->make_read_local_extended_features(page_number)); packet_parser->parse_read_local_extended_features_response( - response, - &page_number, - &last_features_classic_page_index, - features_classic, - MAX_FEATURES_CLASSIC_PAGE_COUNT + response, + &page_number, + &last_features_classic_page_index, + features_classic, + MAX_FEATURES_CLASSIC_PAGE_COUNT ); + assert(page_number == 0); page_number++; - } + + // Inform the controller what page 0 features we support, based on what + // it told us it supports. We need to do this first before we request the + // next page, because the controller's response for page 1 may be + // dependent on what we configure from page 0 + simple_pairing_supported = HCI_SIMPLE_PAIRING_SUPPORTED(features_classic[0].as_array); + if (simple_pairing_supported) { + response = AWAIT_COMMAND(packet_factory->make_write_simple_pairing_mode(HCI_SP_MODE_ENABLED)); + packet_parser->parse_generic_command_complete(response); + } + +#if (BLE_INCLUDED == TRUE) + if (HCI_LE_SPT_SUPPORTED(features_classic[0].as_array)) { + uint8_t simultaneous_le_host = HCI_SIMUL_LE_BREDR_SUPPORTED(features_classic[0].as_array) ? BTM_BLE_SIMULTANEOUS_HOST : 0; + response = AWAIT_COMMAND( + packet_factory->make_ble_write_host_support(BTM_BLE_HOST_SUPPORT, simultaneous_le_host) + ); + + packet_parser->parse_generic_command_complete(response); + } +#endif + + // Done telling the controller about what page 0 features we support + // Request the remaining feature pages + while (page_number <= last_features_classic_page_index && + page_number < MAX_FEATURES_CLASSIC_PAGE_COUNT) { + response = AWAIT_COMMAND(packet_factory->make_read_local_extended_features(page_number)); + packet_parser->parse_read_local_extended_features_response( + response, + &page_number, + &last_features_classic_page_index, + features_classic, + MAX_FEATURES_CLASSIC_PAGE_COUNT + ); + + page_number++; + } #if (SC_MODE_INCLUDED == TRUE) - secure_connections_supported = HCI_SC_CTRLR_SUPPORTED(features_classic[2].as_array); - if (secure_connections_supported) { - response = AWAIT_COMMAND(packet_factory->make_write_secure_connections_host_support(HCI_SC_MODE_ENABLED)); - packet_parser->parse_generic_command_complete(response); - } + secure_connections_supported = HCI_SC_CTRLR_SUPPORTED(features_classic[2].as_array); + if (secure_connections_supported) { + response = AWAIT_COMMAND(packet_factory->make_write_secure_connections_host_support(HCI_SC_MODE_ENABLED)); + packet_parser->parse_generic_command_complete(response); + } #endif #if (BLE_INCLUDED == TRUE) - ble_supported = last_features_classic_page_index >= 1 && HCI_LE_HOST_SUPPORTED(features_classic[1].as_array); - if (ble_supported) { - // Request the ble white list size next - response = AWAIT_COMMAND(packet_factory->make_ble_read_white_list_size()); - packet_parser->parse_ble_read_white_list_size_response(response, &ble_white_list_size); + ble_supported = last_features_classic_page_index >= 1 && HCI_LE_HOST_SUPPORTED(features_classic[1].as_array); + if (ble_supported) { + // Request the ble white list size next + response = AWAIT_COMMAND(packet_factory->make_ble_read_white_list_size()); + packet_parser->parse_ble_read_white_list_size_response(response, &ble_white_list_size); - // Request the ble buffer size next - response = AWAIT_COMMAND(packet_factory->make_ble_read_buffer_size()); - packet_parser->parse_ble_read_buffer_size_response( - response, - &acl_data_size_ble, - &acl_buffer_count_ble - ); - - // Response of 0 indicates ble has the same buffer size as classic - if (acl_data_size_ble == 0) - acl_data_size_ble = acl_data_size_classic; - - // Request the ble supported states next - response = AWAIT_COMMAND(packet_factory->make_ble_read_supported_states()); - packet_parser->parse_ble_read_supported_states_response( - response, - ble_supported_states, - sizeof(ble_supported_states) - ); - - // Request the ble supported features next - response = AWAIT_COMMAND(packet_factory->make_ble_read_local_supported_features()); - packet_parser->parse_ble_read_local_supported_features_response( - response, - &features_ble - ); - - if (HCI_LE_ENHANCED_PRIVACY_SUPPORTED(features_ble.as_array)) { - response = AWAIT_COMMAND(packet_factory->make_ble_read_resolving_list_size()); - packet_parser->parse_ble_read_resolving_list_size_response( + // Request the ble buffer size next + response = AWAIT_COMMAND(packet_factory->make_ble_read_buffer_size()); + packet_parser->parse_ble_read_buffer_size_response( response, - &ble_resolving_list_max_size); - } + &acl_data_size_ble, + &acl_buffer_count_ble + ); - if (HCI_LE_DATA_LEN_EXT_SUPPORTED(features_ble.as_array)) { - response = AWAIT_COMMAND(packet_factory->make_ble_read_suggested_default_data_length()); - packet_parser->parse_ble_read_suggested_default_data_length_response( + // Response of 0 indicates ble has the same buffer size as classic + if (acl_data_size_ble == 0) { + acl_data_size_ble = acl_data_size_classic; + } + + // Request the ble supported states next + response = AWAIT_COMMAND(packet_factory->make_ble_read_supported_states()); + packet_parser->parse_ble_read_supported_states_response( response, - &ble_suggested_default_data_length); - } + ble_supported_states, + sizeof(ble_supported_states) + ); - // Set the ble event mask next - response = AWAIT_COMMAND(packet_factory->make_ble_set_event_mask(&BLE_EVENT_MASK)); - packet_parser->parse_generic_command_complete(response); - } + // Request the ble supported features next + response = AWAIT_COMMAND(packet_factory->make_ble_read_local_supported_features()); + packet_parser->parse_ble_read_local_supported_features_response( + response, + &features_ble + ); + + if (HCI_LE_ENHANCED_PRIVACY_SUPPORTED(features_ble.as_array)) { + response = AWAIT_COMMAND(packet_factory->make_ble_read_resolving_list_size()); + packet_parser->parse_ble_read_resolving_list_size_response( + response, + &ble_resolving_list_max_size); + } + + if (HCI_LE_DATA_LEN_EXT_SUPPORTED(features_ble.as_array)) { + response = AWAIT_COMMAND(packet_factory->make_ble_read_suggested_default_data_length()); + packet_parser->parse_ble_read_suggested_default_data_length_response( + response, + &ble_suggested_default_data_length); + } + + // Set the ble event mask next + response = AWAIT_COMMAND(packet_factory->make_ble_set_event_mask(&BLE_EVENT_MASK)); + packet_parser->parse_generic_command_complete(response); + } #endif - if (simple_pairing_supported) { - response = AWAIT_COMMAND(packet_factory->make_set_event_mask(&CLASSIC_EVENT_MASK)); - packet_parser->parse_generic_command_complete(response); - } + if (simple_pairing_supported) { + response = AWAIT_COMMAND(packet_factory->make_set_event_mask(&CLASSIC_EVENT_MASK)); + packet_parser->parse_generic_command_complete(response); + } - readable = true; - // return future_new_immediate(FUTURE_SUCCESS); - return; + readable = true; + // return future_new_immediate(FUTURE_SUCCESS); + return; } -static void shut_down(void) { - readable = false; +static void shut_down(void) +{ + readable = false; } -static bool get_is_ready(void) { - return readable; +static bool get_is_ready(void) +{ + return readable; } -static const bt_bdaddr_t *get_address(void) { - assert(readable); - return &address; +static const bt_bdaddr_t *get_address(void) +{ + assert(readable); + return &address; } -static const bt_version_t *get_bt_version(void) { - assert(readable); - return &bt_version; +static const bt_version_t *get_bt_version(void) +{ + assert(readable); + return &bt_version; } // TODO(zachoverflow): hide inside, move decoder inside too -static const bt_device_features_t *get_features_classic(int index) { - assert(readable); - assert(index < MAX_FEATURES_CLASSIC_PAGE_COUNT); - return &features_classic[index]; +static const bt_device_features_t *get_features_classic(int index) +{ + assert(readable); + assert(index < MAX_FEATURES_CLASSIC_PAGE_COUNT); + return &features_classic[index]; } -static uint8_t get_last_features_classic_index(void) { - assert(readable); - return last_features_classic_page_index; +static uint8_t get_last_features_classic_index(void) +{ + assert(readable); + return last_features_classic_page_index; } -static const bt_device_features_t *get_features_ble(void) { - assert(readable); - assert(ble_supported); - return &features_ble; +static const bt_device_features_t *get_features_ble(void) +{ + assert(readable); + assert(ble_supported); + return &features_ble; } -static const uint8_t *get_ble_supported_states(void) { - assert(readable); - assert(ble_supported); - return ble_supported_states; +static const uint8_t *get_ble_supported_states(void) +{ + assert(readable); + assert(ble_supported); + return ble_supported_states; } -static bool supports_simple_pairing(void) { - assert(readable); - return simple_pairing_supported; +static bool supports_simple_pairing(void) +{ + assert(readable); + return simple_pairing_supported; } -static bool supports_secure_connections(void) { - assert(readable); - return secure_connections_supported; +static bool supports_secure_connections(void) +{ + assert(readable); + return secure_connections_supported; } -static bool supports_simultaneous_le_bredr(void) { - assert(readable); - return HCI_SIMUL_LE_BREDR_SUPPORTED(features_classic[0].as_array); +static bool supports_simultaneous_le_bredr(void) +{ + assert(readable); + return HCI_SIMUL_LE_BREDR_SUPPORTED(features_classic[0].as_array); } -static bool supports_reading_remote_extended_features(void) { - assert(readable); - return HCI_READ_REMOTE_EXT_FEATURES_SUPPORTED(supported_commands); +static bool supports_reading_remote_extended_features(void) +{ + assert(readable); + return HCI_READ_REMOTE_EXT_FEATURES_SUPPORTED(supported_commands); } -static bool supports_interlaced_inquiry_scan(void) { - assert(readable); - return HCI_LMP_INTERLACED_INQ_SCAN_SUPPORTED(features_classic[0].as_array); +static bool supports_interlaced_inquiry_scan(void) +{ + assert(readable); + return HCI_LMP_INTERLACED_INQ_SCAN_SUPPORTED(features_classic[0].as_array); } -static bool supports_rssi_with_inquiry_results(void) { - assert(readable); - return HCI_LMP_INQ_RSSI_SUPPORTED(features_classic[0].as_array); +static bool supports_rssi_with_inquiry_results(void) +{ + assert(readable); + return HCI_LMP_INQ_RSSI_SUPPORTED(features_classic[0].as_array); } -static bool supports_extended_inquiry_response(void) { - assert(readable); - return HCI_EXT_INQ_RSP_SUPPORTED(features_classic[0].as_array); +static bool supports_extended_inquiry_response(void) +{ + assert(readable); + return HCI_EXT_INQ_RSP_SUPPORTED(features_classic[0].as_array); } -static bool supports_master_slave_role_switch(void) { - assert(readable); - return HCI_SWITCH_SUPPORTED(features_classic[0].as_array); +static bool supports_master_slave_role_switch(void) +{ + assert(readable); + return HCI_SWITCH_SUPPORTED(features_classic[0].as_array); } -static bool supports_ble(void) { - assert(readable); - return ble_supported; +static bool supports_ble(void) +{ + assert(readable); + return ble_supported; } -static bool supports_ble_privacy(void) { - assert(readable); - assert(ble_supported); - return HCI_LE_ENHANCED_PRIVACY_SUPPORTED(features_ble.as_array); +static bool supports_ble_privacy(void) +{ + assert(readable); + assert(ble_supported); + return HCI_LE_ENHANCED_PRIVACY_SUPPORTED(features_ble.as_array); } -static bool supports_ble_packet_extension(void) { - assert(readable); - assert(ble_supported); - return HCI_LE_DATA_LEN_EXT_SUPPORTED(features_ble.as_array); +static bool supports_ble_packet_extension(void) +{ + assert(readable); + assert(ble_supported); + return HCI_LE_DATA_LEN_EXT_SUPPORTED(features_ble.as_array); } -static bool supports_ble_connection_parameters_request(void) { - assert(readable); - assert(ble_supported); - return HCI_LE_CONN_PARAM_REQ_SUPPORTED(features_ble.as_array); +static bool supports_ble_connection_parameters_request(void) +{ + assert(readable); + assert(ble_supported); + return HCI_LE_CONN_PARAM_REQ_SUPPORTED(features_ble.as_array); } -static uint16_t get_acl_data_size_classic(void) { - assert(readable); - return acl_data_size_classic; +static uint16_t get_acl_data_size_classic(void) +{ + assert(readable); + return acl_data_size_classic; } -static uint16_t get_acl_data_size_ble(void) { - assert(readable); - assert(ble_supported); - return acl_data_size_ble; +static uint16_t get_acl_data_size_ble(void) +{ + assert(readable); + assert(ble_supported); + return acl_data_size_ble; } -static uint16_t get_acl_packet_size_classic(void) { - assert(readable); - return acl_data_size_classic + HCI_DATA_PREAMBLE_SIZE; +static uint16_t get_acl_packet_size_classic(void) +{ + assert(readable); + return acl_data_size_classic + HCI_DATA_PREAMBLE_SIZE; } -static uint16_t get_acl_packet_size_ble(void) { - assert(readable); - return acl_data_size_ble + HCI_DATA_PREAMBLE_SIZE; +static uint16_t get_acl_packet_size_ble(void) +{ + assert(readable); + return acl_data_size_ble + HCI_DATA_PREAMBLE_SIZE; } -static uint16_t get_ble_suggested_default_data_length(void) { - assert(readable); - assert(ble_supported); - return ble_suggested_default_data_length; +static uint16_t get_ble_suggested_default_data_length(void) +{ + assert(readable); + assert(ble_supported); + return ble_suggested_default_data_length; } -static uint16_t get_acl_buffer_count_classic(void) { - assert(readable); - return acl_buffer_count_classic; +static uint16_t get_acl_buffer_count_classic(void) +{ + assert(readable); + return acl_buffer_count_classic; } -static uint8_t get_acl_buffer_count_ble(void) { - assert(readable); - assert(ble_supported); - return acl_buffer_count_ble; +static uint8_t get_acl_buffer_count_ble(void) +{ + assert(readable); + assert(ble_supported); + return acl_buffer_count_ble; } -static uint8_t get_ble_white_list_size(void) { - assert(readable); - assert(ble_supported); - return ble_white_list_size; +static uint8_t get_ble_white_list_size(void) +{ + assert(readable); + assert(ble_supported); + return ble_white_list_size; } -static uint8_t get_ble_resolving_list_max_size(void) { - assert(readable); - assert(ble_supported); - return ble_resolving_list_max_size; +static uint8_t get_ble_resolving_list_max_size(void) +{ + assert(readable); + assert(ble_supported); + return ble_resolving_list_max_size; } -static void set_ble_resolving_list_max_size(int resolving_list_max_size) { - assert(readable); - assert(ble_supported); - ble_resolving_list_max_size = resolving_list_max_size; +static void set_ble_resolving_list_max_size(int resolving_list_max_size) +{ + assert(readable); + assert(ble_supported); + ble_resolving_list_max_size = resolving_list_max_size; } static const controller_t interface = { - start_up, - shut_down, - get_is_ready, + start_up, + shut_down, + get_is_ready, - get_address, - get_bt_version, + get_address, + get_bt_version, - get_features_classic, - get_last_features_classic_index, + get_features_classic, + get_last_features_classic_index, - get_features_ble, - get_ble_supported_states, + get_features_ble, + get_ble_supported_states, - supports_simple_pairing, - supports_secure_connections, - supports_simultaneous_le_bredr, - supports_reading_remote_extended_features, - supports_interlaced_inquiry_scan, - supports_rssi_with_inquiry_results, - supports_extended_inquiry_response, - supports_master_slave_role_switch, + supports_simple_pairing, + supports_secure_connections, + supports_simultaneous_le_bredr, + supports_reading_remote_extended_features, + supports_interlaced_inquiry_scan, + supports_rssi_with_inquiry_results, + supports_extended_inquiry_response, + supports_master_slave_role_switch, - supports_ble, - supports_ble_packet_extension, - supports_ble_connection_parameters_request, - supports_ble_privacy, + supports_ble, + supports_ble_packet_extension, + supports_ble_connection_parameters_request, + supports_ble_privacy, - get_acl_data_size_classic, - get_acl_data_size_ble, + get_acl_data_size_classic, + get_acl_data_size_ble, - get_acl_packet_size_classic, - get_acl_packet_size_ble, - get_ble_suggested_default_data_length, + get_acl_packet_size_classic, + get_acl_packet_size_ble, + get_ble_suggested_default_data_length, - get_acl_buffer_count_classic, - get_acl_buffer_count_ble, + get_acl_buffer_count_classic, + get_acl_buffer_count_ble, - get_ble_white_list_size, + get_ble_white_list_size, - get_ble_resolving_list_max_size, - set_ble_resolving_list_max_size + get_ble_resolving_list_max_size, + set_ble_resolving_list_max_size }; -const controller_t *controller_get_interface() { - static bool loaded = false; - if (!loaded) { - loaded = true; +const controller_t *controller_get_interface() +{ + static bool loaded = false; + if (!loaded) { + loaded = true; - hci = hci_layer_get_interface(); - packet_factory = hci_packet_factory_get_interface(); - packet_parser = hci_packet_parser_get_interface(); - } + hci = hci_layer_get_interface(); + packet_factory = hci_packet_factory_get_interface(); + packet_parser = hci_packet_parser_get_interface(); + } - return &interface; + return &interface; } diff --git a/components/bt/bluedroid/device/include/controller.h b/components/bt/bluedroid/device/include/controller.h old mode 100755 new mode 100644 index 03a63c0fc1..6d6e5a8ca3 --- a/components/bt/bluedroid/device/include/controller.h +++ b/components/bt/bluedroid/device/include/controller.h @@ -30,54 +30,54 @@ #include "hci_packet_parser.h" typedef struct controller_t { - void (*start_up)(void); - void (*shut_down)(void); - bool (*get_is_ready)(void); + void (*start_up)(void); + void (*shut_down)(void); + bool (*get_is_ready)(void); - const bt_bdaddr_t *(*get_address)(void); - const bt_version_t *(*get_bt_version)(void); + const bt_bdaddr_t *(*get_address)(void); + const bt_version_t *(*get_bt_version)(void); - const bt_device_features_t *(*get_features_classic)(int index); + const bt_device_features_t *(*get_features_classic)(int index); - uint8_t (*get_last_features_classic_index)(void); + uint8_t (*get_last_features_classic_index)(void); - const bt_device_features_t *(*get_features_ble)(void); - const uint8_t *(*get_ble_supported_states)(void); + const bt_device_features_t *(*get_features_ble)(void); + const uint8_t *(*get_ble_supported_states)(void); - bool (*supports_simple_pairing)(void); - bool (*supports_secure_connections)(void); - bool (*supports_simultaneous_le_bredr)(void); - bool (*supports_reading_remote_extended_features)(void); - bool (*supports_interlaced_inquiry_scan)(void); - bool (*supports_rssi_with_inquiry_results)(void); - bool (*supports_extended_inquiry_response)(void); - bool (*supports_master_slave_role_switch)(void); + bool (*supports_simple_pairing)(void); + bool (*supports_secure_connections)(void); + bool (*supports_simultaneous_le_bredr)(void); + bool (*supports_reading_remote_extended_features)(void); + bool (*supports_interlaced_inquiry_scan)(void); + bool (*supports_rssi_with_inquiry_results)(void); + bool (*supports_extended_inquiry_response)(void); + bool (*supports_master_slave_role_switch)(void); - bool (*supports_ble)(void); - bool (*supports_ble_packet_extension)(void); - bool (*supports_ble_connection_parameters_request)(void); - bool (*supports_ble_privacy)(void); + bool (*supports_ble)(void); + bool (*supports_ble_packet_extension)(void); + bool (*supports_ble_connection_parameters_request)(void); + bool (*supports_ble_privacy)(void); - // Get the cached acl data sizes for the controller. - uint16_t (*get_acl_data_size_classic)(void); - uint16_t (*get_acl_data_size_ble)(void); + // Get the cached acl data sizes for the controller. + uint16_t (*get_acl_data_size_classic)(void); + uint16_t (*get_acl_data_size_ble)(void); - // Get the cached acl packet sizes for the controller. - // This is a convenience function for the respective - // acl data size + size of the acl header. - uint16_t (*get_acl_packet_size_classic)(void); - uint16_t (*get_acl_packet_size_ble)(void); + // Get the cached acl packet sizes for the controller. + // This is a convenience function for the respective + // acl data size + size of the acl header. + uint16_t (*get_acl_packet_size_classic)(void); + uint16_t (*get_acl_packet_size_ble)(void); - uint16_t (*get_ble_default_data_packet_length)(void); + uint16_t (*get_ble_default_data_packet_length)(void); - // Get the number of acl packets the controller can buffer. - uint16_t (*get_acl_buffer_count_classic)(void); - uint8_t (*get_acl_buffer_count_ble)(void); + // Get the number of acl packets the controller can buffer. + uint16_t (*get_acl_buffer_count_classic)(void); + uint8_t (*get_acl_buffer_count_ble)(void); - uint8_t (*get_ble_white_list_size)(void); + uint8_t (*get_ble_white_list_size)(void); - uint8_t (*get_ble_resolving_list_max_size)(void); - void (*set_ble_resolving_list_max_size)(int resolving_list_max_size); + uint8_t (*get_ble_resolving_list_max_size)(void); + void (*set_ble_resolving_list_max_size)(int resolving_list_max_size); } controller_t; const controller_t *controller_get_interface(); diff --git a/components/bt/bluedroid/device/include/interop.h b/components/bt/bluedroid/device/include/interop.h old mode 100755 new mode 100644 index 76ba93ad54..74394d95d4 --- a/components/bt/bluedroid/device/include/interop.h +++ b/components/bt/bluedroid/device/include/interop.h @@ -23,16 +23,16 @@ #include "bt_defs.h" typedef enum { - // Disable secure connections - // This is for pre BT 4.1/2 devices that do not handle secure mode - // very well. - INTEROP_DISABLE_LE_SECURE_CONNECTIONS, + // Disable secure connections + // This is for pre BT 4.1/2 devices that do not handle secure mode + // very well. + INTEROP_DISABLE_LE_SECURE_CONNECTIONS, - // Some devices have proven problematic during the pairing process, often - // requiring multiple retries to complete pairing. To avoid degrading the user - // experience for those devices, automatically re-try pairing if page - // timeouts are received during pairing. - INTEROP_AUTO_RETRY_PAIRING + // Some devices have proven problematic during the pairing process, often + // requiring multiple retries to complete pairing. To avoid degrading the user + // experience for those devices, automatically re-try pairing if page + // timeouts are received during pairing. + INTEROP_AUTO_RETRY_PAIRING } interop_feature_t; // Check if a given |addr| matches a known interoperability workaround as identified diff --git a/components/bt/bluedroid/device/include/interop_database.h b/components/bt/bluedroid/device/include/interop_database.h old mode 100755 new mode 100644 index 1619c7ba20..7bc2e8875f --- a/components/bt/bluedroid/device/include/interop_database.h +++ b/components/bt/bluedroid/device/include/interop_database.h @@ -22,29 +22,29 @@ #include "interop.h" typedef struct { - bt_bdaddr_t addr; - uint8_t len; - interop_feature_t feature; + bt_bdaddr_t addr; + uint8_t len; + interop_feature_t feature; } interop_entry_t; static const interop_entry_t interop_database[] = { - // Nexus Remote (Spike) - // Note: May affect other Asus brand devices - {{0x08, 0x62, 0x66, 0,0,0}, 3, INTEROP_DISABLE_LE_SECURE_CONNECTIONS}, - {{0x38, 0x2c, 0x4a, 0xc9, 0,0}, 4, INTEROP_DISABLE_LE_SECURE_CONNECTIONS}, - {{0x38, 0x2c, 0x4a, 0xe6, 0,0}, 4, INTEROP_DISABLE_LE_SECURE_CONNECTIONS}, - {{0x54, 0xa0, 0x50, 0xd9, 0,0}, 4, INTEROP_DISABLE_LE_SECURE_CONNECTIONS}, - {{0xac, 0x9e, 0x17, 0,0,0}, 3, INTEROP_DISABLE_LE_SECURE_CONNECTIONS}, - {{0xf0, 0x79, 0x59, 0,0,0}, 3, INTEROP_DISABLE_LE_SECURE_CONNECTIONS}, + // Nexus Remote (Spike) + // Note: May affect other Asus brand devices + {{0x08, 0x62, 0x66, 0, 0, 0}, 3, INTEROP_DISABLE_LE_SECURE_CONNECTIONS}, + {{0x38, 0x2c, 0x4a, 0xc9, 0, 0}, 4, INTEROP_DISABLE_LE_SECURE_CONNECTIONS}, + {{0x38, 0x2c, 0x4a, 0xe6, 0, 0}, 4, INTEROP_DISABLE_LE_SECURE_CONNECTIONS}, + {{0x54, 0xa0, 0x50, 0xd9, 0, 0}, 4, INTEROP_DISABLE_LE_SECURE_CONNECTIONS}, + {{0xac, 0x9e, 0x17, 0, 0, 0}, 3, INTEROP_DISABLE_LE_SECURE_CONNECTIONS}, + {{0xf0, 0x79, 0x59, 0, 0, 0}, 3, INTEROP_DISABLE_LE_SECURE_CONNECTIONS}, - // Motorola Key Link - {{0x1c, 0x96, 0x5a, 0,0,0}, 3, INTEROP_DISABLE_LE_SECURE_CONNECTIONS}, + // Motorola Key Link + {{0x1c, 0x96, 0x5a, 0, 0, 0}, 3, INTEROP_DISABLE_LE_SECURE_CONNECTIONS}, - // Flic smart button - {{0x80, 0xe4, 0xda, 0x70, 0,0}, 4, INTEROP_DISABLE_LE_SECURE_CONNECTIONS}, + // Flic smart button + {{0x80, 0xe4, 0xda, 0x70, 0, 0}, 4, INTEROP_DISABLE_LE_SECURE_CONNECTIONS}, - // BMW car kits (Harman/Becker) - {{0x9c, 0xdf, 0x03, 0,0,0}, 3, INTEROP_AUTO_RETRY_PAIRING} + // BMW car kits (Harman/Becker) + {{0x9c, 0xdf, 0x03, 0, 0, 0}, 3, INTEROP_AUTO_RETRY_PAIRING} }; #endif /*_INTEROP_DATABASE_H_*/ diff --git a/components/bt/bluedroid/device/interop.c b/components/bt/bluedroid/device/interop.c old mode 100755 new mode 100644 index ff3c9704fc..ffcbc0fe71 --- a/components/bt/bluedroid/device/interop.c +++ b/components/bt/bluedroid/device/interop.c @@ -26,31 +26,33 @@ #define CASE_RETURN_STR(const) case const: return #const; -static const char* interop_feature_string(const interop_feature_t feature) { - switch (feature) { - CASE_RETURN_STR(INTEROP_DISABLE_LE_SECURE_CONNECTIONS) - CASE_RETURN_STR(INTEROP_AUTO_RETRY_PAIRING) - } +static const char *interop_feature_string(const interop_feature_t feature) +{ + switch (feature) { + CASE_RETURN_STR(INTEROP_DISABLE_LE_SECURE_CONNECTIONS) + CASE_RETURN_STR(INTEROP_AUTO_RETRY_PAIRING) + } - return "UNKNOWN"; + return "UNKNOWN"; } // Interface functions -bool interop_match(const interop_feature_t feature, const bt_bdaddr_t *addr) { - assert(addr); +bool interop_match(const interop_feature_t feature, const bt_bdaddr_t *addr) +{ + assert(addr); - const size_t db_size = sizeof(interop_database) / sizeof(interop_entry_t); + const size_t db_size = sizeof(interop_database) / sizeof(interop_entry_t); - for (size_t i = 0; i != db_size; ++i) { - if (feature == interop_database[i].feature && - memcmp(addr, &interop_database[i].addr, interop_database[i].len) == 0) { - char bdstr[20] = {0}; - LOG_WARN("%s() Device %s is a match for interop workaround %s", __func__, - bdaddr_to_string(addr, bdstr, sizeof(bdstr)), interop_feature_string(feature)); - return true; + for (size_t i = 0; i != db_size; ++i) { + if (feature == interop_database[i].feature && + memcmp(addr, &interop_database[i].addr, interop_database[i].len) == 0) { + char bdstr[20] = {0}; + LOG_WARN("%s() Device %s is a match for interop workaround %s", __func__, + bdaddr_to_string(addr, bdstr, sizeof(bdstr)), interop_feature_string(feature)); + return true; + } } - } - return false; + return false; } diff --git a/components/bt/bluedroid/gki/gki_buffer.c b/components/bt/bluedroid/gki/gki_buffer.c old mode 100755 new mode 100644 index 29ac5b43e7..0ea4f641e0 --- a/components/bt/bluedroid/gki/gki_buffer.c +++ b/components/bt/bluedroid/gki/gki_buffer.c @@ -54,8 +54,7 @@ static void gki_init_free_queue (UINT8 id, UINT16 size, UINT16 total, void *p_me act_size = (UINT16)(tempsize + BUFFER_PADDING_SIZE); /* Remember pool start and end addresses */ - if(p_mem) - { + if (p_mem) { p_cb->pool_start[id] = (UINT8 *)p_mem; p_cb->pool_end[id] = (UINT8 *)p_mem + (act_size * total); } @@ -68,12 +67,10 @@ static void gki_init_free_queue (UINT8 id, UINT16 size, UINT16 total, void *p_me p_cb->freeq[id].max_cnt = 0; /* Initialize index table */ - if(p_mem) - { + if (p_mem) { hdr = (BUFFER_HDR_T *)p_mem; p_cb->freeq[id]._p_first = hdr; - for (i = 0; i < total; i++) - { + for (i = 0; i < total; i++) { hdr->q_id = id; hdr->status = BUF_STATUS_FREE; magic = (UINT32 *)((UINT8 *)hdr + BUFFER_HDR_SIZE + tempsize); @@ -92,10 +89,8 @@ void gki_buffer_cleanup(void) UINT8 i; tGKI_COM_CB *p_cb = &gki_cb.com; - for (i=0; i < GKI_NUM_FIXED_BUF_POOLS; i++) - { - if ( 0 < p_cb->freeq[i].max_cnt ) - { + for (i = 0; i < GKI_NUM_FIXED_BUF_POOLS; i++) { + if ( 0 < p_cb->freeq[i].max_cnt ) { osi_free(p_cb->pool_start[i]); p_cb->freeq[i].cur_cnt = 0; @@ -123,25 +118,24 @@ void gki_buffer_cleanup(void) void gki_buffer_init(void) { static const struct { - uint16_t size; - uint16_t count; + uint16_t size; + uint16_t count; } buffer_info[GKI_NUM_FIXED_BUF_POOLS] = { - { GKI_BUF0_SIZE, GKI_BUF0_MAX }, - { GKI_BUF1_SIZE, GKI_BUF1_MAX }, - { GKI_BUF2_SIZE, GKI_BUF2_MAX }, - { GKI_BUF3_SIZE, GKI_BUF3_MAX }, - { GKI_BUF4_SIZE, GKI_BUF4_MAX }, - { GKI_BUF5_SIZE, GKI_BUF5_MAX }, - { GKI_BUF6_SIZE, GKI_BUF6_MAX }, - { GKI_BUF7_SIZE, GKI_BUF7_MAX }, - { GKI_BUF8_SIZE, GKI_BUF8_MAX }, - { GKI_BUF9_SIZE, GKI_BUF9_MAX }, + { GKI_BUF0_SIZE, GKI_BUF0_MAX }, + { GKI_BUF1_SIZE, GKI_BUF1_MAX }, + { GKI_BUF2_SIZE, GKI_BUF2_MAX }, + { GKI_BUF3_SIZE, GKI_BUF3_MAX }, + { GKI_BUF4_SIZE, GKI_BUF4_MAX }, + { GKI_BUF5_SIZE, GKI_BUF5_MAX }, + { GKI_BUF6_SIZE, GKI_BUF6_MAX }, + { GKI_BUF7_SIZE, GKI_BUF7_MAX }, + { GKI_BUF8_SIZE, GKI_BUF8_MAX }, + { GKI_BUF9_SIZE, GKI_BUF9_MAX }, }; tGKI_COM_CB *p_cb = &gki_cb.com; - for (int i = 0; i < GKI_NUM_TOTAL_BUF_POOLS; i++) - { + for (int i = 0; i < GKI_NUM_TOTAL_BUF_POOLS; i++) { p_cb->pool_start[i] = NULL; p_cb->pool_end[i] = NULL; p_cb->pool_size[i] = 0; @@ -158,7 +152,7 @@ void gki_buffer_init(void) p_cb->pool_access_mask = GKI_DEF_BUFPOOL_PERM_MASK; for (int i = 0; i < GKI_NUM_FIXED_BUF_POOLS; ++i) { - gki_init_free_queue(i, buffer_info[i].size, buffer_info[i].count, NULL); + gki_init_free_queue(i, buffer_info[i].size, buffer_info[i].count, NULL); } } @@ -195,13 +189,13 @@ void GKI_init_q (BUFFER_Q *p_q) *******************************************************************************/ void *GKI_getbuf (UINT16 size) { - BUFFER_HDR_T *header = osi_malloc(size + BUFFER_HDR_SIZE); - header->status = BUF_STATUS_UNLINKED; - header->p_next = NULL; - header->Type = 0; - header->size = size; + BUFFER_HDR_T *header = osi_malloc(size + BUFFER_HDR_SIZE); + header->status = BUF_STATUS_UNLINKED; + header->p_next = NULL; + header->Type = 0; + header->size = size; - return header + 1; + return header + 1; } @@ -222,7 +216,7 @@ void *GKI_getbuf (UINT16 size) *******************************************************************************/ void *GKI_getpoolbuf (UINT8 pool_id) { - return GKI_getbuf(gki_cb.com.pool_size[pool_id]); + return GKI_getbuf(gki_cb.com.pool_size[pool_id]); } /******************************************************************************* @@ -238,7 +232,7 @@ void *GKI_getpoolbuf (UINT8 pool_id) *******************************************************************************/ void GKI_freebuf (void *p_buf) { - osi_free((BUFFER_HDR_T *)p_buf - 1); + osi_free((BUFFER_HDR_T *)p_buf - 1); } @@ -255,8 +249,8 @@ void GKI_freebuf (void *p_buf) *******************************************************************************/ UINT16 GKI_get_buf_size (void *p_buf) { - BUFFER_HDR_T *header = (BUFFER_HDR_T *)p_buf - 1; - return header->size; + BUFFER_HDR_T *header = (BUFFER_HDR_T *)p_buf - 1; + return header->size; } /******************************************************************************* @@ -279,13 +273,12 @@ void GKI_enqueue (BUFFER_Q *p_q, void *p_buf) GKI_disable(); /* Since the queue is exposed (C vs C++), keep the pointers in exposed format */ - if (p_q->_p_last) - { + if (p_q->_p_last) { BUFFER_HDR_T *_p_last_hdr = (BUFFER_HDR_T *)((UINT8 *)p_q->_p_last - BUFFER_HDR_SIZE); _p_last_hdr->p_next = p_hdr; - } - else + } else { p_q->_p_first = p_buf; + } p_q->_p_last = p_buf; p_q->_count++; @@ -313,8 +306,7 @@ void *GKI_dequeue (BUFFER_Q *p_q) GKI_disable(); - if (!p_q || !p_q->_count) - { + if (!p_q || !p_q->_count) { GKI_enable(); return (NULL); } @@ -323,10 +315,9 @@ void *GKI_dequeue (BUFFER_Q *p_q) /* Keep buffers such that GKI header is invisible */ - if (p_hdr->p_next) + if (p_hdr->p_next) { p_q->_p_first = ((UINT8 *)p_hdr->p_next + BUFFER_HDR_SIZE); - else - { + } else { p_q->_p_first = NULL; p_q->_p_last = NULL; } @@ -360,8 +351,7 @@ void *GKI_remove_from_queue (BUFFER_Q *p_q, void *p_buf) GKI_disable(); - if (p_buf == p_q->_p_first) - { + if (p_buf == p_q->_p_first) { GKI_enable(); return (GKI_dequeue (p_q)); } @@ -369,16 +359,15 @@ void *GKI_remove_from_queue (BUFFER_Q *p_q, void *p_buf) p_buf_hdr = (BUFFER_HDR_T *)((UINT8 *)p_buf - BUFFER_HDR_SIZE); p_prev = (BUFFER_HDR_T *)((UINT8 *)p_q->_p_first - BUFFER_HDR_SIZE); - for ( ; p_prev; p_prev = p_prev->p_next) - { + for ( ; p_prev; p_prev = p_prev->p_next) { /* If the previous points to this one, move the pointers around */ - if (p_prev->p_next == p_buf_hdr) - { + if (p_prev->p_next == p_buf_hdr) { p_prev->p_next = p_buf_hdr->p_next; /* If we are removing the last guy in the queue, update _p_last */ - if (p_buf == p_q->_p_last) + if (p_buf == p_q->_p_last) { p_q->_p_last = p_prev + 1; + } /* One less in the queue */ p_q->_count--; @@ -445,10 +434,11 @@ void *GKI_getnext (void *p_buf) p_hdr = (BUFFER_HDR_T *) ((UINT8 *) p_buf - BUFFER_HDR_SIZE); - if (p_hdr->p_next) + if (p_hdr->p_next) { return ((UINT8 *)p_hdr->p_next + BUFFER_HDR_SIZE); - else + } else { return (NULL); + } } /******************************************************************************* @@ -486,8 +476,9 @@ UINT16 GKI_queue_length(BUFFER_Q *p_q) *******************************************************************************/ UINT16 GKI_poolcount (UINT8 pool_id) { - if (pool_id >= GKI_NUM_TOTAL_BUF_POOLS) + if (pool_id >= GKI_NUM_TOTAL_BUF_POOLS) { return (0); + } return (gki_cb.com.freeq[pool_id].total); } @@ -508,8 +499,9 @@ UINT16 GKI_poolfreecount (UINT8 pool_id) { FREE_QUEUE_T *Q; - if (pool_id >= GKI_NUM_TOTAL_BUF_POOLS) + if (pool_id >= GKI_NUM_TOTAL_BUF_POOLS) { return (0); + } Q = &gki_cb.com.freeq[pool_id]; @@ -529,8 +521,9 @@ UINT16 GKI_poolfreecount (UINT8 pool_id) *******************************************************************************/ UINT16 GKI_get_pool_bufsize (UINT8 pool_id) { - if (pool_id < GKI_NUM_TOTAL_BUF_POOLS) + if (pool_id < GKI_NUM_TOTAL_BUF_POOLS) { return (gki_cb.com.freeq[pool_id].size); + } return (0); } @@ -551,13 +544,15 @@ UINT16 GKI_poolutilization (UINT8 pool_id) { FREE_QUEUE_T *Q; - if (pool_id >= GKI_NUM_TOTAL_BUF_POOLS) + if (pool_id >= GKI_NUM_TOTAL_BUF_POOLS) { return (100); + } Q = &gki_cb.com.freeq[pool_id]; - if (Q->total == 0) + if (Q->total == 0) { return (100); + } return ((Q->cur_cnt * 100) / Q->total); } diff --git a/components/bt/bluedroid/gki/gki_ulinux.c b/components/bt/bluedroid/gki/gki_ulinux.c old mode 100755 new mode 100644 index 058b9a23a8..ed29f3bd1d --- a/components/bt/bluedroid/gki/gki_ulinux.c +++ b/components/bt/bluedroid/gki/gki_ulinux.c @@ -25,38 +25,44 @@ tGKI_CB gki_cb; -int gki_init(void) { - memset(&gki_cb, 0, sizeof(gki_cb)); +int gki_init(void) +{ + memset(&gki_cb, 0, sizeof(gki_cb)); - //pthread_mutexattr_t attr; - //pthread_mutexattr_init(&attr); - //pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE_NP); - pthread_mutex_init(&gki_cb.lock, NULL);//&attr); + //pthread_mutexattr_t attr; + //pthread_mutexattr_init(&attr); + //pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE_NP); + pthread_mutex_init(&gki_cb.lock, NULL);//&attr); - gki_buffer_init(); - return 0; + gki_buffer_init(); + return 0; } -void gki_clean_up(void) { - gki_buffer_cleanup(); +void gki_clean_up(void) +{ + gki_buffer_cleanup(); - pthread_mutex_destroy(&gki_cb.lock); + pthread_mutex_destroy(&gki_cb.lock); } -UINT32 GKI_get_os_tick_count(void) { - return osi_alarm_now(); +UINT32 GKI_get_os_tick_count(void) +{ + return osi_alarm_now(); } // Sleep the calling thread unconditionally for |timeout_ms| milliseconds. -void GKI_delay(UINT32 timeout_ms) { - osi_delay_ms(timeout_ms); - /*TODO:*/ +void GKI_delay(UINT32 timeout_ms) +{ + osi_delay_ms(timeout_ms); + /*TODO:*/ } -void GKI_enable(void) { - pthread_mutex_unlock(&gki_cb.lock); +void GKI_enable(void) +{ + pthread_mutex_unlock(&gki_cb.lock); } -void GKI_disable(void) { - pthread_mutex_lock(&gki_cb.lock); +void GKI_disable(void) +{ + pthread_mutex_lock(&gki_cb.lock); } diff --git a/components/bt/bluedroid/gki/include/gki.h b/components/bt/bluedroid/gki/include/gki.h old mode 100755 new mode 100644 index cbcb77151f..9efd211991 --- a/components/bt/bluedroid/gki/include/gki.h +++ b/components/bt/bluedroid/gki/include/gki.h @@ -32,8 +32,7 @@ typedef void (TIMER_CBACK)(void *p_tle); #endif /* Define a timer list entry */ -typedef struct _tle -{ +typedef struct _tle { struct _tle *p_next; struct _tle *p_prev; TIMER_CBACK *p_cback; @@ -48,8 +47,7 @@ typedef struct _tle /*********************************************************************** ** This queue is a general purpose buffer queue, for application use. */ -typedef struct -{ +typedef struct { void *_p_first; void *_p_last; UINT16 _count; diff --git a/components/bt/bluedroid/gki/include/gki_common.h b/components/bt/bluedroid/gki/include/gki_common.h old mode 100755 new mode 100644 index 9416a1c697..838896eec0 --- a/components/bt/bluedroid/gki/include/gki_common.h +++ b/components/bt/bluedroid/gki/include/gki_common.h @@ -21,29 +21,26 @@ #include "gki.h" -typedef struct _buffer_hdr -{ - struct _buffer_hdr *p_next; /* next buffer in the queue */ - UINT8 q_id; /* id of the queue */ - UINT8 status; /* FREE, UNLINKED or QUEUED */ - UINT8 Type; - UINT16 size; +typedef struct _buffer_hdr { + struct _buffer_hdr *p_next; /* next buffer in the queue */ + UINT8 q_id; /* id of the queue */ + UINT8 status; /* FREE, UNLINKED or QUEUED */ + UINT8 Type; + UINT16 size; } BUFFER_HDR_T; -typedef struct _free_queue -{ - BUFFER_HDR_T *_p_first; /* first buffer in the queue */ - BUFFER_HDR_T *_p_last; /* last buffer in the queue */ - UINT16 size; /* size of the buffers in the pool */ - UINT16 total; /* toatal number of buffers */ - UINT16 cur_cnt; /* number of buffers currently allocated */ - UINT16 max_cnt; /* maximum number of buffers allocated at any time */ +typedef struct _free_queue { + BUFFER_HDR_T *_p_first; /* first buffer in the queue */ + BUFFER_HDR_T *_p_last; /* last buffer in the queue */ + UINT16 size; /* size of the buffers in the pool */ + UINT16 total; /* toatal number of buffers */ + UINT16 cur_cnt; /* number of buffers currently allocated */ + UINT16 max_cnt; /* maximum number of buffers allocated at any time */ } FREE_QUEUE_T; /* Put all GKI variables into one control block */ -typedef struct -{ +typedef struct { /* Define the buffer pool management variables */ FREE_QUEUE_T freeq[GKI_NUM_TOTAL_BUF_POOLS]; diff --git a/components/bt/bluedroid/gki/include/gki_int.h b/components/bt/bluedroid/gki/include/gki_int.h old mode 100755 new mode 100644 index 55768795dc..3307066efb --- a/components/bt/bluedroid/gki/include/gki_int.h +++ b/components/bt/bluedroid/gki/include/gki_int.h @@ -24,8 +24,7 @@ #include "gki_common.h" -typedef struct -{ +typedef struct { pthread_mutex_t lock; tGKI_COM_CB com; } tGKI_CB; diff --git a/components/bt/bluedroid/hci/buffer_allocator.c b/components/bt/bluedroid/hci/buffer_allocator.c old mode 100755 new mode 100644 index e92101bcd3..7cd51a9a01 --- a/components/bt/bluedroid/hci/buffer_allocator.c +++ b/components/bt/bluedroid/hci/buffer_allocator.c @@ -19,15 +19,17 @@ #include "gki.h" // TODO(zachoverflow): move the assertion into GKI_getbuf in the future -static void *buffer_alloc(size_t size) { - return GKI_getbuf((uint16_t)size); +static void *buffer_alloc(size_t size) +{ + return GKI_getbuf((uint16_t)size); } static const allocator_t interface = { - buffer_alloc, - GKI_freebuf + buffer_alloc, + GKI_freebuf }; -const allocator_t *buffer_allocator_get_interface() { - return &interface; +const allocator_t *buffer_allocator_get_interface() +{ + return &interface; } diff --git a/components/bt/bluedroid/hci/hci_hal_h4.c b/components/bt/bluedroid/hci/hci_hal_h4.c old mode 100755 new mode 100644 index f2038d9857..8665dd284e --- a/components/bt/bluedroid/hci/hci_hal_h4.c +++ b/components/bt/bluedroid/hci/hci_hal_h4.c @@ -34,23 +34,23 @@ static const uint8_t preamble_sizes[] = { - HCI_COMMAND_PREAMBLE_SIZE, - HCI_ACL_PREAMBLE_SIZE, - HCI_SCO_PREAMBLE_SIZE, - HCI_EVENT_PREAMBLE_SIZE + HCI_COMMAND_PREAMBLE_SIZE, + HCI_ACL_PREAMBLE_SIZE, + HCI_SCO_PREAMBLE_SIZE, + HCI_EVENT_PREAMBLE_SIZE }; static const uint16_t outbound_event_types[] = { - MSG_HC_TO_STACK_HCI_ERR, - MSG_HC_TO_STACK_HCI_ACL, - MSG_HC_TO_STACK_HCI_SCO, - MSG_HC_TO_STACK_HCI_EVT + MSG_HC_TO_STACK_HCI_ERR, + MSG_HC_TO_STACK_HCI_ACL, + MSG_HC_TO_STACK_HCI_SCO, + MSG_HC_TO_STACK_HCI_EVT }; typedef struct { - const allocator_t *allocator; - size_t buffer_size; - fixed_queue_t *rx_q; + const allocator_t *allocator; + size_t buffer_size; + fixed_queue_t *rx_q; } hci_hal_env_t; @@ -71,49 +71,53 @@ static void event_uart_has_bytes(fixed_queue_t *queue); static void hci_hal_env_init( size_t buffer_size, - size_t max_buffer_count) { - assert(buffer_size > 0); - assert(max_buffer_count > 0); + size_t max_buffer_count) +{ + assert(buffer_size > 0); + assert(max_buffer_count > 0); - hci_hal_env.allocator = buffer_allocator_get_interface(); - hci_hal_env.buffer_size = buffer_size; + hci_hal_env.allocator = buffer_allocator_get_interface(); + hci_hal_env.buffer_size = buffer_size; - hci_hal_env.rx_q = fixed_queue_new(max_buffer_count); - if (hci_hal_env.rx_q) - fixed_queue_register_dequeue(hci_hal_env.rx_q, event_uart_has_bytes); - else - LOG_ERROR("%s unable to create rx queue.\n", __func__); + hci_hal_env.rx_q = fixed_queue_new(max_buffer_count); + if (hci_hal_env.rx_q) { + fixed_queue_register_dequeue(hci_hal_env.rx_q, event_uart_has_bytes); + } else { + LOG_ERROR("%s unable to create rx queue.\n", __func__); + } - return; + return; } -static void hci_hal_env_deinit(void) { - fixed_queue_free(hci_hal_env.rx_q, hci_hal_env.allocator->free); +static void hci_hal_env_deinit(void) +{ + fixed_queue_free(hci_hal_env.rx_q, hci_hal_env.allocator->free); } static bool hal_open(const hci_hal_callbacks_t *upper_callbacks) { - assert(upper_callbacks != NULL); - callbacks = upper_callbacks; + assert(upper_callbacks != NULL); + callbacks = upper_callbacks; - hci_hal_env_init(HCI_HAL_SERIAL_BUFFER_SIZE, SIZE_MAX); - - xHciH4Queue = xQueueCreate(60, sizeof(BtTaskEvt_t)); - xTaskCreate(hci_hal_h4_rx_handler, "HciH4T", 4096+2048, NULL, configMAX_PRIORITIES - 3, &xHciH4TaskHandle); + hci_hal_env_init(HCI_HAL_SERIAL_BUFFER_SIZE, SIZE_MAX); - //register vhci host cb - API_vhci_host_register_callback(&vhci_host_cb); + xHciH4Queue = xQueueCreate(60, sizeof(BtTaskEvt_t)); + xTaskCreate(hci_hal_h4_rx_handler, "HciH4T", 4096 + 2048, NULL, configMAX_PRIORITIES - 3, &xHciH4TaskHandle); + + //register vhci host cb + API_vhci_host_register_callback(&vhci_host_cb); - return true; + return true; } -static void hal_close() { - hci_hal_env_deinit(); - - /* delete task and queue */ - vTaskDelete(xHciH4TaskHandle); - vQueueDelete(xHciH4Queue); +static void hal_close() +{ + hci_hal_env_deinit(); + + /* delete task and queue */ + vTaskDelete(xHciH4TaskHandle); + vQueueDelete(xHciH4Queue); } /** @@ -125,31 +129,31 @@ static void hal_close() { static uint16_t transmit_data(serial_data_type_t type, uint8_t *data, uint16_t length) { - uint8_t previous_byte; + uint8_t previous_byte; - assert(data != NULL); - assert(length > 0); + assert(data != NULL); + assert(length > 0); - if (type < DATA_TYPE_COMMAND || type > DATA_TYPE_SCO) { - LOG_ERROR("%s invalid data type: %d", __func__, type); - return 0; - } + if (type < DATA_TYPE_COMMAND || type > DATA_TYPE_SCO) { + LOG_ERROR("%s invalid data type: %d", __func__, type); + return 0; + } - // Write the signal byte right before the data - --data; - previous_byte = *data; - *(data) = type; - ++length; + // Write the signal byte right before the data + --data; + previous_byte = *data; + *(data) = type; + ++length; - BTTRC_DUMP_BUFFER("Transmit Pkt", data, length); + BTTRC_DUMP_BUFFER("Transmit Pkt", data, length); - // TX Data to target - API_vhci_host_send_packet(data, length); + // TX Data to target + API_vhci_host_send_packet(data, length); - // Be nice and restore the old value of that byte - *(data) = previous_byte; + // Be nice and restore the old value of that byte + *(data) = previous_byte; - return length - 1; + return length - 1; } // Internal functions @@ -159,7 +163,7 @@ static void hci_hal_h4_rx_handler(void *arg) for (;;) { if (pdTRUE == xQueueReceive(xHciH4Queue, &e, (portTickType)portMAX_DELAY)) { - if (e.sig == 0xff) { + if (e.sig == 0xff) { fixed_queue_process(hci_hal_env.rx_q); } } @@ -173,114 +177,120 @@ void hci_hal_h4_task_post(void) evt.sig = 0xff; evt.par = 0; - if (xQueueSend(xHciH4Queue, &evt, 10/portTICK_RATE_MS) != pdTRUE) { + if (xQueueSend(xHciH4Queue, &evt, 10 / portTICK_RATE_MS) != pdTRUE) { LOG_ERROR("xHciH4Queue failed\n"); } } -static void hci_hal_h4_hdl_rx_packet(BT_HDR *packet) { - uint8_t type, hdr_size; - uint16_t length; - uint8_t *stream = packet->data + packet->offset; +static void hci_hal_h4_hdl_rx_packet(BT_HDR *packet) +{ + uint8_t type, hdr_size; + uint16_t length; + uint8_t *stream = packet->data + packet->offset; - if (!packet) - return; - STREAM_TO_UINT8(type, stream); - packet->offset++; - packet->len--; - if (type == HCI_BLE_EVENT) { - uint8_t len; - STREAM_TO_UINT8(len, stream); - LOG_ERROR("Workround stream corrupted during LE SCAN: pkt_len=%d ble_event_len=%d\n", - packet->len, len); - hci_hal_env.allocator->free(packet); - return; - } - if (type < DATA_TYPE_ACL || type > DATA_TYPE_EVENT) { - LOG_ERROR("%s Unknown HCI message type. Dropping this byte 0x%x," - " min %x, max %x\n", __func__, type, - DATA_TYPE_ACL, DATA_TYPE_EVENT); - hci_hal_env.allocator->free(packet); - return; - } - hdr_size = preamble_sizes[type - 1]; - if (packet->len < hdr_size) { - LOG_ERROR("Wrong packet length type=%d pkt_len=%d hdr_len=%d", - type, packet->len, hdr_size); - hci_hal_env.allocator->free(packet); - return; - } - if (type == DATA_TYPE_ACL) { - packet->offset--; - stream += hdr_size - 2; - STREAM_TO_UINT16(length, stream); - stream = packet->data + 1; - memcpy(packet->data, stream, packet->len); - } else { - stream += hdr_size - 1; - STREAM_TO_UINT8(length, stream); - } + if (!packet) { + return; + } + STREAM_TO_UINT8(type, stream); + packet->offset++; + packet->len--; + if (type == HCI_BLE_EVENT) { + uint8_t len; + STREAM_TO_UINT8(len, stream); + LOG_ERROR("Workround stream corrupted during LE SCAN: pkt_len=%d ble_event_len=%d\n", + packet->len, len); + hci_hal_env.allocator->free(packet); + return; + } + if (type < DATA_TYPE_ACL || type > DATA_TYPE_EVENT) { + LOG_ERROR("%s Unknown HCI message type. Dropping this byte 0x%x," + " min %x, max %x\n", __func__, type, + DATA_TYPE_ACL, DATA_TYPE_EVENT); + hci_hal_env.allocator->free(packet); + return; + } + hdr_size = preamble_sizes[type - 1]; + if (packet->len < hdr_size) { + LOG_ERROR("Wrong packet length type=%d pkt_len=%d hdr_len=%d", + type, packet->len, hdr_size); + hci_hal_env.allocator->free(packet); + return; + } + if (type == DATA_TYPE_ACL) { + packet->offset--; + stream += hdr_size - 2; + STREAM_TO_UINT16(length, stream); + stream = packet->data + 1; + memcpy(packet->data, stream, packet->len); + } else { + stream += hdr_size - 1; + STREAM_TO_UINT8(length, stream); + } - if ((length + hdr_size) != packet->len) { - LOG_ERROR("Wrong packet length type=%d hdr_len=%d pd_len=%d " - "pkt_len=%d", type, hdr_size, length, packet->len); - hci_hal_env.allocator->free(packet); - return; - } + if ((length + hdr_size) != packet->len) { + LOG_ERROR("Wrong packet length type=%d hdr_len=%d pd_len=%d " + "pkt_len=%d", type, hdr_size, length, packet->len); + hci_hal_env.allocator->free(packet); + return; + } - packet->event = outbound_event_types[PACKET_TYPE_TO_INDEX(type)]; - callbacks->packet_ready(packet); + packet->event = outbound_event_types[PACKET_TYPE_TO_INDEX(type)]; + callbacks->packet_ready(packet); } -static void event_uart_has_bytes(fixed_queue_t *queue) { - BT_HDR *packet; - while (!fixed_queue_is_empty(queue)) { - packet = fixed_queue_dequeue(queue); - hci_hal_h4_hdl_rx_packet(packet); - } +static void event_uart_has_bytes(fixed_queue_t *queue) +{ + BT_HDR *packet; + while (!fixed_queue_is_empty(queue)) { + packet = fixed_queue_dequeue(queue); + hci_hal_h4_hdl_rx_packet(packet); + } } -static void host_send_pkt_available_cb(void) { - //Controller rx cache buffer is ready for receiving new host packet - //Just Call Host main thread task to process pending packets. - hci_host_task_post(); +static void host_send_pkt_available_cb(void) +{ + //Controller rx cache buffer is ready for receiving new host packet + //Just Call Host main thread task to process pending packets. + hci_host_task_post(); } -static int host_recv_pkt_cb(uint8_t *data, uint16_t len) { - //Target has packet to host, malloc new buffer for packet - BT_HDR *pkt; - size_t pkt_size; +static int host_recv_pkt_cb(uint8_t *data, uint16_t len) +{ + //Target has packet to host, malloc new buffer for packet + BT_HDR *pkt; + size_t pkt_size; - pkt_size = BT_HDR_SIZE + len; - pkt = (BT_HDR *)hci_hal_env.allocator->alloc(pkt_size); - if (!pkt) { - LOG_ERROR("%s couldn't aquire memory for inbound data buffer.\n", __func__); - return -1; - } - pkt->offset = 0; - pkt->len = len; - pkt->layer_specific = 0; - memcpy(pkt->data, data, len); - fixed_queue_enqueue(hci_hal_env.rx_q, pkt); - hci_hal_h4_task_post(); + pkt_size = BT_HDR_SIZE + len; + pkt = (BT_HDR *)hci_hal_env.allocator->alloc(pkt_size); + if (!pkt) { + LOG_ERROR("%s couldn't aquire memory for inbound data buffer.\n", __func__); + return -1; + } + pkt->offset = 0; + pkt->len = len; + pkt->layer_specific = 0; + memcpy(pkt->data, data, len); + fixed_queue_enqueue(hci_hal_env.rx_q, pkt); + hci_hal_h4_task_post(); - BTTRC_DUMP_BUFFER("Recv Pkt", pkt->data, len); + BTTRC_DUMP_BUFFER("Recv Pkt", pkt->data, len); - return 0; + return 0; } static const vhci_host_callback_t vhci_host_cb = { - .notify_host_send_available = host_send_pkt_available_cb, - .notify_host_recv = host_recv_pkt_cb, + .notify_host_send_available = host_send_pkt_available_cb, + .notify_host_recv = host_recv_pkt_cb, }; static const hci_hal_t interface = { - hal_open, - hal_close, - transmit_data, + hal_open, + hal_close, + transmit_data, }; -const hci_hal_t *hci_hal_h4_get_interface() { - return &interface; +const hci_hal_t *hci_hal_h4_get_interface() +{ + return &interface; } diff --git a/components/bt/bluedroid/hci/hci_layer.c b/components/bt/bluedroid/hci/hci_layer.c old mode 100755 new mode 100644 index 5b8f4de5c0..4627268977 --- a/components/bt/bluedroid/hci/hci_layer.c +++ b/components/bt/bluedroid/hci/hci_layer.c @@ -33,37 +33,37 @@ #include "thread.h" typedef struct { - uint16_t opcode; - future_t *complete_future; - command_complete_cb complete_callback; - command_status_cb status_callback; - void *context; - uint32_t sent_time; - BT_HDR *command; + uint16_t opcode; + future_t *complete_future; + command_complete_cb complete_callback; + command_status_cb status_callback; + void *context; + uint32_t sent_time; + BT_HDR *command; } waiting_command_t; typedef struct { - bool timer_is_set; - osi_alarm_t *command_response_timer; - list_t *commands_pending_response; - pthread_mutex_t commands_pending_response_lock; + bool timer_is_set; + osi_alarm_t *command_response_timer; + list_t *commands_pending_response; + pthread_mutex_t commands_pending_response_lock; } command_waiting_response_t; typedef struct { - int command_credits; - fixed_queue_t *command_queue; - fixed_queue_t *packet_queue; + int command_credits; + fixed_queue_t *command_queue; + fixed_queue_t *packet_queue; - // The hand-off point for data going to a higher layer, set by the higher layer - fixed_queue_t *upwards_data_queue; + // The hand-off point for data going to a higher layer, set by the higher layer + fixed_queue_t *upwards_data_queue; - command_waiting_response_t cmd_waiting_q; + command_waiting_response_t cmd_waiting_q; -/* - non_repeating_timer_t *command_response_timer; - list_t *commands_pending_response; - pthread_mutex_t commands_pending_response_lock; -*/ + /* + non_repeating_timer_t *command_response_timer; + list_t *commands_pending_response; + pthread_mutex_t commands_pending_response_lock; + */ } hci_host_env_t; // Using a define here, because it can be stringified for the property lookup @@ -97,8 +97,8 @@ static void sco_config_callback(bool success); static void event_command_ready(fixed_queue_t *queue); static void event_packet_ready(fixed_queue_t *queue); static void restart_comamnd_waiting_response_timer( - command_waiting_response_t *cmd_wait_q, - bool tigger_by_sending_command); + command_waiting_response_t *cmd_wait_q, + bool tigger_by_sending_command); static void command_timed_out(void *context); static void hal_says_packet_ready(BT_HDR *packet); static bool filter_incoming_event(BT_HDR *packet); @@ -107,33 +107,36 @@ static waiting_command_t *get_waiting_command(command_opcode_t opcode); static void dispatch_reassembled(BT_HDR *packet); // Module lifecycle functions -int hci_start_up(void) { - if (hci_layer_init_env()) - goto error; +int hci_start_up(void) +{ + if (hci_layer_init_env()) { + goto error; + } - xHciHostQueue = xQueueCreate(60, sizeof(BtTaskEvt_t)); - xTaskCreate(hci_host_thread_handler, "HciHostT", (4096+2048), NULL, configMAX_PRIORITIES - 3, &xHciHostTaskHandle); + xHciHostQueue = xQueueCreate(60, sizeof(BtTaskEvt_t)); + xTaskCreate(hci_host_thread_handler, "HciHostT", (4096 + 2048), NULL, configMAX_PRIORITIES - 3, &xHciHostTaskHandle); - packet_fragmenter->init(&packet_fragmenter_callbacks); - hal->open(&hal_callbacks); - - hci_host_startup_flag = true; - return 0; + packet_fragmenter->init(&packet_fragmenter_callbacks); + hal->open(&hal_callbacks); + + hci_host_startup_flag = true; + return 0; error: - hci_shut_down(); - return -1; + hci_shut_down(); + return -1; } -void hci_shut_down(void) { - hci_host_startup_flag = false; - hci_layer_deinit_env(); +void hci_shut_down(void) +{ + hci_host_startup_flag = false; + hci_layer_deinit_env(); - packet_fragmenter->cleanup(); + packet_fragmenter->cleanup(); - //low_power_manager->cleanup(); - hal->close(); - vTaskDelete(xHciHostTaskHandle); - vQueueDelete(xHciHostQueue); + //low_power_manager->cleanup(); + hal->close(); + vTaskDelete(xHciHostTaskHandle); + vQueueDelete(xHciHostQueue); } @@ -141,85 +144,88 @@ void hci_host_task_post(void) { BtTaskEvt_t evt; - if (hci_host_startup_flag == false) + if (hci_host_startup_flag == false) { return; + } evt.sig = 0xff; evt.par = 0; - if (xQueueSend(xHciHostQueue, &evt, 10/portTICK_RATE_MS) != pdTRUE) { - LOG_ERROR("xHciHostQueue failed\n"); + if (xQueueSend(xHciHostQueue, &evt, 10 / portTICK_RATE_MS) != pdTRUE) { + LOG_ERROR("xHciHostQueue failed\n"); } } static int hci_layer_init_env(void) { - command_waiting_response_t *cmd_wait_q; + command_waiting_response_t *cmd_wait_q; - // The host is only allowed to send at most one command initially, - // as per the Bluetooth spec, Volume 2, Part E, 4.4 (Command Flow Control) - // This value can change when you get a command complete or command status event. - hci_host_env.command_credits = 1; - hci_host_env.command_queue = fixed_queue_new(SIZE_MAX); - if (hci_host_env.command_queue) - fixed_queue_register_dequeue(hci_host_env.command_queue, event_command_ready); - else { - LOG_ERROR("%s unable to create pending command queue.", __func__); - return -1; - } + // The host is only allowed to send at most one command initially, + // as per the Bluetooth spec, Volume 2, Part E, 4.4 (Command Flow Control) + // This value can change when you get a command complete or command status event. + hci_host_env.command_credits = 1; + hci_host_env.command_queue = fixed_queue_new(SIZE_MAX); + if (hci_host_env.command_queue) { + fixed_queue_register_dequeue(hci_host_env.command_queue, event_command_ready); + } else { + LOG_ERROR("%s unable to create pending command queue.", __func__); + return -1; + } - hci_host_env.packet_queue = fixed_queue_new(SIZE_MAX); - if (hci_host_env.packet_queue) - fixed_queue_register_dequeue(hci_host_env.packet_queue, event_packet_ready); - else { - LOG_ERROR("%s unable to create pending packet queue.", __func__); - return -1; - } + hci_host_env.packet_queue = fixed_queue_new(SIZE_MAX); + if (hci_host_env.packet_queue) { + fixed_queue_register_dequeue(hci_host_env.packet_queue, event_packet_ready); + } else { + LOG_ERROR("%s unable to create pending packet queue.", __func__); + return -1; + } - // Init Commands waiting response list and timer - cmd_wait_q = &hci_host_env.cmd_waiting_q; - cmd_wait_q->timer_is_set = false; - cmd_wait_q->commands_pending_response = list_new(NULL); - if (!cmd_wait_q->commands_pending_response) { - LOG_ERROR("%s unable to create list for commands pending response.", __func__); - return -1; - } - pthread_mutex_init(&cmd_wait_q->commands_pending_response_lock, NULL); - cmd_wait_q->command_response_timer = osi_alarm_new("cmd_rsp_to", command_timed_out, cmd_wait_q, COMMAND_PENDING_TIMEOUT); - if (!cmd_wait_q->command_response_timer) { - LOG_ERROR("%s unable to create command response timer.", __func__); - return -1; - } + // Init Commands waiting response list and timer + cmd_wait_q = &hci_host_env.cmd_waiting_q; + cmd_wait_q->timer_is_set = false; + cmd_wait_q->commands_pending_response = list_new(NULL); + if (!cmd_wait_q->commands_pending_response) { + LOG_ERROR("%s unable to create list for commands pending response.", __func__); + return -1; + } + pthread_mutex_init(&cmd_wait_q->commands_pending_response_lock, NULL); + cmd_wait_q->command_response_timer = osi_alarm_new("cmd_rsp_to", command_timed_out, cmd_wait_q, COMMAND_PENDING_TIMEOUT); + if (!cmd_wait_q->command_response_timer) { + LOG_ERROR("%s unable to create command response timer.", __func__); + return -1; + } - return 0; + return 0; } static void hci_layer_deinit_env(void) { - command_waiting_response_t *cmd_wait_q; + command_waiting_response_t *cmd_wait_q; - if (hci_host_env.command_queue) - fixed_queue_free(hci_host_env.command_queue, osi_free); - if (hci_host_env.packet_queue) - fixed_queue_free(hci_host_env.packet_queue, buffer_allocator->free); + if (hci_host_env.command_queue) { + fixed_queue_free(hci_host_env.command_queue, osi_free); + } + if (hci_host_env.packet_queue) { + fixed_queue_free(hci_host_env.packet_queue, buffer_allocator->free); + } - cmd_wait_q = &hci_host_env.cmd_waiting_q; - list_free(cmd_wait_q->commands_pending_response); - pthread_mutex_destroy(&cmd_wait_q->commands_pending_response_lock); - osi_alarm_free(cmd_wait_q->command_response_timer); - cmd_wait_q->command_response_timer = NULL; + cmd_wait_q = &hci_host_env.cmd_waiting_q; + list_free(cmd_wait_q->commands_pending_response); + pthread_mutex_destroy(&cmd_wait_q->commands_pending_response_lock); + osi_alarm_free(cmd_wait_q->command_response_timer); + cmd_wait_q->command_response_timer = NULL; } static void hci_host_thread_handler(void *arg) { - /* - * Previous task handles RX queue and two TX Queues, Since there is - * a RX Thread Task in H4 layer which receives packet from driver layer. - * Now HCI Host Task has been optimized to only process TX Queue - * including command and data queue. And command queue has high priority, - * All packets will be directly copied to single queue in driver layer with - * H4 type header added (1 byte). - */ + /* + * Previous task handles RX queue and two TX Queues, Since there is + * a RX Thread Task in H4 layer which receives packet from driver layer. + * Now HCI Host Task has been optimized to only process TX Queue + * including command and data queue. And command queue has high priority, + * All packets will be directly copied to single queue in driver layer with + * H4 type header added (1 byte). + */ BtTaskEvt_t e; @@ -234,10 +240,11 @@ static void hci_host_thread_handler(void *arg) packet_fragmenter->fragment_and_dispatch(pkt); } else { if (!fixed_queue_is_empty(hci_host_env.command_queue) && - hci_host_env.command_credits > 0) + hci_host_env.command_credits > 0) { fixed_queue_process(hci_host_env.command_queue); - else if (!fixed_queue_is_empty(hci_host_env.packet_queue)) + } else if (!fixed_queue_is_empty(hci_host_env.packet_queue)) { fixed_queue_process(hci_host_env.packet_queue); + } } } } @@ -245,349 +252,380 @@ static void hci_host_thread_handler(void *arg) } } -static void set_data_queue(fixed_queue_t *queue) { - hci_host_env.upwards_data_queue = queue; +static void set_data_queue(fixed_queue_t *queue) +{ + hci_host_env.upwards_data_queue = queue; } static void transmit_command( BT_HDR *command, command_complete_cb complete_callback, command_status_cb status_callback, - void *context) { - uint8_t *stream; - waiting_command_t *wait_entry = osi_calloc(sizeof(waiting_command_t)); - if (!wait_entry) { - LOG_ERROR("%s couldn't allocate space for wait entry.", __func__); - return; - } + void *context) +{ + uint8_t *stream; + waiting_command_t *wait_entry = osi_calloc(sizeof(waiting_command_t)); + if (!wait_entry) { + LOG_ERROR("%s couldn't allocate space for wait entry.", __func__); + return; + } - stream = command->data + command->offset; - STREAM_TO_UINT16(wait_entry->opcode, stream); - wait_entry->complete_callback = complete_callback; - wait_entry->status_callback = status_callback; - wait_entry->command = command; - wait_entry->context = context; + stream = command->data + command->offset; + STREAM_TO_UINT16(wait_entry->opcode, stream); + wait_entry->complete_callback = complete_callback; + wait_entry->status_callback = status_callback; + wait_entry->command = command; + wait_entry->context = context; - // Store the command message type in the event field - // in case the upper layer didn't already - command->event = MSG_STACK_TO_HC_HCI_CMD; - LOG_DEBUG("HCI Enqueue Comamnd opcode=0x%x\n", wait_entry->opcode); - BTTRC_DUMP_BUFFER(NULL, command->data + command->offset, command->len); + // Store the command message type in the event field + // in case the upper layer didn't already + command->event = MSG_STACK_TO_HC_HCI_CMD; + LOG_DEBUG("HCI Enqueue Comamnd opcode=0x%x\n", wait_entry->opcode); + BTTRC_DUMP_BUFFER(NULL, command->data + command->offset, command->len); - fixed_queue_enqueue(hci_host_env.command_queue, wait_entry); - hci_host_task_post(); + fixed_queue_enqueue(hci_host_env.command_queue, wait_entry); + hci_host_task_post(); } -static future_t *transmit_command_futured(BT_HDR *command) { - waiting_command_t *wait_entry = osi_calloc(sizeof(waiting_command_t)); - assert(wait_entry != NULL); +static future_t *transmit_command_futured(BT_HDR *command) +{ + waiting_command_t *wait_entry = osi_calloc(sizeof(waiting_command_t)); + assert(wait_entry != NULL); - future_t *future = future_new(); + future_t *future = future_new(); - uint8_t *stream = command->data + command->offset; - STREAM_TO_UINT16(wait_entry->opcode, stream); - wait_entry->complete_future = future; - wait_entry->command = command; + uint8_t *stream = command->data + command->offset; + STREAM_TO_UINT16(wait_entry->opcode, stream); + wait_entry->complete_future = future; + wait_entry->command = command; - // Store the command message type in the event field - // in case the upper layer didn't already - command->event = MSG_STACK_TO_HC_HCI_CMD; + // Store the command message type in the event field + // in case the upper layer didn't already + command->event = MSG_STACK_TO_HC_HCI_CMD; - fixed_queue_enqueue(hci_host_env.command_queue, wait_entry); - hci_host_task_post(); - return future; + fixed_queue_enqueue(hci_host_env.command_queue, wait_entry); + hci_host_task_post(); + return future; } -static void transmit_downward(uint16_t type, void *data) { - if (type == MSG_STACK_TO_HC_HCI_CMD) { - transmit_command((BT_HDR *)data, NULL, NULL, NULL); - LOG_WARN("%s legacy transmit of command. Use transmit_command instead.\n", __func__); - } else { - fixed_queue_enqueue(hci_host_env.packet_queue, data); - } - //ke_event_set(KE_EVENT_HCI_HOST_THREAD); - hci_host_task_post(); +static void transmit_downward(uint16_t type, void *data) +{ + if (type == MSG_STACK_TO_HC_HCI_CMD) { + transmit_command((BT_HDR *)data, NULL, NULL, NULL); + LOG_WARN("%s legacy transmit of command. Use transmit_command instead.\n", __func__); + } else { + fixed_queue_enqueue(hci_host_env.packet_queue, data); + } + //ke_event_set(KE_EVENT_HCI_HOST_THREAD); + hci_host_task_post(); } // Postload functions -static void event_postload(void) { - if (hci_send_async_command(BT_VND_OP_SCO_CFG, NULL) == -1) { - // If couldn't configure sco, we won't get the sco configuration callback - // so go pretend to do it now - sco_config_callback(false); +static void event_postload(void) +{ + if (hci_send_async_command(BT_VND_OP_SCO_CFG, NULL) == -1) { + // If couldn't configure sco, we won't get the sco configuration callback + // so go pretend to do it now + sco_config_callback(false); - } + } } -static void sco_config_callback(UNUSED_ATTR bool success) { - LOG_INFO("%s postload finished.", __func__); +static void sco_config_callback(UNUSED_ATTR bool success) +{ + LOG_INFO("%s postload finished.", __func__); } // Command/packet transmitting functions -static void event_command_ready(fixed_queue_t *queue) { - waiting_command_t *wait_entry = NULL; - command_waiting_response_t *cmd_wait_q = &hci_host_env.cmd_waiting_q; +static void event_command_ready(fixed_queue_t *queue) +{ + waiting_command_t *wait_entry = NULL; + command_waiting_response_t *cmd_wait_q = &hci_host_env.cmd_waiting_q; - wait_entry = fixed_queue_dequeue(queue); - hci_host_env.command_credits--; + wait_entry = fixed_queue_dequeue(queue); + hci_host_env.command_credits--; - // Move it to the list of commands awaiting response - pthread_mutex_lock(&cmd_wait_q->commands_pending_response_lock); - list_append(cmd_wait_q->commands_pending_response, wait_entry); - pthread_mutex_unlock(&cmd_wait_q->commands_pending_response_lock); + // Move it to the list of commands awaiting response + pthread_mutex_lock(&cmd_wait_q->commands_pending_response_lock); + list_append(cmd_wait_q->commands_pending_response, wait_entry); + pthread_mutex_unlock(&cmd_wait_q->commands_pending_response_lock); - // Send it off - packet_fragmenter->fragment_and_dispatch(wait_entry->command); + // Send it off + packet_fragmenter->fragment_and_dispatch(wait_entry->command); - wait_entry->sent_time = osi_alarm_now(); - restart_comamnd_waiting_response_timer(cmd_wait_q, true); + wait_entry->sent_time = osi_alarm_now(); + restart_comamnd_waiting_response_timer(cmd_wait_q, true); } -static void event_packet_ready(fixed_queue_t *queue) { - BT_HDR *packet = (BT_HDR *)fixed_queue_dequeue(queue); - // The queue may be the command queue or the packet queue, we don't care +static void event_packet_ready(fixed_queue_t *queue) +{ + BT_HDR *packet = (BT_HDR *)fixed_queue_dequeue(queue); + // The queue may be the command queue or the packet queue, we don't care - packet_fragmenter->fragment_and_dispatch(packet); + packet_fragmenter->fragment_and_dispatch(packet); } // Callback for the fragmenter to send a fragment -static void transmit_fragment(BT_HDR *packet, bool send_transmit_finished) { - uint16_t event = packet->event & MSG_EVT_MASK; - serial_data_type_t type = event_to_data_type(event); +static void transmit_fragment(BT_HDR *packet, bool send_transmit_finished) +{ + uint16_t event = packet->event & MSG_EVT_MASK; + serial_data_type_t type = event_to_data_type(event); - hal->transmit_data(type, packet->data + packet->offset, packet->len); + hal->transmit_data(type, packet->data + packet->offset, packet->len); - if (event != MSG_STACK_TO_HC_HCI_CMD && send_transmit_finished) - buffer_allocator->free(packet); + if (event != MSG_STACK_TO_HC_HCI_CMD && send_transmit_finished) { + buffer_allocator->free(packet); + } } -static void fragmenter_transmit_finished(BT_HDR *packet, bool all_fragments_sent) { - if (all_fragments_sent) { - buffer_allocator->free(packet); - } else { - // This is kind of a weird case, since we're dispatching a partially sent packet - // up to a higher layer. - // TODO(zachoverflow): rework upper layer so this isn't necessary. - buffer_allocator->free(packet); - //dispatch_reassembled(packet); - //data_dispatcher_dispatch(interface.event_dispatcher, packet->event & MSG_EVT_MASK, packet); - } +static void fragmenter_transmit_finished(BT_HDR *packet, bool all_fragments_sent) +{ + if (all_fragments_sent) { + buffer_allocator->free(packet); + } else { + // This is kind of a weird case, since we're dispatching a partially sent packet + // up to a higher layer. + // TODO(zachoverflow): rework upper layer so this isn't necessary. + buffer_allocator->free(packet); + //dispatch_reassembled(packet); + //data_dispatcher_dispatch(interface.event_dispatcher, packet->event & MSG_EVT_MASK, packet); + } } static void restart_comamnd_waiting_response_timer( - command_waiting_response_t *cmd_wait_q, - bool tigger_by_sending_command) + command_waiting_response_t *cmd_wait_q, + bool tigger_by_sending_command) { - uint32_t timeout; - waiting_command_t *wait_entry; - if (!cmd_wait_q) - return; + uint32_t timeout; + waiting_command_t *wait_entry; + if (!cmd_wait_q) { + return; + } - if (cmd_wait_q->timer_is_set) { - if (tigger_by_sending_command) - return; + if (cmd_wait_q->timer_is_set) { + if (tigger_by_sending_command) { + return; + } - //Cancel Previous command timeout timer setted when sending command - osi_alarm_cancel(cmd_wait_q->command_response_timer); - cmd_wait_q->timer_is_set = false; - } + //Cancel Previous command timeout timer setted when sending command + osi_alarm_cancel(cmd_wait_q->command_response_timer); + cmd_wait_q->timer_is_set = false; + } - pthread_mutex_lock(&cmd_wait_q->commands_pending_response_lock); - wait_entry = (list_is_empty(cmd_wait_q->commands_pending_response) ? - NULL : list_front(cmd_wait_q->commands_pending_response)); - pthread_mutex_unlock(&cmd_wait_q->commands_pending_response_lock); + pthread_mutex_lock(&cmd_wait_q->commands_pending_response_lock); + wait_entry = (list_is_empty(cmd_wait_q->commands_pending_response) ? + NULL : list_front(cmd_wait_q->commands_pending_response)); + pthread_mutex_unlock(&cmd_wait_q->commands_pending_response_lock); - if (wait_entry == NULL) - return; + if (wait_entry == NULL) { + return; + } - timeout =osi_alarm_time_diff(osi_alarm_now(), wait_entry->sent_time); - timeout =osi_alarm_time_diff(COMMAND_PENDING_TIMEOUT, timeout); - timeout = (timeout <= COMMAND_PENDING_TIMEOUT) ? timeout : COMMAND_PENDING_TIMEOUT; + timeout = osi_alarm_time_diff(osi_alarm_now(), wait_entry->sent_time); + timeout = osi_alarm_time_diff(COMMAND_PENDING_TIMEOUT, timeout); + timeout = (timeout <= COMMAND_PENDING_TIMEOUT) ? timeout : COMMAND_PENDING_TIMEOUT; - osi_alarm_set(cmd_wait_q->command_response_timer, timeout); - cmd_wait_q->timer_is_set = true; + osi_alarm_set(cmd_wait_q->command_response_timer, timeout); + cmd_wait_q->timer_is_set = true; } -static void command_timed_out(void *context) { - command_waiting_response_t *cmd_wait_q = (command_waiting_response_t *)context; - waiting_command_t *wait_entry; +static void command_timed_out(void *context) +{ + command_waiting_response_t *cmd_wait_q = (command_waiting_response_t *)context; + waiting_command_t *wait_entry; - pthread_mutex_lock(&cmd_wait_q->commands_pending_response_lock); - wait_entry = (list_is_empty(cmd_wait_q->commands_pending_response) ? - NULL : list_front(cmd_wait_q->commands_pending_response)); - pthread_mutex_unlock(&cmd_wait_q->commands_pending_response_lock); + pthread_mutex_lock(&cmd_wait_q->commands_pending_response_lock); + wait_entry = (list_is_empty(cmd_wait_q->commands_pending_response) ? + NULL : list_front(cmd_wait_q->commands_pending_response)); + pthread_mutex_unlock(&cmd_wait_q->commands_pending_response_lock); - if (wait_entry == NULL) - LOG_ERROR("%s with no commands pending response", __func__); - else - // We shouldn't try to recover the stack from this command timeout. - // If it's caused by a software bug, fix it. If it's a hardware bug, fix it. - LOG_ERROR("%s hci layer timeout waiting for response to a command. opcode: 0x%x", __func__, wait_entry->opcode); + if (wait_entry == NULL) { + LOG_ERROR("%s with no commands pending response", __func__); + } else + // We shouldn't try to recover the stack from this command timeout. + // If it's caused by a software bug, fix it. If it's a hardware bug, fix it. + { + LOG_ERROR("%s hci layer timeout waiting for response to a command. opcode: 0x%x", __func__, wait_entry->opcode); + } } // Event/packet receiving functions -static void hal_says_packet_ready(BT_HDR *packet) { - if (packet->event != MSG_HC_TO_STACK_HCI_EVT) { - packet_fragmenter->reassemble_and_dispatch(packet); - } else if (!filter_incoming_event(packet)) { - dispatch_reassembled(packet); - } +static void hal_says_packet_ready(BT_HDR *packet) +{ + if (packet->event != MSG_HC_TO_STACK_HCI_EVT) { + packet_fragmenter->reassemble_and_dispatch(packet); + } else if (!filter_incoming_event(packet)) { + dispatch_reassembled(packet); + } } // Returns true if the event was intercepted and should not proceed to // higher layers. Also inspects an incoming event for interesting // information, like how many commands are now able to be sent. -static bool filter_incoming_event(BT_HDR *packet) { - waiting_command_t *wait_entry = NULL; - uint8_t *stream = packet->data + packet->offset; - uint8_t event_code; - command_opcode_t opcode; +static bool filter_incoming_event(BT_HDR *packet) +{ + waiting_command_t *wait_entry = NULL; + uint8_t *stream = packet->data + packet->offset; + uint8_t event_code; + command_opcode_t opcode; - STREAM_TO_UINT8(event_code, stream); - STREAM_SKIP_UINT8(stream); // Skip the parameter total length field + STREAM_TO_UINT8(event_code, stream); + STREAM_SKIP_UINT8(stream); // Skip the parameter total length field - LOG_DEBUG("Receive packet event_code=0x%x\n", event_code); + LOG_DEBUG("Receive packet event_code=0x%x\n", event_code); - if (event_code == HCI_COMMAND_COMPLETE_EVT) { - STREAM_TO_UINT8(hci_host_env.command_credits, stream); - STREAM_TO_UINT16(opcode, stream); + if (event_code == HCI_COMMAND_COMPLETE_EVT) { + STREAM_TO_UINT8(hci_host_env.command_credits, stream); + STREAM_TO_UINT16(opcode, stream); - wait_entry = get_waiting_command(opcode); - if (!wait_entry) - LOG_WARN("%s command complete event with no matching command. opcode: 0x%x.", __func__, opcode); - else if (wait_entry->complete_callback) - wait_entry->complete_callback(packet, wait_entry->context); - else if (wait_entry->complete_future) - future_ready(wait_entry->complete_future, packet); + wait_entry = get_waiting_command(opcode); + if (!wait_entry) { + LOG_WARN("%s command complete event with no matching command. opcode: 0x%x.", __func__, opcode); + } else if (wait_entry->complete_callback) { + wait_entry->complete_callback(packet, wait_entry->context); + } else if (wait_entry->complete_future) { + future_ready(wait_entry->complete_future, packet); + } - goto intercepted; - } else if (event_code == HCI_COMMAND_STATUS_EVT) { - uint8_t status; - STREAM_TO_UINT8(status, stream); - STREAM_TO_UINT8(hci_host_env.command_credits, stream); - STREAM_TO_UINT16(opcode, stream); + goto intercepted; + } else if (event_code == HCI_COMMAND_STATUS_EVT) { + uint8_t status; + STREAM_TO_UINT8(status, stream); + STREAM_TO_UINT8(hci_host_env.command_credits, stream); + STREAM_TO_UINT16(opcode, stream); - // If a command generates a command status event, it won't be getting a command complete event + // If a command generates a command status event, it won't be getting a command complete event - wait_entry = get_waiting_command(opcode); - if (!wait_entry) - LOG_WARN("%s command status event with no matching command. opcode: 0x%x", __func__, opcode); - else if (wait_entry->status_callback) - wait_entry->status_callback(status, wait_entry->command, wait_entry->context); + wait_entry = get_waiting_command(opcode); + if (!wait_entry) { + LOG_WARN("%s command status event with no matching command. opcode: 0x%x", __func__, opcode); + } else if (wait_entry->status_callback) { + wait_entry->status_callback(status, wait_entry->command, wait_entry->context); + } - goto intercepted; - } + goto intercepted; + } - return false; + return false; intercepted: - /*Tell HCI Host Task to continue TX Pending commands*/ - if (hci_host_env.command_credits && - !fixed_queue_is_empty(hci_host_env.command_queue)) - hci_host_task_post(); + /*Tell HCI Host Task to continue TX Pending commands*/ + if (hci_host_env.command_credits && + !fixed_queue_is_empty(hci_host_env.command_queue)) { + hci_host_task_post(); + } //ke_event_set(KE_EVENT_HCI_HOST_THREAD); - restart_comamnd_waiting_response_timer(&hci_host_env.cmd_waiting_q, false); + restart_comamnd_waiting_response_timer(&hci_host_env.cmd_waiting_q, false); - if (wait_entry) { - // If it has a callback, it's responsible for freeing the packet - if (event_code == HCI_COMMAND_STATUS_EVT || - (!wait_entry->complete_callback && !wait_entry->complete_future)) - buffer_allocator->free(packet); + if (wait_entry) { + // If it has a callback, it's responsible for freeing the packet + if (event_code == HCI_COMMAND_STATUS_EVT || + (!wait_entry->complete_callback && !wait_entry->complete_future)) { + buffer_allocator->free(packet); + } - // If it has a callback, it's responsible for freeing the command - if (event_code == HCI_COMMAND_COMPLETE_EVT || !wait_entry->status_callback) - buffer_allocator->free(wait_entry->command); + // If it has a callback, it's responsible for freeing the command + if (event_code == HCI_COMMAND_COMPLETE_EVT || !wait_entry->status_callback) { + buffer_allocator->free(wait_entry->command); + } - osi_free(wait_entry); - } else { - buffer_allocator->free(packet); - } + osi_free(wait_entry); + } else { + buffer_allocator->free(packet); + } - return true; + return true; } // Callback for the fragmenter to dispatch up a completely reassembled packet -static void dispatch_reassembled(BT_HDR *packet) { - // Events should already have been dispatched before this point +static void dispatch_reassembled(BT_HDR *packet) +{ + // Events should already have been dispatched before this point - if (hci_host_env.upwards_data_queue) { - fixed_queue_enqueue(hci_host_env.upwards_data_queue, packet); - btu_task_post(SIG_BTU_WORK); - //Tell Up-layer received packet. - } else { - LOG_DEBUG("%s had no queue to place upwards data packet in. Dropping it on the floor.", __func__); - buffer_allocator->free(packet); - } + if (hci_host_env.upwards_data_queue) { + fixed_queue_enqueue(hci_host_env.upwards_data_queue, packet); + btu_task_post(SIG_BTU_WORK); + //Tell Up-layer received packet. + } else { + LOG_DEBUG("%s had no queue to place upwards data packet in. Dropping it on the floor.", __func__); + buffer_allocator->free(packet); + } } // Misc internal functions // TODO(zachoverflow): we seem to do this a couple places, like the HCI inject module. #centralize -static serial_data_type_t event_to_data_type(uint16_t event) { - if (event == MSG_STACK_TO_HC_HCI_ACL) - return DATA_TYPE_ACL; - else if (event == MSG_STACK_TO_HC_HCI_SCO) - return DATA_TYPE_SCO; - else if (event == MSG_STACK_TO_HC_HCI_CMD) - return DATA_TYPE_COMMAND; - else - LOG_ERROR("%s invalid event type, could not translate 0x%x\n", __func__, event); +static serial_data_type_t event_to_data_type(uint16_t event) +{ + if (event == MSG_STACK_TO_HC_HCI_ACL) { + return DATA_TYPE_ACL; + } else if (event == MSG_STACK_TO_HC_HCI_SCO) { + return DATA_TYPE_SCO; + } else if (event == MSG_STACK_TO_HC_HCI_CMD) { + return DATA_TYPE_COMMAND; + } else { + LOG_ERROR("%s invalid event type, could not translate 0x%x\n", __func__, event); + } - return 0; + return 0; } -static waiting_command_t *get_waiting_command(command_opcode_t opcode) { - command_waiting_response_t *cmd_wait_q = &hci_host_env.cmd_waiting_q; - pthread_mutex_lock(&cmd_wait_q->commands_pending_response_lock); +static waiting_command_t *get_waiting_command(command_opcode_t opcode) +{ + command_waiting_response_t *cmd_wait_q = &hci_host_env.cmd_waiting_q; + pthread_mutex_lock(&cmd_wait_q->commands_pending_response_lock); - for (const list_node_t *node = list_begin(cmd_wait_q->commands_pending_response); - node != list_end(cmd_wait_q->commands_pending_response); - node = list_next(node)) { - waiting_command_t *wait_entry = list_node(node); - if (!wait_entry || wait_entry->opcode != opcode) - continue; + for (const list_node_t *node = list_begin(cmd_wait_q->commands_pending_response); + node != list_end(cmd_wait_q->commands_pending_response); + node = list_next(node)) { + waiting_command_t *wait_entry = list_node(node); + if (!wait_entry || wait_entry->opcode != opcode) { + continue; + } - list_remove(cmd_wait_q->commands_pending_response, wait_entry); + list_remove(cmd_wait_q->commands_pending_response, wait_entry); + + pthread_mutex_unlock(&cmd_wait_q->commands_pending_response_lock); + return wait_entry; + } pthread_mutex_unlock(&cmd_wait_q->commands_pending_response_lock); - return wait_entry; - } - - pthread_mutex_unlock(&cmd_wait_q->commands_pending_response_lock); - return NULL; + return NULL; } static int hci_send_async_command(bt_vendor_opcode_t opcode, void *param) { } -static void init_layer_interface() { - if (!interface_created) { - interface.set_data_queue = set_data_queue; - interface.transmit_command = transmit_command; - interface.transmit_command_futured = transmit_command_futured; - interface.transmit_downward = transmit_downward; - interface_created = true; - } +static void init_layer_interface() +{ + if (!interface_created) { + interface.set_data_queue = set_data_queue; + interface.transmit_command = transmit_command; + interface.transmit_command_futured = transmit_command_futured; + interface.transmit_downward = transmit_downward; + interface_created = true; + } } static const hci_hal_callbacks_t hal_callbacks = { - hal_says_packet_ready + hal_says_packet_ready }; static const packet_fragmenter_callbacks_t packet_fragmenter_callbacks = { - transmit_fragment, - dispatch_reassembled, - fragmenter_transmit_finished + transmit_fragment, + dispatch_reassembled, + fragmenter_transmit_finished }; -const hci_t *hci_layer_get_interface() { - buffer_allocator = buffer_allocator_get_interface(); - hal = hci_hal_h4_get_interface(); - packet_fragmenter = packet_fragmenter_get_interface(); +const hci_t *hci_layer_get_interface() +{ + buffer_allocator = buffer_allocator_get_interface(); + hal = hci_hal_h4_get_interface(); + packet_fragmenter = packet_fragmenter_get_interface(); - init_layer_interface(); - return &interface; + init_layer_interface(); + return &interface; } diff --git a/components/bt/bluedroid/hci/hci_packet_factory.c b/components/bt/bluedroid/hci/hci_packet_factory.c old mode 100755 new mode 100644 index ba1e35ce33..6d5592b758 --- a/components/bt/bluedroid/hci/hci_packet_factory.c +++ b/components/bt/bluedroid/hci/hci_packet_factory.c @@ -35,168 +35,191 @@ static BT_HDR *make_command(uint16_t opcode, size_t parameter_size, uint8_t **st // Interface functions -static BT_HDR *make_reset(void) { - return make_command_no_params(HCI_RESET); +static BT_HDR *make_reset(void) +{ + return make_command_no_params(HCI_RESET); } -static BT_HDR *make_read_buffer_size(void) { - return make_command_no_params(HCI_READ_BUFFER_SIZE); +static BT_HDR *make_read_buffer_size(void) +{ + return make_command_no_params(HCI_READ_BUFFER_SIZE); } -static BT_HDR *make_host_buffer_size(uint16_t acl_size, uint8_t sco_size, uint16_t acl_count, uint16_t sco_count) { - uint8_t *stream; - const uint8_t parameter_size = 2 + 1 + 2 + 2; // from each of the parameters - BT_HDR *packet = make_command(HCI_HOST_BUFFER_SIZE, parameter_size, &stream); +static BT_HDR *make_host_buffer_size(uint16_t acl_size, uint8_t sco_size, uint16_t acl_count, uint16_t sco_count) +{ + uint8_t *stream; + const uint8_t parameter_size = 2 + 1 + 2 + 2; // from each of the parameters + BT_HDR *packet = make_command(HCI_HOST_BUFFER_SIZE, parameter_size, &stream); - UINT16_TO_STREAM(stream, acl_size); - UINT8_TO_STREAM(stream, sco_size); - UINT16_TO_STREAM(stream, acl_count); - UINT16_TO_STREAM(stream, sco_count); - return packet; + UINT16_TO_STREAM(stream, acl_size); + UINT8_TO_STREAM(stream, sco_size); + UINT16_TO_STREAM(stream, acl_count); + UINT16_TO_STREAM(stream, sco_count); + return packet; } -static BT_HDR *make_read_local_version_info(void) { - return make_command_no_params(HCI_READ_LOCAL_VERSION_INFO); +static BT_HDR *make_read_local_version_info(void) +{ + return make_command_no_params(HCI_READ_LOCAL_VERSION_INFO); } -static BT_HDR *make_read_bd_addr(void) { - return make_command_no_params(HCI_READ_BD_ADDR); +static BT_HDR *make_read_bd_addr(void) +{ + return make_command_no_params(HCI_READ_BD_ADDR); } -static BT_HDR *make_read_local_supported_commands(void) { - return make_command_no_params(HCI_READ_LOCAL_SUPPORTED_CMDS); +static BT_HDR *make_read_local_supported_commands(void) +{ + return make_command_no_params(HCI_READ_LOCAL_SUPPORTED_CMDS); } -static BT_HDR *make_read_local_extended_features(uint8_t page_number) { - uint8_t *stream; - const uint8_t parameter_size = 1; - BT_HDR *packet = make_command(HCI_READ_LOCAL_EXT_FEATURES, parameter_size, &stream); +static BT_HDR *make_read_local_extended_features(uint8_t page_number) +{ + uint8_t *stream; + const uint8_t parameter_size = 1; + BT_HDR *packet = make_command(HCI_READ_LOCAL_EXT_FEATURES, parameter_size, &stream); - UINT8_TO_STREAM(stream, page_number); - return packet; + UINT8_TO_STREAM(stream, page_number); + return packet; } -static BT_HDR *make_write_simple_pairing_mode(uint8_t mode) { - uint8_t *stream; - const uint8_t parameter_size = 1; - BT_HDR *packet = make_command(HCI_WRITE_SIMPLE_PAIRING_MODE, parameter_size, &stream); +static BT_HDR *make_write_simple_pairing_mode(uint8_t mode) +{ + uint8_t *stream; + const uint8_t parameter_size = 1; + BT_HDR *packet = make_command(HCI_WRITE_SIMPLE_PAIRING_MODE, parameter_size, &stream); - UINT8_TO_STREAM(stream, mode); - return packet; + UINT8_TO_STREAM(stream, mode); + return packet; } -static BT_HDR *make_write_secure_connections_host_support(uint8_t mode) { - uint8_t *stream; - const uint8_t parameter_size = 1; - BT_HDR *packet = make_command(HCI_WRITE_SECURE_CONNS_SUPPORT, parameter_size, &stream); +static BT_HDR *make_write_secure_connections_host_support(uint8_t mode) +{ + uint8_t *stream; + const uint8_t parameter_size = 1; + BT_HDR *packet = make_command(HCI_WRITE_SECURE_CONNS_SUPPORT, parameter_size, &stream); - UINT8_TO_STREAM(stream, mode); - return packet; + UINT8_TO_STREAM(stream, mode); + return packet; } -static BT_HDR *make_set_event_mask(const bt_event_mask_t *event_mask) { - uint8_t *stream; - uint8_t parameter_size = sizeof(bt_event_mask_t); - BT_HDR *packet = make_command(HCI_SET_EVENT_MASK, parameter_size, &stream); +static BT_HDR *make_set_event_mask(const bt_event_mask_t *event_mask) +{ + uint8_t *stream; + uint8_t parameter_size = sizeof(bt_event_mask_t); + BT_HDR *packet = make_command(HCI_SET_EVENT_MASK, parameter_size, &stream); - ARRAY8_TO_STREAM(stream, event_mask->as_array); - return packet; + ARRAY8_TO_STREAM(stream, event_mask->as_array); + return packet; } -static BT_HDR *make_ble_write_host_support(uint8_t supported_host, uint8_t simultaneous_host) { - uint8_t *stream; - const uint8_t parameter_size = 1 + 1; - BT_HDR *packet = make_command(HCI_WRITE_LE_HOST_SUPPORT, parameter_size, &stream); +static BT_HDR *make_ble_write_host_support(uint8_t supported_host, uint8_t simultaneous_host) +{ + uint8_t *stream; + const uint8_t parameter_size = 1 + 1; + BT_HDR *packet = make_command(HCI_WRITE_LE_HOST_SUPPORT, parameter_size, &stream); - UINT8_TO_STREAM(stream, supported_host); - UINT8_TO_STREAM(stream, simultaneous_host); - return packet; + UINT8_TO_STREAM(stream, supported_host); + UINT8_TO_STREAM(stream, simultaneous_host); + return packet; } -static BT_HDR *make_ble_read_white_list_size(void) { - return make_command_no_params(HCI_BLE_READ_WHITE_LIST_SIZE); +static BT_HDR *make_ble_read_white_list_size(void) +{ + return make_command_no_params(HCI_BLE_READ_WHITE_LIST_SIZE); } -static BT_HDR *make_ble_read_buffer_size(void) { - return make_command_no_params(HCI_BLE_READ_BUFFER_SIZE); +static BT_HDR *make_ble_read_buffer_size(void) +{ + return make_command_no_params(HCI_BLE_READ_BUFFER_SIZE); } -static BT_HDR *make_ble_read_supported_states(void) { - return make_command_no_params(HCI_BLE_READ_SUPPORTED_STATES); +static BT_HDR *make_ble_read_supported_states(void) +{ + return make_command_no_params(HCI_BLE_READ_SUPPORTED_STATES); } -static BT_HDR *make_ble_read_local_supported_features(void) { - return make_command_no_params(HCI_BLE_READ_LOCAL_SPT_FEAT); +static BT_HDR *make_ble_read_local_supported_features(void) +{ + return make_command_no_params(HCI_BLE_READ_LOCAL_SPT_FEAT); } -static BT_HDR *make_ble_read_resolving_list_size(void) { - return make_command_no_params(HCI_BLE_READ_RESOLVING_LIST_SIZE); +static BT_HDR *make_ble_read_resolving_list_size(void) +{ + return make_command_no_params(HCI_BLE_READ_RESOLVING_LIST_SIZE); } -static BT_HDR *make_ble_read_suggested_default_data_length(void) { +static BT_HDR *make_ble_read_suggested_default_data_length(void) +{ return make_command_no_params(HCI_BLE_READ_DEFAULT_DATA_LENGTH); } -static BT_HDR *make_ble_set_event_mask(const bt_event_mask_t *event_mask) { - uint8_t *stream; - uint8_t parameter_size = sizeof(bt_event_mask_t); - BT_HDR *packet = make_command(HCI_BLE_SET_EVENT_MASK, parameter_size, &stream); +static BT_HDR *make_ble_set_event_mask(const bt_event_mask_t *event_mask) +{ + uint8_t *stream; + uint8_t parameter_size = sizeof(bt_event_mask_t); + BT_HDR *packet = make_command(HCI_BLE_SET_EVENT_MASK, parameter_size, &stream); - ARRAY8_TO_STREAM(stream, event_mask->as_array); - return packet; + ARRAY8_TO_STREAM(stream, event_mask->as_array); + return packet; } // Internal functions -static BT_HDR *make_command_no_params(uint16_t opcode) { - return make_command(opcode, 0, NULL); +static BT_HDR *make_command_no_params(uint16_t opcode) +{ + return make_command(opcode, 0, NULL); } -static BT_HDR *make_command(uint16_t opcode, size_t parameter_size, uint8_t **stream_out) { - BT_HDR *packet = make_packet(HCI_COMMAND_PREAMBLE_SIZE + parameter_size); +static BT_HDR *make_command(uint16_t opcode, size_t parameter_size, uint8_t **stream_out) +{ + BT_HDR *packet = make_packet(HCI_COMMAND_PREAMBLE_SIZE + parameter_size); - uint8_t *stream = packet->data; - UINT16_TO_STREAM(stream, opcode); - UINT8_TO_STREAM(stream, parameter_size); + uint8_t *stream = packet->data; + UINT16_TO_STREAM(stream, opcode); + UINT8_TO_STREAM(stream, parameter_size); - if (stream_out != NULL) - *stream_out = stream; + if (stream_out != NULL) { + *stream_out = stream; + } - return packet; + return packet; } -static BT_HDR *make_packet(size_t data_size) { - BT_HDR *ret = (BT_HDR *)buffer_allocator->alloc(sizeof(BT_HDR) + data_size); - assert(ret); - ret->event = 0; - ret->offset = 0; - ret->layer_specific = 0; - ret->len = data_size; - return ret; +static BT_HDR *make_packet(size_t data_size) +{ + BT_HDR *ret = (BT_HDR *)buffer_allocator->alloc(sizeof(BT_HDR) + data_size); + assert(ret); + ret->event = 0; + ret->offset = 0; + ret->layer_specific = 0; + ret->len = data_size; + return ret; } static const hci_packet_factory_t interface = { - make_reset, - make_read_buffer_size, - make_host_buffer_size, - make_read_local_version_info, - make_read_bd_addr, - make_read_local_supported_commands, - make_read_local_extended_features, - make_write_simple_pairing_mode, - make_write_secure_connections_host_support, - make_set_event_mask, - make_ble_write_host_support, - make_ble_read_white_list_size, - make_ble_read_buffer_size, - make_ble_read_supported_states, - make_ble_read_local_supported_features, - make_ble_read_resolving_list_size, - make_ble_read_suggested_default_data_length, - make_ble_set_event_mask + make_reset, + make_read_buffer_size, + make_host_buffer_size, + make_read_local_version_info, + make_read_bd_addr, + make_read_local_supported_commands, + make_read_local_extended_features, + make_write_simple_pairing_mode, + make_write_secure_connections_host_support, + make_set_event_mask, + make_ble_write_host_support, + make_ble_read_white_list_size, + make_ble_read_buffer_size, + make_ble_read_supported_states, + make_ble_read_local_supported_features, + make_ble_read_resolving_list_size, + make_ble_read_suggested_default_data_length, + make_ble_set_event_mask }; -const hci_packet_factory_t *hci_packet_factory_get_interface() { - buffer_allocator = buffer_allocator_get_interface(); - return &interface; +const hci_packet_factory_t *hci_packet_factory_get_interface() +{ + buffer_allocator = buffer_allocator_get_interface(); + return &interface; } diff --git a/components/bt/bluedroid/hci/hci_packet_parser.c b/components/bt/bluedroid/hci/hci_packet_parser.c old mode 100755 new mode 100644 index 9f9d68fab5..b0e5e4b434 --- a/components/bt/bluedroid/hci/hci_packet_parser.c +++ b/components/bt/bluedroid/hci/hci_packet_parser.c @@ -29,66 +29,71 @@ static const command_opcode_t NO_OPCODE_CHECKING = 0; static const allocator_t *buffer_allocator; static uint8_t *read_command_complete_header( - BT_HDR *response, - command_opcode_t expected_opcode, - size_t minimum_bytes_after); + BT_HDR *response, + command_opcode_t expected_opcode, + size_t minimum_bytes_after); -static void parse_generic_command_complete(BT_HDR *response) { - read_command_complete_header(response, NO_OPCODE_CHECKING, 0 /* bytes after */); +static void parse_generic_command_complete(BT_HDR *response) +{ + read_command_complete_header(response, NO_OPCODE_CHECKING, 0 /* bytes after */); - buffer_allocator->free(response); + buffer_allocator->free(response); } static void parse_read_buffer_size_response( BT_HDR *response, uint16_t *data_size_ptr, - uint16_t *acl_buffer_count_ptr) { + uint16_t *acl_buffer_count_ptr) +{ - uint8_t *stream = read_command_complete_header(response, HCI_READ_BUFFER_SIZE, 5 /* bytes after */); - assert(stream != NULL); - STREAM_TO_UINT16(*data_size_ptr, stream); - STREAM_SKIP_UINT8(stream); // skip the sco packet length - STREAM_TO_UINT16(*acl_buffer_count_ptr, stream); + uint8_t *stream = read_command_complete_header(response, HCI_READ_BUFFER_SIZE, 5 /* bytes after */); + assert(stream != NULL); + STREAM_TO_UINT16(*data_size_ptr, stream); + STREAM_SKIP_UINT8(stream); // skip the sco packet length + STREAM_TO_UINT16(*acl_buffer_count_ptr, stream); - buffer_allocator->free(response); + buffer_allocator->free(response); } static void parse_read_local_version_info_response( BT_HDR *response, - bt_version_t *bt_version) { + bt_version_t *bt_version) +{ - uint8_t *stream = read_command_complete_header(response, HCI_READ_LOCAL_VERSION_INFO, 8 /* bytes after */); - assert(stream != NULL); - STREAM_TO_UINT8(bt_version->hci_version, stream); - STREAM_TO_UINT16(bt_version->hci_revision, stream); - STREAM_TO_UINT8(bt_version->lmp_version, stream); - STREAM_TO_UINT16(bt_version->manufacturer, stream); - STREAM_TO_UINT16(bt_version->lmp_subversion, stream); + uint8_t *stream = read_command_complete_header(response, HCI_READ_LOCAL_VERSION_INFO, 8 /* bytes after */); + assert(stream != NULL); + STREAM_TO_UINT8(bt_version->hci_version, stream); + STREAM_TO_UINT16(bt_version->hci_revision, stream); + STREAM_TO_UINT8(bt_version->lmp_version, stream); + STREAM_TO_UINT16(bt_version->manufacturer, stream); + STREAM_TO_UINT16(bt_version->lmp_subversion, stream); - buffer_allocator->free(response); + buffer_allocator->free(response); } static void parse_read_bd_addr_response( BT_HDR *response, - bt_bdaddr_t *address_ptr) { + bt_bdaddr_t *address_ptr) +{ - uint8_t *stream = read_command_complete_header(response, HCI_READ_BD_ADDR, sizeof(bt_bdaddr_t) /* bytes after */); - assert(stream != NULL); - STREAM_TO_BDADDR(address_ptr->address, stream); + uint8_t *stream = read_command_complete_header(response, HCI_READ_BD_ADDR, sizeof(bt_bdaddr_t) /* bytes after */); + assert(stream != NULL); + STREAM_TO_BDADDR(address_ptr->address, stream); - buffer_allocator->free(response); + buffer_allocator->free(response); } static void parse_read_local_supported_commands_response( BT_HDR *response, uint8_t *supported_commands_ptr, - size_t supported_commands_length) { + size_t supported_commands_length) +{ - uint8_t *stream = read_command_complete_header(response, HCI_READ_LOCAL_SUPPORTED_CMDS, supported_commands_length /* bytes after */); - assert(stream != NULL); - STREAM_TO_ARRAY(supported_commands_ptr, stream, (int)supported_commands_length); + uint8_t *stream = read_command_complete_header(response, HCI_READ_LOCAL_SUPPORTED_CMDS, supported_commands_length /* bytes after */); + assert(stream != NULL); + STREAM_TO_ARRAY(supported_commands_ptr, stream, (int)supported_commands_length); - buffer_allocator->free(response); + buffer_allocator->free(response); } static void parse_read_local_extended_features_response( @@ -96,88 +101,95 @@ static void parse_read_local_extended_features_response( uint8_t *page_number_ptr, uint8_t *max_page_number_ptr, bt_device_features_t *feature_pages, - size_t feature_pages_count) { + size_t feature_pages_count) +{ - uint8_t *stream = read_command_complete_header(response, HCI_READ_LOCAL_EXT_FEATURES, 2 + sizeof(bt_device_features_t) /* bytes after */); - if (stream != NULL) { - STREAM_TO_UINT8(*page_number_ptr, stream); - STREAM_TO_UINT8(*max_page_number_ptr, stream); + uint8_t *stream = read_command_complete_header(response, HCI_READ_LOCAL_EXT_FEATURES, 2 + sizeof(bt_device_features_t) /* bytes after */); + if (stream != NULL) { + STREAM_TO_UINT8(*page_number_ptr, stream); + STREAM_TO_UINT8(*max_page_number_ptr, stream); - assert(*page_number_ptr < feature_pages_count); - STREAM_TO_ARRAY(feature_pages[*page_number_ptr].as_array, stream, (int)sizeof(bt_device_features_t)); - } else { - LOG_ERROR("%s() - WARNING: READING EXTENDED FEATURES FAILED. " - "THIS MAY INDICATE A FIRMWARE/CONTROLLER ISSUE.", __func__); - } + assert(*page_number_ptr < feature_pages_count); + STREAM_TO_ARRAY(feature_pages[*page_number_ptr].as_array, stream, (int)sizeof(bt_device_features_t)); + } else { + LOG_ERROR("%s() - WARNING: READING EXTENDED FEATURES FAILED. " + "THIS MAY INDICATE A FIRMWARE/CONTROLLER ISSUE.", __func__); + } - buffer_allocator->free(response); + buffer_allocator->free(response); } static void parse_ble_read_white_list_size_response( BT_HDR *response, - uint8_t *white_list_size_ptr) { + uint8_t *white_list_size_ptr) +{ - uint8_t *stream = read_command_complete_header(response, HCI_BLE_READ_WHITE_LIST_SIZE, 1 /* byte after */); - assert(stream != NULL); - STREAM_TO_UINT8(*white_list_size_ptr, stream); + uint8_t *stream = read_command_complete_header(response, HCI_BLE_READ_WHITE_LIST_SIZE, 1 /* byte after */); + assert(stream != NULL); + STREAM_TO_UINT8(*white_list_size_ptr, stream); - buffer_allocator->free(response); + buffer_allocator->free(response); } static void parse_ble_read_buffer_size_response( BT_HDR *response, uint16_t *data_size_ptr, - uint8_t *acl_buffer_count_ptr) { + uint8_t *acl_buffer_count_ptr) +{ - uint8_t *stream = read_command_complete_header(response, HCI_BLE_READ_BUFFER_SIZE, 3 /* bytes after */); - assert(stream != NULL); - STREAM_TO_UINT16(*data_size_ptr, stream); - STREAM_TO_UINT8(*acl_buffer_count_ptr, stream); + uint8_t *stream = read_command_complete_header(response, HCI_BLE_READ_BUFFER_SIZE, 3 /* bytes after */); + assert(stream != NULL); + STREAM_TO_UINT16(*data_size_ptr, stream); + STREAM_TO_UINT8(*acl_buffer_count_ptr, stream); - buffer_allocator->free(response); + buffer_allocator->free(response); } static void parse_ble_read_supported_states_response( BT_HDR *response, uint8_t *supported_states, - size_t supported_states_size) { + size_t supported_states_size) +{ - uint8_t *stream = read_command_complete_header(response, HCI_BLE_READ_SUPPORTED_STATES, supported_states_size /* bytes after */); - assert(stream != NULL); - STREAM_TO_ARRAY(supported_states, stream, (int)supported_states_size); + uint8_t *stream = read_command_complete_header(response, HCI_BLE_READ_SUPPORTED_STATES, supported_states_size /* bytes after */); + assert(stream != NULL); + STREAM_TO_ARRAY(supported_states, stream, (int)supported_states_size); - buffer_allocator->free(response); + buffer_allocator->free(response); } static void parse_ble_read_local_supported_features_response( BT_HDR *response, - bt_device_features_t *supported_features) { + bt_device_features_t *supported_features) +{ - uint8_t *stream = read_command_complete_header(response, HCI_BLE_READ_LOCAL_SPT_FEAT, sizeof(bt_device_features_t) /* bytes after */); - assert(stream != NULL); - STREAM_TO_ARRAY(supported_features->as_array, stream, (int)sizeof(bt_device_features_t)); + uint8_t *stream = read_command_complete_header(response, HCI_BLE_READ_LOCAL_SPT_FEAT, sizeof(bt_device_features_t) /* bytes after */); + assert(stream != NULL); + STREAM_TO_ARRAY(supported_features->as_array, stream, (int)sizeof(bt_device_features_t)); - buffer_allocator->free(response); + buffer_allocator->free(response); } static void parse_ble_read_resolving_list_size_response( BT_HDR *response, - uint8_t *resolving_list_size_ptr) { + uint8_t *resolving_list_size_ptr) +{ - uint8_t *stream = read_command_complete_header(response, HCI_BLE_READ_RESOLVING_LIST_SIZE, 1 /* bytes after */); - STREAM_TO_UINT8(*resolving_list_size_ptr, stream); + uint8_t *stream = read_command_complete_header(response, HCI_BLE_READ_RESOLVING_LIST_SIZE, 1 /* bytes after */); + STREAM_TO_UINT8(*resolving_list_size_ptr, stream); - buffer_allocator->free(response); + buffer_allocator->free(response); } static void parse_ble_read_suggested_default_data_length_response( BT_HDR *response, - uint16_t *ble_default_packet_length_ptr) { + uint16_t *ble_default_packet_length_ptr) +{ - uint8_t *stream = read_command_complete_header(response, HCI_BLE_READ_DEFAULT_DATA_LENGTH, 2 /* bytes after */); - STREAM_TO_UINT8(*ble_default_packet_length_ptr, stream); + uint8_t *stream = read_command_complete_header(response, HCI_BLE_READ_DEFAULT_DATA_LENGTH, 2 /* bytes after */); + STREAM_TO_UINT8(*ble_default_packet_length_ptr, stream); - buffer_allocator->free(response); + buffer_allocator->free(response); } // Internal functions @@ -185,59 +197,62 @@ static void parse_ble_read_suggested_default_data_length_response( static uint8_t *read_command_complete_header( BT_HDR *response, command_opcode_t expected_opcode, - size_t minimum_bytes_after) { + size_t minimum_bytes_after) +{ - uint8_t *stream = response->data + response->offset; + uint8_t *stream = response->data + response->offset; - // Read the event header - uint8_t event_code; - uint8_t parameter_length; - STREAM_TO_UINT8(event_code, stream); - STREAM_TO_UINT8(parameter_length, stream); + // Read the event header + uint8_t event_code; + uint8_t parameter_length; + STREAM_TO_UINT8(event_code, stream); + STREAM_TO_UINT8(parameter_length, stream); - const size_t parameter_bytes_we_read_here = 4; + const size_t parameter_bytes_we_read_here = 4; - // Check the event header values against what we expect - assert(event_code == HCI_COMMAND_COMPLETE_EVT); - assert(parameter_length >= (parameter_bytes_we_read_here + minimum_bytes_after)); + // Check the event header values against what we expect + assert(event_code == HCI_COMMAND_COMPLETE_EVT); + assert(parameter_length >= (parameter_bytes_we_read_here + minimum_bytes_after)); - // Read the command complete header - command_opcode_t opcode; - uint8_t status; - STREAM_SKIP_UINT8(stream); // skip the number of hci command packets field - STREAM_TO_UINT16(opcode, stream); + // Read the command complete header + command_opcode_t opcode; + uint8_t status; + STREAM_SKIP_UINT8(stream); // skip the number of hci command packets field + STREAM_TO_UINT16(opcode, stream); - // Check the command complete header values against what we expect - if (expected_opcode != NO_OPCODE_CHECKING) { - assert(opcode == expected_opcode); - } + // Check the command complete header values against what we expect + if (expected_opcode != NO_OPCODE_CHECKING) { + assert(opcode == expected_opcode); + } - // Assume the next field is the status field - STREAM_TO_UINT8(status, stream); + // Assume the next field is the status field + STREAM_TO_UINT8(status, stream); - if (status != HCI_SUCCESS) - return NULL; + if (status != HCI_SUCCESS) { + return NULL; + } - return stream; + return stream; } static const hci_packet_parser_t interface = { - parse_generic_command_complete, - parse_read_buffer_size_response, - parse_read_local_version_info_response, - parse_read_bd_addr_response, - parse_read_local_supported_commands_response, - parse_read_local_extended_features_response, - parse_ble_read_white_list_size_response, - parse_ble_read_buffer_size_response, - parse_ble_read_supported_states_response, - parse_ble_read_local_supported_features_response, - parse_ble_read_resolving_list_size_response, - parse_ble_read_suggested_default_data_length_response + parse_generic_command_complete, + parse_read_buffer_size_response, + parse_read_local_version_info_response, + parse_read_bd_addr_response, + parse_read_local_supported_commands_response, + parse_read_local_extended_features_response, + parse_ble_read_white_list_size_response, + parse_ble_read_buffer_size_response, + parse_ble_read_supported_states_response, + parse_ble_read_local_supported_features_response, + parse_ble_read_resolving_list_size_response, + parse_ble_read_suggested_default_data_length_response }; -const hci_packet_parser_t *hci_packet_parser_get_interface() { - buffer_allocator = buffer_allocator_get_interface(); - return &interface; +const hci_packet_parser_t *hci_packet_parser_get_interface() +{ + buffer_allocator = buffer_allocator_get_interface(); + return &interface; } diff --git a/components/bt/bluedroid/hci/include/bt_vendor_lib.h b/components/bt/bluedroid/hci/include/bt_vendor_lib.h old mode 100755 new mode 100644 index 3d563e1bed..e3a8ec8dbf --- a/components/bt/bluedroid/hci/include/bt_vendor_lib.h +++ b/components/bt/bluedroid/hci/include/bt_vendor_lib.h @@ -30,142 +30,142 @@ /** Vendor specific operations OPCODE */ typedef enum { -/* [operation] - * Power on or off the BT Controller. - * [input param] - * A pointer to int type with content of bt_vendor_power_state_t. - * Typecasting conversion: (int *) param. - * [return] - * 0 - default, don't care. - * [callback] - * None. - */ + /* [operation] + * Power on or off the BT Controller. + * [input param] + * A pointer to int type with content of bt_vendor_power_state_t. + * Typecasting conversion: (int *) param. + * [return] + * 0 - default, don't care. + * [callback] + * None. + */ BT_VND_OP_POWER_CTRL, -/* [operation] - * Perform any vendor specific initialization or configuration - * on the BT Controller. This is called before stack initialization. - * [input param] - * None. - * [return] - * 0 - default, don't care. - * [callback] - * Must call fwcfg_cb to notify the stack of the completion of vendor - * specific initialization once it has been done. - */ + /* [operation] + * Perform any vendor specific initialization or configuration + * on the BT Controller. This is called before stack initialization. + * [input param] + * None. + * [return] + * 0 - default, don't care. + * [callback] + * Must call fwcfg_cb to notify the stack of the completion of vendor + * specific initialization once it has been done. + */ BT_VND_OP_FW_CFG, -/* [operation] - * Perform any vendor specific SCO/PCM configuration on the BT Controller. - * This is called after stack initialization. - * [input param] - * None. - * [return] - * 0 - default, don't care. - * [callback] - * Must call scocfg_cb to notify the stack of the completion of vendor - * specific SCO configuration once it has been done. - */ + /* [operation] + * Perform any vendor specific SCO/PCM configuration on the BT Controller. + * This is called after stack initialization. + * [input param] + * None. + * [return] + * 0 - default, don't care. + * [callback] + * Must call scocfg_cb to notify the stack of the completion of vendor + * specific SCO configuration once it has been done. + */ BT_VND_OP_SCO_CFG, -/* [operation] - * Open UART port on where the BT Controller is attached. - * This is called before stack initialization. - * [input param] - * A pointer to int array type for open file descriptors. - * The mapping of HCI channel to fd slot in the int array is given in - * bt_vendor_hci_channels_t. - * And, it requires the vendor lib to fill up the content before returning - * the call. - * Typecasting conversion: (int (*)[]) param. - * [return] - * Numbers of opened file descriptors. - * Valid number: - * 1 - CMD/EVT/ACL-In/ACL-Out via the same fd (e.g. UART) - * 2 - CMD/EVT on one fd, and ACL-In/ACL-Out on the other fd - * 4 - CMD, EVT, ACL-In, ACL-Out are on their individual fd - * [callback] - * None. - */ + /* [operation] + * Open UART port on where the BT Controller is attached. + * This is called before stack initialization. + * [input param] + * A pointer to int array type for open file descriptors. + * The mapping of HCI channel to fd slot in the int array is given in + * bt_vendor_hci_channels_t. + * And, it requires the vendor lib to fill up the content before returning + * the call. + * Typecasting conversion: (int (*)[]) param. + * [return] + * Numbers of opened file descriptors. + * Valid number: + * 1 - CMD/EVT/ACL-In/ACL-Out via the same fd (e.g. UART) + * 2 - CMD/EVT on one fd, and ACL-In/ACL-Out on the other fd + * 4 - CMD, EVT, ACL-In, ACL-Out are on their individual fd + * [callback] + * None. + */ BT_VND_OP_USERIAL_OPEN, -/* [operation] - * Close the previously opened UART port. - * [input param] - * None. - * [return] - * 0 - default, don't care. - * [callback] - * None. - */ + /* [operation] + * Close the previously opened UART port. + * [input param] + * None. + * [return] + * 0 - default, don't care. + * [callback] + * None. + */ BT_VND_OP_USERIAL_CLOSE, -/* [operation] - * Get the LPM idle timeout in milliseconds. - * The stack uses this information to launch a timer delay before it - * attempts to de-assert LPM WAKE signal once downstream HCI packet - * has been delivered. - * [input param] - * A pointer to uint32_t type which is passed in by the stack. And, it - * requires the vendor lib to fill up the content before returning - * the call. - * Typecasting conversion: (uint32_t *) param. - * [return] - * 0 - default, don't care. - * [callback] - * None. - */ + /* [operation] + * Get the LPM idle timeout in milliseconds. + * The stack uses this information to launch a timer delay before it + * attempts to de-assert LPM WAKE signal once downstream HCI packet + * has been delivered. + * [input param] + * A pointer to uint32_t type which is passed in by the stack. And, it + * requires the vendor lib to fill up the content before returning + * the call. + * Typecasting conversion: (uint32_t *) param. + * [return] + * 0 - default, don't care. + * [callback] + * None. + */ BT_VND_OP_GET_LPM_IDLE_TIMEOUT, -/* [operation] - * Enable or disable LPM mode on BT Controller. - * [input param] - * A pointer to uint8_t type with content of bt_vendor_lpm_mode_t. - * Typecasting conversion: (uint8_t *) param. - * [return] - * 0 - default, don't care. - * [callback] - * Must call lpm_cb to notify the stack of the completion of LPM - * disable/enable process once it has been done. - */ + /* [operation] + * Enable or disable LPM mode on BT Controller. + * [input param] + * A pointer to uint8_t type with content of bt_vendor_lpm_mode_t. + * Typecasting conversion: (uint8_t *) param. + * [return] + * 0 - default, don't care. + * [callback] + * Must call lpm_cb to notify the stack of the completion of LPM + * disable/enable process once it has been done. + */ BT_VND_OP_LPM_SET_MODE, -/* [operation] - * Assert or Deassert LPM WAKE on BT Controller. - * [input param] - * A pointer to uint8_t type with content of bt_vendor_lpm_wake_state_t. - * Typecasting conversion: (uint8_t *) param. - * [return] - * 0 - default, don't care. - * [callback] - * None. - */ + /* [operation] + * Assert or Deassert LPM WAKE on BT Controller. + * [input param] + * A pointer to uint8_t type with content of bt_vendor_lpm_wake_state_t. + * Typecasting conversion: (uint8_t *) param. + * [return] + * 0 - default, don't care. + * [callback] + * None. + */ BT_VND_OP_LPM_WAKE_SET_STATE, -/* [operation] - * Perform any vendor specific commands related to audio state changes. - * [input param] - * a pointer to bt_vendor_op_audio_state_t indicating what audio state is - * set. - * [return] - * 0 - default, don't care. - * [callback] - * None. - */ + /* [operation] + * Perform any vendor specific commands related to audio state changes. + * [input param] + * a pointer to bt_vendor_op_audio_state_t indicating what audio state is + * set. + * [return] + * 0 - default, don't care. + * [callback] + * None. + */ BT_VND_OP_SET_AUDIO_STATE, -/* [operation] - * The epilog call to the vendor module so that it can perform any - * vendor-specific processes (e.g. send a HCI_RESET to BT Controller) - * before the caller calls for cleanup(). - * [input param] - * None. - * [return] - * 0 - default, don't care. - * [callback] - * Must call epilog_cb to notify the stack of the completion of vendor - * specific epilog process once it has been done. - */ + /* [operation] + * The epilog call to the vendor module so that it can perform any + * vendor-specific processes (e.g. send a HCI_RESET to BT Controller) + * before the caller calls for cleanup(). + * [input param] + * None. + * [return] + * 0 - default, don't care. + * [callback] + * Must call epilog_cb to notify the stack of the completion of vendor + * specific epilog process once it has been done. + */ BT_VND_OP_EPILOG, } bt_vendor_opcode_t; @@ -257,7 +257,7 @@ typedef void (*cfg_result_cb)(bt_vendor_op_result_t result); * HC_BT_HDR.offset = 0; * HC_BT_HDR.layer_specific = 0; */ -typedef void* (*malloc_cb)(int size); +typedef void *(*malloc_cb)(int size); /* datapath buffer deallocation callback (callout) */ typedef void (*mdealloc_cb)(void *p_buf); @@ -336,7 +336,7 @@ typedef struct { * Caller will open the interface and pass in the callback routines * to the implemenation of this interface. */ - int (*init)(const bt_vendor_callbacks_t* p_cb, unsigned char *local_bdaddr); + int (*init)(const bt_vendor_callbacks_t *p_cb, unsigned char *local_bdaddr); /** Vendor specific operations */ int (*op)(bt_vendor_opcode_t opcode, void *param); diff --git a/components/bt/bluedroid/hci/include/hci_hal.h b/components/bt/bluedroid/hci/include/hci_hal.h old mode 100755 new mode 100644 index 6e8b1a66af..9853211df4 --- a/components/bt/bluedroid/hci/include/hci_hal.h +++ b/components/bt/bluedroid/hci/include/hci_hal.h @@ -25,57 +25,57 @@ #include "bt_types.h" typedef enum { - DATA_TYPE_COMMAND = 1, - DATA_TYPE_ACL = 2, - DATA_TYPE_SCO = 3, - DATA_TYPE_EVENT = 4 + DATA_TYPE_COMMAND = 1, + DATA_TYPE_ACL = 2, + DATA_TYPE_SCO = 3, + DATA_TYPE_EVENT = 4 } serial_data_type_t; typedef void (*packet_ready_cb)(BT_HDR *packet); typedef struct { - // Called when the HAL detects inbound data. - // Data |type| may be ACL, SCO, or EVENT. - // Executes in the context of the thread supplied to |init|. - packet_ready_cb packet_ready; + // Called when the HAL detects inbound data. + // Data |type| may be ACL, SCO, or EVENT. + // Executes in the context of the thread supplied to |init|. + packet_ready_cb packet_ready; - /* - // Called when the HAL detects inbound astronauts named Dave. - // HAL will deny all requests to open the pod bay doors after this. - dave_ready_cb dave_ready; - */ + /* + // Called when the HAL detects inbound astronauts named Dave. + // HAL will deny all requests to open the pod bay doors after this. + dave_ready_cb dave_ready; + */ } hci_hal_callbacks_t; typedef struct hci_hal_t { - // Initialize the HAL, with |upper_callbacks| and |upper_thread| to run in the context of. - //bool (*init)(const hci_hal_callbacks_t *upper_callbacks); + // Initialize the HAL, with |upper_callbacks| and |upper_thread| to run in the context of. + //bool (*init)(const hci_hal_callbacks_t *upper_callbacks); - // Connect to the underlying hardware, and let data start flowing. - bool (*open)(const hci_hal_callbacks_t *upper_callbacks); - // Disconnect from the underlying hardware, and close the HAL. - // "Daisy, Daisy..." - void (*close)(void); + // Connect to the underlying hardware, and let data start flowing. + bool (*open)(const hci_hal_callbacks_t *upper_callbacks); + // Disconnect from the underlying hardware, and close the HAL. + // "Daisy, Daisy..." + void (*close)(void); - // Retrieve up to |max_size| bytes for ACL, SCO, or EVENT data packets into - // |buffer|, blocking until max_size bytes read if |block| is true. - // Only guaranteed to be correct in the context of a data_ready callback - // of the corresponding type. - //size_t (*read_data)(serial_data_type_t type, uint8_t *buffer, size_t max_size); - // The upper layer must call this to notify the HAL that it has finished - // reading a packet of the specified |type|. Underlying implementations that - // use shared channels for multiple data types depend on this to know when - // to reinterpret the data stream. - //void (*packet_finished)(serial_data_type_t type); - // Transmit COMMAND, ACL, or SCO data packets. - // |data| may not be NULL. |length| must be greater than zero. - // - // IMPORTANT NOTE: - // Depending on the underlying implementation, the byte right - // before the beginning of |data| may be borrowed during this call - // and then restored to its original value. - // This is safe in the bluetooth context, because there is always a buffer - // header that prefixes data you're sending. - uint16_t (*transmit_data)(serial_data_type_t type, uint8_t *data, uint16_t length); + // Retrieve up to |max_size| bytes for ACL, SCO, or EVENT data packets into + // |buffer|, blocking until max_size bytes read if |block| is true. + // Only guaranteed to be correct in the context of a data_ready callback + // of the corresponding type. + //size_t (*read_data)(serial_data_type_t type, uint8_t *buffer, size_t max_size); + // The upper layer must call this to notify the HAL that it has finished + // reading a packet of the specified |type|. Underlying implementations that + // use shared channels for multiple data types depend on this to know when + // to reinterpret the data stream. + //void (*packet_finished)(serial_data_type_t type); + // Transmit COMMAND, ACL, or SCO data packets. + // |data| may not be NULL. |length| must be greater than zero. + // + // IMPORTANT NOTE: + // Depending on the underlying implementation, the byte right + // before the beginning of |data| may be borrowed during this call + // and then restored to its original value. + // This is safe in the bluetooth context, because there is always a buffer + // header that prefixes data you're sending. + uint16_t (*transmit_data)(serial_data_type_t type, uint8_t *data, uint16_t length); } hci_hal_t; diff --git a/components/bt/bluedroid/hci/include/hci_layer.h b/components/bt/bluedroid/hci/include/hci_layer.h old mode 100755 new mode 100644 index ed291077fb..caea29f28d --- a/components/bt/bluedroid/hci/include/hci_layer.h +++ b/components/bt/bluedroid/hci/include/hci_layer.h @@ -71,27 +71,27 @@ typedef void (*command_complete_cb)(BT_HDR *response, void *context); typedef void (*command_status_cb)(uint8_t status, BT_HDR *command, void *context); typedef struct hci_t { - // Send a low power command, if supported and the low power manager is enabled. - //void (*send_low_power_command)(low_power_command_t command); + // Send a low power command, if supported and the low power manager is enabled. + //void (*send_low_power_command)(low_power_command_t command); - // Do the postload sequence (call after the rest of the BT stack initializes). - void (*do_postload)(void); + // Do the postload sequence (call after the rest of the BT stack initializes). + void (*do_postload)(void); - // Set the queue to receive ACL data in - void (*set_data_queue)(fixed_queue_t *queue); + // Set the queue to receive ACL data in + void (*set_data_queue)(fixed_queue_t *queue); - // Send a command through the HCI layer - void (*transmit_command)( - BT_HDR *command, - command_complete_cb complete_callback, - command_status_cb status_cb, - void *context - ); + // Send a command through the HCI layer + void (*transmit_command)( + BT_HDR *command, + command_complete_cb complete_callback, + command_status_cb status_cb, + void *context + ); - future_t *(*transmit_command_futured)(BT_HDR *command); + future_t *(*transmit_command_futured)(BT_HDR *command); - // Send some data downward through the HCI layer - void (*transmit_downward)(uint16_t type, void *data); + // Send some data downward through the HCI layer + void (*transmit_downward)(uint16_t type, void *data); } hci_t; const hci_t *hci_layer_get_interface(); diff --git a/components/bt/bluedroid/hci/include/hci_packet_factory.h b/components/bt/bluedroid/hci/include/hci_packet_factory.h old mode 100755 new mode 100644 index 3dd4197a27..879962c2fc --- a/components/bt/bluedroid/hci/include/hci_packet_factory.h +++ b/components/bt/bluedroid/hci/include/hci_packet_factory.h @@ -23,24 +23,24 @@ #include "event_mask.h" typedef struct { - BT_HDR *(*make_reset)(void); - BT_HDR *(*make_read_buffer_size)(void); - BT_HDR *(*make_host_buffer_size)(uint16_t acl_size, uint8_t sco_size, uint16_t acl_count, uint16_t sco_count); - BT_HDR *(*make_read_local_version_info)(void); - BT_HDR *(*make_read_bd_addr)(void); - BT_HDR *(*make_read_local_supported_commands)(void); - BT_HDR *(*make_read_local_extended_features)(uint8_t page_number); - BT_HDR *(*make_write_simple_pairing_mode)(uint8_t mode); - BT_HDR *(*make_write_secure_connections_host_support)(uint8_t mode); - BT_HDR *(*make_set_event_mask)(const bt_event_mask_t *event_mask); - BT_HDR *(*make_ble_write_host_support)(uint8_t supported_host, uint8_t simultaneous_host); - BT_HDR *(*make_ble_read_white_list_size)(void); - BT_HDR *(*make_ble_read_buffer_size)(void); - BT_HDR *(*make_ble_read_supported_states)(void); - BT_HDR *(*make_ble_read_local_supported_features)(void); - BT_HDR *(*make_ble_read_resolving_list_size)(void); - BT_HDR *(*make_ble_read_suggested_default_data_length)(void); - BT_HDR *(*make_ble_set_event_mask)(const bt_event_mask_t *event_mask); + BT_HDR *(*make_reset)(void); + BT_HDR *(*make_read_buffer_size)(void); + BT_HDR *(*make_host_buffer_size)(uint16_t acl_size, uint8_t sco_size, uint16_t acl_count, uint16_t sco_count); + BT_HDR *(*make_read_local_version_info)(void); + BT_HDR *(*make_read_bd_addr)(void); + BT_HDR *(*make_read_local_supported_commands)(void); + BT_HDR *(*make_read_local_extended_features)(uint8_t page_number); + BT_HDR *(*make_write_simple_pairing_mode)(uint8_t mode); + BT_HDR *(*make_write_secure_connections_host_support)(uint8_t mode); + BT_HDR *(*make_set_event_mask)(const bt_event_mask_t *event_mask); + BT_HDR *(*make_ble_write_host_support)(uint8_t supported_host, uint8_t simultaneous_host); + BT_HDR *(*make_ble_read_white_list_size)(void); + BT_HDR *(*make_ble_read_buffer_size)(void); + BT_HDR *(*make_ble_read_supported_states)(void); + BT_HDR *(*make_ble_read_local_supported_features)(void); + BT_HDR *(*make_ble_read_resolving_list_size)(void); + BT_HDR *(*make_ble_read_suggested_default_data_length)(void); + BT_HDR *(*make_ble_set_event_mask)(const bt_event_mask_t *event_mask); } hci_packet_factory_t; const hci_packet_factory_t *hci_packet_factory_get_interface(); diff --git a/components/bt/bluedroid/hci/include/hci_packet_parser.h b/components/bt/bluedroid/hci/include/hci_packet_parser.h old mode 100755 new mode 100644 index 000397295c..916ea313f6 --- a/components/bt/bluedroid/hci/include/hci_packet_parser.h +++ b/components/bt/bluedroid/hci/include/hci_packet_parser.h @@ -29,69 +29,69 @@ #include "version.h" typedef struct { - void (*parse_generic_command_complete)(BT_HDR *response); + void (*parse_generic_command_complete)(BT_HDR *response); - void (*parse_read_buffer_size_response)( - BT_HDR *response, - uint16_t *data_size_ptr, - uint16_t *acl_buffer_count_ptr - ); + void (*parse_read_buffer_size_response)( + BT_HDR *response, + uint16_t *data_size_ptr, + uint16_t *acl_buffer_count_ptr + ); - void (*parse_read_local_version_info_response)( - BT_HDR *response, - bt_version_t *bt_version_ptr - ); + void (*parse_read_local_version_info_response)( + BT_HDR *response, + bt_version_t *bt_version_ptr + ); - void (*parse_read_bd_addr_response)( - BT_HDR *response, - bt_bdaddr_t *address_ptr - ); + void (*parse_read_bd_addr_response)( + BT_HDR *response, + bt_bdaddr_t *address_ptr + ); - void (*parse_read_local_supported_commands_response)( - BT_HDR *response, - uint8_t *supported_commands_ptr, - size_t supported_commands_length - ); + void (*parse_read_local_supported_commands_response)( + BT_HDR *response, + uint8_t *supported_commands_ptr, + size_t supported_commands_length + ); - void (*parse_read_local_extended_features_response)( - BT_HDR *response, - uint8_t *page_number_ptr, - uint8_t *max_page_number_ptr, - bt_device_features_t *feature_pages, - size_t feature_pages_count - ); + void (*parse_read_local_extended_features_response)( + BT_HDR *response, + uint8_t *page_number_ptr, + uint8_t *max_page_number_ptr, + bt_device_features_t *feature_pages, + size_t feature_pages_count + ); - void (*parse_ble_read_white_list_size_response)( - BT_HDR *response, - uint8_t *white_list_size_ptr - ); + void (*parse_ble_read_white_list_size_response)( + BT_HDR *response, + uint8_t *white_list_size_ptr + ); - void (*parse_ble_read_buffer_size_response)( - BT_HDR *response, - uint16_t *data_size_ptr, - uint8_t *acl_buffer_count_ptr - ); + void (*parse_ble_read_buffer_size_response)( + BT_HDR *response, + uint16_t *data_size_ptr, + uint8_t *acl_buffer_count_ptr + ); - void (*parse_ble_read_supported_states_response)( - BT_HDR *response, - uint8_t *supported_states, - size_t supported_states_size - ); + void (*parse_ble_read_supported_states_response)( + BT_HDR *response, + uint8_t *supported_states, + size_t supported_states_size + ); - void (*parse_ble_read_local_supported_features_response)( - BT_HDR *response, - bt_device_features_t *supported_features - ); + void (*parse_ble_read_local_supported_features_response)( + BT_HDR *response, + bt_device_features_t *supported_features + ); - void (*parse_ble_read_resolving_list_size_response) ( - BT_HDR *response, - uint8_t *resolving_list_size_ptr - ); + void (*parse_ble_read_resolving_list_size_response) ( + BT_HDR *response, + uint8_t *resolving_list_size_ptr + ); - void (*parse_ble_read_suggested_default_data_length_response)( - BT_HDR *response, - uint16_t *ble_default_packet_length_ptr - ); + void (*parse_ble_read_suggested_default_data_length_response)( + BT_HDR *response, + uint16_t *ble_default_packet_length_ptr + ); } hci_packet_parser_t; const hci_packet_parser_t *hci_packet_parser_get_interface(); diff --git a/components/bt/bluedroid/hci/include/packet_fragmenter.h b/components/bt/bluedroid/hci/include/packet_fragmenter.h old mode 100755 new mode 100644 index a6ba15c0c3..7227e0af2c --- a/components/bt/bluedroid/hci/include/packet_fragmenter.h +++ b/components/bt/bluedroid/hci/include/packet_fragmenter.h @@ -28,33 +28,33 @@ typedef void (*packet_reassembled_cb)(BT_HDR *packet); typedef void (*packet_fragmented_cb)(BT_HDR *packet, bool send_transmit_finished); typedef struct { - // Called for every packet fragment. - packet_fragmented_cb fragmented; + // Called for every packet fragment. + packet_fragmented_cb fragmented; - // Called for every completely reassembled packet. - packet_reassembled_cb reassembled; + // Called for every completely reassembled packet. + packet_reassembled_cb reassembled; - // Called when the fragmenter finishes sending all requested fragments, - // but the packet has not been entirely sent. - transmit_finished_cb transmit_finished; + // Called when the fragmenter finishes sending all requested fragments, + // but the packet has not been entirely sent. + transmit_finished_cb transmit_finished; } packet_fragmenter_callbacks_t; typedef struct packet_fragmenter_t { - // Initialize the fragmenter, specifying the |result_callbacks|. - void (*init)(const packet_fragmenter_callbacks_t *result_callbacks); + // Initialize the fragmenter, specifying the |result_callbacks|. + void (*init)(const packet_fragmenter_callbacks_t *result_callbacks); - // Release all resources associated with the fragmenter. - void (*cleanup)(void); + // Release all resources associated with the fragmenter. + void (*cleanup)(void); - // CHeck if Current fragmenter is ongoing - BT_HDR *(*fragment_current_packet)(void); + // CHeck if Current fragmenter is ongoing + BT_HDR *(*fragment_current_packet)(void); - // Fragments |packet| if necessary and hands off everything to the fragmented callback. - void (*fragment_and_dispatch)(BT_HDR *packet); - // If |packet| is a complete packet, forwards to the reassembled callback. Otherwise - // holds onto it until all fragments arrive, at which point the reassembled callback is called - // with the reassembled data. - void (*reassemble_and_dispatch)(BT_HDR *packet); + // Fragments |packet| if necessary and hands off everything to the fragmented callback. + void (*fragment_and_dispatch)(BT_HDR *packet); + // If |packet| is a complete packet, forwards to the reassembled callback. Otherwise + // holds onto it until all fragments arrive, at which point the reassembled callback is called + // with the reassembled data. + void (*reassemble_and_dispatch)(BT_HDR *packet); } packet_fragmenter_t; const packet_fragmenter_t *packet_fragmenter_get_interface(); diff --git a/components/bt/bluedroid/hci/packet_fragmenter.c b/components/bt/bluedroid/hci/packet_fragmenter.c old mode 100755 new mode 100644 index 1f2ad4a86c..42663a249a --- a/components/bt/bluedroid/hci/packet_fragmenter.c +++ b/components/bt/bluedroid/hci/packet_fragmenter.c @@ -51,188 +51,195 @@ static const packet_fragmenter_callbacks_t *callbacks; static hash_map_t *partial_packets; static BT_HDR *current_fragment_packet; -static void init(const packet_fragmenter_callbacks_t *result_callbacks) { - current_fragment_packet = NULL; - callbacks = result_callbacks; - partial_packets = hash_map_new(NUMBER_OF_BUCKETS, hash_function_naive, NULL, NULL, NULL); -} - -static void cleanup() { - if (partial_packets) - hash_map_free(partial_packets); -} - -static BT_HDR *fragment_get_current_packet() { - return current_fragment_packet; -} - -static void fragment_and_dispatch(BT_HDR *packet) { - uint16_t continuation_handle; - uint16_t max_data_size, max_packet_size, remaining_length; - uint16_t event = packet->event & MSG_EVT_MASK; - uint8_t *stream = packet->data + packet->offset; - - assert(packet != NULL); - - // We only fragment ACL packets - if (event != MSG_STACK_TO_HC_HCI_ACL) { - callbacks->fragmented(packet, true); - return; - } - - max_data_size = - SUB_EVENT(packet->event) == LOCAL_BR_EDR_CONTROLLER_ID ? - controller->get_acl_data_size_classic() : - controller->get_acl_data_size_ble(); - - max_packet_size = max_data_size + HCI_ACL_PREAMBLE_SIZE; - remaining_length = packet->len; - - STREAM_TO_UINT16(continuation_handle, stream); - continuation_handle = APPLY_CONTINUATION_FLAG(continuation_handle); - if (remaining_length > max_packet_size) { - current_fragment_packet = packet; - UINT16_TO_STREAM(stream, max_packet_size); - packet->len = max_packet_size; - callbacks->fragmented(packet, false); - packet->offset += max_data_size; - remaining_length -= max_data_size; - packet->len = remaining_length; - - // Write the ACL header for the next fragment - stream = packet->data + packet->offset; - UINT16_TO_STREAM(stream, continuation_handle); - UINT16_TO_STREAM(stream, remaining_length - HCI_ACL_PREAMBLE_SIZE); - - // Apparently L2CAP can set layer_specific to a max number of segments to transmit - if (packet->layer_specific) { - packet->layer_specific--; - if (packet->layer_specific == 0) { - packet->event = MSG_HC_TO_STACK_L2C_SEG_XMIT; - callbacks->transmit_finished(packet, false); - return; - } - } - } else { +static void init(const packet_fragmenter_callbacks_t *result_callbacks) +{ current_fragment_packet = NULL; - callbacks->fragmented(packet, true); - } + callbacks = result_callbacks; + partial_packets = hash_map_new(NUMBER_OF_BUCKETS, hash_function_naive, NULL, NULL, NULL); } -static void reassemble_and_dispatch(BT_HDR *packet) { - LOG_DEBUG("reassemble_and_dispatch\n"); - - if ((packet->event & MSG_EVT_MASK) == MSG_HC_TO_STACK_HCI_ACL) { - uint8_t *stream = packet->data; - uint16_t handle; - uint16_t l2cap_length; - uint16_t acl_length; - - STREAM_TO_UINT16(handle, stream); - STREAM_TO_UINT16(acl_length, stream); - STREAM_TO_UINT16(l2cap_length, stream); - - assert(acl_length == packet->len - HCI_ACL_PREAMBLE_SIZE); - - uint8_t boundary_flag = GET_BOUNDARY_FLAG(handle); - handle = handle & HANDLE_MASK; - - BT_HDR *partial_packet = (BT_HDR *)hash_map_get(partial_packets, (void *)(uintptr_t)handle); - - if (boundary_flag == START_PACKET_BOUNDARY) { - if (partial_packet) { - LOG_ERROR("%s found unfinished packet for handle with start packet. Dropping old.\n", __func__); - LOG_ERROR("partial_packet->len = %x, offset = %x\n",partial_packet->len,partial_packet->len); - - for (int i = 0; i < partial_packet->len; i++) - { - LOG_ERROR("%x",partial_packet->data[i]); - } - LOG_ERROR("\n"); - hash_map_erase(partial_packets, (void *)(uintptr_t)handle); - //buffer_allocator->free(partial_packet); - LOG_ERROR("+++++++++++++++++++\n"); - } - - uint16_t full_length = l2cap_length + L2CAP_HEADER_SIZE + HCI_ACL_PREAMBLE_SIZE; - if (full_length <= packet->len) { - if (full_length < packet->len) - LOG_WARN("%s found l2cap full length %d less than the hci length %d.\n", __func__, l2cap_length, packet->len); - - callbacks->reassembled(packet); - return; - } - - partial_packet = (BT_HDR *)buffer_allocator->alloc(full_length + sizeof(BT_HDR)); - partial_packet->event = packet->event; - partial_packet->len = full_length; - partial_packet->offset = packet->len; - - memcpy(partial_packet->data, packet->data, packet->len); - - // Update the ACL data size to indicate the full expected length - stream = partial_packet->data; - STREAM_SKIP_UINT16(stream); // skip the handle - UINT16_TO_STREAM(stream, full_length - HCI_ACL_PREAMBLE_SIZE); - - hash_map_set(partial_packets, (void *)(uintptr_t)handle, partial_packet); - // Free the old packet buffer, since we don't need it anymore - buffer_allocator->free(packet); - } else { - if (!partial_packet) { - LOG_ERROR("%s got continuation for unknown packet. Dropping it.\n", __func__); - buffer_allocator->free(packet); - return; - } - - packet->offset = HCI_ACL_PREAMBLE_SIZE; - uint16_t projected_offset = partial_packet->offset + (packet->len - HCI_ACL_PREAMBLE_SIZE); - if (projected_offset > partial_packet->len) { // len stores the expected length - LOG_ERROR("%s got packet which would exceed expected length of %d. Truncating.\n", __func__, partial_packet->len); - packet->len = partial_packet->len - partial_packet->offset; - projected_offset = partial_packet->len; - } - - memcpy( - partial_packet->data + partial_packet->offset, - packet->data + packet->offset, - packet->len - packet->offset - ); - - // Free the old packet buffer, since we don't need it anymore - buffer_allocator->free(packet); - partial_packet->offset = projected_offset; - - if (partial_packet->offset == partial_packet->len) { - stream = partial_packet->data; - STREAM_TO_UINT16(handle, stream); - STREAM_TO_UINT16(acl_length, stream); - STREAM_TO_UINT16(l2cap_length, stream); - LOG_ERROR("partial_packet->offset = %x\n",partial_packet->offset); - hash_map_erase(partial_packets, (void *)(uintptr_t)handle); - partial_packet->offset = 0; - - - callbacks->reassembled(partial_packet); - } +static void cleanup() +{ + if (partial_packets) { + hash_map_free(partial_packets); + } +} + +static BT_HDR *fragment_get_current_packet() +{ + return current_fragment_packet; +} + +static void fragment_and_dispatch(BT_HDR *packet) +{ + uint16_t continuation_handle; + uint16_t max_data_size, max_packet_size, remaining_length; + uint16_t event = packet->event & MSG_EVT_MASK; + uint8_t *stream = packet->data + packet->offset; + + assert(packet != NULL); + + // We only fragment ACL packets + if (event != MSG_STACK_TO_HC_HCI_ACL) { + callbacks->fragmented(packet, true); + return; + } + + max_data_size = + SUB_EVENT(packet->event) == LOCAL_BR_EDR_CONTROLLER_ID ? + controller->get_acl_data_size_classic() : + controller->get_acl_data_size_ble(); + + max_packet_size = max_data_size + HCI_ACL_PREAMBLE_SIZE; + remaining_length = packet->len; + + STREAM_TO_UINT16(continuation_handle, stream); + continuation_handle = APPLY_CONTINUATION_FLAG(continuation_handle); + if (remaining_length > max_packet_size) { + current_fragment_packet = packet; + UINT16_TO_STREAM(stream, max_packet_size); + packet->len = max_packet_size; + callbacks->fragmented(packet, false); + packet->offset += max_data_size; + remaining_length -= max_data_size; + packet->len = remaining_length; + + // Write the ACL header for the next fragment + stream = packet->data + packet->offset; + UINT16_TO_STREAM(stream, continuation_handle); + UINT16_TO_STREAM(stream, remaining_length - HCI_ACL_PREAMBLE_SIZE); + + // Apparently L2CAP can set layer_specific to a max number of segments to transmit + if (packet->layer_specific) { + packet->layer_specific--; + if (packet->layer_specific == 0) { + packet->event = MSG_HC_TO_STACK_L2C_SEG_XMIT; + callbacks->transmit_finished(packet, false); + return; + } + } + } else { + current_fragment_packet = NULL; + callbacks->fragmented(packet, true); + } +} + +static void reassemble_and_dispatch(BT_HDR *packet) +{ + LOG_DEBUG("reassemble_and_dispatch\n"); + + if ((packet->event & MSG_EVT_MASK) == MSG_HC_TO_STACK_HCI_ACL) { + uint8_t *stream = packet->data; + uint16_t handle; + uint16_t l2cap_length; + uint16_t acl_length; + + STREAM_TO_UINT16(handle, stream); + STREAM_TO_UINT16(acl_length, stream); + STREAM_TO_UINT16(l2cap_length, stream); + + assert(acl_length == packet->len - HCI_ACL_PREAMBLE_SIZE); + + uint8_t boundary_flag = GET_BOUNDARY_FLAG(handle); + handle = handle & HANDLE_MASK; + + BT_HDR *partial_packet = (BT_HDR *)hash_map_get(partial_packets, (void *)(uintptr_t)handle); + + if (boundary_flag == START_PACKET_BOUNDARY) { + if (partial_packet) { + LOG_ERROR("%s found unfinished packet for handle with start packet. Dropping old.\n", __func__); + LOG_ERROR("partial_packet->len = %x, offset = %x\n", partial_packet->len, partial_packet->len); + + for (int i = 0; i < partial_packet->len; i++) { + LOG_ERROR("%x", partial_packet->data[i]); + } + LOG_ERROR("\n"); + hash_map_erase(partial_packets, (void *)(uintptr_t)handle); + //buffer_allocator->free(partial_packet); + LOG_ERROR("+++++++++++++++++++\n"); + } + + uint16_t full_length = l2cap_length + L2CAP_HEADER_SIZE + HCI_ACL_PREAMBLE_SIZE; + if (full_length <= packet->len) { + if (full_length < packet->len) { + LOG_WARN("%s found l2cap full length %d less than the hci length %d.\n", __func__, l2cap_length, packet->len); + } + + callbacks->reassembled(packet); + return; + } + + partial_packet = (BT_HDR *)buffer_allocator->alloc(full_length + sizeof(BT_HDR)); + partial_packet->event = packet->event; + partial_packet->len = full_length; + partial_packet->offset = packet->len; + + memcpy(partial_packet->data, packet->data, packet->len); + + // Update the ACL data size to indicate the full expected length + stream = partial_packet->data; + STREAM_SKIP_UINT16(stream); // skip the handle + UINT16_TO_STREAM(stream, full_length - HCI_ACL_PREAMBLE_SIZE); + + hash_map_set(partial_packets, (void *)(uintptr_t)handle, partial_packet); + // Free the old packet buffer, since we don't need it anymore + buffer_allocator->free(packet); + } else { + if (!partial_packet) { + LOG_ERROR("%s got continuation for unknown packet. Dropping it.\n", __func__); + buffer_allocator->free(packet); + return; + } + + packet->offset = HCI_ACL_PREAMBLE_SIZE; + uint16_t projected_offset = partial_packet->offset + (packet->len - HCI_ACL_PREAMBLE_SIZE); + if (projected_offset > partial_packet->len) { // len stores the expected length + LOG_ERROR("%s got packet which would exceed expected length of %d. Truncating.\n", __func__, partial_packet->len); + packet->len = partial_packet->len - partial_packet->offset; + projected_offset = partial_packet->len; + } + + memcpy( + partial_packet->data + partial_packet->offset, + packet->data + packet->offset, + packet->len - packet->offset + ); + + // Free the old packet buffer, since we don't need it anymore + buffer_allocator->free(packet); + partial_packet->offset = projected_offset; + + if (partial_packet->offset == partial_packet->len) { + stream = partial_packet->data; + STREAM_TO_UINT16(handle, stream); + STREAM_TO_UINT16(acl_length, stream); + STREAM_TO_UINT16(l2cap_length, stream); + LOG_ERROR("partial_packet->offset = %x\n", partial_packet->offset); + hash_map_erase(partial_packets, (void *)(uintptr_t)handle); + partial_packet->offset = 0; + + + callbacks->reassembled(partial_packet); + } + } + } else { + callbacks->reassembled(packet); } - } else { - callbacks->reassembled(packet); - } } static const packet_fragmenter_t interface = { - init, - cleanup, + init, + cleanup, - fragment_get_current_packet, - fragment_and_dispatch, - reassemble_and_dispatch + fragment_get_current_packet, + fragment_and_dispatch, + reassemble_and_dispatch }; -const packet_fragmenter_t *packet_fragmenter_get_interface() { - controller = controller_get_interface(); - buffer_allocator = buffer_allocator_get_interface(); - return &interface; +const packet_fragmenter_t *packet_fragmenter_get_interface() +{ + controller = controller_get_interface(); + buffer_allocator = buffer_allocator_get_interface(); + return &interface; } diff --git a/components/bt/bluedroid/include/bt_defs.h b/components/bt/bluedroid/include/bt_defs.h old mode 100755 new mode 100644 index 8358998556..3f12d578a1 --- a/components/bt/bluedroid/include/bt_defs.h +++ b/components/bt/bluedroid/include/bt_defs.h @@ -14,7 +14,7 @@ /** * bt_defs.h Defines useful API for whole Bluedroid - * + * */ #ifndef _BT_DEFS_H_ #define _BT_DEFS_H_ @@ -55,21 +55,21 @@ do { \ #define pthread_mutex_unlock osi_mutex_unlock #else #define pthread_mutex_t uint8_t -#define pthread_mutex_init(x1, x2) -#define pthread_mutex_destroy(mutex) -#define pthread_mutex_lock(mutex) -#define pthread_mutex_unlock(mutex) +#define pthread_mutex_init(x1, x2) +#define pthread_mutex_destroy(mutex) +#define pthread_mutex_lock(mutex) +#define pthread_mutex_unlock(mutex) #endif /*Bluetooth Address*/ typedef struct { - uint8_t address[6]; + uint8_t address[6]; } __attribute__ ((__packed__)) bt_bdaddr_t; /** Bluetooth 128-bit UUID */ typedef struct { - uint8_t uu[16]; + uint8_t uu[16]; } bt_uuid_t; /** Bluetooth Error Status */ @@ -94,54 +94,60 @@ typedef enum { #define CPU_LITTLE_ENDIAN #endif -inline uint16_t swap_byte_16(uint16_t x) { - return (((x & 0x00ffU) << 8) | - ((x & 0xff00U) >> 8)); +inline uint16_t swap_byte_16(uint16_t x) +{ + return (((x & 0x00ffU) << 8) | + ((x & 0xff00U) >> 8)); } -inline uint32_t swap_byte_32(uint32_t x) { - return (((x & 0x000000ffUL) << 24) | - ((x & 0x0000ff00UL) << 8) | - ((x & 0x00ff0000UL) >> 8) | - ((x & 0xff000000UL) >> 24)); +inline uint32_t swap_byte_32(uint32_t x) +{ + return (((x & 0x000000ffUL) << 24) | + ((x & 0x0000ff00UL) << 8) | + ((x & 0x00ff0000UL) >> 8) | + ((x & 0xff000000UL) >> 24)); } #ifndef ntohs -inline uint16_t ntohs(uint16_t x) { +inline uint16_t ntohs(uint16_t x) +{ #ifdef CPU_LITTLE_ENDIAN - return swap_byte_16(x); + return swap_byte_16(x); #else - return x; + return x; #endif } #endif /* #ifndef ntohs */ #ifndef htons -inline uint16_t htons(uint16_t x) { +inline uint16_t htons(uint16_t x) +{ #ifdef CPU_LITTLE_ENDIAN - return swap_byte_16(x); + return swap_byte_16(x); #else - return x; + return x; #endif } #endif /* #ifndef htons */ #ifndef ntohl -inline uint32_t ntohl(uint32_t x) { +inline uint32_t ntohl(uint32_t x) +{ #ifdef CPU_LITTLE_ENDIAN - return swap_byte_32(x); + return swap_byte_32(x); #else - return x; + return x; #endif } #endif /* #ifndef ntohl*/ #ifndef htonl -inline uint32_t htonl(uint32_t x) { +inline uint32_t htonl(uint32_t x) +{ #ifdef CPU_LITTLE_ENDIAN - return swap_byte_32(x); + return swap_byte_32(x); #else - return x; + return x; #endif } #endif /* #ifndef htonl*/ diff --git a/components/bt/bluedroid/include/bt_target.h b/components/bt/bluedroid/include/bt_target.h old mode 100755 new mode 100644 index bb9d59860d..5f894a5d61 --- a/components/bt/bluedroid/include/bt_target.h +++ b/components/bt/bluedroid/include/bt_target.h @@ -41,9 +41,9 @@ #include "dyn_mem.h" /* defines static and/or dynamic memory for components */ -#ifndef CLASSIC_BT_INCLUDED -#define CLASSIC_BT_INCLUDED TRUE -#endif ///CLASSIC_BT_INCLUDED +#ifndef CLASSIC_BT_INCLUDED +#define CLASSIC_BT_INCLUDED TRUE +#endif ///CLASSIC_BT_INCLUDED //------------------Added from bdroid_buildcfg.h--------------------- #ifndef L2CAP_EXTFEA_SUPPORTED_MASK @@ -921,7 +921,7 @@ #endif #endif - + #if SMP_INCLUDED == TRUE && BLE_INCLUDED == FALSE #error "can't have SMP without BLE" #endif @@ -1557,7 +1557,7 @@ Range: 2 octets #endif #ifndef HID_HOST_MAX_CONN_RETRY -#define HID_HOST_MAX_CONN_RETRY (3) +#define HID_HOST_MAX_CONN_RETRY (3) #endif #ifndef HID_HOST_REPAGE_WIN diff --git a/components/bt/bluedroid/include/bt_trace.h b/components/bt/bluedroid/include/bt_trace.h old mode 100755 new mode 100644 index 06d2aee0ef..14f258a601 --- a/components/bt/bluedroid/include/bt_trace.h +++ b/components/bt/bluedroid/include/bt_trace.h @@ -25,31 +25,34 @@ #include "rom/ets_sys.h" #ifdef CONFIG_BT_USE_ETS_PRINT -#define BT_PRINTF ets_printf +#define BT_PRINTF ets_printf #else -#define BT_PRINTF printf +#define BT_PRINTF printf #endif #ifndef assert -#define assert(x) do { if (!(x)) BT_PRINTF("bt host error %s %u\n", __FILE__, __LINE__); } while (0) +#define assert(x) do { if (!(x)) BT_PRINTF("bt host error %s %u\n", __FILE__, __LINE__); } while (0) #endif inline void trc_dump_buffer(uint8_t *prefix, uint8_t *data, uint16_t len) { - uint16_t i; + uint16_t i; - if (!data || !len) - return; + if (!data || !len) { + return; + } - if (prefix) - BT_PRINTF("%s:\t", prefix); + if (prefix) { + BT_PRINTF("%s:\t", prefix); + } - for (i = 0; i < len; i++) { - BT_PRINTF(" %02x", *(data + i)); - if (!((i + 1) & 0xf)) - BT_PRINTF("\n"); - } - BT_PRINTF("\n"); + for (i = 0; i < len; i++) { + BT_PRINTF(" %02x", *(data + i)); + if (!((i + 1) & 0xf)) { + BT_PRINTF("\n"); + } + } + BT_PRINTF("\n"); } #ifdef BTTRC_DUMP_BUFFER @@ -262,187 +265,187 @@ inline void trc_dump_buffer(uint8_t *prefix, uint8_t *data, uint16_t len) // btla-specific -- /* Define common tracing for all */ -#define LOG_LEVEL_ERROR 1 -#define LOG_LEVEL_WARN 2 -#define LOG_LEVEL_INFO 3 -#define LOG_LEVEL_DEBUG 4 -#define LOG_LEVEL_VERBOSE 5 +#define LOG_LEVEL_ERROR 1 +#define LOG_LEVEL_WARN 2 +#define LOG_LEVEL_INFO 3 +#define LOG_LEVEL_DEBUG 4 +#define LOG_LEVEL_VERBOSE 5 #ifndef LOG_LEVEL -#define LOG_LEVEL LOG_LEVEL_INFO +#define LOG_LEVEL LOG_LEVEL_INFO #endif -#define LOG_ERROR(fmt, args...) do {if (LOG_LEVEL >= LOG_LEVEL_ERROR) printf(fmt,## args);} while(0) -#define LOG_WARN(fmt, args...) do {if (LOG_LEVEL >= LOG_LEVEL_WARN) BT_PRINTF(fmt,## args);} while(0) -#define LOG_INFO(fmt, args...) do {if (LOG_LEVEL >= LOG_LEVEL_INFO) BT_PRINTF(fmt,## args);} while(0) -#define LOG_DEBUG(fmt, args...) do {if (LOG_LEVEL >= LOG_LEVEL_DEBUG) BT_PRINTF(fmt,## args);} while(0) -#define LOG_VERBOSE(fmt, args...) do {if (LOG_LEVEL >= LOG_LEVEL_VERBOSE) BT_PRINTF(fmt,## args);} while(0) +#define LOG_ERROR(fmt, args...) do {if (LOG_LEVEL >= LOG_LEVEL_ERROR) printf(fmt,## args);} while(0) +#define LOG_WARN(fmt, args...) do {if (LOG_LEVEL >= LOG_LEVEL_WARN) BT_PRINTF(fmt,## args);} while(0) +#define LOG_INFO(fmt, args...) do {if (LOG_LEVEL >= LOG_LEVEL_INFO) BT_PRINTF(fmt,## args);} while(0) +#define LOG_DEBUG(fmt, args...) do {if (LOG_LEVEL >= LOG_LEVEL_DEBUG) BT_PRINTF(fmt,## args);} while(0) +#define LOG_VERBOSE(fmt, args...) do {if (LOG_LEVEL >= LOG_LEVEL_VERBOSE) BT_PRINTF(fmt,## args);} while(0) /* Define tracing for the HCI unit */ -#define HCI_TRACE_ERROR(fmt, args...) {if (btu_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt,## args);} -#define HCI_TRACE_WARNING(fmt, args...) {if (btu_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt,## args);} -#define HCI_TRACE_EVENT(fmt, args...) {if (btu_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt,## args);} -#define HCI_TRACE_DEBUG(fmt, args...) {if (btu_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt,## args);} +#define HCI_TRACE_ERROR(fmt, args...) {if (btu_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt,## args);} +#define HCI_TRACE_WARNING(fmt, args...) {if (btu_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt,## args);} +#define HCI_TRACE_EVENT(fmt, args...) {if (btu_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt,## args);} +#define HCI_TRACE_DEBUG(fmt, args...) {if (btu_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt,## args);} /* Define tracing for BTM */ -#define BTM_TRACE_ERROR(fmt, args...) {if (btm_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} -#define BTM_TRACE_WARNING(fmt, args...) {if (btm_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} -#define BTM_TRACE_API(fmt, args...) {if (btm_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} -#define BTM_TRACE_EVENT(fmt, args...) {if (btm_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} -#define BTM_TRACE_DEBUG(fmt, args...) {if (btm_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} +#define BTM_TRACE_ERROR(fmt, args...) {if (btm_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} +#define BTM_TRACE_WARNING(fmt, args...) {if (btm_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} +#define BTM_TRACE_API(fmt, args...) {if (btm_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} +#define BTM_TRACE_EVENT(fmt, args...) {if (btm_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} +#define BTM_TRACE_DEBUG(fmt, args...) {if (btm_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} /* Define tracing for the L2CAP unit */ -#define L2CAP_TRACE_ERROR(fmt, args...) {if (l2cb.l2cap_trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} -#define L2CAP_TRACE_WARNING(fmt, args...) {if (l2cb.l2cap_trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} -#define L2CAP_TRACE_API(fmt, args...) {if (l2cb.l2cap_trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} -#define L2CAP_TRACE_EVENT(fmt, args...) {if (l2cb.l2cap_trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} -#define L2CAP_TRACE_DEBUG(fmt, args...) {if (l2cb.l2cap_trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} +#define L2CAP_TRACE_ERROR(fmt, args...) {if (l2cb.l2cap_trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} +#define L2CAP_TRACE_WARNING(fmt, args...) {if (l2cb.l2cap_trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} +#define L2CAP_TRACE_API(fmt, args...) {if (l2cb.l2cap_trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} +#define L2CAP_TRACE_EVENT(fmt, args...) {if (l2cb.l2cap_trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} +#define L2CAP_TRACE_DEBUG(fmt, args...) {if (l2cb.l2cap_trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} /* Define tracing for the SDP unit */ -#define SDP_TRACE_ERROR(fmt, args...) {if (sdp_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} -#define SDP_TRACE_WARNING(fmt, args...) {if (sdp_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} -#define SDP_TRACE_API(fmt, args...) {if (sdp_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} -#define SDP_TRACE_EVENT(fmt, args...) {if (sdp_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} -#define SDP_TRACE_DEBUG(fmt, args...) {if (sdp_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} +#define SDP_TRACE_ERROR(fmt, args...) {if (sdp_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} +#define SDP_TRACE_WARNING(fmt, args...) {if (sdp_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} +#define SDP_TRACE_API(fmt, args...) {if (sdp_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} +#define SDP_TRACE_EVENT(fmt, args...) {if (sdp_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} +#define SDP_TRACE_DEBUG(fmt, args...) {if (sdp_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} /* Define tracing for the RFCOMM unit */ -#define RFCOMM_TRACE_ERROR(fmt, args...) {if (rfc_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} -#define RFCOMM_TRACE_WARNING(fmt, args...) {if (rfc_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} -#define RFCOMM_TRACE_API(fmt, args...) {if (rfc_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} -#define RFCOMM_TRACE_EVENT(fmt, args...) {if (rfc_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} -#define RFCOMM_TRACE_DEBUG(fmt, args...) {if (rfc_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} +#define RFCOMM_TRACE_ERROR(fmt, args...) {if (rfc_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} +#define RFCOMM_TRACE_WARNING(fmt, args...) {if (rfc_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} +#define RFCOMM_TRACE_API(fmt, args...) {if (rfc_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} +#define RFCOMM_TRACE_EVENT(fmt, args...) {if (rfc_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} +#define RFCOMM_TRACE_DEBUG(fmt, args...) {if (rfc_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} /* Generic Access Profile traces */ -#define GAP_TRACE_ERROR(fmt, args...) {if (gap_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} -#define GAP_TRACE_EVENT(fmt, args...) {if (gap_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} -#define GAP_TRACE_API(fmt, args...) {if (gap_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} -#define GAP_TRACE_WARNING(fmt, args...) {if (gap_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} +#define GAP_TRACE_ERROR(fmt, args...) {if (gap_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} +#define GAP_TRACE_EVENT(fmt, args...) {if (gap_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} +#define GAP_TRACE_API(fmt, args...) {if (gap_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} +#define GAP_TRACE_WARNING(fmt, args...) {if (gap_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} /* define traces for HID Host */ -#define HIDH_TRACE_ERROR(fmt, args...) {if (hh_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} -#define HIDH_TRACE_WARNING(fmt, args...) {if (hh_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} -#define HIDH_TRACE_API(fmt, args...) {if (hh_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} -#define HIDH_TRACE_EVENT(fmt, args...) {if (hh_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} -#define HIDH_TRACE_DEBUG(fmt, args...) {if (hh_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} +#define HIDH_TRACE_ERROR(fmt, args...) {if (hh_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} +#define HIDH_TRACE_WARNING(fmt, args...) {if (hh_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} +#define HIDH_TRACE_API(fmt, args...) {if (hh_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} +#define HIDH_TRACE_EVENT(fmt, args...) {if (hh_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} +#define HIDH_TRACE_DEBUG(fmt, args...) {if (hh_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} /* define traces for BNEP */ -#define BNEP_TRACE_ERROR(fmt, args...) {if (bnep_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} -#define BNEP_TRACE_WARNING(fmt, args...) {if (bnep_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} -#define BNEP_TRACE_API(fmt, args...) {if (bnep_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} -#define BNEP_TRACE_EVENT(fmt, args...) {if (bnep_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} -#define BNEP_TRACE_DEBUG(fmt, args...) {if (bnep_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} +#define BNEP_TRACE_ERROR(fmt, args...) {if (bnep_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} +#define BNEP_TRACE_WARNING(fmt, args...) {if (bnep_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} +#define BNEP_TRACE_API(fmt, args...) {if (bnep_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} +#define BNEP_TRACE_EVENT(fmt, args...) {if (bnep_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} +#define BNEP_TRACE_DEBUG(fmt, args...) {if (bnep_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} /* define traces for PAN */ -#define PAN_TRACE_ERROR(fmt, args...) {if (pan_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} -#define PAN_TRACE_WARNING(fmt, args...) {if (pan_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} -#define PAN_TRACE_API(fmt, args...) {if (pan_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} -#define PAN_TRACE_EVENT(fmt, args...) {if (pan_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} -#define PAN_TRACE_DEBUG(fmt, args...) {if (pan_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} +#define PAN_TRACE_ERROR(fmt, args...) {if (pan_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} +#define PAN_TRACE_WARNING(fmt, args...) {if (pan_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} +#define PAN_TRACE_API(fmt, args...) {if (pan_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} +#define PAN_TRACE_EVENT(fmt, args...) {if (pan_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} +#define PAN_TRACE_DEBUG(fmt, args...) {if (pan_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} /* Define tracing for the A2DP profile */ -#define A2D_TRACE_ERROR(fmt, args...) {if (a2d_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} -#define A2D_TRACE_WARNING(fmt, args...) {if (a2d_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} -#define A2D_TRACE_EVENT(fmt, args...) {if (a2d_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} -#define A2D_TRACE_DEBUG(fmt, args...) {if (a2d_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} -#define A2D_TRACE_API(fmt, args...) {if (a2d_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} +#define A2D_TRACE_ERROR(fmt, args...) {if (a2d_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} +#define A2D_TRACE_WARNING(fmt, args...) {if (a2d_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} +#define A2D_TRACE_EVENT(fmt, args...) {if (a2d_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} +#define A2D_TRACE_DEBUG(fmt, args...) {if (a2d_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} +#define A2D_TRACE_API(fmt, args...) {if (a2d_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} /* AVDTP */ -#define AVDT_TRACE_ERROR(fmt, args...) {if (avdt_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} -#define AVDT_TRACE_WARNING(fmt, args...) {if (avdt_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} -#define AVDT_TRACE_EVENT(fmt, args...) {if (avdt_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} -#define AVDT_TRACE_DEBUG(fmt, args...) {if (avdt_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} -#define AVDT_TRACE_API(fmt, args...) {if (avdt_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} +#define AVDT_TRACE_ERROR(fmt, args...) {if (avdt_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} +#define AVDT_TRACE_WARNING(fmt, args...) {if (avdt_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} +#define AVDT_TRACE_EVENT(fmt, args...) {if (avdt_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} +#define AVDT_TRACE_DEBUG(fmt, args...) {if (avdt_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} +#define AVDT_TRACE_API(fmt, args...) {if (avdt_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} /* Define tracing for the AVCTP protocol */ -#define AVCT_TRACE_ERROR(fmt, args...) {if (avct_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} -#define AVCT_TRACE_WARNING(fmt, args...) {if (avct_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} -#define AVCT_TRACE_EVENT(fmt, args...) {if (avct_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} -#define AVCT_TRACE_DEBUG(fmt, args...) {if (avct_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} -#define AVCT_TRACE_API(fmt, args...) {if (avct_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} +#define AVCT_TRACE_ERROR(fmt, args...) {if (avct_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} +#define AVCT_TRACE_WARNING(fmt, args...) {if (avct_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} +#define AVCT_TRACE_EVENT(fmt, args...) {if (avct_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} +#define AVCT_TRACE_DEBUG(fmt, args...) {if (avct_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} +#define AVCT_TRACE_API(fmt, args...) {if (avct_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} /* Define tracing for the AVRCP profile */ -#define AVRC_TRACE_ERROR(fmt, args...) {if (avrc_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} -#define AVRC_TRACE_WARNING(fmt, args...) {if (avrc_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} -#define AVRC_TRACE_EVENT(fmt, args...) {if (avrc_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} -#define AVRC_TRACE_DEBUG(fmt, args...) {if (avrc_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} -#define AVRC_TRACE_API(fmt, args...) {if (avrc_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} +#define AVRC_TRACE_ERROR(fmt, args...) {if (avrc_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} +#define AVRC_TRACE_WARNING(fmt, args...) {if (avrc_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} +#define AVRC_TRACE_EVENT(fmt, args...) {if (avrc_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} +#define AVRC_TRACE_DEBUG(fmt, args...) {if (avrc_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} +#define AVRC_TRACE_API(fmt, args...) {if (avrc_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} /* MCAP */ -#define MCA_TRACE_ERROR(fmt, args...) {if (mca_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} -#define MCA_TRACE_WARNING(fmt, args...) {if (mca_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} -#define MCA_TRACE_EVENT(fmt, args...) {if (mca_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} -#define MCA_TRACE_DEBUG(fmt, args...) {if (mca_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} -#define MCA_TRACE_API(fmt, args...) {if (mca_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} +#define MCA_TRACE_ERROR(fmt, args...) {if (mca_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} +#define MCA_TRACE_WARNING(fmt, args...) {if (mca_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} +#define MCA_TRACE_EVENT(fmt, args...) {if (mca_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} +#define MCA_TRACE_DEBUG(fmt, args...) {if (mca_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} +#define MCA_TRACE_API(fmt, args...) {if (mca_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} /* Define tracing for the ATT/GATT unit */ -#define GATT_TRACE_ERROR(fmt, args...) {if (gatt_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} -#define GATT_TRACE_WARNING(fmt, args...) {if (gatt_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} -#define GATT_TRACE_API(fmt, args...) {if (gatt_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} -#define GATT_TRACE_EVENT(fmt, args...) {if (gatt_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} -#define GATT_TRACE_DEBUG(fmt, args...) {if (gatt_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} +#define GATT_TRACE_ERROR(fmt, args...) {if (gatt_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} +#define GATT_TRACE_WARNING(fmt, args...) {if (gatt_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} +#define GATT_TRACE_API(fmt, args...) {if (gatt_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} +#define GATT_TRACE_EVENT(fmt, args...) {if (gatt_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} +#define GATT_TRACE_DEBUG(fmt, args...) {if (gatt_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} /* Define tracing for the SMP unit */ -#define SMP_TRACE_ERROR(fmt, args...) {if (smp_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} -#define SMP_TRACE_WARNING(fmt, args...) {if (smp_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} -#define SMP_TRACE_API(fmt, args...) {if (smp_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} -#define SMP_TRACE_EVENT(fmt, args...) {if (smp_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} -#define SMP_TRACE_DEBUG(fmt, args...) {if (smp_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} +#define SMP_TRACE_ERROR(fmt, args...) {if (smp_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} +#define SMP_TRACE_WARNING(fmt, args...) {if (smp_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} +#define SMP_TRACE_API(fmt, args...) {if (smp_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} +#define SMP_TRACE_EVENT(fmt, args...) {if (smp_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} +#define SMP_TRACE_DEBUG(fmt, args...) {if (smp_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} extern UINT8 btif_trace_level; // define traces for application -#define BTIF_TRACE_ERROR(fmt, args...) {if (btif_trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} -#define BTIF_TRACE_WARNING(fmt, args...) {if (btif_trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} -#define BTIF_TRACE_API(fmt, args...) {if (btif_trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} -#define BTIF_TRACE_EVENT(fmt, args...) {if (btif_trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} -#define BTIF_TRACE_DEBUG(fmt, args...) {if (btif_trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} -#define BTIF_TRACE_VERBOSE(fmt, args...) {if (btif_trace_level >= BT_TRACE_LEVEL_VERBOSE)BT_PRINTF(fmt, ## args);} +#define BTIF_TRACE_ERROR(fmt, args...) {if (btif_trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} +#define BTIF_TRACE_WARNING(fmt, args...) {if (btif_trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} +#define BTIF_TRACE_API(fmt, args...) {if (btif_trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} +#define BTIF_TRACE_EVENT(fmt, args...) {if (btif_trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} +#define BTIF_TRACE_DEBUG(fmt, args...) {if (btif_trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} +#define BTIF_TRACE_VERBOSE(fmt, args...) {if (btif_trace_level >= BT_TRACE_LEVEL_VERBOSE)BT_PRINTF(fmt, ## args);} /* define traces for application */ -#define APPL_TRACE_ERROR(fmt, args...) {if (appl_trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} -#define APPL_TRACE_WARNING(fmt, args...) {if (appl_trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} -#define APPL_TRACE_API(fmt, args...) {if (appl_trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} -#define APPL_TRACE_EVENT(fmt, args...) {if (appl_trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} -#define APPL_TRACE_DEBUG(fmt, args...) {if (appl_trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} -#define APPL_TRACE_VERBOSE(fmt, args...) {if (appl_trace_level >= BT_TRACE_LEVEL_VERBOSE) BT_PRINTF(fmt, ## args);} +#define APPL_TRACE_ERROR(fmt, args...) {if (appl_trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);} +#define APPL_TRACE_WARNING(fmt, args...) {if (appl_trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);} +#define APPL_TRACE_API(fmt, args...) {if (appl_trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);} +#define APPL_TRACE_EVENT(fmt, args...) {if (appl_trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);} +#define APPL_TRACE_DEBUG(fmt, args...) {if (appl_trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);} +#define APPL_TRACE_VERBOSE(fmt, args...) {if (appl_trace_level >= BT_TRACE_LEVEL_VERBOSE) BT_PRINTF(fmt, ## args);} /* Simplified Trace Helper Macro */ #define bdld(fmt, args...) \ do{\ if((MY_LOG_LEVEL) >= BT_TRACE_LEVEL_DEBUG) \ - BT_PRINTF(fmt, ## args); \ + BT_PRINTF(fmt, ## args); \ }while(0) #define bdlw(fmt, args...) \ do{\ if((MY_LOG_LEVEL) >= BT_TRACE_LEVEL_DEBUG) \ - BT_PRINTF(fmt, ## args); \ + BT_PRINTF(fmt, ## args); \ }while(0) #define bdle(fmt, args...) \ do{\ if((MY_LOG_LEVEL) >= BT_TRACE_LEVEL_DEBUG) \ - BT_PRINTF(fmt, ## args); \ + BT_PRINTF(fmt, ## args); \ }while(0) #define bdla(assert_if) \ do{\ if(((MY_LOG_LEVEL) >= BT_TRACE_LEVEL_ERROR) && !(assert_if)) \ - BT_PRINTF("%s: assert failed\n", #assert_if); \ + BT_PRINTF("%s: assert failed\n", #assert_if); \ }while(0) typedef UINT8 tBTTRC_PARAM_TYPE; diff --git a/components/bt/bluedroid/include/bt_vendor_lib.h b/components/bt/bluedroid/include/bt_vendor_lib.h old mode 100755 new mode 100644 index 3d563e1bed..e3a8ec8dbf --- a/components/bt/bluedroid/include/bt_vendor_lib.h +++ b/components/bt/bluedroid/include/bt_vendor_lib.h @@ -30,142 +30,142 @@ /** Vendor specific operations OPCODE */ typedef enum { -/* [operation] - * Power on or off the BT Controller. - * [input param] - * A pointer to int type with content of bt_vendor_power_state_t. - * Typecasting conversion: (int *) param. - * [return] - * 0 - default, don't care. - * [callback] - * None. - */ + /* [operation] + * Power on or off the BT Controller. + * [input param] + * A pointer to int type with content of bt_vendor_power_state_t. + * Typecasting conversion: (int *) param. + * [return] + * 0 - default, don't care. + * [callback] + * None. + */ BT_VND_OP_POWER_CTRL, -/* [operation] - * Perform any vendor specific initialization or configuration - * on the BT Controller. This is called before stack initialization. - * [input param] - * None. - * [return] - * 0 - default, don't care. - * [callback] - * Must call fwcfg_cb to notify the stack of the completion of vendor - * specific initialization once it has been done. - */ + /* [operation] + * Perform any vendor specific initialization or configuration + * on the BT Controller. This is called before stack initialization. + * [input param] + * None. + * [return] + * 0 - default, don't care. + * [callback] + * Must call fwcfg_cb to notify the stack of the completion of vendor + * specific initialization once it has been done. + */ BT_VND_OP_FW_CFG, -/* [operation] - * Perform any vendor specific SCO/PCM configuration on the BT Controller. - * This is called after stack initialization. - * [input param] - * None. - * [return] - * 0 - default, don't care. - * [callback] - * Must call scocfg_cb to notify the stack of the completion of vendor - * specific SCO configuration once it has been done. - */ + /* [operation] + * Perform any vendor specific SCO/PCM configuration on the BT Controller. + * This is called after stack initialization. + * [input param] + * None. + * [return] + * 0 - default, don't care. + * [callback] + * Must call scocfg_cb to notify the stack of the completion of vendor + * specific SCO configuration once it has been done. + */ BT_VND_OP_SCO_CFG, -/* [operation] - * Open UART port on where the BT Controller is attached. - * This is called before stack initialization. - * [input param] - * A pointer to int array type for open file descriptors. - * The mapping of HCI channel to fd slot in the int array is given in - * bt_vendor_hci_channels_t. - * And, it requires the vendor lib to fill up the content before returning - * the call. - * Typecasting conversion: (int (*)[]) param. - * [return] - * Numbers of opened file descriptors. - * Valid number: - * 1 - CMD/EVT/ACL-In/ACL-Out via the same fd (e.g. UART) - * 2 - CMD/EVT on one fd, and ACL-In/ACL-Out on the other fd - * 4 - CMD, EVT, ACL-In, ACL-Out are on their individual fd - * [callback] - * None. - */ + /* [operation] + * Open UART port on where the BT Controller is attached. + * This is called before stack initialization. + * [input param] + * A pointer to int array type for open file descriptors. + * The mapping of HCI channel to fd slot in the int array is given in + * bt_vendor_hci_channels_t. + * And, it requires the vendor lib to fill up the content before returning + * the call. + * Typecasting conversion: (int (*)[]) param. + * [return] + * Numbers of opened file descriptors. + * Valid number: + * 1 - CMD/EVT/ACL-In/ACL-Out via the same fd (e.g. UART) + * 2 - CMD/EVT on one fd, and ACL-In/ACL-Out on the other fd + * 4 - CMD, EVT, ACL-In, ACL-Out are on their individual fd + * [callback] + * None. + */ BT_VND_OP_USERIAL_OPEN, -/* [operation] - * Close the previously opened UART port. - * [input param] - * None. - * [return] - * 0 - default, don't care. - * [callback] - * None. - */ + /* [operation] + * Close the previously opened UART port. + * [input param] + * None. + * [return] + * 0 - default, don't care. + * [callback] + * None. + */ BT_VND_OP_USERIAL_CLOSE, -/* [operation] - * Get the LPM idle timeout in milliseconds. - * The stack uses this information to launch a timer delay before it - * attempts to de-assert LPM WAKE signal once downstream HCI packet - * has been delivered. - * [input param] - * A pointer to uint32_t type which is passed in by the stack. And, it - * requires the vendor lib to fill up the content before returning - * the call. - * Typecasting conversion: (uint32_t *) param. - * [return] - * 0 - default, don't care. - * [callback] - * None. - */ + /* [operation] + * Get the LPM idle timeout in milliseconds. + * The stack uses this information to launch a timer delay before it + * attempts to de-assert LPM WAKE signal once downstream HCI packet + * has been delivered. + * [input param] + * A pointer to uint32_t type which is passed in by the stack. And, it + * requires the vendor lib to fill up the content before returning + * the call. + * Typecasting conversion: (uint32_t *) param. + * [return] + * 0 - default, don't care. + * [callback] + * None. + */ BT_VND_OP_GET_LPM_IDLE_TIMEOUT, -/* [operation] - * Enable or disable LPM mode on BT Controller. - * [input param] - * A pointer to uint8_t type with content of bt_vendor_lpm_mode_t. - * Typecasting conversion: (uint8_t *) param. - * [return] - * 0 - default, don't care. - * [callback] - * Must call lpm_cb to notify the stack of the completion of LPM - * disable/enable process once it has been done. - */ + /* [operation] + * Enable or disable LPM mode on BT Controller. + * [input param] + * A pointer to uint8_t type with content of bt_vendor_lpm_mode_t. + * Typecasting conversion: (uint8_t *) param. + * [return] + * 0 - default, don't care. + * [callback] + * Must call lpm_cb to notify the stack of the completion of LPM + * disable/enable process once it has been done. + */ BT_VND_OP_LPM_SET_MODE, -/* [operation] - * Assert or Deassert LPM WAKE on BT Controller. - * [input param] - * A pointer to uint8_t type with content of bt_vendor_lpm_wake_state_t. - * Typecasting conversion: (uint8_t *) param. - * [return] - * 0 - default, don't care. - * [callback] - * None. - */ + /* [operation] + * Assert or Deassert LPM WAKE on BT Controller. + * [input param] + * A pointer to uint8_t type with content of bt_vendor_lpm_wake_state_t. + * Typecasting conversion: (uint8_t *) param. + * [return] + * 0 - default, don't care. + * [callback] + * None. + */ BT_VND_OP_LPM_WAKE_SET_STATE, -/* [operation] - * Perform any vendor specific commands related to audio state changes. - * [input param] - * a pointer to bt_vendor_op_audio_state_t indicating what audio state is - * set. - * [return] - * 0 - default, don't care. - * [callback] - * None. - */ + /* [operation] + * Perform any vendor specific commands related to audio state changes. + * [input param] + * a pointer to bt_vendor_op_audio_state_t indicating what audio state is + * set. + * [return] + * 0 - default, don't care. + * [callback] + * None. + */ BT_VND_OP_SET_AUDIO_STATE, -/* [operation] - * The epilog call to the vendor module so that it can perform any - * vendor-specific processes (e.g. send a HCI_RESET to BT Controller) - * before the caller calls for cleanup(). - * [input param] - * None. - * [return] - * 0 - default, don't care. - * [callback] - * Must call epilog_cb to notify the stack of the completion of vendor - * specific epilog process once it has been done. - */ + /* [operation] + * The epilog call to the vendor module so that it can perform any + * vendor-specific processes (e.g. send a HCI_RESET to BT Controller) + * before the caller calls for cleanup(). + * [input param] + * None. + * [return] + * 0 - default, don't care. + * [callback] + * Must call epilog_cb to notify the stack of the completion of vendor + * specific epilog process once it has been done. + */ BT_VND_OP_EPILOG, } bt_vendor_opcode_t; @@ -257,7 +257,7 @@ typedef void (*cfg_result_cb)(bt_vendor_op_result_t result); * HC_BT_HDR.offset = 0; * HC_BT_HDR.layer_specific = 0; */ -typedef void* (*malloc_cb)(int size); +typedef void *(*malloc_cb)(int size); /* datapath buffer deallocation callback (callout) */ typedef void (*mdealloc_cb)(void *p_buf); @@ -336,7 +336,7 @@ typedef struct { * Caller will open the interface and pass in the callback routines * to the implemenation of this interface. */ - int (*init)(const bt_vendor_callbacks_t* p_cb, unsigned char *local_bdaddr); + int (*init)(const bt_vendor_callbacks_t *p_cb, unsigned char *local_bdaddr); /** Vendor specific operations */ int (*op)(bt_vendor_opcode_t opcode, void *param); diff --git a/components/bt/bluedroid/include/bte.h b/components/bt/bluedroid/include/bte.h old mode 100755 new mode 100644 index 3338fd2d90..6a3ffe8011 --- a/components/bt/bluedroid/include/bte.h +++ b/components/bt/bluedroid/include/bte.h @@ -37,13 +37,12 @@ #endif /* Target Modes (based on jumper settings on hardware [see user manual]) */ -enum -{ - /* BTE BBY */ - /* J3 J4 SW3-3 SW3-2 SW3-1 */ - /* -------------------------------------------- */ +enum { + /* BTE BBY */ + /* J3 J4 SW3-3 SW3-2 SW3-1 */ + /* -------------------------------------------- */ BTE_MODE_SERIAL_APP, /* OUT OUT OFF OFF OFF Sample serial port application */ - BTE_MODE_APPL, /* IN OUT OFF OFF ON Target used with Tester through RPC */ + BTE_MODE_APPL, /* IN OUT OFF OFF ON Target used with Tester through RPC */ BTE_MODE_RESERVED, /* OUT IN OFF ON OFF Reserved */ BTE_MODE_SAMPLE_APPS, /* IN IN OFF ON ON Sample applications (ICP/HSP) */ BTE_MODE_DONGLE, /* not yet supported ON OFF OFF Dongle mode */ @@ -67,7 +66,7 @@ void bte_get_startup_options(UINT32 *p_options); /* Platform specific fun #define BUILD_L2PING FALSE -#define LINUX_FM_DRIVER_INCLUDED FALSE +#define LINUX_FM_DRIVER_INCLUDED FALSE /* hcisu userial operations. should probably go into bt_types to avoid collisions! */ diff --git a/components/bt/bluedroid/main/bte_init.c b/components/bt/bluedroid/main/bte_init.c old mode 100755 new mode 100644 index 0cb24b8d0f..9996129bc5 --- a/components/bt/bluedroid/main/bte_init.c +++ b/components/bt/bluedroid/main/bte_init.c @@ -183,14 +183,14 @@ void BTE_InitStack(void) //BTA Modules #if (BTA_INCLUDED == TRUE && BTA_DYNAMIC_MEMORY == TRUE) - memset((void*)bta_sys_cb_ptr, 0, sizeof(tBTA_SYS_CB)); - memset((void*)bta_dm_cb_ptr, 0, sizeof(tBTA_DM_CB)); - memset((void*)bta_dm_search_cb_ptr, 0, sizeof(tBTA_DM_SEARCH_CB)); - memset((void*)bta_dm_di_cb_ptr, 0, sizeof(tBTA_DM_DI_CB)); - memset((void*)bta_prm_cb_ptr, 0, sizeof(tBTA_PRM_CB)); - memset((void*)bta_ag_cb_ptr, 0, sizeof(tBTA_AG_CB)); + memset((void *)bta_sys_cb_ptr, 0, sizeof(tBTA_SYS_CB)); + memset((void *)bta_dm_cb_ptr, 0, sizeof(tBTA_DM_CB)); + memset((void *)bta_dm_search_cb_ptr, 0, sizeof(tBTA_DM_SEARCH_CB)); + memset((void *)bta_dm_di_cb_ptr, 0, sizeof(tBTA_DM_DI_CB)); + memset((void *)bta_prm_cb_ptr, 0, sizeof(tBTA_PRM_CB)); + memset((void *)bta_ag_cb_ptr, 0, sizeof(tBTA_AG_CB)); #if BTA_HS_INCLUDED == TRUE - memset((void*)bta_hs_cb_ptr, 0, sizeof(tBTA_HS_CB)); + memset((void *)bta_hs_cb_ptr, 0, sizeof(tBTA_HS_CB)); #endif #if BTA_AR_INCLUDED==TRUE memset((void *)bta_ar_cb_ptr, 0, sizeof(tBTA_AR_CB)); diff --git a/components/bt/bluedroid/main/bte_main.c b/components/bt/bluedroid/main/bte_main.c old mode 100755 new mode 100644 index bbe509a50a..1cb3f31004 --- a/components/bt/bluedroid/main/bte_main.c +++ b/components/bt/bluedroid/main/bte_main.c @@ -117,24 +117,24 @@ int bte_main_boot_entry(bluedroid_init_done_cb_t cb) { if (gki_init()) { LOG_ERROR("%s: Init GKI Module Failure.\n", __func__); - return -1; - } + return -1; + } hci = hci_layer_get_interface(); if (!hci) { - LOG_ERROR("%s could not get hci layer interface.\n", __func__); - return -2; - } + LOG_ERROR("%s could not get hci layer interface.\n", __func__); + return -2; + } btu_hci_msg_queue = fixed_queue_new(SIZE_MAX); if (btu_hci_msg_queue == NULL) { - LOG_ERROR("%s unable to allocate hci message queue.\n", __func__); - return -3; + LOG_ERROR("%s unable to allocate hci message queue.\n", __func__); + return -3; } bluedroid_init_done_cb = cb; - //Caution: No event dispatcher defined now in hci layer + //Caution: No event dispatcher defined now in hci layer //data_dispatcher_register_default(hci->event_dispatcher, btu_hci_msg_queue); hci->set_data_queue(btu_hci_msg_queue); @@ -147,7 +147,7 @@ int bte_main_boot_entry(bluedroid_init_done_cb_t cb) //Enbale HCI bte_main_enable(); - return 0; + return 0; } /****************************************************************************** @@ -167,16 +167,16 @@ void bte_main_shutdown(void) btu_hci_msg_queue = NULL; -/* - module_clean_up(get_module(STACK_CONFIG_MODULE)); + /* + module_clean_up(get_module(STACK_CONFIG_MODULE)); - module_clean_up(get_module(COUNTER_MODULE)); - module_clean_up(get_module(GKI_MODULE)); -*/ + module_clean_up(get_module(COUNTER_MODULE)); + module_clean_up(get_module(GKI_MODULE)); + */ gki_clean_up(); - bte_main_disable(); + bte_main_disable(); } /****************************************************************************** @@ -214,12 +214,12 @@ static void bte_main_enable(void) ******************************************************************************/ static void bte_main_disable(void) { -/* - APPL_TRACE_DEBUG("%s", __FUNCTION__); + /* + APPL_TRACE_DEBUG("%s", __FUNCTION__); - module_shut_down(get_module(HCI_MODULE)); - module_shut_down(get_module(BTSNOOP_MODULE)); -*/ + module_shut_down(get_module(HCI_MODULE)); + module_shut_down(get_module(BTSNOOP_MODULE)); + */ hci_shut_down(); @@ -307,13 +307,10 @@ void bte_main_hci_send (BT_HDR *p_msg, UINT16 event) //counter_add("main.tx.packets", 1); //counter_add("main.tx.bytes", p_msg->len); - if((sub_event == LOCAL_BR_EDR_CONTROLLER_ID) || \ - (sub_event == LOCAL_BLE_CONTROLLER_ID)) - { + if ((sub_event == LOCAL_BR_EDR_CONTROLLER_ID) || \ + (sub_event == LOCAL_BLE_CONTROLLER_ID)) { hci->transmit_downward(event, p_msg); - } - else - { + } else { //APPL_TRACE_ERROR("Invalid Controller ID. Discarding message."); GKI_freebuf(p_msg); } diff --git a/components/bt/bluedroid/osi/alarm.c b/components/bt/bluedroid/osi/alarm.c old mode 100755 new mode 100644 index fb24824d37..3dbeb2d455 --- a/components/bt/bluedroid/osi/alarm.c +++ b/components/bt/bluedroid/osi/alarm.c @@ -31,153 +31,160 @@ #define RTC_TIMER_TICKS_TO_MS(ticks) ((ticks/625)<<1 + (ticks-(ticks/625)*625)/312) -#define BT_ALARM_START_WAIT_TICKS 100 -#define BT_ALARM_STOP_WAIT_TICKS 100 -#define BT_ALARM_FREE_WAIT_TICKS 100 -#define BT_ALARM_CHG_PERIOD_WAIT_TICKS 100 +#define BT_ALARM_START_WAIT_TICKS 100 +#define BT_ALARM_STOP_WAIT_TICKS 100 +#define BT_ALARM_FREE_WAIT_TICKS 100 +#define BT_ALARM_CHG_PERIOD_WAIT_TICKS 100 static struct alarm_t alarm_cbs[ALARM_CBS_NUM]; void osi_alarm_init(void) { - memset(&alarm_cbs[0], 0x00, sizeof(alarm_cbs)); + memset(&alarm_cbs[0], 0x00, sizeof(alarm_cbs)); } static struct alarm_t *alarm_cbs_lookfor_available(void) { - int i; + int i; - for (i = 0; i < ALARM_CBS_NUM; i++) { - if (alarm_cbs[i].alarm_hdl == NULL) { //available - LOG_DEBUG(">>>> %d %08x<<<<\n", i, &alarm_cbs[i]); - return &alarm_cbs[i]; - } - } + for (i = 0; i < ALARM_CBS_NUM; i++) { + if (alarm_cbs[i].alarm_hdl == NULL) { //available + LOG_DEBUG(">>>> %d %08x<<<<\n", i, &alarm_cbs[i]); + return &alarm_cbs[i]; + } + } - return NULL; + return NULL; } static void alarm_cb_handler(TimerHandle_t xTimer) { - struct alarm_t *alarm; + struct alarm_t *alarm; - if (!xTimer) { - LOG_DEBUG("TimerName: NULL\n"); - return; - } + if (!xTimer) { + LOG_DEBUG("TimerName: NULL\n"); + return; + } - alarm = pvTimerGetTimerID(xTimer); - LOG_DEBUG("TimerID %08x, Name %s\n", alarm, pcTimerGetTimerName(xTimer)); - if (alarm->cb) { - alarm->cb(alarm->cb_data); - } + alarm = pvTimerGetTimerID(xTimer); + LOG_DEBUG("TimerID %08x, Name %s\n", alarm, pcTimerGetTimerName(xTimer)); + if (alarm->cb) { + alarm->cb(alarm->cb_data); + } } osi_alarm_t *osi_alarm_new(char *alarm_name, osi_alarm_callback_t callback, void *data, period_ms_t timer_expire) { - struct alarm_t *timer_id; - TimerHandle_t t; + struct alarm_t *timer_id; + TimerHandle_t t; - if (timer_expire == 0) - timer_expire = 1000; + if (timer_expire == 0) { + timer_expire = 1000; + } - /* TODO mutex lock */ - timer_id = alarm_cbs_lookfor_available(); - if (!timer_id) { - LOG_ERROR("%s full\n", __func__); - return NULL; - } + /* TODO mutex lock */ + timer_id = alarm_cbs_lookfor_available(); + if (!timer_id) { + LOG_ERROR("%s full\n", __func__); + return NULL; + } - t = xTimerCreate(alarm_name, timer_expire / portTICK_PERIOD_MS, pdFALSE, timer_id, alarm_cb_handler); - if (!t) { - LOG_ERROR("%s error\n", __func__); - return NULL; - } + t = xTimerCreate(alarm_name, timer_expire / portTICK_PERIOD_MS, pdFALSE, timer_id, alarm_cb_handler); + if (!t) { + LOG_ERROR("%s error\n", __func__); + return NULL; + } - timer_id->alarm_hdl = t; - timer_id->cb = callback; - timer_id->cb_data = data; - /* TODO mutex unlock */ + timer_id->alarm_hdl = t; + timer_id->cb = callback; + timer_id->cb_data = data; + /* TODO mutex unlock */ - return timer_id; + return timer_id; } int osi_alarm_free(osi_alarm_t *alarm) { - if (!alarm) { - LOG_ERROR("%s null\n", __func__); - return -1; - } + if (!alarm) { + LOG_ERROR("%s null\n", __func__); + return -1; + } - if (xTimerDelete(alarm->alarm_hdl, BT_ALARM_FREE_WAIT_TICKS) != pdPASS) { - LOG_ERROR("%s error\n", __func__); - return -2; - } + if (xTimerDelete(alarm->alarm_hdl, BT_ALARM_FREE_WAIT_TICKS) != pdPASS) { + LOG_ERROR("%s error\n", __func__); + return -2; + } - /* TODO mutex lock */ - memset(alarm, 0x00, sizeof(osi_alarm_t)); - /* TODO mutex unlock */ + /* TODO mutex lock */ + memset(alarm, 0x00, sizeof(osi_alarm_t)); + /* TODO mutex unlock */ - return 0; + return 0; } -int osi_alarm_set(osi_alarm_t *alarm, period_ms_t timeout) { - if (!alarm) { - LOG_ERROR("%s null\n", __func__); - return -1; - } +int osi_alarm_set(osi_alarm_t *alarm, period_ms_t timeout) +{ + if (!alarm) { + LOG_ERROR("%s null\n", __func__); + return -1; + } - if (xTimerChangePeriod(alarm->alarm_hdl, timeout / portTICK_PERIOD_MS, BT_ALARM_CHG_PERIOD_WAIT_TICKS) != pdPASS) { - LOG_ERROR("%s chg period error\n", __func__); - return -2; - } + if (xTimerChangePeriod(alarm->alarm_hdl, timeout / portTICK_PERIOD_MS, BT_ALARM_CHG_PERIOD_WAIT_TICKS) != pdPASS) { + LOG_ERROR("%s chg period error\n", __func__); + return -2; + } - if (xTimerStart(alarm->alarm_hdl, BT_ALARM_START_WAIT_TICKS) != pdPASS) { - LOG_ERROR("%s start error\n", __func__); - return -3; - } + if (xTimerStart(alarm->alarm_hdl, BT_ALARM_START_WAIT_TICKS) != pdPASS) { + LOG_ERROR("%s start error\n", __func__); + return -3; + } - return 0; + return 0; } -int osi_alarm_cancel(osi_alarm_t *alarm) { - if (!alarm) { - LOG_ERROR("%s null\n", __func__); - return -1; - } +int osi_alarm_cancel(osi_alarm_t *alarm) +{ + if (!alarm) { + LOG_ERROR("%s null\n", __func__); + return -1; + } - if (xTimerStop(alarm->alarm_hdl, BT_ALARM_STOP_WAIT_TICKS) != pdPASS) { - LOG_ERROR("%s error\n", __func__); - return -2; - } + if (xTimerStop(alarm->alarm_hdl, BT_ALARM_STOP_WAIT_TICKS) != pdPASS) { + LOG_ERROR("%s error\n", __func__); + return -2; + } - return 0; + return 0; } -static uint32_t alarm_current_tick(void) { - return xTaskGetTickCount(); +static uint32_t alarm_current_tick(void) +{ + return xTaskGetTickCount(); } // todo: this is not accurate // max return value: 0xffffffff / 312 = 13765920 = 0xD20D20 -period_ms_t osi_alarm_now(void) { - return RTC_TIMER_TICKS_TO_MS((alarm_current_tick())); +period_ms_t osi_alarm_now(void) +{ + return RTC_TIMER_TICKS_TO_MS((alarm_current_tick())); } period_ms_t osi_alarm_get_remaining_ms(const osi_alarm_t *alarm) { - /* TODO: use FreeRTOS timer.c implement ??? */ - return 0xffffffff; + /* TODO: use FreeRTOS timer.c implement ??? */ + return 0xffffffff; } // pre-condition: 0 <= t1, t2 <= 0xD20D20 // return value: 0<= ret <=0XD20D20 -period_ms_t osi_alarm_time_diff(period_ms_t t1, period_ms_t t2) { +period_ms_t osi_alarm_time_diff(period_ms_t t1, period_ms_t t2) +{ #define MAX_ALARM_TIME_MS (0xD20D20) - int32_t diff = (int32_t)(t1) - (int32_t)(t2); - if (diff < 0) - diff += MAX_ALARM_TIME_MS; - return (period_ms_t)diff; + int32_t diff = (int32_t)(t1) - (int32_t)(t2); + if (diff < 0) { + diff += MAX_ALARM_TIME_MS; + } + return (period_ms_t)diff; } diff --git a/components/bt/bluedroid/osi/allocator.c b/components/bt/bluedroid/osi/allocator.c old mode 100755 new mode 100644 index 2e42c03167..ded28f2a31 --- a/components/bt/bluedroid/osi/allocator.c +++ b/components/bt/bluedroid/osi/allocator.c @@ -24,35 +24,40 @@ extern void *pvPortZalloc(size_t size); extern void vPortFree(void *pv); -char *osi_strdup(const char *str) { - size_t size = strlen(str) + 1; // + 1 for the null terminator - char *new_string = (char *)calloc(1, size); +char *osi_strdup(const char *str) +{ + size_t size = strlen(str) + 1; // + 1 for the null terminator + char *new_string = (char *)calloc(1, size); - if (!new_string) - return NULL; + if (!new_string) { + return NULL; + } - memcpy(new_string, str, size); - return new_string; + memcpy(new_string, str, size); + return new_string; } -void *osi_malloc(size_t size) { - return calloc(1, size); +void *osi_malloc(size_t size) +{ + return calloc(1, size); } -void *osi_calloc(size_t size) { - return calloc(1, size); +void *osi_calloc(size_t size) +{ + return calloc(1, size); } -void osi_free(void *ptr) { - free(ptr); +void osi_free(void *ptr) +{ + free(ptr); } const allocator_t allocator_malloc = { - osi_malloc, - osi_free + osi_malloc, + osi_free }; const allocator_t allocator_calloc = { - osi_calloc, - osi_free + osi_calloc, + osi_free }; diff --git a/components/bt/bluedroid/osi/buffer.c b/components/bt/bluedroid/osi/buffer.c old mode 100755 new mode 100644 index 4b96e2df24..cb02f26a8b --- a/components/bt/bluedroid/osi/buffer.c +++ b/components/bt/bluedroid/osi/buffer.c @@ -23,74 +23,82 @@ #include "bt_trace.h" struct buffer_t { - buffer_t *root; - size_t refcount; - size_t length; - uint8_t data[]; + buffer_t *root; + size_t refcount; + size_t length; + uint8_t data[]; }; -buffer_t *buffer_new(size_t size) { - assert(size > 0); +buffer_t *buffer_new(size_t size) +{ + assert(size > 0); - buffer_t *buffer = osi_malloc(sizeof(buffer_t) + size); - if (!buffer) { - LOG_ERROR("%s unable to allocate buffer of %zu bytes.", __func__, size); - return NULL; - } + buffer_t *buffer = osi_malloc(sizeof(buffer_t) + size); + if (!buffer) { + LOG_ERROR("%s unable to allocate buffer of %zu bytes.", __func__, size); + return NULL; + } - buffer->root = buffer; - buffer->refcount = 1; - buffer->length = size; + buffer->root = buffer; + buffer->refcount = 1; + buffer->length = size; - return buffer; + return buffer; } -buffer_t *buffer_new_ref(const buffer_t *buf) { - assert(buf != NULL); - return buffer_new_slice(buf, buf->length); +buffer_t *buffer_new_ref(const buffer_t *buf) +{ + assert(buf != NULL); + return buffer_new_slice(buf, buf->length); } -buffer_t *buffer_new_slice(const buffer_t *buf, size_t slice_size) { - assert(buf != NULL); - assert(slice_size > 0); - assert(slice_size <= buf->length); +buffer_t *buffer_new_slice(const buffer_t *buf, size_t slice_size) +{ + assert(buf != NULL); + assert(slice_size > 0); + assert(slice_size <= buf->length); - buffer_t *ret = osi_calloc(sizeof(buffer_t)); - if (!ret) { - LOG_ERROR("%s unable to allocate new buffer for slice of length %zu.", __func__, slice_size); - return NULL; - } + buffer_t *ret = osi_calloc(sizeof(buffer_t)); + if (!ret) { + LOG_ERROR("%s unable to allocate new buffer for slice of length %zu.", __func__, slice_size); + return NULL; + } - ret->root = buf->root; - ret->refcount = SIZE_MAX; - ret->length = slice_size; + ret->root = buf->root; + ret->refcount = SIZE_MAX; + ret->length = slice_size; - ++buf->root->refcount; + ++buf->root->refcount; - return ret; + return ret; } -void buffer_free(buffer_t *buffer) { - if (!buffer) - return; +void buffer_free(buffer_t *buffer) +{ + if (!buffer) { + return; + } - if (buffer->root != buffer) { - // We're a leaf node. Delete the root node if we're the last referent. - if (--buffer->root->refcount == 0) - osi_free(buffer->root); - osi_free(buffer); - } else if (--buffer->refcount == 0) { - // We're a root node. Roots are only deleted when their refcount goes to 0. - osi_free(buffer); - } + if (buffer->root != buffer) { + // We're a leaf node. Delete the root node if we're the last referent. + if (--buffer->root->refcount == 0) { + osi_free(buffer->root); + } + osi_free(buffer); + } else if (--buffer->refcount == 0) { + // We're a root node. Roots are only deleted when their refcount goes to 0. + osi_free(buffer); + } } -void *buffer_ptr(const buffer_t *buf) { - assert(buf != NULL); - return buf->root->data + buf->root->length - buf->length; +void *buffer_ptr(const buffer_t *buf) +{ + assert(buf != NULL); + return buf->root->data + buf->root->length - buf->length; } -size_t buffer_length(const buffer_t *buf) { - assert(buf != NULL); - return buf->length; +size_t buffer_length(const buffer_t *buf) +{ + assert(buf != NULL); + return buf->length; } diff --git a/components/bt/bluedroid/osi/fixed_queue.c b/components/bt/bluedroid/osi/fixed_queue.c old mode 100755 new mode 100644 index fa5a752a7d..5f3f2a3df0 --- a/components/bt/bluedroid/osi/fixed_queue.c +++ b/components/bt/bluedroid/osi/fixed_queue.c @@ -25,114 +25,126 @@ #include "bt_trace.h" typedef struct fixed_queue_t { - - list_t *list; - osi_sem_t enqueue_sem; - osi_sem_t dequeue_sem; - pthread_mutex_t lock; - size_t capacity; - fixed_queue_cb dequeue_ready; -/* - reactor_object_t *dequeue_object; - fixed_queue_cb dequeue_ready; - void *dequeue_context; -*/ + list_t *list; + osi_sem_t enqueue_sem; + osi_sem_t dequeue_sem; + pthread_mutex_t lock; + size_t capacity; + + fixed_queue_cb dequeue_ready; + /* + reactor_object_t *dequeue_object; + fixed_queue_cb dequeue_ready; + void *dequeue_context; + */ } fixed_queue_t; //static void internal_dequeue_ready(void *context); -fixed_queue_t *fixed_queue_new(size_t capacity) { - fixed_queue_t *ret = osi_calloc(sizeof(fixed_queue_t)); - if (!ret) - goto error; +fixed_queue_t *fixed_queue_new(size_t capacity) +{ + fixed_queue_t *ret = osi_calloc(sizeof(fixed_queue_t)); + if (!ret) { + goto error; + } - pthread_mutex_init(&ret->lock, NULL); - ret->capacity = capacity; + pthread_mutex_init(&ret->lock, NULL); + ret->capacity = capacity; - ret->list = list_new(NULL); - if (!ret->list) - goto error; + ret->list = list_new(NULL); + if (!ret->list) { + goto error; + } - osi_sem_new(&ret->enqueue_sem, capacity, capacity); - if (!ret->enqueue_sem) - goto error; + osi_sem_new(&ret->enqueue_sem, capacity, capacity); + if (!ret->enqueue_sem) { + goto error; + } - osi_sem_new(&ret->dequeue_sem, capacity, 0); - if (!ret->dequeue_sem) - goto error; + osi_sem_new(&ret->dequeue_sem, capacity, 0); + if (!ret->dequeue_sem) { + goto error; + } - return ret; + return ret; error:; - fixed_queue_free(ret, NULL); - return NULL; + fixed_queue_free(ret, NULL); + return NULL; } -void fixed_queue_free(fixed_queue_t *queue, fixed_queue_free_cb free_cb) { - const list_node_t *node; - if (!queue) - return; +void fixed_queue_free(fixed_queue_t *queue, fixed_queue_free_cb free_cb) +{ + const list_node_t *node; + if (!queue) { + return; + } // fixed_queue_unregister_dequeue(queue); - if (free_cb) - for (node = list_begin(queue->list); node != list_end(queue->list); node = list_next(node)) - free_cb(list_node(node)); + if (free_cb) + for (node = list_begin(queue->list); node != list_end(queue->list); node = list_next(node)) { + free_cb(list_node(node)); + } - list_free(queue->list); - osi_sem_free(&queue->enqueue_sem); - osi_sem_free(&queue->dequeue_sem); - pthread_mutex_destroy(&queue->lock); - osi_free(queue); + list_free(queue->list); + osi_sem_free(&queue->enqueue_sem); + osi_sem_free(&queue->dequeue_sem); + pthread_mutex_destroy(&queue->lock); + osi_free(queue); } -bool fixed_queue_is_empty(fixed_queue_t *queue) { - bool is_empty = false; - assert(queue != NULL); +bool fixed_queue_is_empty(fixed_queue_t *queue) +{ + bool is_empty = false; + assert(queue != NULL); - pthread_mutex_lock(&queue->lock); - is_empty = list_is_empty(queue->list); - pthread_mutex_unlock(&queue->lock); + pthread_mutex_lock(&queue->lock); + is_empty = list_is_empty(queue->list); + pthread_mutex_unlock(&queue->lock); - return is_empty; + return is_empty; } -size_t fixed_queue_capacity(fixed_queue_t *queue) { - assert(queue != NULL); +size_t fixed_queue_capacity(fixed_queue_t *queue) +{ + assert(queue != NULL); - return queue->capacity; + return queue->capacity; } -void fixed_queue_enqueue(fixed_queue_t *queue, void *data) { - assert(queue != NULL); - assert(data != NULL); +void fixed_queue_enqueue(fixed_queue_t *queue, void *data) +{ + assert(queue != NULL); + assert(data != NULL); - osi_sem_wait(&queue->enqueue_sem, 0); - - pthread_mutex_lock(&queue->lock); + osi_sem_wait(&queue->enqueue_sem, 0); - list_append(queue->list, data); - pthread_mutex_unlock(&queue->lock); + pthread_mutex_lock(&queue->lock); - osi_sem_signal(&queue->dequeue_sem); + list_append(queue->list, data); + pthread_mutex_unlock(&queue->lock); + + osi_sem_signal(&queue->dequeue_sem); } -void *fixed_queue_dequeue(fixed_queue_t *queue) { - void *ret = NULL; - assert(queue != NULL); +void *fixed_queue_dequeue(fixed_queue_t *queue) +{ + void *ret = NULL; + assert(queue != NULL); - osi_sem_wait(&queue->dequeue_sem, 0); + osi_sem_wait(&queue->dequeue_sem, 0); - pthread_mutex_lock(&queue->lock); - ret = list_front(queue->list); - list_remove(queue->list, ret); - pthread_mutex_unlock(&queue->lock); + pthread_mutex_lock(&queue->lock); + ret = list_front(queue->list); + list_remove(queue->list, ret); + pthread_mutex_unlock(&queue->lock); - osi_sem_signal(&queue->enqueue_sem); + osi_sem_signal(&queue->enqueue_sem); - return ret; + return ret; } /* @@ -158,25 +170,30 @@ int fixed_queue_get_dequeue_fd(const fixed_queue_t *queue) { return semaphore_get_fd(queue->dequeue_sem); } */ -void fixed_queue_register_dequeue(fixed_queue_t *queue, fixed_queue_cb ready_cb) { - assert(queue != NULL); - assert(ready_cb != NULL); +void fixed_queue_register_dequeue(fixed_queue_t *queue, fixed_queue_cb ready_cb) +{ + assert(queue != NULL); + assert(ready_cb != NULL); - queue->dequeue_ready = ready_cb; + queue->dequeue_ready = ready_cb; } -void fixed_queue_unregister_dequeue(fixed_queue_t *queue) { - assert(queue != NULL); +void fixed_queue_unregister_dequeue(fixed_queue_t *queue) +{ + assert(queue != NULL); - queue->dequeue_ready = NULL; + queue->dequeue_ready = NULL; } -void fixed_queue_process(fixed_queue_t *queue) { - if (queue == NULL) - return; +void fixed_queue_process(fixed_queue_t *queue) +{ + if (queue == NULL) { + return; + } - if (queue->dequeue_ready) - queue->dequeue_ready(queue); + if (queue->dequeue_ready) { + queue->dequeue_ready(queue); + } } /* static void internal_dequeue_ready(void *context) { diff --git a/components/bt/bluedroid/osi/future.c b/components/bt/bluedroid/osi/future.c index 7c816f9e4d..b2dc404659 100644 --- a/components/bt/bluedroid/osi/future.c +++ b/components/bt/bluedroid/osi/future.c @@ -27,74 +27,82 @@ #include "osi_arch.h" struct future_t { - bool ready_can_be_called; - osi_sem_t semaphore; // NULL semaphore means immediate future - void *result; + bool ready_can_be_called; + osi_sem_t semaphore; // NULL semaphore means immediate future + void *result; }; static void future_free(future_t *future); -future_t *future_new(void) { - future_t *ret = osi_calloc(sizeof(future_t)); - if (!ret) { - LOG_ERROR("%s unable to allocate memory for return value.", __func__); - goto error; - } +future_t *future_new(void) +{ + future_t *ret = osi_calloc(sizeof(future_t)); + if (!ret) { + LOG_ERROR("%s unable to allocate memory for return value.", __func__); + goto error; + } - if (osi_sem_new(&ret->semaphore, 1, 0)!=0) { - LOG_ERROR("%s unable to allocate memory for the semaphore.", __func__); - goto error; - } + if (osi_sem_new(&ret->semaphore, 1, 0) != 0) { + LOG_ERROR("%s unable to allocate memory for the semaphore.", __func__); + goto error; + } - ret->ready_can_be_called = true; - return ret; + ret->ready_can_be_called = true; + return ret; error:; - future_free(ret); - return NULL; + future_free(ret); + return NULL; } -future_t *future_new_immediate(void *value) { - future_t *ret = osi_calloc(sizeof(future_t)); - if (!ret) { - LOG_ERROR("%s unable to allocate memory for return value.", __func__); - goto error; - } +future_t *future_new_immediate(void *value) +{ + future_t *ret = osi_calloc(sizeof(future_t)); + if (!ret) { + LOG_ERROR("%s unable to allocate memory for return value.", __func__); + goto error; + } - ret->result = value; - ret->ready_can_be_called = false; - return ret; + ret->result = value; + ret->ready_can_be_called = false; + return ret; error:; - future_free(ret); - return NULL; + future_free(ret); + return NULL; } -void future_ready(future_t *future, void *value) { - assert(future != NULL); - assert(future->ready_can_be_called); +void future_ready(future_t *future, void *value) +{ + assert(future != NULL); + assert(future->ready_can_be_called); - future->ready_can_be_called = false; - future->result = value; - osi_sem_signal(&future->semaphore); + future->ready_can_be_called = false; + future->result = value; + osi_sem_signal(&future->semaphore); } -void *future_await(future_t *future) { - assert(future != NULL); +void *future_await(future_t *future) +{ + assert(future != NULL); - // If the future is immediate, it will not have a semaphore - if (future->semaphore) - osi_sem_wait(&future->semaphore, 0); + // If the future is immediate, it will not have a semaphore + if (future->semaphore) { + osi_sem_wait(&future->semaphore, 0); + } - void *result = future->result; - future_free(future); - return result; + void *result = future->result; + future_free(future); + return result; } -static void future_free(future_t *future) { - if (!future) - return; +static void future_free(future_t *future) +{ + if (!future) { + return; + } - if (!future->semaphore) - osi_sem_free(&future->semaphore); + if (!future->semaphore) { + osi_sem_free(&future->semaphore); + } - osi_free(future); + osi_free(future); } diff --git a/components/bt/bluedroid/osi/hash_functions.c b/components/bt/bluedroid/osi/hash_functions.c old mode 100755 new mode 100644 index f279bd4564..0cfd3f52df --- a/components/bt/bluedroid/osi/hash_functions.c +++ b/components/bt/bluedroid/osi/hash_functions.c @@ -20,23 +20,28 @@ #include "hash_functions.h" -hash_index_t hash_function_naive(const void *key) { - return (hash_index_t)key; +hash_index_t hash_function_naive(const void *key) +{ + return (hash_index_t)key; } -hash_index_t hash_function_integer(const void *key) { - return ((hash_index_t)key) * 2654435761; +hash_index_t hash_function_integer(const void *key) +{ + return ((hash_index_t)key) * 2654435761; } -hash_index_t hash_function_pointer(const void *key) { - return ((hash_index_t)key) * 2654435761; +hash_index_t hash_function_pointer(const void *key) +{ + return ((hash_index_t)key) * 2654435761; } -hash_index_t hash_function_string(const void *key) { - hash_index_t hash = 5381; - const char *name = (const char *)key; - size_t string_len = strlen(name); - for (size_t i = 0; i < string_len; ++i) - hash = ((hash << 5) + hash ) + name[i]; - return hash; +hash_index_t hash_function_string(const void *key) +{ + hash_index_t hash = 5381; + const char *name = (const char *)key; + size_t string_len = strlen(name); + for (size_t i = 0; i < string_len; ++i) { + hash = ((hash << 5) + hash ) + name[i]; + } + return hash; } diff --git a/components/bt/bluedroid/osi/hash_map.c b/components/bt/bluedroid/osi/hash_map.c old mode 100755 new mode 100644 index 9a18fb78a7..41ae983397 --- a/components/bt/bluedroid/osi/hash_map.c +++ b/components/bt/bluedroid/osi/hash_map.c @@ -25,18 +25,18 @@ struct hash_map_t; typedef struct hash_map_bucket_t { - list_t *list; + list_t *list; } hash_map_bucket_t; typedef struct hash_map_t { - hash_map_bucket_t *bucket; - size_t num_bucket; - size_t hash_size; - hash_index_fn hash_fn; - key_free_fn key_fn; - data_free_fn data_fn; - const allocator_t *allocator; - key_equality_fn keys_are_equal; + hash_map_bucket_t *bucket; + size_t num_bucket; + size_t hash_size; + hash_index_fn hash_fn; + key_free_fn key_fn; + data_free_fn data_fn; + const allocator_t *allocator; + key_equality_fn keys_are_equal; } hash_map_t; // Hidden constructor for list, only to be used by us. @@ -45,7 +45,7 @@ list_t *list_new_internal(list_free_cb callback, const allocator_t *zeroed_alloc static void bucket_free_(void *data); static bool default_key_equality(const void *x, const void *y); static hash_map_entry_t *find_bucket_entry_(list_t *hash_bucket_list, - const void *key); + const void *key); // Hidden constructor, only to be used by the allocation tracker. Behaves the same as // |hash_map_new|, except you get to specify the allocator. @@ -55,28 +55,30 @@ hash_map_t *hash_map_new_internal( key_free_fn key_fn, data_free_fn data_fn, key_equality_fn equality_fn, - const allocator_t *zeroed_allocator) { - assert(hash_fn != NULL); - assert(num_bucket > 0); - assert(zeroed_allocator != NULL); + const allocator_t *zeroed_allocator) +{ + assert(hash_fn != NULL); + assert(num_bucket > 0); + assert(zeroed_allocator != NULL); - hash_map_t *hash_map = zeroed_allocator->alloc(sizeof(hash_map_t)); - if (hash_map == NULL) - return NULL; + hash_map_t *hash_map = zeroed_allocator->alloc(sizeof(hash_map_t)); + if (hash_map == NULL) { + return NULL; + } - hash_map->hash_fn = hash_fn; - hash_map->key_fn = key_fn; - hash_map->data_fn = data_fn; - hash_map->allocator = zeroed_allocator; - hash_map->keys_are_equal = equality_fn ? equality_fn : default_key_equality; + hash_map->hash_fn = hash_fn; + hash_map->key_fn = key_fn; + hash_map->data_fn = data_fn; + hash_map->allocator = zeroed_allocator; + hash_map->keys_are_equal = equality_fn ? equality_fn : default_key_equality; - hash_map->num_bucket = num_bucket; - hash_map->bucket = zeroed_allocator->alloc(sizeof(hash_map_bucket_t) * num_bucket); - if (hash_map->bucket == NULL) { - zeroed_allocator->free(hash_map); - return NULL; - } - return hash_map; + hash_map->num_bucket = num_bucket; + hash_map->bucket = zeroed_allocator->alloc(sizeof(hash_map_bucket_t) * num_bucket); + if (hash_map->bucket == NULL) { + zeroed_allocator->free(hash_map); + return NULL; + } + return hash_map; } hash_map_t *hash_map_new( @@ -84,16 +86,19 @@ hash_map_t *hash_map_new( hash_index_fn hash_fn, key_free_fn key_fn, data_free_fn data_fn, - key_equality_fn equality_fn) { - return hash_map_new_internal(num_bucket, hash_fn, key_fn, data_fn, equality_fn, &allocator_calloc); + key_equality_fn equality_fn) +{ + return hash_map_new_internal(num_bucket, hash_fn, key_fn, data_fn, equality_fn, &allocator_calloc); } -void hash_map_free(hash_map_t *hash_map) { - if (hash_map == NULL) - return; - hash_map_clear(hash_map); - hash_map->allocator->free(hash_map->bucket); - hash_map->allocator->free(hash_map); +void hash_map_free(hash_map_t *hash_map) +{ + if (hash_map == NULL) { + return; + } + hash_map_clear(hash_map); + hash_map->allocator->free(hash_map->bucket); + hash_map->allocator->free(hash_map); } /* @@ -113,135 +118,153 @@ size_t hash_map_num_buckets(const hash_map_t *hash_map) { } */ -bool hash_map_has_key(const hash_map_t *hash_map, const void *key) { - assert(hash_map != NULL); +bool hash_map_has_key(const hash_map_t *hash_map, const void *key) +{ + assert(hash_map != NULL); - hash_index_t hash_key = hash_map->hash_fn(key) % hash_map->num_bucket; - list_t *hash_bucket_list = hash_map->bucket[hash_key].list; + hash_index_t hash_key = hash_map->hash_fn(key) % hash_map->num_bucket; + list_t *hash_bucket_list = hash_map->bucket[hash_key].list; - hash_map_entry_t *hash_map_entry = find_bucket_entry_(hash_bucket_list, key); - return (hash_map_entry != NULL); + hash_map_entry_t *hash_map_entry = find_bucket_entry_(hash_bucket_list, key); + return (hash_map_entry != NULL); } -bool hash_map_set(hash_map_t *hash_map, const void *key, void *data) { - assert(hash_map != NULL); - assert(data != NULL); +bool hash_map_set(hash_map_t *hash_map, const void *key, void *data) +{ + assert(hash_map != NULL); + assert(data != NULL); - hash_index_t hash_key = hash_map->hash_fn(key) % hash_map->num_bucket; + hash_index_t hash_key = hash_map->hash_fn(key) % hash_map->num_bucket; - if (hash_map->bucket[hash_key].list == NULL) { - hash_map->bucket[hash_key].list = list_new_internal(bucket_free_, hash_map->allocator); - if (hash_map->bucket[hash_key].list == NULL) + if (hash_map->bucket[hash_key].list == NULL) { + hash_map->bucket[hash_key].list = list_new_internal(bucket_free_, hash_map->allocator); + if (hash_map->bucket[hash_key].list == NULL) { + return false; + } + } + list_t *hash_bucket_list = hash_map->bucket[hash_key].list; + + hash_map_entry_t *hash_map_entry = find_bucket_entry_(hash_bucket_list, key); + + if (hash_map_entry) { + // Calls hash_map callback to delete the hash_map_entry. + bool rc = list_remove(hash_bucket_list, hash_map_entry); + assert(rc == true); + } else { + hash_map->hash_size++; + } + hash_map_entry = hash_map->allocator->alloc(sizeof(hash_map_entry_t)); + if (hash_map_entry == NULL) { return false; - } - list_t *hash_bucket_list = hash_map->bucket[hash_key].list; - - hash_map_entry_t *hash_map_entry = find_bucket_entry_(hash_bucket_list, key); - - if (hash_map_entry) { - // Calls hash_map callback to delete the hash_map_entry. - bool rc = list_remove(hash_bucket_list, hash_map_entry); - assert(rc == true); - } else { - hash_map->hash_size++; - } - hash_map_entry = hash_map->allocator->alloc(sizeof(hash_map_entry_t)); - if (hash_map_entry == NULL) - return false; - - hash_map_entry->key = key; - hash_map_entry->data = data; - hash_map_entry->hash_map = hash_map; - - return list_append(hash_bucket_list, hash_map_entry); -} - -bool hash_map_erase(hash_map_t *hash_map, const void *key) { - assert(hash_map != NULL); - - hash_index_t hash_key = hash_map->hash_fn(key) % hash_map->num_bucket; - list_t *hash_bucket_list = hash_map->bucket[hash_key].list; - - hash_map_entry_t *hash_map_entry = find_bucket_entry_(hash_bucket_list, key); - if (hash_map_entry == NULL) { - return false; - } - - hash_map->hash_size--; - - return list_remove(hash_bucket_list, hash_map_entry); -} - -void *hash_map_get(const hash_map_t *hash_map, const void *key) { - assert(hash_map != NULL); - - hash_index_t hash_key = hash_map->hash_fn(key) % hash_map->num_bucket; - list_t *hash_bucket_list = hash_map->bucket[hash_key].list; - - hash_map_entry_t *hash_map_entry = find_bucket_entry_(hash_bucket_list, key); - if (hash_map_entry != NULL) - return hash_map_entry->data; - - return NULL; -} - -void hash_map_clear(hash_map_t *hash_map) { - assert(hash_map != NULL); - - for (hash_index_t i = 0; i < hash_map->num_bucket; i++){ - if (hash_map->bucket[i].list == NULL) - continue; - list_free(hash_map->bucket[i].list); - hash_map->bucket[i].list = NULL; - } -} - -void hash_map_foreach(hash_map_t *hash_map, hash_map_iter_cb callback, void *context) { - assert(hash_map != NULL); - assert(callback != NULL); - - for (hash_index_t i = 0; i < hash_map->num_bucket; ++i){ - if (hash_map->bucket[i].list == NULL) - continue; - for (const list_node_t *iter = list_begin(hash_map->bucket[i].list); - iter != list_end(hash_map->bucket[i].list); - iter = list_next(iter)) { - hash_map_entry_t *hash_map_entry = (hash_map_entry_t *)list_node(iter); - if (!callback(hash_map_entry, context)) - return; } - } + + hash_map_entry->key = key; + hash_map_entry->data = data; + hash_map_entry->hash_map = hash_map; + + return list_append(hash_bucket_list, hash_map_entry); } -static void bucket_free_(void *data) { - assert(data != NULL); - hash_map_entry_t *hash_map_entry = (hash_map_entry_t *)data; - const hash_map_t *hash_map = hash_map_entry->hash_map; +bool hash_map_erase(hash_map_t *hash_map, const void *key) +{ + assert(hash_map != NULL); - if (hash_map->key_fn) - hash_map->key_fn((void *)hash_map_entry->key); - if (hash_map->data_fn) - hash_map->data_fn(hash_map_entry->data); - hash_map->allocator->free(hash_map_entry); + hash_index_t hash_key = hash_map->hash_fn(key) % hash_map->num_bucket; + list_t *hash_bucket_list = hash_map->bucket[hash_key].list; + + hash_map_entry_t *hash_map_entry = find_bucket_entry_(hash_bucket_list, key); + if (hash_map_entry == NULL) { + return false; + } + + hash_map->hash_size--; + + return list_remove(hash_bucket_list, hash_map_entry); } -static hash_map_entry_t * find_bucket_entry_(list_t *hash_bucket_list, - const void *key) { +void *hash_map_get(const hash_map_t *hash_map, const void *key) +{ + assert(hash_map != NULL); + + hash_index_t hash_key = hash_map->hash_fn(key) % hash_map->num_bucket; + list_t *hash_bucket_list = hash_map->bucket[hash_key].list; + + hash_map_entry_t *hash_map_entry = find_bucket_entry_(hash_bucket_list, key); + if (hash_map_entry != NULL) { + return hash_map_entry->data; + } - if (hash_bucket_list == NULL) return NULL; +} - for (const list_node_t *iter = list_begin(hash_bucket_list); - iter != list_end(hash_bucket_list); - iter = list_next(iter)) { - hash_map_entry_t *hash_map_entry = (hash_map_entry_t *)list_node(iter); - if (hash_map_entry->hash_map->keys_are_equal(hash_map_entry->key, key)) { - return hash_map_entry; +void hash_map_clear(hash_map_t *hash_map) +{ + assert(hash_map != NULL); + + for (hash_index_t i = 0; i < hash_map->num_bucket; i++) { + if (hash_map->bucket[i].list == NULL) { + continue; + } + list_free(hash_map->bucket[i].list); + hash_map->bucket[i].list = NULL; } - } - return NULL; } -static bool default_key_equality(const void *x, const void *y) { - return x == y; +void hash_map_foreach(hash_map_t *hash_map, hash_map_iter_cb callback, void *context) +{ + assert(hash_map != NULL); + assert(callback != NULL); + + for (hash_index_t i = 0; i < hash_map->num_bucket; ++i) { + if (hash_map->bucket[i].list == NULL) { + continue; + } + for (const list_node_t *iter = list_begin(hash_map->bucket[i].list); + iter != list_end(hash_map->bucket[i].list); + iter = list_next(iter)) { + hash_map_entry_t *hash_map_entry = (hash_map_entry_t *)list_node(iter); + if (!callback(hash_map_entry, context)) { + return; + } + } + } +} + +static void bucket_free_(void *data) +{ + assert(data != NULL); + hash_map_entry_t *hash_map_entry = (hash_map_entry_t *)data; + const hash_map_t *hash_map = hash_map_entry->hash_map; + + if (hash_map->key_fn) { + hash_map->key_fn((void *)hash_map_entry->key); + } + if (hash_map->data_fn) { + hash_map->data_fn(hash_map_entry->data); + } + hash_map->allocator->free(hash_map_entry); +} + +static hash_map_entry_t *find_bucket_entry_(list_t *hash_bucket_list, + const void *key) +{ + + if (hash_bucket_list == NULL) { + return NULL; + } + + for (const list_node_t *iter = list_begin(hash_bucket_list); + iter != list_end(hash_bucket_list); + iter = list_next(iter)) { + hash_map_entry_t *hash_map_entry = (hash_map_entry_t *)list_node(iter); + if (hash_map_entry->hash_map->keys_are_equal(hash_map_entry->key, key)) { + return hash_map_entry; + } + } + return NULL; +} + +static bool default_key_equality(const void *x, const void *y) +{ + return x == y; } diff --git a/components/bt/bluedroid/osi/include/alarm.h b/components/bt/bluedroid/osi/include/alarm.h old mode 100755 new mode 100644 index b4cd1347c2..2e226ed27f --- a/components/bt/bluedroid/osi/include/alarm.h +++ b/components/bt/bluedroid/osi/include/alarm.h @@ -26,13 +26,13 @@ typedef uint32_t period_ms_t; typedef void (*osi_alarm_callback_t)(void *data); -#define ALARM_CBS_NUM 20 -#define ALARM_ID_BASE 1000 +#define ALARM_CBS_NUM 20 +#define ALARM_ID_BASE 1000 typedef struct alarm_t { - /* timer id point to here */ - TimerHandle_t alarm_hdl; - osi_alarm_callback_t cb; - void *cb_data; + /* timer id point to here */ + TimerHandle_t alarm_hdl; + osi_alarm_callback_t cb; + void *cb_data; } osi_alarm_t; void osi_alarm_init(void); diff --git a/components/bt/bluedroid/osi/include/allocator.h b/components/bt/bluedroid/osi/include/allocator.h old mode 100755 new mode 100644 index 74bdfb73a0..d7df1f2053 --- a/components/bt/bluedroid/osi/include/allocator.h +++ b/components/bt/bluedroid/osi/include/allocator.h @@ -26,8 +26,8 @@ typedef void *(*alloc_fn)(size_t size); typedef void (*free_fn)(void *ptr); typedef struct { - alloc_fn alloc; - free_fn free; + alloc_fn alloc; + free_fn free; } allocator_t; // allocator_t abstractions for the osi_*alloc and osi_free functions diff --git a/components/bt/bluedroid/osi/include/hash_map.h b/components/bt/bluedroid/osi/include/hash_map.h old mode 100755 new mode 100644 index 6b8220b6c1..fea1e0212c --- a/components/bt/bluedroid/osi/include/hash_map.h +++ b/components/bt/bluedroid/osi/include/hash_map.h @@ -26,9 +26,9 @@ struct hash_map_t; typedef struct hash_map_t hash_map_t; typedef struct hash_map_entry_t { - const void *key; - void *data; - const hash_map_t *hash_map; + const void *key; + void *data; + const hash_map_t *hash_map; } hash_map_entry_t; typedef size_t hash_index_t; diff --git a/components/bt/bluedroid/osi/include/thread.h b/components/bt/bluedroid/osi/include/thread.h index 20dde78485..f760ec0b27 100644 --- a/components/bt/bluedroid/osi/include/thread.h +++ b/components/bt/bluedroid/osi/include/thread.h @@ -26,10 +26,10 @@ #define portBASE_TYPE int struct bt_task_evt { - uint32_t sig; //task sig - void * par; //point to task param - void * cb; //point to function cb - void * arg; //point to function arg + uint32_t sig; //task sig + void *par; //point to task param + void *cb; //point to function cb + void *arg; //point to function arg }; typedef struct bt_task_evt BtTaskEvt_t; diff --git a/components/bt/bluedroid/osi/list.c b/components/bt/bluedroid/osi/list.c old mode 100755 new mode 100644 index e259395b4d..7ffcb47d4e --- a/components/bt/bluedroid/osi/list.c +++ b/components/bt/bluedroid/osi/list.c @@ -6,49 +6,55 @@ #include "osi.h" struct list_node_t { - struct list_node_t *next; - void *data; + struct list_node_t *next; + void *data; }; typedef struct list_t { - list_node_t *head; - list_node_t *tail; - size_t length; - list_free_cb free_cb; - const allocator_t *allocator; + list_node_t *head; + list_node_t *tail; + size_t length; + list_free_cb free_cb; + const allocator_t *allocator; } list_t; //static list_node_t *list_free_node_(list_t *list, list_node_t *node); // Hidden constructor, only to be used by the hash map for the allocation tracker. // Behaves the same as |list_new|, except you get to specify the allocator. -list_t *list_new_internal(list_free_cb callback, const allocator_t *zeroed_allocator) { - list_t *list = (list_t *)zeroed_allocator->alloc(sizeof(list_t)); - if (!list) - return NULL; +list_t *list_new_internal(list_free_cb callback, const allocator_t *zeroed_allocator) +{ + list_t *list = (list_t *)zeroed_allocator->alloc(sizeof(list_t)); + if (!list) { + return NULL; + } - list->head = list->tail = NULL; - list->length = 0; - list->free_cb = callback; - list->allocator = zeroed_allocator; - return list; + list->head = list->tail = NULL; + list->length = 0; + list->free_cb = callback; + list->allocator = zeroed_allocator; + return list; } -list_t *list_new(list_free_cb callback) { - return list_new_internal(callback, &allocator_calloc); +list_t *list_new(list_free_cb callback) +{ + return list_new_internal(callback, &allocator_calloc); } -void list_free(list_t *list) { - if (!list) - return; +void list_free(list_t *list) +{ + if (!list) { + return; + } - list_clear(list); - list->allocator->free(list); + list_clear(list); + list->allocator->free(list); } -bool list_is_empty(const list_t *list) { - assert(list != NULL); - return (list->length == 0); +bool list_is_empty(const list_t *list) +{ + assert(list != NULL); + return (list->length == 0); } /* @@ -66,16 +72,18 @@ bool list_contains(const list_t *list, const void *data) { } */ -size_t list_length(const list_t *list) { - assert(list != NULL); - return list->length; +size_t list_length(const list_t *list) +{ + assert(list != NULL); + return list->length; } -void *list_front(const list_t *list) { - assert(list != NULL); - assert(!list_is_empty(list)); +void *list_front(const list_t *list) +{ + assert(list != NULL); + assert(!list_is_empty(list)); - return list->head->data; + return list->head->data; } /* @@ -87,140 +95,160 @@ void *list_back(const list_t *list) { } */ -bool list_insert_after(list_t *list, list_node_t *prev_node, void *data) { - list_node_t *node; - assert(list != NULL); - assert(prev_node != NULL); - assert(data != NULL); +bool list_insert_after(list_t *list, list_node_t *prev_node, void *data) +{ + list_node_t *node; + assert(list != NULL); + assert(prev_node != NULL); + assert(data != NULL); - node = (list_node_t *)list->allocator->alloc(sizeof(list_node_t)); - if (!node) - return false; - - node->next = prev_node->next; - node->data = data; - prev_node->next = node; - if (list->tail == prev_node) - list->tail = node; - ++list->length; - return true; -} - -bool list_prepend(list_t *list, void *data) { - list_node_t *node; - assert(list != NULL); - assert(data != NULL); - - node = (list_node_t *)list->allocator->alloc(sizeof(list_node_t)); - if (!node) - return false; - node->next = list->head; - node->data = data; - list->head = node; - if (list->tail == NULL) - list->tail = list->head; - ++list->length; - return true; -} - -bool list_append(list_t *list, void *data) { - list_node_t *node; - assert(list != NULL); - assert(data != NULL); - - node = (list_node_t *)list->allocator->alloc(sizeof(list_node_t)); - if (!node) { - return false; -} - node->next = NULL; - node->data = data; - if (list->tail == NULL) { - list->head = node; - list->tail = node; - } else { - list->tail->next = node; - list->tail = node; - } - ++list->length; - return true; -} - -bool list_remove(list_t *list, void *data) { - assert(list != NULL); - assert(data != NULL); - - if (list_is_empty(list)) - return false; - - if (list->head->data == data) { - list_node_t *next = list_free_node(list, list->head); - if (list->tail == list->head) - list->tail = next; - list->head = next; - return true; - } - - for (list_node_t *prev = list->head, *node = list->head->next; node; prev = node, node = node->next) - if (node->data == data) { - prev->next = list_free_node(list, node); - if (list->tail == node) - list->tail = prev; - return true; + node = (list_node_t *)list->allocator->alloc(sizeof(list_node_t)); + if (!node) { + return false; } - return false; + node->next = prev_node->next; + node->data = data; + prev_node->next = node; + if (list->tail == prev_node) { + list->tail = node; + } + ++list->length; + return true; } -void list_clear(list_t *list) { - assert(list != NULL); - for (list_node_t *node = list->head; node; ) - node = list_free_node(list, node); - list->head = NULL; - list->tail = NULL; - list->length = 0; +bool list_prepend(list_t *list, void *data) +{ + list_node_t *node; + assert(list != NULL); + assert(data != NULL); + + node = (list_node_t *)list->allocator->alloc(sizeof(list_node_t)); + if (!node) { + return false; + } + node->next = list->head; + node->data = data; + list->head = node; + if (list->tail == NULL) { + list->tail = list->head; + } + ++list->length; + return true; } -void list_foreach(const list_t *list, list_iter_cb callback) { - assert(list != NULL); - assert(callback != NULL); +bool list_append(list_t *list, void *data) +{ + list_node_t *node; + assert(list != NULL); + assert(data != NULL); + + node = (list_node_t *)list->allocator->alloc(sizeof(list_node_t)); + if (!node) { + return false; + } + node->next = NULL; + node->data = data; + if (list->tail == NULL) { + list->head = node; + list->tail = node; + } else { + list->tail->next = node; + list->tail = node; + } + ++list->length; + return true; +} + +bool list_remove(list_t *list, void *data) +{ + assert(list != NULL); + assert(data != NULL); + + if (list_is_empty(list)) { + return false; + } + + if (list->head->data == data) { + list_node_t *next = list_free_node(list, list->head); + if (list->tail == list->head) { + list->tail = next; + } + list->head = next; + return true; + } + + for (list_node_t *prev = list->head, *node = list->head->next; node; prev = node, node = node->next) + if (node->data == data) { + prev->next = list_free_node(list, node); + if (list->tail == node) { + list->tail = prev; + } + return true; + } + + return false; +} + +void list_clear(list_t *list) +{ + assert(list != NULL); + for (list_node_t *node = list->head; node; ) { + node = list_free_node(list, node); + } + list->head = NULL; + list->tail = NULL; + list->length = 0; +} + +void list_foreach(const list_t *list, list_iter_cb callback) +{ + assert(list != NULL); + assert(callback != NULL); + + for (list_node_t *node = list->head; node; ) { + list_node_t *next = node->next; + callback(node->data); + node = next; + } +} + +list_node_t *list_begin(const list_t *list) +{ + assert(list != NULL); + return list->head; +} + +list_node_t *list_end(UNUSED_ATTR const list_t *list) +{ + assert(list != NULL); + return NULL; +} + +list_node_t *list_next(const list_node_t *node) +{ + assert(node != NULL); + return node->next; +} + +void *list_node(const list_node_t *node) +{ + assert(node != NULL); + return node->data; +} + +list_node_t *list_free_node(list_t *list, list_node_t *node) +{ + assert(list != NULL); + assert(node != NULL); - for (list_node_t *node = list->head; node; ) { list_node_t *next = node->next; - callback(node->data); - node = next; - } -} - -list_node_t *list_begin(const list_t *list) { - assert(list != NULL); - return list->head; -} - -list_node_t *list_end(UNUSED_ATTR const list_t *list) { - assert(list != NULL); - return NULL; -} - -list_node_t *list_next(const list_node_t *node) { - assert(node != NULL); - return node->next; -} - -void *list_node(const list_node_t *node) { - assert(node != NULL); - return node->data; -} - -list_node_t *list_free_node(list_t *list, list_node_t *node) { - assert(list != NULL); - assert(node != NULL); - - list_node_t *next = node->next; - - if (list->free_cb) - list->free_cb(node->data); - list->allocator->free(node); - --list->length; - - return next; + + if (list->free_cb) { + list->free_cb(node->data); + } + list->allocator->free(node); + --list->length; + + return next; } diff --git a/components/bt/bluedroid/osi/osi_arch.c b/components/bt/bluedroid/osi/osi_arch.c old mode 100755 new mode 100644 index 0e8cd9639c..e896efd871 --- a/components/bt/bluedroid/osi/osi_arch.c +++ b/components/bt/bluedroid/osi/osi_arch.c @@ -38,17 +38,17 @@ int osi_mutex_new(osi_mutex_t *pxMutex) { - int xReturn = -1; + int xReturn = -1; - *pxMutex = xSemaphoreCreateMutex(); + *pxMutex = xSemaphoreCreateMutex(); - if (*pxMutex != NULL) { - xReturn = 0; - } + if (*pxMutex != NULL) { + xReturn = 0; + } - //LWIP_DEBUGF(THREAD_SAFE_DEBUG, ("osi_mutex_new: m=%p\n", *pxMutex)); + //LWIP_DEBUGF(THREAD_SAFE_DEBUG, ("osi_mutex_new: m=%p\n", *pxMutex)); - return xReturn; + return xReturn; } /** Lock a mutex @@ -56,14 +56,17 @@ osi_mutex_new(osi_mutex_t *pxMutex) void osi_mutex_lock(osi_mutex_t *pxMutex) { - while (xSemaphoreTake(*pxMutex, portMAX_DELAY) != pdPASS); + while (xSemaphoreTake(*pxMutex, portMAX_DELAY) != pdPASS); } int osi_mutex_trylock(osi_mutex_t *pxMutex) { - if (xSemaphoreTake(*pxMutex, 0) == pdPASS) return 0; - else return -1; + if (xSemaphoreTake(*pxMutex, 0) == pdPASS) { + return 0; + } else { + return -1; + } } /** Unlock a mutex @@ -71,7 +74,7 @@ osi_mutex_trylock(osi_mutex_t *pxMutex) void osi_mutex_unlock(osi_mutex_t *pxMutex) { - xSemaphoreGive(*pxMutex); + xSemaphoreGive(*pxMutex); } /** Delete a semaphore @@ -79,8 +82,8 @@ osi_mutex_unlock(osi_mutex_t *pxMutex) void osi_mutex_free(osi_mutex_t *pxMutex) { - //LWIP_DEBUGF(THREAD_SAFE_DEBUG, ("osi_mutex_free: m=%p\n", *pxMutex)); - vQueueDelete(*pxMutex); + //LWIP_DEBUGF(THREAD_SAFE_DEBUG, ("osi_mutex_free: m=%p\n", *pxMutex)); + vQueueDelete(*pxMutex); } /*-----------------------------------------------------------------------------------*/ @@ -90,15 +93,15 @@ osi_mutex_free(osi_mutex_t *pxMutex) int osi_sem_new(osi_sem_t *sem, uint32_t max_count, uint32_t init_count) { - int xReturn = -1; - if (sem) { - *sem = xSemaphoreCreateCounting(max_count, init_count); - if ((*sem) != NULL) { - xReturn = 0; + int xReturn = -1; + if (sem) { + *sem = xSemaphoreCreateCounting(max_count, init_count); + if ((*sem) != NULL) { + xReturn = 0; + } } - } - return xReturn; + return xReturn; } /*-----------------------------------------------------------------------------------*/ @@ -106,7 +109,7 @@ osi_sem_new(osi_sem_t *sem, uint32_t max_count, uint32_t init_count) void osi_sem_signal(osi_sem_t *sem) { - xSemaphoreGive(*sem); + xSemaphoreGive(*sem); } /*-----------------------------------------------------------------------------------*/ @@ -128,38 +131,38 @@ osi_sem_signal(osi_sem_t *sem) uint32_t osi_sem_wait(osi_sem_t *sem, uint32_t timeout) { - portTickType StartTime, EndTime, Elapsed; - unsigned long ulReturn; + portTickType StartTime, EndTime, Elapsed; + unsigned long ulReturn; - StartTime = xTaskGetTickCount(); + StartTime = xTaskGetTickCount(); - if (timeout != 0) { - if (xSemaphoreTake(*sem, timeout / portTICK_RATE_MS) == pdTRUE) { - EndTime = xTaskGetTickCount(); - Elapsed = (EndTime - StartTime) * portTICK_RATE_MS; + if (timeout != 0) { + if (xSemaphoreTake(*sem, timeout / portTICK_RATE_MS) == pdTRUE) { + EndTime = xTaskGetTickCount(); + Elapsed = (EndTime - StartTime) * portTICK_RATE_MS; - if (Elapsed == 0) { - Elapsed = 1; - } + if (Elapsed == 0) { + Elapsed = 1; + } - ulReturn = Elapsed; - } else { - ulReturn = OSI_ARCH_TIMEOUT; - } - } else { // must block without a timeout - while (xSemaphoreTake(*sem, portMAX_DELAY) != pdTRUE); + ulReturn = Elapsed; + } else { + ulReturn = OSI_ARCH_TIMEOUT; + } + } else { // must block without a timeout + while (xSemaphoreTake(*sem, portMAX_DELAY) != pdTRUE); - EndTime = xTaskGetTickCount(); - Elapsed = (EndTime - StartTime) * portTICK_RATE_MS; + EndTime = xTaskGetTickCount(); + Elapsed = (EndTime - StartTime) * portTICK_RATE_MS; - if (Elapsed == 0) { - Elapsed = 1; + if (Elapsed == 0) { + Elapsed = 1; + } + + ulReturn = Elapsed; } - ulReturn = Elapsed; - } - - return ulReturn ; // return time blocked + return ulReturn ; // return time blocked } /*-----------------------------------------------------------------------------------*/ @@ -167,7 +170,7 @@ osi_sem_wait(osi_sem_t *sem, uint32_t timeout) void osi_sem_free(osi_sem_t *sem) { - vSemaphoreDelete(*sem); + vSemaphoreDelete(*sem); } /*-----------------------------------------------------------------------------------*/ @@ -181,13 +184,13 @@ osi_arch_init(void) uint32_t osi_now(void) { - return xTaskGetTickCount(); + return xTaskGetTickCount(); } void osi_delay_ms(uint32_t ms) { - vTaskDelay(ms/portTICK_RATE_MS); + vTaskDelay(ms / portTICK_RATE_MS); } diff --git a/components/bt/bluedroid/stack/btm/btm_acl.c b/components/bt/bluedroid/stack/btm/btm_acl.c old mode 100755 new mode 100644 index 05055a09e8..266254a520 --- a/components/bt/bluedroid/stack/btm/btm_acl.c +++ b/components/bt/bluedroid/stack/btm/btm_acl.c @@ -95,24 +95,21 @@ tACL_CONN *btm_bda_to_acl (BD_ADDR bda, tBT_TRANSPORT transport) { tACL_CONN *p = &btm_cb.acl_db[0]; UINT16 xx; - if (bda) - { - for (xx = 0; xx < MAX_L2CAP_LINKS; xx++, p++) - { + if (bda) { + for (xx = 0; xx < MAX_L2CAP_LINKS; xx++, p++) { if ((p->in_use) && (!memcmp (p->remote_addr, bda, BD_ADDR_LEN)) #if BLE_INCLUDED == TRUE - && p->transport == transport + && p->transport == transport #endif - ) - { + ) { BTM_TRACE_DEBUG ("btm_bda_to_acl found\n"); - return(p); + return (p); } } } /* If here, no BD Addr found */ - return((tACL_CONN *)NULL); + return ((tACL_CONN *)NULL); } /******************************************************************************* @@ -129,16 +126,14 @@ UINT8 btm_handle_to_acl_index (UINT16 hci_handle) tACL_CONN *p = &btm_cb.acl_db[0]; UINT8 xx; BTM_TRACE_DEBUG ("btm_handle_to_acl_index\n"); - for (xx = 0; xx < MAX_L2CAP_LINKS; xx++, p++) - { - if ((p->in_use) && (p->hci_handle == hci_handle)) - { + for (xx = 0; xx < MAX_L2CAP_LINKS; xx++, p++) { + if ((p->in_use) && (p->hci_handle == hci_handle)) { break; } } /* If here, no BD Addr found */ - return(xx); + return (xx); } #if BLE_PRIVACY_SPT == TRUE @@ -158,14 +153,12 @@ BOOLEAN btm_ble_get_acl_remote_addr(tBTM_SEC_DEV_REC *p_dev_rec, BD_ADDR conn_ad #if BLE_INCLUDED == TRUE BOOLEAN st = TRUE; - if (p_dev_rec == NULL) - { + if (p_dev_rec == NULL) { BTM_TRACE_ERROR("btm_ble_get_acl_remote_addr can not find device with matching address\n"); return FALSE; } - switch (p_dev_rec->ble.active_addr_type) - { + switch (p_dev_rec->ble.active_addr_type) { case BTM_BLE_ADDR_PSEUDO: memcpy(conn_addr, p_dev_rec->bd_addr, BD_ADDR_LEN); * p_addr_type = p_dev_rec->ble.ble_addr_type; @@ -214,27 +207,24 @@ void btm_acl_created (BD_ADDR bda, DEV_CLASS dc, BD_NAME bdn, UINT8 xx; BTM_TRACE_DEBUG ("btm_acl_created hci_handle=%d link_role=%d transport=%d\n", - hci_handle,link_role, transport); + hci_handle, link_role, transport); /* Ensure we don't have duplicates */ p = btm_bda_to_acl(bda, transport); - if (p != (tACL_CONN *)NULL) - { + if (p != (tACL_CONN *)NULL) { p->hci_handle = hci_handle; p->link_role = link_role; #if BLE_INCLUDED == TRUE p->transport = transport; #endif BTM_TRACE_DEBUG ("Duplicate btm_acl_created: RemBdAddr: %02x%02x%02x%02x%02x%02x\n", - bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]); + bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]); BTM_SetLinkPolicy(p->remote_addr, &btm_cb.btm_def_link_policy); return; } /* Allocate acl_db entry */ - for (xx = 0, p = &btm_cb.acl_db[0]; xx < MAX_L2CAP_LINKS; xx++, p++) - { - if (!p->in_use) - { + for (xx = 0, p = &btm_cb.acl_db[0]; xx < MAX_L2CAP_LINKS; xx++, p++) { + if (!p->in_use) { p->in_use = TRUE; p->hci_handle = hci_handle; p->link_role = link_role; @@ -246,7 +236,7 @@ void btm_acl_created (BD_ADDR bda, DEV_CLASS dc, BD_NAME bdn, #if BLE_PRIVACY_SPT == TRUE if (transport == BT_TRANSPORT_LE) btm_ble_refresh_local_resolvable_private_addr(bda, - btm_cb.ble_ctr_cb.addr_mgnt_cb.private_addr); + btm_cb.ble_ctr_cb.addr_mgnt_cb.private_addr); #else p->conn_addr_type = BLE_ADDR_PUBLIC; memcpy(p->conn_addr, &controller_get_interface()->get_address()->address, BD_ADDR_LEN); @@ -258,35 +248,33 @@ void btm_acl_created (BD_ADDR bda, DEV_CLASS dc, BD_NAME bdn, btm_pm_sm_alloc(xx); - if (dc) + if (dc) { memcpy (p->remote_dc, dc, DEV_CLASS_LEN); + } - if (bdn) + if (bdn) { memcpy (p->remote_name, bdn, BTM_MAX_REM_BD_NAME_LEN); + } /* if BR/EDR do something more */ - if (transport == BT_TRANSPORT_BR_EDR) - { + if (transport == BT_TRANSPORT_BR_EDR) { btsnd_hcic_read_rmt_clk_offset (p->hci_handle); btsnd_hcic_rmt_ver_req (p->hci_handle); } p_dev_rec = btm_find_dev_by_handle (hci_handle); #if (BLE_INCLUDED == TRUE) - if (p_dev_rec ) - { + if (p_dev_rec ) { BTM_TRACE_DEBUG ("device_type=0x%x\n", p_dev_rec->device_type); } #endif - if (p_dev_rec && !(transport == BT_TRANSPORT_LE)) - { + if (p_dev_rec && !(transport == BT_TRANSPORT_LE)) { /* If remote features already known, copy them and continue connection setup */ if ((p_dev_rec->num_read_pages) && - (p_dev_rec->num_read_pages <= (HCI_EXT_FEATURES_PAGE_MAX + 1))) - { + (p_dev_rec->num_read_pages <= (HCI_EXT_FEATURES_PAGE_MAX + 1))) { memcpy (p->peer_lmp_features, p_dev_rec->features, - (HCI_FEATURE_BYTES_PER_PAGE * p_dev_rec->num_read_pages)); + (HCI_FEATURE_BYTES_PER_PAGE * p_dev_rec->num_read_pages)); p->num_read_pages = p_dev_rec->num_read_pages; const UINT8 req_pend = (p_dev_rec->sm4 & BTM_SM4_REQ_PEND); @@ -295,8 +283,7 @@ void btm_acl_created (BD_ADDR bda, DEV_CLASS dc, BD_NAME bdn, btm_sec_set_peer_sec_caps(p, p_dev_rec); BTM_TRACE_API("%s: pend:%d\n", __FUNCTION__, req_pend); - if (req_pend) - { + if (req_pend) { /* Request for remaining Security Features (if any) */ l2cu_resubmit_pending_sec_req (p_dev_rec->bd_addr); } @@ -307,24 +294,19 @@ void btm_acl_created (BD_ADDR bda, DEV_CLASS dc, BD_NAME bdn, #if (BLE_INCLUDED == TRUE) /* If here, features are not known yet */ - if (p_dev_rec && transport == BT_TRANSPORT_LE) - { + if (p_dev_rec && transport == BT_TRANSPORT_LE) { #if BLE_PRIVACY_SPT == TRUE btm_ble_get_acl_remote_addr (p_dev_rec, p->active_remote_addr, - &p->active_remote_addr_type); + &p->active_remote_addr_type); #endif if (HCI_LE_SLAVE_INIT_FEAT_EXC_SUPPORTED(controller_get_interface()->get_features_ble()->as_array) - || link_role == HCI_ROLE_MASTER) - { + || link_role == HCI_ROLE_MASTER) { btsnd_hcic_ble_read_remote_feat(p->hci_handle); - } - else - { + } else { btm_establish_continue(p); } - } - else + } else #endif { btm_read_remote_features (p->hci_handle); @@ -352,8 +334,7 @@ void btm_acl_report_role_change (UINT8 hci_status, BD_ADDR bda) tBTM_ROLE_SWITCH_CMPL ref_data; BTM_TRACE_DEBUG ("btm_acl_report_role_change\n"); if (btm_cb.devcb.p_switch_role_cb - && (bda && (0 == memcmp(btm_cb.devcb.switch_role_ref_data.remote_bd_addr, bda, BD_ADDR_LEN)))) - { + && (bda && (0 == memcmp(btm_cb.devcb.switch_role_ref_data.remote_bd_addr, bda, BD_ADDR_LEN)))) { memcpy (&ref_data, &btm_cb.devcb.switch_role_ref_data, sizeof(tBTM_ROLE_SWITCH_CMPL)); ref_data.hci_status = hci_status; (*btm_cb.devcb.p_switch_role_cb)(&ref_data); @@ -378,25 +359,22 @@ void btm_acl_removed (BD_ADDR bda, tBT_TRANSPORT transport) tACL_CONN *p; tBTM_BL_EVENT_DATA evt_data; #if (defined BLE_INCLUDED && BLE_INCLUDED == TRUE) - tBTM_SEC_DEV_REC *p_dev_rec=NULL; + tBTM_SEC_DEV_REC *p_dev_rec = NULL; #endif BTM_TRACE_DEBUG ("btm_acl_removed\n"); p = btm_bda_to_acl(bda, transport); - if (p != (tACL_CONN *)NULL) - { + if (p != (tACL_CONN *)NULL) { p->in_use = FALSE; /* if the disconnected channel has a pending role switch, clear it now */ btm_acl_report_role_change(HCI_ERR_NO_CONNECTION, bda); /* Only notify if link up has had a chance to be issued */ - if (p->link_up_issued) - { + if (p->link_up_issued) { p->link_up_issued = FALSE; /* If anyone cares, tell him database changed */ - if (btm_cb.p_bl_changed_cb) - { + if (btm_cb.p_bl_changed_cb) { evt_data.event = BTM_BL_DISCN_EVT; evt_data.discn.p_bda = bda; #if BLE_INCLUDED == TRUE @@ -412,39 +390,30 @@ void btm_acl_removed (BD_ADDR bda, tBT_TRANSPORT transport) #if (defined BLE_INCLUDED && BLE_INCLUDED == TRUE) BTM_TRACE_DEBUG ("acl hci_handle=%d transport=%d connectable_mode=0x%0x link_role=%d\n", - p->hci_handle, - p->transport, - btm_cb.ble_ctr_cb.inq_var.connectable_mode, - p->link_role); + p->hci_handle, + p->transport, + btm_cb.ble_ctr_cb.inq_var.connectable_mode, + p->link_role); p_dev_rec = btm_find_dev(bda); - if ( p_dev_rec) - { + if ( p_dev_rec) { BTM_TRACE_DEBUG("before update p_dev_rec->sec_flags=0x%x\n", p_dev_rec->sec_flags); - if (p->transport == BT_TRANSPORT_LE) - { + if (p->transport == BT_TRANSPORT_LE) { BTM_TRACE_DEBUG("LE link down\n"); p_dev_rec->sec_flags &= ~(BTM_SEC_LE_ENCRYPTED | BTM_SEC_ROLE_SWITCHED); - if ( (p_dev_rec->sec_flags & BTM_SEC_LE_LINK_KEY_KNOWN) == 0) - { + if ( (p_dev_rec->sec_flags & BTM_SEC_LE_LINK_KEY_KNOWN) == 0) { BTM_TRACE_DEBUG("Not Bonded\n"); p_dev_rec->sec_flags &= ~(BTM_SEC_LE_LINK_KEY_AUTHED | BTM_SEC_LE_AUTHENTICATED); - } - else - { + } else { BTM_TRACE_DEBUG("Bonded\n"); } - } - else - { + } else { BTM_TRACE_DEBUG("Bletooth link down\n"); p_dev_rec->sec_flags &= ~(BTM_SEC_AUTHORIZED | BTM_SEC_AUTHENTICATED - | BTM_SEC_ENCRYPTED | BTM_SEC_ROLE_SWITCHED); + | BTM_SEC_ENCRYPTED | BTM_SEC_ROLE_SWITCHED); } BTM_TRACE_DEBUG("after update p_dev_rec->sec_flags=0x%x\n", p_dev_rec->sec_flags); - } - else - { + } else { BTM_TRACE_ERROR("Device not found\n"); } @@ -471,11 +440,9 @@ void btm_acl_device_down (void) tACL_CONN *p = &btm_cb.acl_db[0]; UINT16 xx; BTM_TRACE_DEBUG ("btm_acl_device_down\n"); - for (xx = 0; xx < MAX_L2CAP_LINKS; xx++, p++) - { - if (p->in_use) - { - BTM_TRACE_DEBUG ("hci_handle=%d HCI_ERR_HW_FAILURE \n",p->hci_handle ); + for (xx = 0; xx < MAX_L2CAP_LINKS; xx++, p++) { + if (p->in_use) { + BTM_TRACE_DEBUG ("hci_handle=%d HCI_ERR_HW_FAILURE \n", p->hci_handle ); l2c_link_hci_disc_comp (p->hci_handle, HCI_ERR_HW_FAILURE); } } @@ -497,53 +464,51 @@ void btm_acl_update_busy_level (tBTM_BLI_EVENT event) UINT8 busy_level; BTM_TRACE_DEBUG ("btm_acl_update_busy_level\n"); BOOLEAN old_inquiry_state = btm_cb.is_inquiry; - switch (event) - { - case BTM_BLI_ACL_UP_EVT: - BTM_TRACE_DEBUG ("BTM_BLI_ACL_UP_EVT\n"); - break; - case BTM_BLI_ACL_DOWN_EVT: - BTM_TRACE_DEBUG ("BTM_BLI_ACL_DOWN_EVT\n"); - break; - case BTM_BLI_PAGE_EVT: - BTM_TRACE_DEBUG ("BTM_BLI_PAGE_EVT\n"); - btm_cb.is_paging = TRUE; - evt.busy_level_flags= BTM_BL_PAGING_STARTED; - break; - case BTM_BLI_PAGE_DONE_EVT: - BTM_TRACE_DEBUG ("BTM_BLI_PAGE_DONE_EVT\n"); - btm_cb.is_paging = FALSE; - evt.busy_level_flags = BTM_BL_PAGING_COMPLETE; - break; - case BTM_BLI_INQ_EVT: - BTM_TRACE_DEBUG ("BTM_BLI_INQ_EVT\n"); - btm_cb.is_inquiry = TRUE; - evt.busy_level_flags = BTM_BL_INQUIRY_STARTED; - break; - case BTM_BLI_INQ_CANCEL_EVT: - BTM_TRACE_DEBUG ("BTM_BLI_INQ_CANCEL_EVT\n"); - btm_cb.is_inquiry = FALSE; - evt.busy_level_flags = BTM_BL_INQUIRY_CANCELLED; - break; - case BTM_BLI_INQ_DONE_EVT: - BTM_TRACE_DEBUG ("BTM_BLI_INQ_DONE_EVT\n"); - btm_cb.is_inquiry = FALSE; - evt.busy_level_flags = BTM_BL_INQUIRY_COMPLETE; - break; + switch (event) { + case BTM_BLI_ACL_UP_EVT: + BTM_TRACE_DEBUG ("BTM_BLI_ACL_UP_EVT\n"); + break; + case BTM_BLI_ACL_DOWN_EVT: + BTM_TRACE_DEBUG ("BTM_BLI_ACL_DOWN_EVT\n"); + break; + case BTM_BLI_PAGE_EVT: + BTM_TRACE_DEBUG ("BTM_BLI_PAGE_EVT\n"); + btm_cb.is_paging = TRUE; + evt.busy_level_flags = BTM_BL_PAGING_STARTED; + break; + case BTM_BLI_PAGE_DONE_EVT: + BTM_TRACE_DEBUG ("BTM_BLI_PAGE_DONE_EVT\n"); + btm_cb.is_paging = FALSE; + evt.busy_level_flags = BTM_BL_PAGING_COMPLETE; + break; + case BTM_BLI_INQ_EVT: + BTM_TRACE_DEBUG ("BTM_BLI_INQ_EVT\n"); + btm_cb.is_inquiry = TRUE; + evt.busy_level_flags = BTM_BL_INQUIRY_STARTED; + break; + case BTM_BLI_INQ_CANCEL_EVT: + BTM_TRACE_DEBUG ("BTM_BLI_INQ_CANCEL_EVT\n"); + btm_cb.is_inquiry = FALSE; + evt.busy_level_flags = BTM_BL_INQUIRY_CANCELLED; + break; + case BTM_BLI_INQ_DONE_EVT: + BTM_TRACE_DEBUG ("BTM_BLI_INQ_DONE_EVT\n"); + btm_cb.is_inquiry = FALSE; + evt.busy_level_flags = BTM_BL_INQUIRY_COMPLETE; + break; } - if (btm_cb.is_paging || btm_cb.is_inquiry) + if (btm_cb.is_paging || btm_cb.is_inquiry) { busy_level = 10; - else + } else { busy_level = BTM_GetNumAclLinks(); + } - if ((busy_level != btm_cb.busy_level) ||(old_inquiry_state != btm_cb.is_inquiry)) - { + if ((busy_level != btm_cb.busy_level) || (old_inquiry_state != btm_cb.is_inquiry)) { evt.event = BTM_BL_UPDATE_EVT; evt.busy_level = busy_level; btm_cb.busy_level = busy_level; - if (btm_cb.p_bl_changed_cb && (btm_cb.bl_evt_mask & BTM_BL_UPDATE_MASK)) - { + if (btm_cb.p_bl_changed_cb && (btm_cb.bl_evt_mask & BTM_BL_UPDATE_MASK)) { (*btm_cb.p_bl_changed_cb)((tBTM_BL_EVENT_DATA *)&evt); } } @@ -564,15 +529,14 @@ tBTM_STATUS BTM_GetRole (BD_ADDR remote_bd_addr, UINT8 *p_role) { tACL_CONN *p; BTM_TRACE_DEBUG ("BTM_GetRole\n"); - if ((p = btm_bda_to_acl(remote_bd_addr, BT_TRANSPORT_BR_EDR)) == NULL) - { + if ((p = btm_bda_to_acl(remote_bd_addr, BT_TRANSPORT_BR_EDR)) == NULL) { *p_role = BTM_ROLE_UNDEFINED; - return(BTM_UNKNOWN_ADDR); + return (BTM_UNKNOWN_ADDR); } /* Get the current role */ *p_role = p->link_role; - return(BTM_SUCCESS); + return (BTM_SUCCESS); } @@ -607,97 +571,97 @@ tBTM_STATUS BTM_SwitchRole (BD_ADDR remote_bd_addr, UINT8 new_role, tBTM_CMPL_CB BD_ADDR_PTR p_bda; #endif BTM_TRACE_API ("BTM_SwitchRole BDA: %02x-%02x-%02x-%02x-%02x-%02x\n", - remote_bd_addr[0], remote_bd_addr[1], remote_bd_addr[2], - remote_bd_addr[3], remote_bd_addr[4], remote_bd_addr[5]); + remote_bd_addr[0], remote_bd_addr[1], remote_bd_addr[2], + remote_bd_addr[3], remote_bd_addr[4], remote_bd_addr[5]); /* Make sure the local device supports switching */ - if (!controller_get_interface()->supports_master_slave_role_switch()) - return(BTM_MODE_UNSUPPORTED); + if (!controller_get_interface()->supports_master_slave_role_switch()) { + return (BTM_MODE_UNSUPPORTED); + } - if (btm_cb.devcb.p_switch_role_cb && p_cb) - { + if (btm_cb.devcb.p_switch_role_cb && p_cb) { #if (BT_USE_TRACES == TRUE) p_bda = btm_cb.devcb.switch_role_ref_data.remote_bd_addr; BTM_TRACE_DEBUG ("Role switch on other device is in progress 0x%02x%02x%02x%02x%02x%02x\n", - p_bda[0], p_bda[1], p_bda[2], - p_bda[3], p_bda[4], p_bda[5]); + p_bda[0], p_bda[1], p_bda[2], + p_bda[3], p_bda[4], p_bda[5]); #endif - return(BTM_BUSY); + return (BTM_BUSY); } - if ((p = btm_bda_to_acl(remote_bd_addr, BT_TRANSPORT_BR_EDR)) == NULL) - return(BTM_UNKNOWN_ADDR); + if ((p = btm_bda_to_acl(remote_bd_addr, BT_TRANSPORT_BR_EDR)) == NULL) { + return (BTM_UNKNOWN_ADDR); + } /* Finished if already in desired role */ - if (p->link_role == new_role) - return(BTM_SUCCESS); + if (p->link_role == new_role) { + return (BTM_SUCCESS); + } #if BTM_SCO_INCLUDED == TRUE /* Check if there is any SCO Active on this BD Address */ is_sco_active = btm_is_sco_active_by_bdaddr(remote_bd_addr); - if (is_sco_active == TRUE) - return(BTM_NO_RESOURCES); + if (is_sco_active == TRUE) { + return (BTM_NO_RESOURCES); + } #endif /* Ignore role switch request if the previous request was not completed */ - if (p->switch_role_state != BTM_ACL_SWKEY_STATE_IDLE) - { + if (p->switch_role_state != BTM_ACL_SWKEY_STATE_IDLE) { BTM_TRACE_DEBUG ("BTM_SwitchRole busy: %d\n", - p->switch_role_state); - return(BTM_BUSY); + p->switch_role_state); + return (BTM_BUSY); } - if ((status = BTM_ReadPowerMode(p->remote_addr, &pwr_mode)) != BTM_SUCCESS) - return(status); + if ((status = BTM_ReadPowerMode(p->remote_addr, &pwr_mode)) != BTM_SUCCESS) { + return (status); + } /* Wake up the link if in sniff or park before attempting switch */ - if (pwr_mode == BTM_PM_MD_PARK || pwr_mode == BTM_PM_MD_SNIFF) - { - memset( (void*)&settings, 0, sizeof(settings)); + if (pwr_mode == BTM_PM_MD_PARK || pwr_mode == BTM_PM_MD_SNIFF) { + memset( (void *)&settings, 0, sizeof(settings)); settings.mode = BTM_PM_MD_ACTIVE; status = BTM_SetPowerMode (BTM_PM_SET_ONLY_ID, p->remote_addr, &settings); - if (status != BTM_CMD_STARTED) - return(BTM_WRONG_MODE); + if (status != BTM_CMD_STARTED) { + return (BTM_WRONG_MODE); + } p->switch_role_state = BTM_ACL_SWKEY_STATE_MODE_CHANGE; } /* some devices do not support switch while encryption is on */ - else - { + else { p_dev_rec = btm_find_dev (remote_bd_addr); if ((p_dev_rec != NULL) - && ((p_dev_rec->sec_flags & BTM_SEC_ENCRYPTED) != 0) - && !BTM_EPR_AVAILABLE(p)) - { + && ((p_dev_rec->sec_flags & BTM_SEC_ENCRYPTED) != 0) + && !BTM_EPR_AVAILABLE(p)) { /* bypass turning off encryption if change link key is already doing it */ - if (p->encrypt_state != BTM_ACL_ENCRYPT_STATE_ENCRYPT_OFF) - { - if (!btsnd_hcic_set_conn_encrypt (p->hci_handle, FALSE)) - return(BTM_NO_RESOURCES); - else + if (p->encrypt_state != BTM_ACL_ENCRYPT_STATE_ENCRYPT_OFF) { + if (!btsnd_hcic_set_conn_encrypt (p->hci_handle, FALSE)) { + return (BTM_NO_RESOURCES); + } else { p->encrypt_state = BTM_ACL_ENCRYPT_STATE_ENCRYPT_OFF; + } } p->switch_role_state = BTM_ACL_SWKEY_STATE_ENCRYPTION_OFF; - } - else - { - if (!btsnd_hcic_switch_role (remote_bd_addr, new_role)) - return(BTM_NO_RESOURCES); + } else { + if (!btsnd_hcic_switch_role (remote_bd_addr, new_role)) { + return (BTM_NO_RESOURCES); + } p->switch_role_state = BTM_ACL_SWKEY_STATE_IN_PROGRESS; #if BTM_DISC_DURING_RS == TRUE - if (p_dev_rec) + if (p_dev_rec) { p_dev_rec->rs_disc_pending = BTM_SEC_RS_PENDING; + } #endif } } /* Initialize return structure in case request fails */ - if (p_cb) - { + if (p_cb) { memcpy (btm_cb.devcb.switch_role_ref_data.remote_bd_addr, remote_bd_addr, BD_ADDR_LEN); btm_cb.devcb.switch_role_ref_data.role = new_role; @@ -705,7 +669,7 @@ tBTM_STATUS BTM_SwitchRole (BD_ADDR remote_bd_addr, UINT8 new_role, tBTM_CMPL_CB btm_cb.devcb.switch_role_ref_data.hci_status = HCI_ERR_UNSUPPORTED_VALUE; btm_cb.devcb.p_switch_role_cb = p_cb; } - return(BTM_CMD_STARTED); + return (BTM_CMD_STARTED); } /******************************************************************************* @@ -728,54 +692,48 @@ void btm_acl_encrypt_change (UINT16 handle, UINT8 status, UINT8 encr_enable) tBTM_BL_ROLE_CHG_DATA evt; BTM_TRACE_DEBUG ("btm_acl_encrypt_change handle=%d status=%d encr_enabl=%d\n", - handle, status, encr_enable); + handle, status, encr_enable); xx = btm_handle_to_acl_index(handle); /* don't assume that we can never get a bad hci_handle */ - if (xx < MAX_L2CAP_LINKS) + if (xx < MAX_L2CAP_LINKS) { p = &btm_cb.acl_db[xx]; - else + } else { return; + } /* Process Role Switch if active */ - if (p->switch_role_state == BTM_ACL_SWKEY_STATE_ENCRYPTION_OFF) - { + if (p->switch_role_state == BTM_ACL_SWKEY_STATE_ENCRYPTION_OFF) { /* if encryption turn off failed we still will try to switch role */ - if (encr_enable) - { + if (encr_enable) { p->switch_role_state = BTM_ACL_SWKEY_STATE_IDLE; p->encrypt_state = BTM_ACL_ENCRYPT_STATE_IDLE; - } - else - { + } else { p->switch_role_state = BTM_ACL_SWKEY_STATE_SWITCHING; p->encrypt_state = BTM_ACL_ENCRYPT_STATE_TEMP_FUNC; } - if (!btsnd_hcic_switch_role (p->remote_addr, (UINT8)!p->link_role)) - { + if (!btsnd_hcic_switch_role (p->remote_addr, (UINT8)!p->link_role)) { p->switch_role_state = BTM_ACL_SWKEY_STATE_IDLE; p->encrypt_state = BTM_ACL_ENCRYPT_STATE_IDLE; btm_acl_report_role_change(btm_cb.devcb.switch_role_ref_data.hci_status, p->remote_addr); } #if BTM_DISC_DURING_RS == TRUE - else - { - if ((p_dev_rec = btm_find_dev (p->remote_addr)) != NULL) + else { + if ((p_dev_rec = btm_find_dev (p->remote_addr)) != NULL) { p_dev_rec->rs_disc_pending = BTM_SEC_RS_PENDING; + } } #endif } /* Finished enabling Encryption after role switch */ - else if (p->switch_role_state == BTM_ACL_SWKEY_STATE_ENCRYPTION_ON) - { + else if (p->switch_role_state == BTM_ACL_SWKEY_STATE_ENCRYPTION_ON) { p->switch_role_state = BTM_ACL_SWKEY_STATE_IDLE; p->encrypt_state = BTM_ACL_ENCRYPT_STATE_IDLE; btm_acl_report_role_change(btm_cb.devcb.switch_role_ref_data.hci_status, p->remote_addr); /* if role change event is registered, report it now */ - if (btm_cb.p_bl_changed_cb && (btm_cb.bl_evt_mask & BTM_BL_ROLE_CHG_MASK)) - { + if (btm_cb.p_bl_changed_cb && (btm_cb.bl_evt_mask & BTM_BL_ROLE_CHG_MASK)) { evt.event = BTM_BL_ROLE_CHG_EVT; evt.new_role = btm_cb.devcb.switch_role_ref_data.role; evt.p_bda = btm_cb.devcb.switch_role_ref_data.remote_bd_addr; @@ -783,20 +741,18 @@ void btm_acl_encrypt_change (UINT16 handle, UINT8 status, UINT8 encr_enable) (*btm_cb.p_bl_changed_cb)((tBTM_BL_EVENT_DATA *)&evt); BTM_TRACE_DEBUG("Role Switch Event: new_role 0x%02x, HCI Status 0x%02x, rs_st:%d\n", - evt.new_role, evt.hci_status, p->switch_role_state); + evt.new_role, evt.hci_status, p->switch_role_state); } #if BTM_DISC_DURING_RS == TRUE /* If a disconnect is pending, issue it now that role switch has completed */ - if ((p_dev_rec = btm_find_dev (p->remote_addr)) != NULL) - { - if (p_dev_rec->rs_disc_pending == BTM_SEC_DISC_PENDING) - { + if ((p_dev_rec = btm_find_dev (p->remote_addr)) != NULL) { + if (p_dev_rec->rs_disc_pending == BTM_SEC_DISC_PENDING) { BTM_TRACE_WARNING("btm_acl_encrypt_change -> Issuing delayed HCI_Disconnect!!!\n"); btsnd_hcic_disconnect(p_dev_rec->hci_handle, HCI_ERR_PEER_USER); } BTM_TRACE_ERROR("btm_acl_encrypt_change: tBTM_SEC_DEV:0x%x rs_disc_pending=%d\n", - (UINT32)p_dev_rec, p_dev_rec->rs_disc_pending); + (UINT32)p_dev_rec, p_dev_rec->rs_disc_pending); p_dev_rec->rs_disc_pending = BTM_SEC_RS_NOT_PENDING; /* reset flag */ } #endif @@ -816,38 +772,34 @@ tBTM_STATUS BTM_SetLinkPolicy (BD_ADDR remote_bda, UINT16 *settings) tACL_CONN *p; UINT8 *localFeatures = BTM_ReadLocalFeatures(); BTM_TRACE_DEBUG ("BTM_SetLinkPolicy\n"); -/* BTM_TRACE_API ("BTM_SetLinkPolicy: requested settings: 0x%04x", *settings ); */ + /* BTM_TRACE_API ("BTM_SetLinkPolicy: requested settings: 0x%04x", *settings ); */ /* First, check if hold mode is supported */ - if (*settings != HCI_DISABLE_ALL_LM_MODES) - { - if ( (*settings & HCI_ENABLE_MASTER_SLAVE_SWITCH) && (!HCI_SWITCH_SUPPORTED(localFeatures)) ) - { + if (*settings != HCI_DISABLE_ALL_LM_MODES) { + if ( (*settings & HCI_ENABLE_MASTER_SLAVE_SWITCH) && (!HCI_SWITCH_SUPPORTED(localFeatures)) ) { *settings &= (~HCI_ENABLE_MASTER_SLAVE_SWITCH); BTM_TRACE_API ("BTM_SetLinkPolicy switch not supported (settings: 0x%04x)\n", *settings ); } - if ( (*settings & HCI_ENABLE_HOLD_MODE) && (!HCI_HOLD_MODE_SUPPORTED(localFeatures)) ) - { + if ( (*settings & HCI_ENABLE_HOLD_MODE) && (!HCI_HOLD_MODE_SUPPORTED(localFeatures)) ) { *settings &= (~HCI_ENABLE_HOLD_MODE); BTM_TRACE_API ("BTM_SetLinkPolicy hold not supported (settings: 0x%04x)\n", *settings ); } - if ( (*settings & HCI_ENABLE_SNIFF_MODE) && (!HCI_SNIFF_MODE_SUPPORTED(localFeatures)) ) - { + if ( (*settings & HCI_ENABLE_SNIFF_MODE) && (!HCI_SNIFF_MODE_SUPPORTED(localFeatures)) ) { *settings &= (~HCI_ENABLE_SNIFF_MODE); BTM_TRACE_API ("BTM_SetLinkPolicy sniff not supported (settings: 0x%04x)\n", *settings ); } - if ( (*settings & HCI_ENABLE_PARK_MODE) && (!HCI_PARK_MODE_SUPPORTED(localFeatures)) ) - { + if ( (*settings & HCI_ENABLE_PARK_MODE) && (!HCI_PARK_MODE_SUPPORTED(localFeatures)) ) { *settings &= (~HCI_ENABLE_PARK_MODE); BTM_TRACE_API ("BTM_SetLinkPolicy park not supported (settings: 0x%04x)\n", *settings ); } } - if ((p = btm_bda_to_acl(remote_bda, BT_TRANSPORT_BR_EDR)) != NULL) - return(btsnd_hcic_write_policy_set (p->hci_handle, *settings) ? BTM_CMD_STARTED : BTM_NO_RESOURCES); + if ((p = btm_bda_to_acl(remote_bda, BT_TRANSPORT_BR_EDR)) != NULL) { + return (btsnd_hcic_write_policy_set (p->hci_handle, *settings) ? BTM_CMD_STARTED : BTM_NO_RESOURCES); + } /* If here, no BD Addr found */ - return(BTM_UNKNOWN_ADDR); + return (BTM_UNKNOWN_ADDR); } /******************************************************************************* @@ -866,23 +818,19 @@ void BTM_SetDefaultLinkPolicy (UINT16 settings) BTM_TRACE_DEBUG("BTM_SetDefaultLinkPolicy setting:0x%04x\n", settings); - if((settings & HCI_ENABLE_MASTER_SLAVE_SWITCH) && (!HCI_SWITCH_SUPPORTED(localFeatures))) - { + if ((settings & HCI_ENABLE_MASTER_SLAVE_SWITCH) && (!HCI_SWITCH_SUPPORTED(localFeatures))) { settings &= ~HCI_ENABLE_MASTER_SLAVE_SWITCH; BTM_TRACE_DEBUG("BTM_SetDefaultLinkPolicy switch not supported (settings: 0x%04x)\n", settings); } - if ((settings & HCI_ENABLE_HOLD_MODE) && (!HCI_HOLD_MODE_SUPPORTED(localFeatures))) - { + if ((settings & HCI_ENABLE_HOLD_MODE) && (!HCI_HOLD_MODE_SUPPORTED(localFeatures))) { settings &= ~HCI_ENABLE_HOLD_MODE; BTM_TRACE_DEBUG("BTM_SetDefaultLinkPolicy hold not supported (settings: 0x%04x)\n", settings); } - if ((settings & HCI_ENABLE_SNIFF_MODE) && (!HCI_SNIFF_MODE_SUPPORTED(localFeatures))) - { + if ((settings & HCI_ENABLE_SNIFF_MODE) && (!HCI_SNIFF_MODE_SUPPORTED(localFeatures))) { settings &= ~HCI_ENABLE_SNIFF_MODE; BTM_TRACE_DEBUG("BTM_SetDefaultLinkPolicy sniff not supported (settings: 0x%04x)\n", settings); } - if ((settings & HCI_ENABLE_PARK_MODE) && (!HCI_PARK_MODE_SUPPORTED(localFeatures))) - { + if ((settings & HCI_ENABLE_PARK_MODE) && (!HCI_PARK_MODE_SUPPORTED(localFeatures))) { settings &= ~HCI_ENABLE_PARK_MODE; BTM_TRACE_DEBUG("BTM_SetDefaultLinkPolicy park not supported (settings: 0x%04x)\n", settings); } @@ -916,19 +864,17 @@ void btm_read_remote_version_complete (UINT8 *p) STREAM_TO_UINT16 (handle, p); /* Look up the connection by handle and copy features */ - for (xx = 0; xx < MAX_L2CAP_LINKS; xx++, p_acl_cb++) - { - if ((p_acl_cb->in_use) && (p_acl_cb->hci_handle == handle)) - { - if (status == HCI_SUCCESS) - { + for (xx = 0; xx < MAX_L2CAP_LINKS; xx++, p_acl_cb++) { + if ((p_acl_cb->in_use) && (p_acl_cb->hci_handle == handle)) { + if (status == HCI_SUCCESS) { STREAM_TO_UINT8 (p_acl_cb->lmp_version, p); STREAM_TO_UINT16 (p_acl_cb->manufacturer, p); STREAM_TO_UINT16 (p_acl_cb->lmp_subversion, p); } #if BLE_INCLUDED == TRUE - if (p_acl_cb->transport == BT_TRANSPORT_LE) + if (p_acl_cb->transport == BT_TRANSPORT_LE) { l2cble_notify_le_connection (p_acl_cb->remote_addr); + } #endif break; } @@ -955,8 +901,7 @@ void btm_process_remote_ext_features (tACL_CONN *p_acl_cb, UINT8 num_read_pages) BTM_TRACE_DEBUG ("btm_process_remote_ext_features\n"); /* Make sure we have the record to save remote features information */ - if (p_dev_rec == NULL) - { + if (p_dev_rec == NULL) { /* Get a new device; might be doing dedicated bonding */ p_dev_rec = btm_find_or_alloc_dev (p_acl_cb->remote_addr); } @@ -965,10 +910,8 @@ void btm_process_remote_ext_features (tACL_CONN *p_acl_cb, UINT8 num_read_pages) p_dev_rec->num_read_pages = num_read_pages; /* Move the pages to placeholder */ - for (page_idx = 0; page_idx < num_read_pages; page_idx++) - { - if (page_idx > HCI_EXT_FEATURES_PAGE_MAX) - { + for (page_idx = 0; page_idx < num_read_pages; page_idx++) { + if (page_idx > HCI_EXT_FEATURES_PAGE_MAX) { BTM_TRACE_ERROR("%s: page=%d unexpected\n", __FUNCTION__, page_idx); break; } @@ -982,8 +925,7 @@ void btm_process_remote_ext_features (tACL_CONN *p_acl_cb, UINT8 num_read_pages) btm_sec_set_peer_sec_caps(p_acl_cb, p_dev_rec); BTM_TRACE_API("%s: pend:%d\n", __FUNCTION__, req_pend); - if (req_pend) - { + if (req_pend) { /* Request for remaining Security Features (if any) */ l2cu_resubmit_pending_sec_req (p_dev_rec->bd_addr); } @@ -1007,8 +949,7 @@ void btm_read_remote_features (UINT16 handle) BTM_TRACE_DEBUG("btm_read_remote_features() handle: %d\n", handle); - if ((acl_idx = btm_handle_to_acl_index(handle)) >= MAX_L2CAP_LINKS) - { + if ((acl_idx = btm_handle_to_acl_index(handle)) >= MAX_L2CAP_LINKS) { BTM_TRACE_ERROR("btm_read_remote_features handle=%d invalid\n", handle); return; } @@ -1060,19 +1001,17 @@ void btm_read_remote_features_complete (UINT8 *p) BTM_TRACE_DEBUG ("btm_read_remote_features_complete\n"); STREAM_TO_UINT8 (status, p); - if (status != HCI_SUCCESS) - { + if (status != HCI_SUCCESS) { BTM_TRACE_ERROR ("btm_read_remote_features_complete failed (status 0x%02x)\n", status); return; } - STREAM_TO_UINT16 (handle, p); + STREAM_TO_UINT16 (handle, p); - if ((acl_idx = btm_handle_to_acl_index(handle)) >= MAX_L2CAP_LINKS) - { + if ((acl_idx = btm_handle_to_acl_index(handle)) >= MAX_L2CAP_LINKS) { BTM_TRACE_ERROR("btm_read_remote_features_complete handle=%d invalid\n", handle); return; - } + } p_acl_cb = &btm_cb.acl_db[acl_idx]; @@ -1081,8 +1020,7 @@ void btm_read_remote_features_complete (UINT8 *p) HCI_FEATURE_BYTES_PER_PAGE); if ((HCI_LMP_EXTENDED_SUPPORTED(p_acl_cb->peer_lmp_features[HCI_EXT_FEATURES_PAGE_0])) && - (controller_get_interface()->supports_reading_remote_extended_features())) - { + (controller_get_interface()->supports_reading_remote_extended_features())) { /* if the remote controller has extended features and local controller supports ** HCI_Read_Remote_Extended_Features command then start reading these feature starting ** with extended features page 1 */ @@ -1124,14 +1062,12 @@ void btm_read_remote_ext_features_complete (UINT8 *p) STREAM_TO_UINT8 (max_page, p); /* Validate parameters */ - if ((acl_idx = btm_handle_to_acl_index(handle)) >= MAX_L2CAP_LINKS) - { + if ((acl_idx = btm_handle_to_acl_index(handle)) >= MAX_L2CAP_LINKS) { BTM_TRACE_ERROR("btm_read_remote_ext_features_complete handle=%d invalid\n", handle); return; } - if (max_page > HCI_EXT_FEATURES_PAGE_MAX) - { + if (max_page > HCI_EXT_FEATURES_PAGE_MAX) { BTM_TRACE_ERROR("btm_read_remote_ext_features_complete page=%d unknown", max_page); return; } @@ -1143,8 +1079,7 @@ void btm_read_remote_ext_features_complete (UINT8 *p) /* If there is the next remote features page and * we have space to keep this page data - read this page */ - if ((page_num < max_page) && (page_num < HCI_EXT_FEATURES_PAGE_MAX)) - { + if ((page_num < max_page) && (page_num < HCI_EXT_FEATURES_PAGE_MAX)) { page_num++; BTM_TRACE_DEBUG("BTM reads next remote extended features page (%d)\n", page_num); btm_read_remote_ext_features (handle, page_num); @@ -1177,10 +1112,9 @@ void btm_read_remote_ext_features_failed (UINT8 status, UINT16 handle) UINT8 acl_idx; BTM_TRACE_WARNING ("btm_read_remote_ext_features_failed (status 0x%02x) for handle %d\n", - status, handle); + status, handle); - if ((acl_idx = btm_handle_to_acl_index(handle)) >= MAX_L2CAP_LINKS) - { + if ((acl_idx = btm_handle_to_acl_index(handle)) >= MAX_L2CAP_LINKS) { BTM_TRACE_ERROR("btm_read_remote_ext_features_failed handle=%d invalid\n", handle); return; } @@ -1206,40 +1140,40 @@ void btm_read_remote_ext_features_failed (UINT8 status, UINT16 handle) *******************************************************************************/ void btm_establish_continue (tACL_CONN *p_acl_cb) { - tBTM_BL_EVENT_DATA evt_data; - BTM_TRACE_DEBUG ("btm_establish_continue\n"); + tBTM_BL_EVENT_DATA evt_data; + BTM_TRACE_DEBUG ("btm_establish_continue\n"); #if (!defined(BTM_BYPASS_EXTRA_ACL_SETUP) || BTM_BYPASS_EXTRA_ACL_SETUP == FALSE) #if (defined BLE_INCLUDED && BLE_INCLUDED == TRUE) - if (p_acl_cb->transport == BT_TRANSPORT_BR_EDR) + if (p_acl_cb->transport == BT_TRANSPORT_BR_EDR) #endif - { - /* For now there are a some devices that do not like sending */ - /* commands events and data at the same time. */ - /* Set the packet types to the default allowed by the device */ - btm_set_packet_types (p_acl_cb, btm_cb.btm_acl_pkt_types_supported); + { + /* For now there are a some devices that do not like sending */ + /* commands events and data at the same time. */ + /* Set the packet types to the default allowed by the device */ + btm_set_packet_types (p_acl_cb, btm_cb.btm_acl_pkt_types_supported); - if (btm_cb.btm_def_link_policy) - BTM_SetLinkPolicy (p_acl_cb->remote_addr, &btm_cb.btm_def_link_policy); + if (btm_cb.btm_def_link_policy) { + BTM_SetLinkPolicy (p_acl_cb->remote_addr, &btm_cb.btm_def_link_policy); } + } #endif - p_acl_cb->link_up_issued = TRUE; + p_acl_cb->link_up_issued = TRUE; - /* If anyone cares, tell him database changed */ - if (btm_cb.p_bl_changed_cb) - { - evt_data.event = BTM_BL_CONN_EVT; - evt_data.conn.p_bda = p_acl_cb->remote_addr; - evt_data.conn.p_bdn = p_acl_cb->remote_name; - evt_data.conn.p_dc = p_acl_cb->remote_dc; - evt_data.conn.p_features = p_acl_cb->peer_lmp_features[HCI_EXT_FEATURES_PAGE_0]; + /* If anyone cares, tell him database changed */ + if (btm_cb.p_bl_changed_cb) { + evt_data.event = BTM_BL_CONN_EVT; + evt_data.conn.p_bda = p_acl_cb->remote_addr; + evt_data.conn.p_bdn = p_acl_cb->remote_name; + evt_data.conn.p_dc = p_acl_cb->remote_dc; + evt_data.conn.p_features = p_acl_cb->peer_lmp_features[HCI_EXT_FEATURES_PAGE_0]; #if BLE_INCLUDED == TRUE - evt_data.conn.handle = p_acl_cb->hci_handle; - evt_data.conn.transport = p_acl_cb->transport; + evt_data.conn.handle = p_acl_cb->hci_handle; + evt_data.conn.transport = p_acl_cb->transport; #endif - (*btm_cb.p_bl_changed_cb)(&evt_data); - } - btm_acl_update_busy_level (BTM_BLI_ACL_UP_EVT); + (*btm_cb.p_bl_changed_cb)(&evt_data); + } + btm_acl_update_busy_level (BTM_BLI_ACL_UP_EVT); } @@ -1273,13 +1207,12 @@ tBTM_STATUS BTM_GetLinkSuperTout (BD_ADDR remote_bda, UINT16 *p_timeout) tACL_CONN *p = btm_bda_to_acl(remote_bda, BT_TRANSPORT_BR_EDR); BTM_TRACE_DEBUG ("BTM_GetLinkSuperTout\n"); - if (p != (tACL_CONN *)NULL) - { + if (p != (tACL_CONN *)NULL) { *p_timeout = p->link_super_tout; - return(BTM_SUCCESS); + return (BTM_SUCCESS); } /* If here, no BD Addr found */ - return(BTM_UNKNOWN_ADDR); + return (BTM_UNKNOWN_ADDR); } @@ -1297,25 +1230,24 @@ tBTM_STATUS BTM_SetLinkSuperTout (BD_ADDR remote_bda, UINT16 timeout) tACL_CONN *p = btm_bda_to_acl(remote_bda, BT_TRANSPORT_BR_EDR); BTM_TRACE_DEBUG ("BTM_SetLinkSuperTout\n"); - if (p != (tACL_CONN *)NULL) - { + if (p != (tACL_CONN *)NULL) { p->link_super_tout = timeout; /* Only send if current role is Master; 2.0 spec requires this */ - if (p->link_role == BTM_ROLE_MASTER) - { + if (p->link_role == BTM_ROLE_MASTER) { if (!btsnd_hcic_write_link_super_tout (LOCAL_BR_EDR_CONTROLLER_ID, - p->hci_handle, timeout)) - return(BTM_NO_RESOURCES); + p->hci_handle, timeout)) { + return (BTM_NO_RESOURCES); + } - return(BTM_CMD_STARTED); + return (BTM_CMD_STARTED); + } else { + return (BTM_SUCCESS); } - else - return(BTM_SUCCESS); } /* If here, no BD Addr found */ - return(BTM_UNKNOWN_ADDR); + return (BTM_UNKNOWN_ADDR); } /******************************************************************************* @@ -1333,17 +1265,16 @@ BOOLEAN BTM_IsAclConnectionUp (BD_ADDR remote_bda, tBT_TRANSPORT transport) tACL_CONN *p; BTM_TRACE_API ("BTM_IsAclConnectionUp: RemBdAddr: %02x%02x%02x%02x%02x%02x\n", - remote_bda[0], remote_bda[1], remote_bda[2], - remote_bda[3], remote_bda[4], remote_bda[5]); + remote_bda[0], remote_bda[1], remote_bda[2], + remote_bda[3], remote_bda[4], remote_bda[5]); p = btm_bda_to_acl(remote_bda, transport); - if (p != (tACL_CONN *)NULL) - { - return(TRUE); + if (p != (tACL_CONN *)NULL) { + return (TRUE); } /* If here, no BD Addr found */ - return(FALSE); + return (FALSE); } /******************************************************************************* @@ -1360,10 +1291,10 @@ UINT16 BTM_GetNumAclLinks (void) { uint16_t num_acl = 0; - for (uint16_t i = 0; i < MAX_L2CAP_LINKS; ++i) - { - if (btm_cb.acl_db[i].in_use) + for (uint16_t i = 0; i < MAX_L2CAP_LINKS; ++i) { + if (btm_cb.acl_db[i].in_use) { ++num_acl; + } } return num_acl; @@ -1383,7 +1314,7 @@ UINT16 btm_get_acl_disc_reason_code (void) { UINT8 res = btm_cb.acl_disc_reason; BTM_TRACE_DEBUG ("btm_get_acl_disc_reason_code\n"); - return(res); + return (res); } @@ -1402,13 +1333,12 @@ UINT16 BTM_GetHCIConnHandle (BD_ADDR remote_bda, tBT_TRANSPORT transport) tACL_CONN *p; BTM_TRACE_DEBUG ("BTM_GetHCIConnHandle\n"); p = btm_bda_to_acl(remote_bda, transport); - if (p != (tACL_CONN *)NULL) - { - return(p->hci_handle); + if (p != (tACL_CONN *)NULL) { + return (p->hci_handle); } /* If here, no BD Addr found */ - return(0xFFFF); + return (0xFFFF); } /******************************************************************************* @@ -1428,8 +1358,9 @@ void btm_process_clk_off_comp_evt (UINT16 hci_handle, UINT16 clock_offset) UINT8 xx; BTM_TRACE_DEBUG ("btm_process_clk_off_comp_evt\n"); /* Look up the connection by handle and set the current mode */ - if ((xx = btm_handle_to_acl_index(hci_handle)) < MAX_L2CAP_LINKS) + if ((xx = btm_handle_to_acl_index(hci_handle)) < MAX_L2CAP_LINKS) { btm_cb.acl_db[xx].clock_offset = clock_offset; + } } /******************************************************************************* @@ -1447,7 +1378,7 @@ void btm_process_clk_off_comp_evt (UINT16 hci_handle, UINT16 clock_offset) void btm_acl_role_changed (UINT8 hci_status, BD_ADDR bd_addr, UINT8 new_role) { UINT8 *p_bda = (bd_addr) ? bd_addr : - btm_cb.devcb.switch_role_ref_data.remote_bd_addr; + btm_cb.devcb.switch_role_ref_data.remote_bd_addr; tACL_CONN *p = btm_bda_to_acl(p_bda, BT_TRANSPORT_BR_EDR); tBTM_ROLE_SWITCH_CMPL *p_data = &btm_cb.devcb.switch_role_ref_data; tBTM_SEC_DEV_REC *p_dev_rec; @@ -1455,18 +1386,17 @@ void btm_acl_role_changed (UINT8 hci_status, BD_ADDR bd_addr, UINT8 new_role) BTM_TRACE_DEBUG ("btm_acl_role_changed\n"); /* Ignore any stray events */ - if (p == NULL) - { + if (p == NULL) { /* it could be a failure */ - if (hci_status != HCI_SUCCESS) + if (hci_status != HCI_SUCCESS) { btm_acl_report_role_change(hci_status, bd_addr); + } return; } p_data->hci_status = hci_status; - if (hci_status == HCI_SUCCESS) - { + if (hci_status == HCI_SUCCESS) { p_data->role = new_role; memcpy(p_data->remote_bd_addr, p_bda, BD_ADDR_LEN); @@ -1474,13 +1404,10 @@ void btm_acl_role_changed (UINT8 hci_status, BD_ADDR bd_addr, UINT8 new_role) p->link_role = new_role; /* Reload LSTO: link supervision timeout is reset in the LM after a role switch */ - if (new_role == BTM_ROLE_MASTER) - { + if (new_role == BTM_ROLE_MASTER) { BTM_SetLinkSuperTout (p->remote_addr, p->link_super_tout); } - } - else - { + } else { /* so the BTM_BL_ROLE_CHG_EVT uses the old role */ new_role = p->link_role; } @@ -1490,10 +1417,8 @@ void btm_acl_role_changed (UINT8 hci_status, BD_ADDR bd_addr, UINT8 new_role) /* if switching state is switching we need to turn encryption on */ /* if idle, we did not change encryption */ - if (p->switch_role_state == BTM_ACL_SWKEY_STATE_SWITCHING) - { - if (btsnd_hcic_set_conn_encrypt (p->hci_handle, TRUE)) - { + if (p->switch_role_state == BTM_ACL_SWKEY_STATE_SWITCHING) { + if (btsnd_hcic_set_conn_encrypt (p->hci_handle, TRUE)) { p->encrypt_state = BTM_ACL_ENCRYPT_STATE_ENCRYPT_ON; p->switch_role_state = BTM_ACL_SWKEY_STATE_ENCRYPTION_ON; return; @@ -1502,8 +1427,7 @@ void btm_acl_role_changed (UINT8 hci_status, BD_ADDR bd_addr, UINT8 new_role) /* Set the switch_role_state to IDLE since the reply received from HCI */ /* regardless of its result either success or failed. */ - if (p->switch_role_state == BTM_ACL_SWKEY_STATE_IN_PROGRESS) - { + if (p->switch_role_state == BTM_ACL_SWKEY_STATE_IN_PROGRESS) { p->switch_role_state = BTM_ACL_SWKEY_STATE_IDLE; p->encrypt_state = BTM_ACL_ENCRYPT_STATE_IDLE; } @@ -1512,8 +1436,7 @@ void btm_acl_role_changed (UINT8 hci_status, BD_ADDR bd_addr, UINT8 new_role) btm_acl_report_role_change(hci_status, bd_addr); /* if role change event is registered, report it now */ - if (btm_cb.p_bl_changed_cb && (btm_cb.bl_evt_mask & BTM_BL_ROLE_CHG_MASK)) - { + if (btm_cb.p_bl_changed_cb && (btm_cb.bl_evt_mask & BTM_BL_ROLE_CHG_MASK)) { evt.event = BTM_BL_ROLE_CHG_EVT; evt.new_role = new_role; evt.p_bda = p_bda; @@ -1522,19 +1445,17 @@ void btm_acl_role_changed (UINT8 hci_status, BD_ADDR bd_addr, UINT8 new_role) } BTM_TRACE_DEBUG("Role Switch Event: new_role 0x%02x, HCI Status 0x%02x, rs_st:%d\n", - p_data->role, p_data->hci_status, p->switch_role_state); + p_data->role, p_data->hci_status, p->switch_role_state); #if BTM_DISC_DURING_RS == TRUE /* If a disconnect is pending, issue it now that role switch has completed */ - if ((p_dev_rec = btm_find_dev (p_bda)) != NULL) - { - if (p_dev_rec->rs_disc_pending == BTM_SEC_DISC_PENDING) - { + if ((p_dev_rec = btm_find_dev (p_bda)) != NULL) { + if (p_dev_rec->rs_disc_pending == BTM_SEC_DISC_PENDING) { BTM_TRACE_WARNING("btm_acl_role_changed -> Issuing delayed HCI_Disconnect!!!\n"); btsnd_hcic_disconnect(p_dev_rec->hci_handle, HCI_ERR_PEER_USER); } BTM_TRACE_ERROR("tBTM_SEC_DEV:0x%x rs_disc_pending=%d\n", - (UINT32)p_dev_rec, p_dev_rec->rs_disc_pending); + (UINT32)p_dev_rec, p_dev_rec->rs_disc_pending); p_dev_rec->rs_disc_pending = BTM_SEC_RS_NOT_PENDING; /* reset flag */ } @@ -1558,16 +1479,14 @@ UINT8 BTM_AllocateSCN(void) BTM_TRACE_DEBUG ("BTM_AllocateSCN\n"); // stack reserves scn 1 for HFP, HSP we still do the correct way - for (x = 1; x < BTM_MAX_SCN; x++) - { - if (!btm_cb.btm_scn[x]) - { + for (x = 1; x < BTM_MAX_SCN; x++) { + if (!btm_cb.btm_scn[x]) { btm_cb.btm_scn[x] = TRUE; - return(x+1); + return (x + 1); } } - return(0); /* No free ports */ + return (0); /* No free ports */ } /******************************************************************************* @@ -1585,13 +1504,13 @@ BOOLEAN BTM_TryAllocateSCN(UINT8 scn) /* Make sure we don't exceed max port range. * Stack reserves scn 1 for HFP, HSP we still do the correct way. */ - if ( (scn>=BTM_MAX_SCN) || (scn == 1) ) + if ( (scn >= BTM_MAX_SCN) || (scn == 1) ) { return FALSE; + } /* check if this port is available */ - if (!btm_cb.btm_scn[scn-1]) - { - btm_cb.btm_scn[scn-1] = TRUE; + if (!btm_cb.btm_scn[scn - 1]) { + btm_cb.btm_scn[scn - 1] = TRUE; return TRUE; } @@ -1610,13 +1529,12 @@ BOOLEAN BTM_TryAllocateSCN(UINT8 scn) BOOLEAN BTM_FreeSCN(UINT8 scn) { BTM_TRACE_DEBUG ("BTM_FreeSCN \n"); - if (scn <= BTM_MAX_SCN) - { - btm_cb.btm_scn[scn-1] = FALSE; - return(TRUE); + if (scn <= BTM_MAX_SCN) { + btm_cb.btm_scn[scn - 1] = FALSE; + return (TRUE); + } else { + return (FALSE); /* Illegal SCN passed in */ } - else - return(FALSE); /* Illegal SCN passed in */ } /******************************************************************************* @@ -1647,14 +1565,13 @@ tBTM_STATUS btm_set_packet_types (tACL_CONN *p, UINT16 pkt_types) BTM_TRACE_DEBUG ("SetPacketType Mask -> 0x%04x\n", temp_pkt_types); - if (!btsnd_hcic_change_conn_type (p->hci_handle, temp_pkt_types)) - { - return(BTM_NO_RESOURCES); + if (!btsnd_hcic_change_conn_type (p->hci_handle, temp_pkt_types)) { + return (BTM_NO_RESOURCES); } p->pkt_types_mask = temp_pkt_types; - return(BTM_CMD_STARTED); + return (BTM_CMD_STARTED); } /******************************************************************************* @@ -1671,48 +1588,44 @@ UINT16 btm_get_max_packet_size (BD_ADDR addr) UINT16 pkt_types = 0; UINT16 pkt_size = 0; BTM_TRACE_DEBUG ("btm_get_max_packet_size\n"); - if (p != NULL) - { + if (p != NULL) { pkt_types = p->pkt_types_mask; - } - else - { + } else { /* Special case for when info for the local device is requested */ - if (memcmp (controller_get_interface()->get_address(), addr, BD_ADDR_LEN) == 0) - { + if (memcmp (controller_get_interface()->get_address(), addr, BD_ADDR_LEN) == 0) { pkt_types = btm_cb.btm_acl_pkt_types_supported; } } - if (pkt_types) - { - if (!(pkt_types & BTM_ACL_PKT_TYPES_MASK_NO_3_DH5)) + if (pkt_types) { + if (!(pkt_types & BTM_ACL_PKT_TYPES_MASK_NO_3_DH5)) { pkt_size = HCI_EDR3_DH5_PACKET_SIZE; - else if (!(pkt_types & BTM_ACL_PKT_TYPES_MASK_NO_2_DH5)) + } else if (!(pkt_types & BTM_ACL_PKT_TYPES_MASK_NO_2_DH5)) { pkt_size = HCI_EDR2_DH5_PACKET_SIZE; - else if (!(pkt_types & BTM_ACL_PKT_TYPES_MASK_NO_3_DH3)) + } else if (!(pkt_types & BTM_ACL_PKT_TYPES_MASK_NO_3_DH3)) { pkt_size = HCI_EDR3_DH3_PACKET_SIZE; - else if (pkt_types & BTM_ACL_PKT_TYPES_MASK_DH5) + } else if (pkt_types & BTM_ACL_PKT_TYPES_MASK_DH5) { pkt_size = HCI_DH5_PACKET_SIZE; - else if (!(pkt_types & BTM_ACL_PKT_TYPES_MASK_NO_2_DH3)) + } else if (!(pkt_types & BTM_ACL_PKT_TYPES_MASK_NO_2_DH3)) { pkt_size = HCI_EDR2_DH3_PACKET_SIZE; - else if (pkt_types & BTM_ACL_PKT_TYPES_MASK_DM5) + } else if (pkt_types & BTM_ACL_PKT_TYPES_MASK_DM5) { pkt_size = HCI_DM5_PACKET_SIZE; - else if (pkt_types & BTM_ACL_PKT_TYPES_MASK_DH3) + } else if (pkt_types & BTM_ACL_PKT_TYPES_MASK_DH3) { pkt_size = HCI_DH3_PACKET_SIZE; - else if (pkt_types & BTM_ACL_PKT_TYPES_MASK_DM3) + } else if (pkt_types & BTM_ACL_PKT_TYPES_MASK_DM3) { pkt_size = HCI_DM3_PACKET_SIZE; - else if (!(pkt_types & BTM_ACL_PKT_TYPES_MASK_NO_3_DH1)) + } else if (!(pkt_types & BTM_ACL_PKT_TYPES_MASK_NO_3_DH1)) { pkt_size = HCI_EDR3_DH1_PACKET_SIZE; - else if (!(pkt_types & BTM_ACL_PKT_TYPES_MASK_NO_2_DH1)) + } else if (!(pkt_types & BTM_ACL_PKT_TYPES_MASK_NO_2_DH1)) { pkt_size = HCI_EDR2_DH1_PACKET_SIZE; - else if (pkt_types & BTM_ACL_PKT_TYPES_MASK_DH1) + } else if (pkt_types & BTM_ACL_PKT_TYPES_MASK_DH1) { pkt_size = HCI_DH1_PACKET_SIZE; - else if (pkt_types & BTM_ACL_PKT_TYPES_MASK_DM1) + } else if (pkt_types & BTM_ACL_PKT_TYPES_MASK_DM1) { pkt_size = HCI_DM1_PACKET_SIZE; + } } - return(pkt_size); + return (pkt_size); } /******************************************************************************* @@ -1727,19 +1640,23 @@ tBTM_STATUS BTM_ReadRemoteVersion (BD_ADDR addr, UINT8 *lmp_version, { tACL_CONN *p = btm_bda_to_acl(addr, BT_TRANSPORT_BR_EDR); BTM_TRACE_DEBUG ("BTM_ReadRemoteVersion\n"); - if (p == NULL) - return(BTM_UNKNOWN_ADDR); + if (p == NULL) { + return (BTM_UNKNOWN_ADDR); + } - if (lmp_version) + if (lmp_version) { *lmp_version = p->lmp_version; + } - if (manufacturer) + if (manufacturer) { *manufacturer = p->manufacturer; + } - if (lmp_sub_version) + if (lmp_sub_version) { *lmp_sub_version = p->lmp_subversion; + } - return(BTM_SUCCESS); + return (BTM_SUCCESS); } /******************************************************************************* @@ -1753,12 +1670,11 @@ UINT8 *BTM_ReadRemoteFeatures (BD_ADDR addr) { tACL_CONN *p = btm_bda_to_acl(addr, BT_TRANSPORT_BR_EDR); BTM_TRACE_DEBUG ("BTM_ReadRemoteFeatures\n"); - if (p == NULL) - { - return(NULL); + if (p == NULL) { + return (NULL); } - return(p->peer_lmp_features[HCI_EXT_FEATURES_PAGE_0]); + return (p->peer_lmp_features[HCI_EXT_FEATURES_PAGE_0]); } /******************************************************************************* @@ -1773,18 +1689,16 @@ UINT8 *BTM_ReadRemoteExtendedFeatures (BD_ADDR addr, UINT8 page_number) { tACL_CONN *p = btm_bda_to_acl(addr, BT_TRANSPORT_BR_EDR); BTM_TRACE_DEBUG ("BTM_ReadRemoteExtendedFeatures\n"); - if (p == NULL) - { - return(NULL); + if (p == NULL) { + return (NULL); } - if (page_number > HCI_EXT_FEATURES_PAGE_MAX) - { + if (page_number > HCI_EXT_FEATURES_PAGE_MAX) { BTM_TRACE_ERROR("Warning: BTM_ReadRemoteExtendedFeatures page %d unknown\n", page_number); return NULL; } - return(p->peer_lmp_features[page_number]); + return (p->peer_lmp_features[page_number]); } /******************************************************************************* @@ -1798,12 +1712,11 @@ UINT8 BTM_ReadNumberRemoteFeaturesPages (BD_ADDR addr) { tACL_CONN *p = btm_bda_to_acl(addr, BT_TRANSPORT_BR_EDR); BTM_TRACE_DEBUG ("BTM_ReadNumberRemoteFeaturesPages\n"); - if (p == NULL) - { - return(0); + if (p == NULL) { + return (0); } - return(p->num_read_pages); + return (p->num_read_pages); } /******************************************************************************* @@ -1817,12 +1730,11 @@ UINT8 *BTM_ReadAllRemoteFeatures (BD_ADDR addr) { tACL_CONN *p = btm_bda_to_acl(addr, BT_TRANSPORT_BR_EDR); BTM_TRACE_DEBUG ("BTM_ReadAllRemoteFeatures\n"); - if (p == NULL) - { - return(NULL); + if (p == NULL) { + return (NULL); } - return(p->peer_lmp_features[HCI_EXT_FEATURES_PAGE_0]); + return (p->peer_lmp_features[HCI_EXT_FEATURES_PAGE_0]); } /******************************************************************************* @@ -1839,19 +1751,21 @@ tBTM_STATUS BTM_RegBusyLevelNotif (tBTM_BL_CHANGE_CB *p_cb, UINT8 *p_level, tBTM_BL_EVENT_MASK evt_mask) { BTM_TRACE_DEBUG ("BTM_RegBusyLevelNotif\n"); - if (p_level) + if (p_level) { *p_level = btm_cb.busy_level; + } btm_cb.bl_evt_mask = evt_mask; - if (!p_cb) + if (!p_cb) { btm_cb.p_bl_changed_cb = NULL; - else if (btm_cb.p_bl_changed_cb) - return(BTM_BUSY); - else + } else if (btm_cb.p_bl_changed_cb) { + return (BTM_BUSY); + } else { btm_cb.p_bl_changed_cb = p_cb; + } - return(BTM_SUCCESS); + return (BTM_SUCCESS); } /******************************************************************************* @@ -1868,32 +1782,31 @@ tBTM_STATUS BTM_SetQoS (BD_ADDR bd, FLOW_SPEC *p_flow, tBTM_CMPL_CB *p_cb) tACL_CONN *p = &btm_cb.acl_db[0]; BTM_TRACE_API ("BTM_SetQoS: BdAddr: %02x%02x%02x%02x%02x%02x\n", - bd[0], bd[1], bd[2], - bd[3], bd[4], bd[5]); + bd[0], bd[1], bd[2], + bd[3], bd[4], bd[5]); /* If someone already waiting on the version, do not allow another */ - if (btm_cb.devcb.p_qossu_cmpl_cb) - return(BTM_BUSY); + if (btm_cb.devcb.p_qossu_cmpl_cb) { + return (BTM_BUSY); + } - if ( (p = btm_bda_to_acl(bd, BT_TRANSPORT_BR_EDR)) != NULL) - { + if ( (p = btm_bda_to_acl(bd, BT_TRANSPORT_BR_EDR)) != NULL) { btu_start_timer (&btm_cb.devcb.qossu_timer, BTU_TTYPE_BTM_ACL, BTM_DEV_REPLY_TIMEOUT); btm_cb.devcb.p_qossu_cmpl_cb = p_cb; if (!btsnd_hcic_qos_setup (p->hci_handle, p_flow->qos_flags, p_flow->service_type, p_flow->token_rate, p_flow->peak_bandwidth, - p_flow->latency,p_flow->delay_variation)) - { + p_flow->latency, p_flow->delay_variation)) { btm_cb.devcb.p_qossu_cmpl_cb = NULL; btu_stop_timer(&btm_cb.devcb.qossu_timer); - return(BTM_NO_RESOURCES); + return (BTM_NO_RESOURCES); + } else { + return (BTM_CMD_STARTED); } - else - return(BTM_CMD_STARTED); } /* If here, no BD Addr found */ - return(BTM_UNKNOWN_ADDR); + return (BTM_UNKNOWN_ADDR); } /******************************************************************************* @@ -1915,13 +1828,11 @@ void btm_qos_setup_complete (UINT8 status, UINT16 handle, FLOW_SPEC *p_flow) btm_cb.devcb.p_qossu_cmpl_cb = NULL; - if (p_cb) - { + if (p_cb) { memset(&qossu, 0, sizeof(tBTM_QOS_SETUP_CMPL)); qossu.status = status; qossu.handle = handle; - if (p_flow != NULL) - { + if (p_flow != NULL) { qossu.flow.qos_flags = p_flow->qos_flags; qossu.flow.service_type = p_flow->service_type; qossu.flow.token_rate = p_flow->token_rate; @@ -1930,7 +1841,7 @@ void btm_qos_setup_complete (UINT8 status, UINT16 handle, FLOW_SPEC *p_flow) qossu.flow.delay_variation = p_flow->delay_variation; } BTM_TRACE_DEBUG ("BTM: p_flow->delay_variation: 0x%02x\n", - qossu.flow.delay_variation); + qossu.flow.delay_variation); (*p_cb)(&qossu); } } @@ -1956,39 +1867,39 @@ tBTM_STATUS BTM_ReadRSSI (BD_ADDR remote_bda, tBTM_CMPL_CB *p_cb) tBLE_ADDR_TYPE addr_type; #endif BTM_TRACE_API ("BTM_ReadRSSI: RemBdAddr: %02x%02x%02x%02x%02x%02x\n", - remote_bda[0], remote_bda[1], remote_bda[2], - remote_bda[3], remote_bda[4], remote_bda[5]); + remote_bda[0], remote_bda[1], remote_bda[2], + remote_bda[3], remote_bda[4], remote_bda[5]); /* If someone already waiting on the version, do not allow another */ - if (btm_cb.devcb.p_rssi_cmpl_cb) - return(BTM_BUSY); + if (btm_cb.devcb.p_rssi_cmpl_cb) { + return (BTM_BUSY); + } #if BLE_INCLUDED == TRUE BTM_ReadDevInfo(remote_bda, &dev_type, &addr_type); - if (dev_type == BT_DEVICE_TYPE_BLE) + if (dev_type == BT_DEVICE_TYPE_BLE) { transport = BT_TRANSPORT_LE; + } #endif p = btm_bda_to_acl(remote_bda, transport); - if (p != (tACL_CONN *)NULL) - { + if (p != (tACL_CONN *)NULL) { btu_start_timer (&btm_cb.devcb.rssi_timer, BTU_TTYPE_BTM_ACL, BTM_DEV_REPLY_TIMEOUT); btm_cb.devcb.p_rssi_cmpl_cb = p_cb; - if (!btsnd_hcic_read_rssi (p->hci_handle)) - { + if (!btsnd_hcic_read_rssi (p->hci_handle)) { btm_cb.devcb.p_rssi_cmpl_cb = NULL; btu_stop_timer (&btm_cb.devcb.rssi_timer); - return(BTM_NO_RESOURCES); + return (BTM_NO_RESOURCES); + } else { + return (BTM_CMD_STARTED); } - else - return(BTM_CMD_STARTED); } /* If here, no BD Addr found */ - return(BTM_UNKNOWN_ADDR); + return (BTM_UNKNOWN_ADDR); } /******************************************************************************* @@ -2007,32 +1918,31 @@ tBTM_STATUS BTM_ReadLinkQuality (BD_ADDR remote_bda, tBTM_CMPL_CB *p_cb) tACL_CONN *p; BTM_TRACE_API ("BTM_ReadLinkQuality: RemBdAddr: %02x%02x%02x%02x%02x%02x\n", - remote_bda[0], remote_bda[1], remote_bda[2], - remote_bda[3], remote_bda[4], remote_bda[5]); + remote_bda[0], remote_bda[1], remote_bda[2], + remote_bda[3], remote_bda[4], remote_bda[5]); /* If someone already waiting on the version, do not allow another */ - if (btm_cb.devcb.p_lnk_qual_cmpl_cb) - return(BTM_BUSY); + if (btm_cb.devcb.p_lnk_qual_cmpl_cb) { + return (BTM_BUSY); + } p = btm_bda_to_acl(remote_bda, BT_TRANSPORT_BR_EDR); - if (p != (tACL_CONN *)NULL) - { + if (p != (tACL_CONN *)NULL) { btu_start_timer (&btm_cb.devcb.lnk_quality_timer, BTU_TTYPE_BTM_ACL, BTM_DEV_REPLY_TIMEOUT); btm_cb.devcb.p_lnk_qual_cmpl_cb = p_cb; - if (!btsnd_hcic_get_link_quality (p->hci_handle)) - { + if (!btsnd_hcic_get_link_quality (p->hci_handle)) { btu_stop_timer (&btm_cb.devcb.lnk_quality_timer); btm_cb.devcb.p_lnk_qual_cmpl_cb = NULL; - return(BTM_NO_RESOURCES); + return (BTM_NO_RESOURCES); + } else { + return (BTM_CMD_STARTED); } - else - return(BTM_CMD_STARTED); } /* If here, no BD Addr found */ - return(BTM_UNKNOWN_ADDR); + return (BTM_UNKNOWN_ADDR); } /******************************************************************************* @@ -2055,40 +1965,37 @@ tBTM_STATUS BTM_ReadTxPower (BD_ADDR remote_bda, tBT_TRANSPORT transport, tBTM_C #define BTM_READ_RSSI_TYPE_MAX 0X01 BTM_TRACE_API ("BTM_ReadTxPower: RemBdAddr: %02x%02x%02x%02x%02x%02x\n", - remote_bda[0], remote_bda[1], remote_bda[2], - remote_bda[3], remote_bda[4], remote_bda[5]); + remote_bda[0], remote_bda[1], remote_bda[2], + remote_bda[3], remote_bda[4], remote_bda[5]); /* If someone already waiting on the version, do not allow another */ - if (btm_cb.devcb.p_tx_power_cmpl_cb) - return(BTM_BUSY); + if (btm_cb.devcb.p_tx_power_cmpl_cb) { + return (BTM_BUSY); + } p = btm_bda_to_acl(remote_bda, transport); - if (p != (tACL_CONN *)NULL) - { + if (p != (tACL_CONN *)NULL) { btu_start_timer (&btm_cb.devcb.tx_power_timer, BTU_TTYPE_BTM_ACL, BTM_DEV_REPLY_TIMEOUT); btm_cb.devcb.p_tx_power_cmpl_cb = p_cb; #if BLE_INCLUDED == TRUE - if (p->transport == BT_TRANSPORT_LE) - { + if (p->transport == BT_TRANSPORT_LE) { memcpy(btm_cb.devcb.read_tx_pwr_addr, remote_bda, BD_ADDR_LEN); ret = btsnd_hcic_ble_read_adv_chnl_tx_power(); - } - else + } else #endif { ret = btsnd_hcic_read_tx_power (p->hci_handle, BTM_READ_RSSI_TYPE_CUR); } - if (!ret) - { + if (!ret) { btm_cb.devcb.p_tx_power_cmpl_cb = NULL; btu_stop_timer (&btm_cb.devcb.tx_power_timer); - return(BTM_NO_RESOURCES); + return (BTM_NO_RESOURCES); + } else { + return (BTM_CMD_STARTED); } - else - return(BTM_CMD_STARTED); } /* If here, no BD Addr found */ @@ -2117,41 +2024,35 @@ void btm_read_tx_power_complete (UINT8 *p, BOOLEAN is_ble) /* If there was a callback registered for read rssi, call it */ btm_cb.devcb.p_tx_power_cmpl_cb = NULL; - if (p_cb) - { + if (p_cb) { STREAM_TO_UINT8 (results.hci_status, p); - if (results.hci_status == HCI_SUCCESS) - { + if (results.hci_status == HCI_SUCCESS) { results.status = BTM_SUCCESS; - if (!is_ble) - { + if (!is_ble) { STREAM_TO_UINT16 (handle, p); STREAM_TO_UINT8 (results.tx_power, p); /* Search through the list of active channels for the correct BD Addr */ - for (index = 0; index < MAX_L2CAP_LINKS; index++, p_acl_cb++) - { - if ((p_acl_cb->in_use) && (handle == p_acl_cb->hci_handle)) - { + for (index = 0; index < MAX_L2CAP_LINKS; index++, p_acl_cb++) { + if ((p_acl_cb->in_use) && (handle == p_acl_cb->hci_handle)) { memcpy (results.rem_bda, p_acl_cb->remote_addr, BD_ADDR_LEN); break; } } } #if BLE_INCLUDED == TRUE - else - { + else { STREAM_TO_UINT8 (results.tx_power, p); memcpy(results.rem_bda, btm_cb.devcb.read_tx_pwr_addr, BD_ADDR_LEN); } #endif BTM_TRACE_DEBUG ("BTM TX power Complete: tx_power %d, hci status 0x%02x\n", - results.tx_power, results.hci_status); - } - else + results.tx_power, results.hci_status); + } else { results.status = BTM_ERR_PROCESSING; + } (*p_cb)(&results); } @@ -2180,32 +2081,28 @@ void btm_read_rssi_complete (UINT8 *p) /* If there was a callback registered for read rssi, call it */ btm_cb.devcb.p_rssi_cmpl_cb = NULL; - if (p_cb) - { + if (p_cb) { STREAM_TO_UINT8 (results.hci_status, p); - if (results.hci_status == HCI_SUCCESS) - { + if (results.hci_status == HCI_SUCCESS) { results.status = BTM_SUCCESS; STREAM_TO_UINT16 (handle, p); STREAM_TO_UINT8 (results.rssi, p); BTM_TRACE_DEBUG ("BTM RSSI Complete: rssi %d, hci status 0x%02x\n", - results.rssi, results.hci_status); + results.rssi, results.hci_status); /* Search through the list of active channels for the correct BD Addr */ - for (index = 0; index < MAX_L2CAP_LINKS; index++, p_acl_cb++) - { - if ((p_acl_cb->in_use) && (handle == p_acl_cb->hci_handle)) - { + for (index = 0; index < MAX_L2CAP_LINKS; index++, p_acl_cb++) { + if ((p_acl_cb->in_use) && (handle == p_acl_cb->hci_handle)) { memcpy (results.rem_bda, p_acl_cb->remote_addr, BD_ADDR_LEN); break; } } - } - else + } else { results.status = BTM_ERR_PROCESSING; + } (*p_cb)(&results); } @@ -2234,32 +2131,28 @@ void btm_read_link_quality_complete (UINT8 *p) /* If there was a callback registered for read rssi, call it */ btm_cb.devcb.p_lnk_qual_cmpl_cb = NULL; - if (p_cb) - { + if (p_cb) { STREAM_TO_UINT8 (results.hci_status, p); - if (results.hci_status == HCI_SUCCESS) - { + if (results.hci_status == HCI_SUCCESS) { results.status = BTM_SUCCESS; STREAM_TO_UINT16 (handle, p); STREAM_TO_UINT8 (results.link_quality, p); BTM_TRACE_DEBUG ("BTM Link Quality Complete: Link Quality %d, hci status 0x%02x\n", - results.link_quality, results.hci_status); + results.link_quality, results.hci_status); /* Search through the list of active channels for the correct BD Addr */ - for (index = 0; index < MAX_L2CAP_LINKS; index++, p_acl_cb++) - { - if ((p_acl_cb->in_use) && (handle == p_acl_cb->hci_handle)) - { + for (index = 0; index < MAX_L2CAP_LINKS; index++, p_acl_cb++) { + if ((p_acl_cb->in_use) && (handle == p_acl_cb->hci_handle)) { memcpy (results.rem_bda, p_acl_cb->remote_addr, BD_ADDR_LEN); break; } } - } - else + } else { results.status = BTM_ERR_PROCESSING; + } (*p_cb)(&results); } @@ -2284,21 +2177,19 @@ tBTM_STATUS btm_remove_acl (BD_ADDR bd_addr, tBT_TRANSPORT transport) tBTM_SEC_DEV_REC *p_dev_rec = btm_find_dev (bd_addr); /* Role Switch is pending, postpone until completed */ - if (p_dev_rec && (p_dev_rec->rs_disc_pending == BTM_SEC_RS_PENDING)) - { + if (p_dev_rec && (p_dev_rec->rs_disc_pending == BTM_SEC_RS_PENDING)) { p_dev_rec->rs_disc_pending = BTM_SEC_DISC_PENDING; - } - else /* otherwise can disconnect right away */ + } else /* otherwise can disconnect right away */ #endif { if (hci_handle != 0xFFFF && p_dev_rec && - p_dev_rec->sec_state!= BTM_SEC_STATE_DISCONNECTING) - { - if (!btsnd_hcic_disconnect (hci_handle, HCI_ERR_PEER_USER)) + p_dev_rec->sec_state != BTM_SEC_STATE_DISCONNECTING) { + if (!btsnd_hcic_disconnect (hci_handle, HCI_ERR_PEER_USER)) { status = BTM_NO_RESOURCES; - } - else + } + } else { status = BTM_UNKNOWN_ADDR; + } } return status; @@ -2318,10 +2209,11 @@ tBTM_STATUS btm_remove_acl (BD_ADDR bd_addr, tBT_TRANSPORT transport) UINT8 BTM_SetTraceLevel (UINT8 new_level) { BTM_TRACE_DEBUG ("BTM_SetTraceLevel\n"); - if (new_level != 0xFF) + if (new_level != 0xFF) { btm_cb.trace_level = new_level; + } - return(btm_cb.trace_level); + return (btm_cb.trace_level); } /******************************************************************************* @@ -2336,48 +2228,43 @@ UINT8 BTM_SetTraceLevel (UINT8 new_level) ** *******************************************************************************/ void btm_cont_rswitch (tACL_CONN *p, tBTM_SEC_DEV_REC *p_dev_rec, - UINT8 hci_status) + UINT8 hci_status) { BOOLEAN sw_ok = TRUE; BTM_TRACE_DEBUG ("btm_cont_rswitch\n"); /* Check to see if encryption needs to be turned off if pending change of link key or role switch */ - if (p->switch_role_state == BTM_ACL_SWKEY_STATE_MODE_CHANGE) - { + if (p->switch_role_state == BTM_ACL_SWKEY_STATE_MODE_CHANGE) { /* Must turn off Encryption first if necessary */ /* Some devices do not support switch or change of link key while encryption is on */ if (p_dev_rec != NULL && ((p_dev_rec->sec_flags & BTM_SEC_ENCRYPTED) != 0) - && !BTM_EPR_AVAILABLE(p)) - { - if (btsnd_hcic_set_conn_encrypt (p->hci_handle, FALSE)) - { + && !BTM_EPR_AVAILABLE(p)) { + if (btsnd_hcic_set_conn_encrypt (p->hci_handle, FALSE)) { p->encrypt_state = BTM_ACL_ENCRYPT_STATE_ENCRYPT_OFF; - if (p->switch_role_state == BTM_ACL_SWKEY_STATE_MODE_CHANGE) + if (p->switch_role_state == BTM_ACL_SWKEY_STATE_MODE_CHANGE) { p->switch_role_state = BTM_ACL_SWKEY_STATE_ENCRYPTION_OFF; - } - else - { + } + } else { /* Error occurred; set states back to Idle */ - if (p->switch_role_state == BTM_ACL_SWKEY_STATE_MODE_CHANGE) + if (p->switch_role_state == BTM_ACL_SWKEY_STATE_MODE_CHANGE) { sw_ok = FALSE; + } } - } - else /* Encryption not used or EPR supported, continue with switch + } else /* Encryption not used or EPR supported, continue with switch and/or change of link key */ { - if (p->switch_role_state == BTM_ACL_SWKEY_STATE_MODE_CHANGE) - { + if (p->switch_role_state == BTM_ACL_SWKEY_STATE_MODE_CHANGE) { p->switch_role_state = BTM_ACL_SWKEY_STATE_IN_PROGRESS; #if BTM_DISC_DURING_RS == TRUE - if (p_dev_rec) + if (p_dev_rec) { p_dev_rec->rs_disc_pending = BTM_SEC_RS_PENDING; + } #endif sw_ok = btsnd_hcic_switch_role (p->remote_addr, (UINT8)!p->link_role); } } - if (!sw_ok) - { + if (!sw_ok) { p->switch_role_state = BTM_ACL_SWKEY_STATE_IDLE; btm_acl_report_role_change(hci_status, p->remote_addr); } @@ -2399,8 +2286,7 @@ void btm_acl_resubmit_page (void) BD_ADDR bda; BTM_TRACE_DEBUG ("btm_acl_resubmit_page\n"); /* If there were other page request schedule can start the next one */ - if ((p_buf = (BT_HDR *)GKI_dequeue (&btm_cb.page_queue)) != NULL) - { + if ((p_buf = (BT_HDR *)GKI_dequeue (&btm_cb.page_queue)) != NULL) { /* skip 3 (2 bytes opcode and 1 byte len) to get to the bd_addr * for both create_conn and rmt_name */ pp = (UINT8 *)(p_buf + 1) + p_buf->offset + 3; @@ -2413,9 +2299,9 @@ void btm_acl_resubmit_page (void) memcpy (btm_cb.connecting_dc, p_dev_rec->dev_class, DEV_CLASS_LEN); btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p_buf); - } - else + } else { btm_cb.paging = FALSE; + } } /******************************************************************************* @@ -2430,8 +2316,9 @@ void btm_acl_reset_paging (void) BT_HDR *p; BTM_TRACE_DEBUG ("btm_acl_reset_paging\n"); /* If we sent reset we are definitely not paging any more */ - while ((p = (BT_HDR *)GKI_dequeue(&btm_cb.page_queue)) != NULL) + while ((p = (BT_HDR *)GKI_dequeue(&btm_cb.page_queue)) != NULL) { GKI_freebuf (p); + } btm_cb.paging = FALSE; } @@ -2448,29 +2335,22 @@ void btm_acl_paging (BT_HDR *p, BD_ADDR bda) tBTM_SEC_DEV_REC *p_dev_rec; BTM_TRACE_DEBUG ("btm_acl_paging discing:%d, paging:%d BDA: %06x%06x\n", - btm_cb.discing, btm_cb.paging, - (bda[0]<<16) + (bda[1]<<8) + bda[2], (bda[3]<<16) + (bda[4] << 8) + bda[5]); - if (btm_cb.discing) - { + btm_cb.discing, btm_cb.paging, + (bda[0] << 16) + (bda[1] << 8) + bda[2], (bda[3] << 16) + (bda[4] << 8) + bda[5]); + if (btm_cb.discing) { btm_cb.paging = TRUE; GKI_enqueue (&btm_cb.page_queue, p); - } - else - { - if (!BTM_ACL_IS_CONNECTED (bda)) - { + } else { + if (!BTM_ACL_IS_CONNECTED (bda)) { BTM_TRACE_DEBUG ("connecting_bda: %06x%06x\n", - (btm_cb.connecting_bda[0]<<16) + (btm_cb.connecting_bda[1]<<8) + - btm_cb.connecting_bda[2], - (btm_cb.connecting_bda[3]<<16) + (btm_cb.connecting_bda[4] << 8) + - btm_cb.connecting_bda[5]); + (btm_cb.connecting_bda[0] << 16) + (btm_cb.connecting_bda[1] << 8) + + btm_cb.connecting_bda[2], + (btm_cb.connecting_bda[3] << 16) + (btm_cb.connecting_bda[4] << 8) + + btm_cb.connecting_bda[5]); if (btm_cb.paging && - memcmp (bda, btm_cb.connecting_bda, BD_ADDR_LEN) != 0) - { + memcmp (bda, btm_cb.connecting_bda, BD_ADDR_LEN) != 0) { GKI_enqueue (&btm_cb.page_queue, p); - } - else - { + } else { p_dev_rec = btm_find_or_alloc_dev (bda); memcpy (btm_cb.connecting_bda, p_dev_rec->bd_addr, BD_ADDR_LEN); memcpy (btm_cb.connecting_dc, p_dev_rec->dev_class, DEV_CLASS_LEN); @@ -2479,9 +2359,7 @@ void btm_acl_paging (BT_HDR *p, BD_ADDR bda) } btm_cb.paging = TRUE; - } - else /* ACL is already up */ - { + } else { /* ACL is already up */ btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); } } @@ -2502,10 +2380,9 @@ BOOLEAN btm_acl_notif_conn_collision (BD_ADDR bda) tBTM_BL_EVENT_DATA evt_data; /* Report possible collision to the upper layer. */ - if (btm_cb.p_bl_changed_cb) - { + if (btm_cb.p_bl_changed_cb) { BTM_TRACE_DEBUG ("btm_acl_notif_conn_collision: RemBdAddr: %02x%02x%02x%02x%02x%02x\n", - bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]); + bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]); evt_data.event = BTM_BL_COLLISION_EVT; evt_data.conn.p_bda = bda; @@ -2516,9 +2393,9 @@ BOOLEAN btm_acl_notif_conn_collision (BD_ADDR bda) #endif (*btm_cb.p_bl_changed_cb)(&evt_data); return TRUE; - } - else + } else { return FALSE; + } } @@ -2532,33 +2409,38 @@ BOOLEAN btm_acl_notif_conn_collision (BD_ADDR bda) void btm_acl_chk_peer_pkt_type_support (tACL_CONN *p, UINT16 *p_pkt_type) { /* 3 and 5 slot packets? */ - if (!HCI_3_SLOT_PACKETS_SUPPORTED(p->peer_lmp_features[HCI_EXT_FEATURES_PAGE_0])) - *p_pkt_type &= ~(BTM_ACL_PKT_TYPES_MASK_DH3 +BTM_ACL_PKT_TYPES_MASK_DM3); + if (!HCI_3_SLOT_PACKETS_SUPPORTED(p->peer_lmp_features[HCI_EXT_FEATURES_PAGE_0])) { + *p_pkt_type &= ~(BTM_ACL_PKT_TYPES_MASK_DH3 + BTM_ACL_PKT_TYPES_MASK_DM3); + } - if (!HCI_5_SLOT_PACKETS_SUPPORTED(p->peer_lmp_features[HCI_EXT_FEATURES_PAGE_0])) + if (!HCI_5_SLOT_PACKETS_SUPPORTED(p->peer_lmp_features[HCI_EXT_FEATURES_PAGE_0])) { *p_pkt_type &= ~(BTM_ACL_PKT_TYPES_MASK_DH5 + BTM_ACL_PKT_TYPES_MASK_DM5); + } /* 2 and 3 MPS support? */ if (!HCI_EDR_ACL_2MPS_SUPPORTED(p->peer_lmp_features[HCI_EXT_FEATURES_PAGE_0])) /* Not supported. Add 'not_supported' mask for all 2MPS packet types */ *p_pkt_type |= (BTM_ACL_PKT_TYPES_MASK_NO_2_DH1 + BTM_ACL_PKT_TYPES_MASK_NO_2_DH3 + - BTM_ACL_PKT_TYPES_MASK_NO_2_DH5); + BTM_ACL_PKT_TYPES_MASK_NO_2_DH5); if (!HCI_EDR_ACL_3MPS_SUPPORTED(p->peer_lmp_features[HCI_EXT_FEATURES_PAGE_0])) /* Not supported. Add 'not_supported' mask for all 3MPS packet types */ *p_pkt_type |= (BTM_ACL_PKT_TYPES_MASK_NO_3_DH1 + BTM_ACL_PKT_TYPES_MASK_NO_3_DH3 + - BTM_ACL_PKT_TYPES_MASK_NO_3_DH5); + BTM_ACL_PKT_TYPES_MASK_NO_3_DH5); /* EDR 3 and 5 slot support? */ if (HCI_EDR_ACL_2MPS_SUPPORTED(p->peer_lmp_features[HCI_EXT_FEATURES_PAGE_0]) - || HCI_EDR_ACL_3MPS_SUPPORTED(p->peer_lmp_features[HCI_EXT_FEATURES_PAGE_0])) - { + || HCI_EDR_ACL_3MPS_SUPPORTED(p->peer_lmp_features[HCI_EXT_FEATURES_PAGE_0])) { if (!HCI_3_SLOT_EDR_ACL_SUPPORTED(p->peer_lmp_features[HCI_EXT_FEATURES_PAGE_0])) /* Not supported. Add 'not_supported' mask for all 3-slot EDR packet types */ + { *p_pkt_type |= (BTM_ACL_PKT_TYPES_MASK_NO_2_DH3 + BTM_ACL_PKT_TYPES_MASK_NO_3_DH3); + } if (!HCI_5_SLOT_EDR_ACL_SUPPORTED(p->peer_lmp_features[HCI_EXT_FEATURES_PAGE_0])) /* Not supported. Add 'not_supported' mask for all 5-slot EDR packet types */ + { *p_pkt_type |= (BTM_ACL_PKT_TYPES_MASK_NO_2_DH5 + BTM_ACL_PKT_TYPES_MASK_NO_3_DH5); + } } } diff --git a/components/bt/bluedroid/stack/btm/btm_ble.c b/components/bt/bluedroid/stack/btm/btm_ble.c old mode 100755 new mode 100644 index 14216e1214..4e1f151957 --- a/components/bt/bluedroid/stack/btm/btm_ble.c +++ b/components/bt/bluedroid/stack/btm/btm_ble.c @@ -44,7 +44,7 @@ #if SMP_INCLUDED == TRUE extern BOOLEAN aes_cipher_msg_auth_code(BT_OCTET16 key, UINT8 *input, UINT16 length, - UINT16 tlen, UINT8 *p_signature); + UINT16 tlen, UINT8 *p_signature); extern void smp_link_encrypted(BD_ADDR bda, UINT8 encr_enable); extern BOOLEAN smp_proc_ltk_request(BD_ADDR bda); #endif @@ -73,21 +73,18 @@ BOOLEAN BTM_SecAddBleDevice (BD_ADDR bd_addr, BD_NAME bd_name, tBT_DEVICE_TYPE d { tBTM_SEC_DEV_REC *p_dev_rec; UINT8 i = 0; - tBTM_INQ_INFO *p_info=NULL; + tBTM_INQ_INFO *p_info = NULL; BTM_TRACE_DEBUG ("BTM_SecAddBleDevice dev_type=0x%x", dev_type); p_dev_rec = btm_find_dev (bd_addr); - if (!p_dev_rec) - { + if (!p_dev_rec) { BTM_TRACE_DEBUG("Add a new device"); /* There is no device record, allocate one. * If we can not find an empty spot for this one, let it fail. */ - for (i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i++) - { - if (!(btm_cb.sec_dev_rec[i].sec_flags & BTM_SEC_IN_USE)) - { + for (i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i++) { + if (!(btm_cb.sec_dev_rec[i].sec_flags & BTM_SEC_IN_USE)) { BTM_TRACE_DEBUG ("allocate a new dev rec idx=0x%x ", i ); p_dev_rec = &btm_cb.sec_dev_rec[i]; @@ -100,27 +97,25 @@ BOOLEAN BTM_SecAddBleDevice (BD_ADDR bd_addr, BD_NAME bd_name, tBT_DEVICE_TYPE d /* update conn params, use default value for background connection params */ p_dev_rec->conn_params.min_conn_int = - p_dev_rec->conn_params.max_conn_int = - p_dev_rec->conn_params.supervision_tout = - p_dev_rec->conn_params.slave_latency = BTM_BLE_CONN_PARAM_UNDEF; + p_dev_rec->conn_params.max_conn_int = + p_dev_rec->conn_params.supervision_tout = + p_dev_rec->conn_params.slave_latency = BTM_BLE_CONN_PARAM_UNDEF; BTM_TRACE_DEBUG ("hci_handl=0x%x ", p_dev_rec->ble_hci_handle ); break; } } - if (!p_dev_rec) - return(FALSE); - } - else - { + if (!p_dev_rec) { + return (FALSE); + } + } else { BTM_TRACE_DEBUG("Device already exist"); } memset(p_dev_rec->sec_bd_name, 0, sizeof(tBTM_BD_NAME)); - if (bd_name && bd_name[0]) - { + if (bd_name && bd_name[0]) { p_dev_rec->sec_flags |= BTM_SEC_NAME_KNOWN; BCM_STRNCPY_S ((char *)p_dev_rec->sec_bd_name, sizeof (p_dev_rec->sec_bd_name), (char *)bd_name, BTM_MAX_REM_BD_NAME_LEN); @@ -131,15 +126,14 @@ BOOLEAN BTM_SecAddBleDevice (BD_ADDR bd_addr, BD_NAME bd_name, tBT_DEVICE_TYPE d memcpy (p_dev_rec->ble.pseudo_addr, bd_addr, BD_ADDR_LEN); /* sync up with the Inq Data base*/ p_info = BTM_InqDbRead(bd_addr); - if (p_info) - { + if (p_info) { p_info->results.ble_addr_type = p_dev_rec->ble.ble_addr_type ; p_info->results.device_type = p_dev_rec->device_type; BTM_TRACE_DEBUG ("InqDb device_type =0x%x addr_type=0x%x", - p_info->results.device_type, p_info->results.ble_addr_type); + p_info->results.device_type, p_info->results.ble_addr_type); } - return(TRUE); + return (TRUE); } /******************************************************************************* @@ -164,31 +158,31 @@ BOOLEAN BTM_SecAddBleKey (BD_ADDR bd_addr, tBTM_LE_KEY_VALUE *p_le_key, tBTM_LE_ BTM_TRACE_DEBUG ("BTM_SecAddBleKey"); p_dev_rec = btm_find_dev (bd_addr); if (!p_dev_rec || !p_le_key || - (key_type != BTM_LE_KEY_PENC && key_type != BTM_LE_KEY_PID && - key_type != BTM_LE_KEY_PCSRK && key_type != BTM_LE_KEY_LENC && - key_type != BTM_LE_KEY_LCSRK && key_type != BTM_LE_KEY_LID)) - { + (key_type != BTM_LE_KEY_PENC && key_type != BTM_LE_KEY_PID && + key_type != BTM_LE_KEY_PCSRK && key_type != BTM_LE_KEY_LENC && + key_type != BTM_LE_KEY_LCSRK && key_type != BTM_LE_KEY_LID)) { BTM_TRACE_WARNING ("BTM_SecAddBleKey() Wrong Type, or No Device record \ for bdaddr: %08x%04x, Type: %d", - (bd_addr[0]<<24)+(bd_addr[1]<<16)+(bd_addr[2]<<8)+bd_addr[3], - (bd_addr[4]<<8)+bd_addr[5], key_type); - return(FALSE); + (bd_addr[0] << 24) + (bd_addr[1] << 16) + (bd_addr[2] << 8) + bd_addr[3], + (bd_addr[4] << 8) + bd_addr[5], key_type); + return (FALSE); } BTM_TRACE_DEBUG ("BTM_SecAddLeKey() BDA: %08x%04x, Type: 0x%02x", - (bd_addr[0]<<24)+(bd_addr[1]<<16)+(bd_addr[2]<<8)+bd_addr[3], - (bd_addr[4]<<8)+bd_addr[5], key_type); + (bd_addr[0] << 24) + (bd_addr[1] << 16) + (bd_addr[2] << 8) + bd_addr[3], + (bd_addr[4] << 8) + bd_addr[5], key_type); btm_sec_save_le_key (bd_addr, key_type, p_le_key, FALSE); #if (BLE_PRIVACY_SPT == TRUE) - if (key_type == BTM_LE_KEY_PID || key_type == BTM_LE_KEY_LID) + if (key_type == BTM_LE_KEY_PID || key_type == BTM_LE_KEY_LID) { btm_ble_resolving_list_load_dev (p_dev_rec); + } #endif #endif - return(TRUE); + return (TRUE); } /******************************************************************************* @@ -208,21 +202,19 @@ void BTM_BleLoadLocalKeys(UINT8 key_type, tBTM_BLE_LOCAL_KEYS *p_key) { tBTM_DEVCB *p_devcb = &btm_cb.devcb; BTM_TRACE_DEBUG ("%s", __func__); - if (p_key != NULL) - { - switch (key_type) - { - case BTM_BLE_KEY_TYPE_ID: - memcpy(&p_devcb->id_keys, &p_key->id_keys, sizeof(tBTM_BLE_LOCAL_ID_KEYS)); - break; + if (p_key != NULL) { + switch (key_type) { + case BTM_BLE_KEY_TYPE_ID: + memcpy(&p_devcb->id_keys, &p_key->id_keys, sizeof(tBTM_BLE_LOCAL_ID_KEYS)); + break; - case BTM_BLE_KEY_TYPE_ER: - memcpy(p_devcb->ble_encryption_key_value, p_key->er, sizeof(BT_OCTET16)); - break; + case BTM_BLE_KEY_TYPE_ER: + memcpy(p_devcb->ble_encryption_key_value, p_key->er, sizeof(BT_OCTET16)); + break; - default: - BTM_TRACE_ERROR("unknow local key type: %d", key_type); - break; + default: + BTM_TRACE_ERROR("unknow local key type: %d", key_type); + break; } } } @@ -292,8 +284,7 @@ void BTM_ReadConnectionAddr (BD_ADDR remote_bda, BD_ADDR local_conn_addr, tBLE_A { tACL_CONN *p_acl = btm_bda_to_acl(remote_bda, BT_TRANSPORT_LE); - if (p_acl == NULL) - { + if (p_acl == NULL) { BTM_TRACE_ERROR("No connection exist!"); return; } @@ -301,7 +292,7 @@ void BTM_ReadConnectionAddr (BD_ADDR remote_bda, BD_ADDR local_conn_addr, tBLE_A * p_addr_type = p_acl->conn_addr_type; BTM_TRACE_DEBUG ("BTM_ReadConnectionAddr address type: %d addr: 0x%02x", - p_acl->conn_addr_type, p_acl->conn_addr[0]); + p_acl->conn_addr_type, p_acl->conn_addr[0]); } /******************************************************************************* @@ -323,8 +314,9 @@ BOOLEAN BTM_IsBleConnection (UINT16 conn_handle) BTM_TRACE_API ("BTM_IsBleConnection: conn_handle: %d", conn_handle); xx = btm_handle_to_acl_index (conn_handle); - if (xx >= MAX_L2CAP_LINKS) + if (xx >= MAX_L2CAP_LINKS) { return FALSE; + } p = &btm_cb.acl_db[xx]; @@ -348,14 +340,13 @@ BOOLEAN BTM_IsBleConnection (UINT16 conn_handle) ** *******************************************************************************/ BOOLEAN BTM_ReadRemoteConnectionAddr(BD_ADDR pseudo_addr, BD_ADDR conn_addr, - tBLE_ADDR_TYPE *p_addr_type) + tBLE_ADDR_TYPE *p_addr_type) { - BOOLEAN st = TRUE; + BOOLEAN st = TRUE; #if (BLE_PRIVACY_SPT == TRUE) tACL_CONN *p = btm_bda_to_acl (pseudo_addr, BT_TRANSPORT_LE); - if (p == NULL) - { + if (p == NULL) { BTM_TRACE_ERROR("BTM_ReadRemoteConnectionAddr can not find connection" " with matching address"); return FALSE; @@ -367,8 +358,7 @@ BOOLEAN BTM_ReadRemoteConnectionAddr(BD_ADDR pseudo_addr, BD_ADDR conn_addr, tBTM_SEC_DEV_REC *p_dev_rec = btm_find_dev(pseudo_addr); memcpy(conn_addr, pseudo_addr, BD_ADDR_LEN); - if (p_dev_rec != NULL) - { + if (p_dev_rec != NULL) { *p_addr_type = p_dev_rec->ble.ble_addr_type; } #endif @@ -417,8 +407,7 @@ void BTM_BlePasskeyReply (BD_ADDR bd_addr, UINT8 res, UINT32 passkey) tBTM_SEC_DEV_REC *p_dev_rec = btm_find_dev (bd_addr); tSMP_STATUS res_smp = (res == BTM_SUCCESS) ? SMP_SUCCESS : SMP_PASSKEY_ENTRY_FAIL; - if (p_dev_rec == NULL) - { + if (p_dev_rec == NULL) { BTM_TRACE_ERROR("Passkey reply to Unknown device"); return; } @@ -446,8 +435,7 @@ void BTM_BleConfirmReply (BD_ADDR bd_addr, UINT8 res) tBTM_SEC_DEV_REC *p_dev_rec = btm_find_dev (bd_addr); tSMP_STATUS res_smp = (res == BTM_SUCCESS) ? SMP_SUCCESS : SMP_PASSKEY_ENTRY_FAIL; - if (p_dev_rec == NULL) - { + if (p_dev_rec == NULL) { BTM_TRACE_ERROR("Passkey reply to Unknown device"); return; } @@ -477,8 +465,7 @@ void BTM_BleOobDataReply(BD_ADDR bd_addr, UINT8 res, UINT8 len, UINT8 *p_data) BTM_TRACE_DEBUG ("BTM_BleOobDataReply"); - if (p_dev_rec == NULL) - { + if (p_dev_rec == NULL) { BTM_TRACE_ERROR("BTM_BleOobDataReply() to Unknown device"); return; } @@ -507,27 +494,21 @@ void BTM_BleSetConnScanParams (UINT32 scan_interval, UINT32 scan_window) BOOLEAN new_param = FALSE; if (BTM_BLE_ISVALID_PARAM(scan_interval, BTM_BLE_SCAN_INT_MIN, BTM_BLE_SCAN_INT_MAX) && - BTM_BLE_ISVALID_PARAM(scan_window, BTM_BLE_SCAN_WIN_MIN, BTM_BLE_SCAN_WIN_MAX)) - { - if (p_ble_cb->scan_int != scan_interval) - { + BTM_BLE_ISVALID_PARAM(scan_window, BTM_BLE_SCAN_WIN_MIN, BTM_BLE_SCAN_WIN_MAX)) { + if (p_ble_cb->scan_int != scan_interval) { p_ble_cb->scan_int = scan_interval; new_param = TRUE; } - if (p_ble_cb->scan_win != scan_window) - { + if (p_ble_cb->scan_win != scan_window) { p_ble_cb->scan_win = scan_window; new_param = TRUE; } - if (new_param && p_ble_cb->conn_state == BLE_BG_CONN) - { + if (new_param && p_ble_cb->conn_state == BLE_BG_CONN) { btm_ble_suspend_bg_conn(); } - } - else - { + } else { BTM_TRACE_ERROR("Illegal Connection Scan Parameters"); } #endif @@ -558,48 +539,45 @@ void BTM_BleSetPrefConnParams (BD_ADDR bd_addr, BTM_TRACE_API ("BTM_BleSetPrefConnParams min: %u max: %u latency: %u \ tout: %u", - min_conn_int, max_conn_int, slave_latency, supervision_tout); + min_conn_int, max_conn_int, slave_latency, supervision_tout); if (BTM_BLE_ISVALID_PARAM(min_conn_int, BTM_BLE_CONN_INT_MIN, BTM_BLE_CONN_INT_MAX) && - BTM_BLE_ISVALID_PARAM(max_conn_int, BTM_BLE_CONN_INT_MIN, BTM_BLE_CONN_INT_MAX) && - BTM_BLE_ISVALID_PARAM(supervision_tout, BTM_BLE_CONN_SUP_TOUT_MIN, BTM_BLE_CONN_SUP_TOUT_MAX) && - (slave_latency <= BTM_BLE_CONN_LATENCY_MAX || slave_latency == BTM_BLE_CONN_PARAM_UNDEF)) - { - if (p_dev_rec) - { + BTM_BLE_ISVALID_PARAM(max_conn_int, BTM_BLE_CONN_INT_MIN, BTM_BLE_CONN_INT_MAX) && + BTM_BLE_ISVALID_PARAM(supervision_tout, BTM_BLE_CONN_SUP_TOUT_MIN, BTM_BLE_CONN_SUP_TOUT_MAX) && + (slave_latency <= BTM_BLE_CONN_LATENCY_MAX || slave_latency == BTM_BLE_CONN_PARAM_UNDEF)) { + if (p_dev_rec) { /* expect conn int and stout and slave latency to be updated all together */ - if (min_conn_int != BTM_BLE_CONN_PARAM_UNDEF || max_conn_int != BTM_BLE_CONN_PARAM_UNDEF) - { - if (min_conn_int != BTM_BLE_CONN_PARAM_UNDEF) + if (min_conn_int != BTM_BLE_CONN_PARAM_UNDEF || max_conn_int != BTM_BLE_CONN_PARAM_UNDEF) { + if (min_conn_int != BTM_BLE_CONN_PARAM_UNDEF) { p_dev_rec->conn_params.min_conn_int = min_conn_int; - else + } else { p_dev_rec->conn_params.min_conn_int = max_conn_int; + } - if (max_conn_int != BTM_BLE_CONN_PARAM_UNDEF) + if (max_conn_int != BTM_BLE_CONN_PARAM_UNDEF) { p_dev_rec->conn_params.max_conn_int = max_conn_int; - else + } else { p_dev_rec->conn_params.max_conn_int = min_conn_int; + } - if (slave_latency != BTM_BLE_CONN_PARAM_UNDEF) + if (slave_latency != BTM_BLE_CONN_PARAM_UNDEF) { p_dev_rec->conn_params.slave_latency = slave_latency; - else + } else { p_dev_rec->conn_params.slave_latency = BTM_BLE_CONN_SLAVE_LATENCY_DEF; + } - if (supervision_tout != BTM_BLE_CONN_PARAM_UNDEF) + if (supervision_tout != BTM_BLE_CONN_PARAM_UNDEF) { p_dev_rec->conn_params.supervision_tout = supervision_tout; - else + } else { p_dev_rec->conn_params.supervision_tout = BTM_BLE_CONN_TIMEOUT_DEF; + } } - } - else - { + } else { BTM_TRACE_ERROR("Unknown Device, setting rejected"); } - } - else - { + } else { BTM_TRACE_ERROR("Illegal Connection Parameters"); } } @@ -623,40 +601,30 @@ void BTM_ReadDevInfo (BD_ADDR remote_bda, tBT_DEVICE_TYPE *p_dev_type, tBLE_ADDR *p_addr_type = BLE_ADDR_PUBLIC; - if (!p_dev_rec) - { + if (!p_dev_rec) { *p_dev_type = BT_DEVICE_TYPE_BREDR; /* Check with the BT manager if details about remote device are known */ - if (p_inq_info != NULL) - { + if (p_inq_info != NULL) { *p_dev_type = p_inq_info->results.device_type ; *p_addr_type = p_inq_info->results.ble_addr_type; } else { /* unknown device, assume BR/EDR */ BTM_TRACE_DEBUG ("btm_find_dev_type - unknown device, BR/EDR assumed"); } - } - else /* there is a security device record exisitng */ - { + } else { /* there is a security device record exisitng */ /* new inquiry result, overwrite device type in security device record */ - if (p_inq_info) - { + if (p_inq_info) { p_dev_rec->device_type = p_inq_info->results.device_type; p_dev_rec->ble.ble_addr_type = p_inq_info->results.ble_addr_type; } if (memcmp(p_dev_rec->bd_addr, remote_bda, BD_ADDR_LEN) == 0 && - memcmp(p_dev_rec->ble.pseudo_addr, remote_bda, BD_ADDR_LEN) == 0) - { + memcmp(p_dev_rec->ble.pseudo_addr, remote_bda, BD_ADDR_LEN) == 0) { *p_dev_type = p_dev_rec->device_type; *p_addr_type = p_dev_rec->ble.ble_addr_type; - } - else if (memcmp(p_dev_rec->ble.pseudo_addr, remote_bda, BD_ADDR_LEN) == 0) - { + } else if (memcmp(p_dev_rec->ble.pseudo_addr, remote_bda, BD_ADDR_LEN) == 0) { *p_dev_type = BT_DEVICE_TYPE_BLE; *p_addr_type = p_dev_rec->ble.ble_addr_type; - } - else /* matching static adddress only */ - { + } else { /* matching static adddress only */ *p_dev_type = BT_DEVICE_TYPE_BREDR; *p_addr_type = BLE_ADDR_PUBLIC; } @@ -686,32 +654,29 @@ BOOLEAN BTM_ReadConnectedTransportAddress(BD_ADDR remote_bda, tBT_TRANSPORT tran tACL_CONN *p = btm_bda_to_acl(remote_bda, transport); /* if no device can be located, return */ - if (p_dev_rec == NULL) - return FALSE; - - if (transport == BT_TRANSPORT_BR_EDR) - { - if (btm_bda_to_acl(p_dev_rec->bd_addr, transport) != NULL) - { - memcpy(remote_bda, p_dev_rec->bd_addr, BD_ADDR_LEN); - return TRUE; - } - else if (p_dev_rec->device_type & BT_DEVICE_TYPE_BREDR) - { - memcpy(remote_bda, p_dev_rec->bd_addr, BD_ADDR_LEN); - } - else - memset(remote_bda, 0, BD_ADDR_LEN); + if (p_dev_rec == NULL) { return FALSE; } - if (transport == BT_TRANSPORT_LE) - { - memcpy(remote_bda, p_dev_rec->ble.pseudo_addr, BD_ADDR_LEN); - if (btm_bda_to_acl(p_dev_rec->ble.pseudo_addr, transport) != NULL) + if (transport == BT_TRANSPORT_BR_EDR) { + if (btm_bda_to_acl(p_dev_rec->bd_addr, transport) != NULL) { + memcpy(remote_bda, p_dev_rec->bd_addr, BD_ADDR_LEN); return TRUE; - else + } else if (p_dev_rec->device_type & BT_DEVICE_TYPE_BREDR) { + memcpy(remote_bda, p_dev_rec->bd_addr, BD_ADDR_LEN); + } else { + memset(remote_bda, 0, BD_ADDR_LEN); + } + return FALSE; + } + + if (transport == BT_TRANSPORT_LE) { + memcpy(remote_bda, p_dev_rec->ble.pseudo_addr, BD_ADDR_LEN); + if (btm_bda_to_acl(p_dev_rec->ble.pseudo_addr, transport) != NULL) { + return TRUE; + } else { return FALSE; + } } return FALSE; @@ -729,12 +694,11 @@ BOOLEAN BTM_ReadConnectedTransportAddress(BD_ADDR remote_bda, tBT_TRANSPORT tran *******************************************************************************/ void BTM_BleReceiverTest(UINT8 rx_freq, tBTM_CMPL_CB *p_cmd_cmpl_cback) { - btm_cb.devcb.p_le_test_cmd_cmpl_cb = p_cmd_cmpl_cback; + btm_cb.devcb.p_le_test_cmd_cmpl_cb = p_cmd_cmpl_cback; - if (btsnd_hcic_ble_receiver_test(rx_freq) == FALSE) - { - BTM_TRACE_ERROR("%s: Unable to Trigger LE receiver test", __FUNCTION__); - } + if (btsnd_hcic_ble_receiver_test(rx_freq) == FALSE) { + BTM_TRACE_ERROR("%s: Unable to Trigger LE receiver test", __FUNCTION__); + } } /******************************************************************************* @@ -750,13 +714,12 @@ void BTM_BleReceiverTest(UINT8 rx_freq, tBTM_CMPL_CB *p_cmd_cmpl_cback) ** *******************************************************************************/ void BTM_BleTransmitterTest(UINT8 tx_freq, UINT8 test_data_len, - UINT8 packet_payload, tBTM_CMPL_CB *p_cmd_cmpl_cback) + UINT8 packet_payload, tBTM_CMPL_CB *p_cmd_cmpl_cback) { - btm_cb.devcb.p_le_test_cmd_cmpl_cb = p_cmd_cmpl_cback; - if (btsnd_hcic_ble_transmitter_test(tx_freq, test_data_len, packet_payload) == FALSE) - { - BTM_TRACE_ERROR("%s: Unable to Trigger LE transmitter test", __FUNCTION__); - } + btm_cb.devcb.p_le_test_cmd_cmpl_cb = p_cmd_cmpl_cback; + if (btsnd_hcic_ble_transmitter_test(tx_freq, test_data_len, packet_payload) == FALSE) { + BTM_TRACE_ERROR("%s: Unable to Trigger LE transmitter test", __FUNCTION__); + } } /******************************************************************************* @@ -770,12 +733,11 @@ void BTM_BleTransmitterTest(UINT8 tx_freq, UINT8 test_data_len, *******************************************************************************/ void BTM_BleTestEnd(tBTM_CMPL_CB *p_cmd_cmpl_cback) { - btm_cb.devcb.p_le_test_cmd_cmpl_cb = p_cmd_cmpl_cback; + btm_cb.devcb.p_le_test_cmd_cmpl_cb = p_cmd_cmpl_cback; - if (btsnd_hcic_ble_test_end() == FALSE) - { - BTM_TRACE_ERROR("%s: Unable to End the LE TX/RX test", __FUNCTION__); - } + if (btsnd_hcic_ble_test_end() == FALSE) { + BTM_TRACE_ERROR("%s: Unable to End the LE TX/RX test", __FUNCTION__); + } } /******************************************************************************* @@ -787,8 +749,7 @@ void btm_ble_test_command_complete(UINT8 *p) btm_cb.devcb.p_le_test_cmd_cmpl_cb = NULL; - if (p_cb) - { + if (p_cb) { (*p_cb)(p); } } @@ -809,16 +770,11 @@ BOOLEAN BTM_UseLeLink (BD_ADDR bd_addr) tBLE_ADDR_TYPE addr_type; BOOLEAN use_le = FALSE; - if ((p = btm_bda_to_acl(bd_addr, BT_TRANSPORT_BR_EDR)) != NULL) - { + if ((p = btm_bda_to_acl(bd_addr, BT_TRANSPORT_BR_EDR)) != NULL) { return use_le; - } - else if ((p = btm_bda_to_acl(bd_addr, BT_TRANSPORT_LE)) != NULL) - { + } else if ((p = btm_bda_to_acl(bd_addr, BT_TRANSPORT_LE)) != NULL) { use_le = TRUE; - } - else - { + } else { BTM_ReadDevInfo(bd_addr, &dev_type, &addr_type); use_le = (dev_type == BT_DEVICE_TYPE_BLE); } @@ -840,34 +796,30 @@ tBTM_STATUS BTM_SetBleDataLength(BD_ADDR bd_addr, UINT16 tx_pdu_length) tACL_CONN *p_acl = btm_bda_to_acl(bd_addr, BT_TRANSPORT_LE); BTM_TRACE_DEBUG("%s: tx_pdu_length =%d", __FUNCTION__, tx_pdu_length); - if (!controller_get_interface()->supports_ble_packet_extension()) - { + if (!controller_get_interface()->supports_ble_packet_extension()) { BTM_TRACE_ERROR("%s failed, request not supported", __FUNCTION__); return BTM_ILLEGAL_VALUE; } - if (!HCI_LE_DATA_LEN_EXT_SUPPORTED(p_acl->peer_le_features)) - { + if (!HCI_LE_DATA_LEN_EXT_SUPPORTED(p_acl->peer_le_features)) { BTM_TRACE_ERROR("%s failed, peer does not support request", __FUNCTION__); return BTM_ILLEGAL_VALUE; } - if (p_acl != NULL) - { - if (tx_pdu_length > BTM_BLE_DATA_SIZE_MAX) + if (p_acl != NULL) { + if (tx_pdu_length > BTM_BLE_DATA_SIZE_MAX) { tx_pdu_length = BTM_BLE_DATA_SIZE_MAX; - else if (tx_pdu_length < BTM_BLE_DATA_SIZE_MIN) + } else if (tx_pdu_length < BTM_BLE_DATA_SIZE_MIN) { tx_pdu_length = BTM_BLE_DATA_SIZE_MIN; + } /* always set the TxTime to be max, as controller does not care for now */ btsnd_hcic_ble_set_data_length(p_acl->hci_handle, tx_pdu_length, - BTM_BLE_DATA_TX_TIME_MAX); + BTM_BLE_DATA_TX_TIME_MAX); return BTM_SUCCESS; - } - else - { - BTM_TRACE_ERROR("%s: Wrong mode: no LE link exist or LE not supported",__FUNCTION__); + } else { + BTM_TRACE_ERROR("%s: Wrong mode: no LE link exist or LE not supported", __FUNCTION__); return BTM_WRONG_MODE; } } @@ -893,29 +845,29 @@ void btm_ble_rand_enc_complete (UINT8 *p, UINT16 op_code, tBTM_RAND_ENC_CB *p_en memset(¶ms, 0, sizeof(tBTM_RAND_ENC)); /* If there was a callback address for vcs complete, call it */ - if (p_enc_cplt_cback && p) - { + if (p_enc_cplt_cback && p) { /* Pass paramters to the callback function */ STREAM_TO_UINT8(params.status, p); /* command status */ - if (params.status == HCI_SUCCESS) - { + if (params.status == HCI_SUCCESS) { params.opcode = op_code; - if (op_code == HCI_BLE_RAND) + if (op_code == HCI_BLE_RAND) { params.param_len = BT_OCTET8_LEN; - else + } else { params.param_len = BT_OCTET16_LEN; + } memcpy(p_dest, p, params.param_len); /* Fetch return info from HCI event message */ } - if (p_enc_cplt_cback) - (*p_enc_cplt_cback)(¶ms); /* Call the Encryption complete callback function */ + if (p_enc_cplt_cback) { + (*p_enc_cplt_cback)(¶ms); /* Call the Encryption complete callback function */ + } } } - #if (SMP_INCLUDED == TRUE) +#if (SMP_INCLUDED == TRUE) /******************************************************************************* ** @@ -931,16 +883,16 @@ void btm_ble_increment_sign_ctr(BD_ADDR bd_addr, BOOLEAN is_local ) BTM_TRACE_DEBUG ("btm_ble_increment_sign_ctr is_local=%d", is_local); - if ((p_dev_rec = btm_find_dev (bd_addr)) != NULL) - { - if (is_local) + if ((p_dev_rec = btm_find_dev (bd_addr)) != NULL) { + if (is_local) { p_dev_rec->ble.keys.local_counter++; - else + } else { p_dev_rec->ble.keys.counter++; + } BTM_TRACE_DEBUG ("is_local=%d local sign counter=%d peer sign counter=%d", - is_local, - p_dev_rec->ble.keys.local_counter, - p_dev_rec->ble.keys.counter); + is_local, + p_dev_rec->ble.keys.local_counter, + p_dev_rec->ble.keys.counter); } } @@ -960,8 +912,7 @@ BOOLEAN btm_ble_get_enc_key_type(BD_ADDR bd_addr, UINT8 *p_key_types) BTM_TRACE_DEBUG ("btm_ble_get_enc_key_type"); - if ((p_dev_rec = btm_find_dev (bd_addr)) != NULL) - { + if ((p_dev_rec = btm_find_dev (bd_addr)) != NULL) { *p_key_types = p_dev_rec->ble.key_type; return TRUE; } @@ -983,15 +934,14 @@ BOOLEAN btm_get_local_div (BD_ADDR bd_addr, UINT16 *p_div) BTM_TRACE_DEBUG ("btm_get_local_div"); BTM_TRACE_DEBUG("bd_addr:%02x-%02x-%02x-%02x-%02x-%02x", - bd_addr[0],bd_addr[1], - bd_addr[2],bd_addr[3], - bd_addr[4],bd_addr[5]); + bd_addr[0], bd_addr[1], + bd_addr[2], bd_addr[3], + bd_addr[4], bd_addr[5]); *p_div = 0; p_dev_rec = btm_find_dev (bd_addr); - if (p_dev_rec && p_dev_rec->ble.keys.div) - { + if (p_dev_rec && p_dev_rec->ble.keys.div) { status = TRUE; *p_div = p_dev_rec->ble.keys.div; } @@ -1019,116 +969,114 @@ void btm_sec_save_le_key(BD_ADDR bd_addr, tBTM_LE_KEY_TYPE key_type, tBTM_LE_KEY tBTM_LE_EVT_DATA cb_data; UINT8 i; - BTM_TRACE_DEBUG ("btm_sec_save_le_key key_type=0x%x pass_to_application=%d",key_type, pass_to_application); + BTM_TRACE_DEBUG ("btm_sec_save_le_key key_type=0x%x pass_to_application=%d", key_type, pass_to_application); /* Store the updated key in the device database */ BTM_TRACE_DEBUG("bd_addr:%02x-%02x-%02x-%02x-%02x-%02x", - bd_addr[0],bd_addr[1], - bd_addr[2],bd_addr[3], - bd_addr[4],bd_addr[5]); + bd_addr[0], bd_addr[1], + bd_addr[2], bd_addr[3], + bd_addr[4], bd_addr[5]); - if ((p_rec = btm_find_dev (bd_addr)) != NULL && (p_keys || key_type== BTM_LE_KEY_LID)) - { + if ((p_rec = btm_find_dev (bd_addr)) != NULL && (p_keys || key_type == BTM_LE_KEY_LID)) { btm_ble_init_pseudo_addr (p_rec, bd_addr); - switch (key_type) - { - case BTM_LE_KEY_PENC: - memcpy(p_rec->ble.keys.pltk, p_keys->penc_key.ltk, BT_OCTET16_LEN); - memcpy(p_rec->ble.keys.rand, p_keys->penc_key.rand, BT_OCTET8_LEN); - p_rec->ble.keys.sec_level = p_keys->penc_key.sec_level; - p_rec->ble.keys.ediv = p_keys->penc_key.ediv; - p_rec->ble.keys.key_size = p_keys->penc_key.key_size; - p_rec->ble.key_type |= BTM_LE_KEY_PENC; - p_rec->sec_flags |= BTM_SEC_LE_LINK_KEY_KNOWN; - if (p_keys->penc_key.sec_level == SMP_SEC_AUTHENTICATED) - p_rec->sec_flags |= BTM_SEC_LE_LINK_KEY_AUTHED; - else - p_rec->sec_flags &= ~BTM_SEC_LE_LINK_KEY_AUTHED; - BTM_TRACE_DEBUG("BTM_LE_KEY_PENC key_type=0x%x sec_flags=0x%x sec_leve=0x%x", - p_rec->ble.key_type, - p_rec->sec_flags, - p_rec->ble.keys.sec_level); - break; + switch (key_type) { + case BTM_LE_KEY_PENC: + memcpy(p_rec->ble.keys.pltk, p_keys->penc_key.ltk, BT_OCTET16_LEN); + memcpy(p_rec->ble.keys.rand, p_keys->penc_key.rand, BT_OCTET8_LEN); + p_rec->ble.keys.sec_level = p_keys->penc_key.sec_level; + p_rec->ble.keys.ediv = p_keys->penc_key.ediv; + p_rec->ble.keys.key_size = p_keys->penc_key.key_size; + p_rec->ble.key_type |= BTM_LE_KEY_PENC; + p_rec->sec_flags |= BTM_SEC_LE_LINK_KEY_KNOWN; + if (p_keys->penc_key.sec_level == SMP_SEC_AUTHENTICATED) { + p_rec->sec_flags |= BTM_SEC_LE_LINK_KEY_AUTHED; + } else { + p_rec->sec_flags &= ~BTM_SEC_LE_LINK_KEY_AUTHED; + } + BTM_TRACE_DEBUG("BTM_LE_KEY_PENC key_type=0x%x sec_flags=0x%x sec_leve=0x%x", + p_rec->ble.key_type, + p_rec->sec_flags, + p_rec->ble.keys.sec_level); + break; - case BTM_LE_KEY_PID: - for (i=0; ible.keys.irk[i] = p_keys->pid_key.irk[i]; - } + case BTM_LE_KEY_PID: + for (i = 0; i < BT_OCTET16_LEN; i++) { + p_rec->ble.keys.irk[i] = p_keys->pid_key.irk[i]; + } - //memcpy( p_rec->ble.keys.irk, p_keys->pid_key, BT_OCTET16_LEN); todo will crash the system - memcpy(p_rec->ble.static_addr, p_keys->pid_key.static_addr, BD_ADDR_LEN); - p_rec->ble.static_addr_type = p_keys->pid_key.addr_type; - p_rec->ble.key_type |= BTM_LE_KEY_PID; - BTM_TRACE_DEBUG("BTM_LE_KEY_PID key_type=0x%x save peer IRK", p_rec->ble.key_type); - /* update device record address as static address */ - memcpy(p_rec->bd_addr, p_keys->pid_key.static_addr, BD_ADDR_LEN); - /* combine DUMO device security record if needed */ - btm_consolidate_dev(p_rec); - break; + //memcpy( p_rec->ble.keys.irk, p_keys->pid_key, BT_OCTET16_LEN); todo will crash the system + memcpy(p_rec->ble.static_addr, p_keys->pid_key.static_addr, BD_ADDR_LEN); + p_rec->ble.static_addr_type = p_keys->pid_key.addr_type; + p_rec->ble.key_type |= BTM_LE_KEY_PID; + BTM_TRACE_DEBUG("BTM_LE_KEY_PID key_type=0x%x save peer IRK", p_rec->ble.key_type); + /* update device record address as static address */ + memcpy(p_rec->bd_addr, p_keys->pid_key.static_addr, BD_ADDR_LEN); + /* combine DUMO device security record if needed */ + btm_consolidate_dev(p_rec); + break; - case BTM_LE_KEY_PCSRK: - memcpy(p_rec->ble.keys.pcsrk, p_keys->pcsrk_key.csrk, BT_OCTET16_LEN); - p_rec->ble.keys.srk_sec_level = p_keys->pcsrk_key.sec_level; - p_rec->ble.keys.counter = p_keys->pcsrk_key.counter; - p_rec->ble.key_type |= BTM_LE_KEY_PCSRK; - p_rec->sec_flags |= BTM_SEC_LE_LINK_KEY_KNOWN; - if ( p_keys->pcsrk_key.sec_level== SMP_SEC_AUTHENTICATED) - p_rec->sec_flags |= BTM_SEC_LE_LINK_KEY_AUTHED; - else - p_rec->sec_flags &= ~BTM_SEC_LE_LINK_KEY_AUTHED; + case BTM_LE_KEY_PCSRK: + memcpy(p_rec->ble.keys.pcsrk, p_keys->pcsrk_key.csrk, BT_OCTET16_LEN); + p_rec->ble.keys.srk_sec_level = p_keys->pcsrk_key.sec_level; + p_rec->ble.keys.counter = p_keys->pcsrk_key.counter; + p_rec->ble.key_type |= BTM_LE_KEY_PCSRK; + p_rec->sec_flags |= BTM_SEC_LE_LINK_KEY_KNOWN; + if ( p_keys->pcsrk_key.sec_level == SMP_SEC_AUTHENTICATED) { + p_rec->sec_flags |= BTM_SEC_LE_LINK_KEY_AUTHED; + } else { + p_rec->sec_flags &= ~BTM_SEC_LE_LINK_KEY_AUTHED; + } - BTM_TRACE_DEBUG("BTM_LE_KEY_PCSRK key_type=0x%x sec_flags=0x%x sec_level=0x%x peer_counter=%d", - p_rec->ble.key_type, - p_rec->sec_flags, - p_rec->ble.keys.srk_sec_level, - p_rec->ble.keys.counter ); - break; + BTM_TRACE_DEBUG("BTM_LE_KEY_PCSRK key_type=0x%x sec_flags=0x%x sec_level=0x%x peer_counter=%d", + p_rec->ble.key_type, + p_rec->sec_flags, + p_rec->ble.keys.srk_sec_level, + p_rec->ble.keys.counter ); + break; - case BTM_LE_KEY_LENC: - memcpy(p_rec->ble.keys.lltk, p_keys->lenc_key.ltk, BT_OCTET16_LEN); - p_rec->ble.keys.div = p_keys->lenc_key.div; /* update DIV */ - p_rec->ble.keys.sec_level = p_keys->lenc_key.sec_level; - p_rec->ble.keys.key_size = p_keys->lenc_key.key_size; - p_rec->ble.key_type |= BTM_LE_KEY_LENC; + case BTM_LE_KEY_LENC: + memcpy(p_rec->ble.keys.lltk, p_keys->lenc_key.ltk, BT_OCTET16_LEN); + p_rec->ble.keys.div = p_keys->lenc_key.div; /* update DIV */ + p_rec->ble.keys.sec_level = p_keys->lenc_key.sec_level; + p_rec->ble.keys.key_size = p_keys->lenc_key.key_size; + p_rec->ble.key_type |= BTM_LE_KEY_LENC; - BTM_TRACE_DEBUG("BTM_LE_KEY_LENC key_type=0x%x DIV=0x%x key_size=0x%x sec_level=0x%x", - p_rec->ble.key_type, - p_rec->ble.keys.div, - p_rec->ble.keys.key_size, - p_rec->ble.keys.sec_level ); - break; + BTM_TRACE_DEBUG("BTM_LE_KEY_LENC key_type=0x%x DIV=0x%x key_size=0x%x sec_level=0x%x", + p_rec->ble.key_type, + p_rec->ble.keys.div, + p_rec->ble.keys.key_size, + p_rec->ble.keys.sec_level ); + break; - case BTM_LE_KEY_LCSRK:/* local CSRK has been delivered */ - memcpy (p_rec->ble.keys.lcsrk, p_keys->lcsrk_key.csrk, BT_OCTET16_LEN); - p_rec->ble.keys.div = p_keys->lcsrk_key.div; /* update DIV */ - p_rec->ble.keys.local_csrk_sec_level = p_keys->lcsrk_key.sec_level; - p_rec->ble.keys.local_counter = p_keys->lcsrk_key.counter; - p_rec->ble.key_type |= BTM_LE_KEY_LCSRK; - BTM_TRACE_DEBUG("BTM_LE_KEY_LCSRK key_type=0x%x DIV=0x%x scrk_sec_level=0x%x local_counter=%d", - p_rec->ble.key_type, - p_rec->ble.keys.div, - p_rec->ble.keys.local_csrk_sec_level, - p_rec->ble.keys.local_counter ); - break; + case BTM_LE_KEY_LCSRK:/* local CSRK has been delivered */ + memcpy (p_rec->ble.keys.lcsrk, p_keys->lcsrk_key.csrk, BT_OCTET16_LEN); + p_rec->ble.keys.div = p_keys->lcsrk_key.div; /* update DIV */ + p_rec->ble.keys.local_csrk_sec_level = p_keys->lcsrk_key.sec_level; + p_rec->ble.keys.local_counter = p_keys->lcsrk_key.counter; + p_rec->ble.key_type |= BTM_LE_KEY_LCSRK; + BTM_TRACE_DEBUG("BTM_LE_KEY_LCSRK key_type=0x%x DIV=0x%x scrk_sec_level=0x%x local_counter=%d", + p_rec->ble.key_type, + p_rec->ble.keys.div, + p_rec->ble.keys.local_csrk_sec_level, + p_rec->ble.keys.local_counter ); + break; - case BTM_LE_KEY_LID: - p_rec->ble.key_type |= BTM_LE_KEY_LID; - break; - default: - BTM_TRACE_WARNING("btm_sec_save_le_key (Bad key_type 0x%02x)", key_type); - return; + case BTM_LE_KEY_LID: + p_rec->ble.key_type |= BTM_LE_KEY_LID; + break; + default: + BTM_TRACE_WARNING("btm_sec_save_le_key (Bad key_type 0x%02x)", key_type); + return; } BTM_TRACE_DEBUG ("BLE key type 0x%02x updated for BDA: %08x%04x (btm_sec_save_le_key)", key_type, - (bd_addr[0]<<24)+(bd_addr[1]<<16)+(bd_addr[2]<<8)+bd_addr[3], - (bd_addr[4]<<8)+bd_addr[5]); + (bd_addr[0] << 24) + (bd_addr[1] << 16) + (bd_addr[2] << 8) + bd_addr[3], + (bd_addr[4] << 8) + bd_addr[5]); /* Notify the application that one of the BLE keys has been updated If link key is in progress, it will get sent later.*/ - if (pass_to_application && btm_cb.api.p_le_callback) - { + if (pass_to_application && btm_cb.api.p_le_callback) { cb_data.key.p_key_value = p_keys; cb_data.key.key_type = key_type; @@ -1138,11 +1086,10 @@ void btm_sec_save_le_key(BD_ADDR bd_addr, tBTM_LE_KEY_TYPE key_type, tBTM_LE_KEY } BTM_TRACE_WARNING ("BLE key type 0x%02x called for Unknown BDA or type: %08x%04x !! (btm_sec_save_le_key)", key_type, - (bd_addr[0]<<24)+(bd_addr[1]<<16)+(bd_addr[2]<<8)+bd_addr[3], - (bd_addr[4]<<8)+bd_addr[5]); + (bd_addr[0] << 24) + (bd_addr[1] << 16) + (bd_addr[2] << 8) + bd_addr[3], + (bd_addr[4] << 8) + bd_addr[5]); - if (p_rec) - { + if (p_rec) { BTM_TRACE_DEBUG ("sec_flags=0x%x", p_rec->sec_flags); } } @@ -1162,8 +1109,7 @@ void btm_ble_update_sec_key_size(BD_ADDR bd_addr, UINT8 enc_key_size) BTM_TRACE_DEBUG("btm_ble_update_sec_key_size enc_key_size = %d", enc_key_size); - if ((p_rec = btm_find_dev (bd_addr)) != NULL ) - { + if ((p_rec = btm_find_dev (bd_addr)) != NULL ) { p_rec->enc_key_size = enc_key_size; } } @@ -1181,12 +1127,11 @@ UINT8 btm_ble_read_sec_key_size(BD_ADDR bd_addr) { tBTM_SEC_DEV_REC *p_rec; - if ((p_rec = btm_find_dev (bd_addr)) != NULL ) - { + if ((p_rec = btm_find_dev (bd_addr)) != NULL ) { return p_rec->enc_key_size; - } - else + } else { return 0; + } } /******************************************************************************* @@ -1205,60 +1150,51 @@ void btm_ble_link_sec_check(BD_ADDR bd_addr, tBTM_LE_AUTH_REQ auth_req, tBTM_BLE BTM_TRACE_DEBUG ("btm_ble_link_sec_check auth_req =0x%x", auth_req); - if (p_dev_rec == NULL) - { + if (p_dev_rec == NULL) { BTM_TRACE_ERROR ("btm_ble_link_sec_check received for unknown device"); return; } if (p_dev_rec->sec_state == BTM_SEC_STATE_ENCRYPTING || - p_dev_rec->sec_state == BTM_SEC_STATE_AUTHENTICATING) - { + p_dev_rec->sec_state == BTM_SEC_STATE_AUTHENTICATING) { /* race condition: discard the security request while master is encrypting the link */ *p_sec_req_act = BTM_BLE_SEC_REQ_ACT_DISCARD; - } - else - { + } else { req_sec_level = BTM_LE_SEC_UNAUTHENTICATE; - if (auth_req & BTM_LE_AUTH_REQ_MITM) - { + if (auth_req & BTM_LE_AUTH_REQ_MITM) { req_sec_level = BTM_LE_SEC_AUTHENTICATED; } BTM_TRACE_DEBUG ("dev_rec sec_flags=0x%x", p_dev_rec->sec_flags); /* currently encrpted */ - if (p_dev_rec->sec_flags & BTM_SEC_LE_ENCRYPTED) - { - if (p_dev_rec->sec_flags & BTM_SEC_LE_AUTHENTICATED) + if (p_dev_rec->sec_flags & BTM_SEC_LE_ENCRYPTED) { + if (p_dev_rec->sec_flags & BTM_SEC_LE_AUTHENTICATED) { cur_sec_level = BTM_LE_SEC_AUTHENTICATED; - else + } else { cur_sec_level = BTM_LE_SEC_UNAUTHENTICATE; - } - else /* unencrypted link */ - { + } + } else { /* unencrypted link */ /* if bonded, get the key security level */ - if (p_dev_rec->ble.key_type & BTM_LE_KEY_PENC) + if (p_dev_rec->ble.key_type & BTM_LE_KEY_PENC) { cur_sec_level = p_dev_rec->ble.keys.sec_level; - else + } else { cur_sec_level = BTM_LE_SEC_NONE; + } } - if (cur_sec_level >= req_sec_level) - { + if (cur_sec_level >= req_sec_level) { /* To avoid re-encryption on an encrypted link for an equal condition encryption */ *p_sec_req_act = BTM_BLE_SEC_REQ_ACT_ENCRYPT; - } - else - { + } else { *p_sec_req_act = BTM_BLE_SEC_REQ_ACT_PAIR; /* start the pariring process to upgrade the keys*/ } } BTM_TRACE_DEBUG("cur_sec_level=%d req_sec_level=%d sec_req_act=%d", - cur_sec_level, - req_sec_level, - *p_sec_req_act); + cur_sec_level, + req_sec_level, + *p_sec_req_act); } @@ -1283,55 +1219,48 @@ tBTM_STATUS btm_ble_set_encryption (BD_ADDR bd_addr, void *p_ref_data, UINT8 lin tBTM_BLE_SEC_REQ_ACT sec_req_act; tBTM_LE_AUTH_REQ auth_req; - if (p_rec == NULL) - { + if (p_rec == NULL) { BTM_TRACE_WARNING ("btm_ble_set_encryption (NULL device record!! sec_act=0x%x", sec_act); - return(BTM_WRONG_MODE); + return (BTM_WRONG_MODE); } BTM_TRACE_DEBUG ("btm_ble_set_encryption sec_act=0x%x role_master=%d", sec_act, p_rec->role_master); - if (sec_act == BTM_BLE_SEC_ENCRYPT_MITM) - { + if (sec_act == BTM_BLE_SEC_ENCRYPT_MITM) { p_rec->security_required |= BTM_SEC_IN_MITM; } - switch (sec_act) - { - case BTM_BLE_SEC_ENCRYPT: - if (link_role == BTM_ROLE_MASTER) - { - /* start link layer encryption using the security info stored */ + switch (sec_act) { + case BTM_BLE_SEC_ENCRYPT: + if (link_role == BTM_ROLE_MASTER) { + /* start link layer encryption using the security info stored */ + cmd = btm_ble_start_encrypt(bd_addr, FALSE, NULL); + break; + } + /* if salve role then fall through to call SMP_Pair below which will send a + sec_request to request the master to encrypt the link */ + case BTM_BLE_SEC_ENCRYPT_NO_MITM: + case BTM_BLE_SEC_ENCRYPT_MITM: + if (link_role == BTM_ROLE_MASTER) { + auth_req = (sec_act == BTM_BLE_SEC_ENCRYPT_NO_MITM) + ? SMP_AUTH_GEN_BOND : (SMP_AUTH_GEN_BOND | SMP_AUTH_YN_BIT); + btm_ble_link_sec_check (bd_addr, auth_req, &sec_req_act); + + if (sec_req_act == BTM_BLE_SEC_REQ_ACT_ENCRYPT) { cmd = btm_ble_start_encrypt(bd_addr, FALSE, NULL); break; } - /* if salve role then fall through to call SMP_Pair below which will send a - sec_request to request the master to encrypt the link */ - case BTM_BLE_SEC_ENCRYPT_NO_MITM: - case BTM_BLE_SEC_ENCRYPT_MITM: - if (link_role == BTM_ROLE_MASTER) - { - auth_req = (sec_act == BTM_BLE_SEC_ENCRYPT_NO_MITM) - ? SMP_AUTH_GEN_BOND : (SMP_AUTH_GEN_BOND | SMP_AUTH_YN_BIT); - btm_ble_link_sec_check (bd_addr, auth_req, &sec_req_act); + } - if (sec_req_act == BTM_BLE_SEC_REQ_ACT_ENCRYPT) - { - cmd = btm_ble_start_encrypt(bd_addr, FALSE, NULL); - break; - } - } + if (SMP_Pair(bd_addr) == SMP_STARTED) { + cmd = BTM_CMD_STARTED; + p_rec->sec_state = BTM_SEC_STATE_AUTHENTICATING; + } + break; - if (SMP_Pair(bd_addr) == SMP_STARTED) - { - cmd = BTM_CMD_STARTED; - p_rec->sec_state = BTM_SEC_STATE_AUTHENTICATING; - } - break; - - default: - cmd = BTM_WRONG_MODE; - break; + default: + cmd = BTM_WRONG_MODE; + break; } return cmd; } @@ -1359,10 +1288,10 @@ void btm_ble_ltk_request(UINT16 handle, UINT8 rand[8], UINT16 ediv) memcpy(p_cb->enc_rand, rand, BT_OCTET8_LEN); - if (p_dev_rec != NULL) - { - if (!smp_proc_ltk_request(p_dev_rec->bd_addr)) + if (p_dev_rec != NULL) { + if (!smp_proc_ltk_request(p_dev_rec->bd_addr)) { btm_ble_ltk_request_reply(p_dev_rec->bd_addr, FALSE, dummy_stk); + } } } @@ -1386,39 +1315,34 @@ tBTM_STATUS btm_ble_start_encrypt(BD_ADDR bda, BOOLEAN use_stk, BT_OCTET16 stk) BTM_TRACE_DEBUG ("btm_ble_start_encrypt"); - if (!p_rec ) - { + if (!p_rec ) { BTM_TRACE_ERROR("Link is not active, can not encrypt!"); return BTM_WRONG_MODE; } - if (p_rec->sec_state == BTM_SEC_STATE_ENCRYPTING) - { + if (p_rec->sec_state == BTM_SEC_STATE_ENCRYPTING) { BTM_TRACE_WARNING("Link Encryption is active, Busy!"); return BTM_BUSY; } p_cb->enc_handle = p_rec->ble_hci_handle; - if (use_stk) - { - if (btsnd_hcic_ble_start_enc(p_rec->ble_hci_handle, dummy_rand, 0, stk)) + if (use_stk) { + if (btsnd_hcic_ble_start_enc(p_rec->ble_hci_handle, dummy_rand, 0, stk)) { rt = BTM_CMD_STARTED; - } - else if (p_rec->ble.key_type & BTM_LE_KEY_PENC) - { + } + } else if (p_rec->ble.key_type & BTM_LE_KEY_PENC) { if (btsnd_hcic_ble_start_enc(p_rec->ble_hci_handle, p_rec->ble.keys.rand, - p_rec->ble.keys.ediv, p_rec->ble.keys.pltk)) + p_rec->ble.keys.ediv, p_rec->ble.keys.pltk)) { rt = BTM_CMD_STARTED; - } - else - { + } + } else { BTM_TRACE_ERROR("No key available to encrypt the link"); } - if (rt == BTM_CMD_STARTED) - { - if (p_rec->sec_state == BTM_SEC_STATE_IDLE) + if (rt == BTM_CMD_STARTED) { + if (p_rec->sec_state == BTM_SEC_STATE_IDLE) { p_rec->sec_state = BTM_SEC_STATE_ENCRYPTING; + } } return rt; @@ -1438,8 +1362,7 @@ void btm_ble_link_encrypted(BD_ADDR bd_addr, UINT8 encr_enable) tBTM_SEC_DEV_REC *p_dev_rec = btm_find_dev (bd_addr); BOOLEAN enc_cback; - if (!p_dev_rec) - { + if (!p_dev_rec) { BTM_TRACE_WARNING ("btm_ble_link_encrypted (No Device Found!) encr_enable=%d", encr_enable); return; } @@ -1452,16 +1375,17 @@ void btm_ble_link_encrypted(BD_ADDR bd_addr, UINT8 encr_enable) BTM_TRACE_DEBUG(" p_dev_rec->sec_flags=0x%x", p_dev_rec->sec_flags); - if (encr_enable && p_dev_rec->enc_key_size == 0) + if (encr_enable && p_dev_rec->enc_key_size == 0) { p_dev_rec->enc_key_size = p_dev_rec->ble.keys.key_size; + } p_dev_rec->sec_state = BTM_SEC_STATE_IDLE; - if (p_dev_rec->p_callback && enc_cback) - { - if (encr_enable) + if (p_dev_rec->p_callback && enc_cback) { + if (encr_enable) { btm_sec_dev_rec_cback_event(p_dev_rec, BTM_SUCCESS, TRUE); - else if (p_dev_rec->role_master) + } else if (p_dev_rec->role_master) { btm_sec_dev_rec_cback_event(p_dev_rec, BTM_ERR_PROCESSING, TRUE); + } } /* to notify GATT to send data if any request is pending */ @@ -1476,10 +1400,10 @@ static void btm_enc_proc_ltk(tSMP_ENC *p) { UINT8 i; BTM_TRACE_DEBUG ("btm_enc_proc_ltk"); - if (p && p->param_len == BT_OCTET16_LEN) - { - for (i = 0; i < (BT_OCTET16_LEN - btm_cb.key_size); i ++) + if (p && p->param_len == BT_OCTET16_LEN) { + for (i = 0; i < (BT_OCTET16_LEN - btm_cb.key_size); i ++) { p->param_buf[BT_OCTET16_LEN - i - 1] = 0; + } btsnd_hcic_ble_ltk_req_reply(btm_cb.enc_handle, p->param_buf); } } @@ -1497,27 +1421,24 @@ static void btm_enc_proc_slave_y(tSMP_ENC *p) tBTM_SEC_DEV_REC *p_dev_rec; BTM_TRACE_DEBUG ("btm_enc_proc_slave_y"); - if (p != NULL) - { + if (p != NULL) { STREAM_TO_UINT16(y, pp); div = p_cb->ediv ^ y; p_dev_rec = btm_find_dev_by_handle (p_cb->enc_handle); if ( p_dev_rec && - p_dev_rec->ble.keys.div == div ) - { + p_dev_rec->ble.keys.div == div ) { BTM_TRACE_DEBUG ("LTK request OK"); /* calculating LTK , LTK = E er(div) */ SMP_Encrypt(p_cb->devcb.ble_encryption_key_value, BT_OCTET16_LEN, (UINT8 *)&div, 2, &output); btm_enc_proc_ltk(&output); - } - else - { + } else { BTM_TRACE_DEBUG ("LTK request failed - send negative reply"); btsnd_hcic_ble_ltk_req_neg_reply(p_cb->enc_handle); - if (p_dev_rec) + if (p_dev_rec) { btm_ble_link_encrypted(p_dev_rec->bd_addr, 0); + } } } @@ -1539,8 +1460,7 @@ void btm_ble_ltk_request_reply(BD_ADDR bda, BOOLEAN use_stk, BT_OCTET16 stk) tBTM_CB *p_cb = &btm_cb; tSMP_ENC output; - if (p_rec == NULL) - { + if (p_rec == NULL) { BTM_TRACE_ERROR("btm_ble_ltk_request_reply received for unknown device"); return; } @@ -1550,16 +1470,14 @@ void btm_ble_ltk_request_reply(BD_ADDR bda, BOOLEAN use_stk, BT_OCTET16 stk) p_cb->key_size = p_rec->ble.keys.key_size; BTM_TRACE_ERROR("key size = %d", p_rec->ble.keys.key_size); - if (use_stk) - { + if (use_stk) { btsnd_hcic_ble_ltk_req_reply(btm_cb.enc_handle, stk); - } - else /* calculate LTK using peer device */ - { - if (p_rec->ble.key_type & BTM_LE_KEY_LENC) + } else { /* calculate LTK using peer device */ + if (p_rec->ble.key_type & BTM_LE_KEY_LENC) { btsnd_hcic_ble_ltk_req_reply(btm_cb.enc_handle, p_rec->ble.keys.lltk); - else + } else { btsnd_hcic_ble_ltk_req_neg_reply(btm_cb.enc_handle); + } } } @@ -1576,8 +1494,7 @@ UINT8 btm_ble_io_capabilities_req(tBTM_SEC_DEV_REC *p_dev_rec, tBTM_LE_IO_REQ *p { UINT8 callback_rc = BTM_SUCCESS; BTM_TRACE_DEBUG ("btm_ble_io_capabilities_req"); - if (btm_cb.api.p_le_callback) - { + if (btm_cb.api.p_le_callback) { /* the callback function implementation may change the IO capability... */ callback_rc = (*btm_cb.api.p_le_callback) (BTM_LE_IO_REQ_EVT, p_dev_rec->bd_addr, (tBTM_LE_EVT_DATA *)p_data); } @@ -1588,15 +1505,13 @@ UINT8 btm_ble_io_capabilities_req(tBTM_SEC_DEV_REC *p_dev_rec, tBTM_LE_IO_REQ *p #endif { #if BTM_BLE_CONFORMANCE_TESTING == TRUE - if (btm_cb.devcb.keep_rfu_in_auth_req) - { + if (btm_cb.devcb.keep_rfu_in_auth_req) { BTM_TRACE_DEBUG ("btm_ble_io_capabilities_req keep_rfu_in_auth_req = %u", - btm_cb.devcb.keep_rfu_in_auth_req); + btm_cb.devcb.keep_rfu_in_auth_req); p_data->auth_req &= BTM_LE_AUTH_REQ_MASK_KEEP_RFU; btm_cb.devcb.keep_rfu_in_auth_req = FALSE; - } - else - { /* default */ + } else { + /* default */ p_data->auth_req &= BTM_LE_AUTH_REQ_MASK; } #else @@ -1604,17 +1519,17 @@ UINT8 btm_ble_io_capabilities_req(tBTM_SEC_DEV_REC *p_dev_rec, tBTM_LE_IO_REQ *p #endif BTM_TRACE_DEBUG ("btm_ble_io_capabilities_req 1: p_dev_rec->security_required = %d auth_req:%d", - p_dev_rec->security_required, p_data->auth_req); + p_dev_rec->security_required, p_data->auth_req); BTM_TRACE_DEBUG ("btm_ble_io_capabilities_req 2: i_keys=0x%x r_keys=0x%x (bit 0-LTK 1-IRK 2-CSRK)", - p_data->init_keys, - p_data->resp_keys); + p_data->init_keys, + p_data->resp_keys); /* if authentication requires MITM protection, put on the mask */ - if (p_dev_rec->security_required & BTM_SEC_IN_MITM) + if (p_dev_rec->security_required & BTM_SEC_IN_MITM) { p_data->auth_req |= BTM_LE_AUTH_REQ_MITM; + } - if (!(p_data->auth_req & SMP_AUTH_BOND)) - { + if (!(p_data->auth_req & SMP_AUTH_BOND)) { BTM_TRACE_DEBUG("Non bonding: No keys should be exchanged"); p_data->init_keys = 0; p_data->resp_keys = 0; @@ -1622,18 +1537,18 @@ UINT8 btm_ble_io_capabilities_req(tBTM_SEC_DEV_REC *p_dev_rec, tBTM_LE_IO_REQ *p BTM_TRACE_DEBUG ("btm_ble_io_capabilities_req 3: auth_req:%d\n", p_data->auth_req); BTM_TRACE_DEBUG ("btm_ble_io_capabilities_req 4: i_keys=0x%x r_keys=0x%x\n", - p_data->init_keys, - p_data->resp_keys); + p_data->init_keys, + p_data->resp_keys); BTM_TRACE_DEBUG ("btm_ble_io_capabilities_req 5: p_data->io_cap = %d auth_req:%d\n", - p_data->io_cap, p_data->auth_req); + p_data->io_cap, p_data->auth_req); /* remove MITM protection requirement if IO cap does not allow it */ - if ((p_data->io_cap == BTM_IO_CAP_NONE) && p_data->oob_data == SMP_OOB_NONE) + if ((p_data->io_cap == BTM_IO_CAP_NONE) && p_data->oob_data == SMP_OOB_NONE) { p_data->auth_req &= ~BTM_LE_AUTH_REQ_MITM; + } - if (!(p_data->auth_req & SMP_SC_SUPPORT_BIT)) - { + if (!(p_data->auth_req & SMP_SC_SUPPORT_BIT)) { /* if Secure Connections are not supported then remove LK derivation, ** and keypress notifications. */ @@ -1645,7 +1560,7 @@ UINT8 btm_ble_io_capabilities_req(tBTM_SEC_DEV_REC *p_dev_rec, tBTM_LE_IO_REQ *p } BTM_TRACE_DEBUG ("btm_ble_io_capabilities_req 6: IO_CAP:%d oob_data:%d auth_req:0x%02x\n", - p_data->io_cap, p_data->oob_data, p_data->auth_req); + p_data->io_cap, p_data->oob_data, p_data->auth_req); } return callback_rc; } @@ -1664,11 +1579,10 @@ UINT8 btm_ble_br_keys_req(tBTM_SEC_DEV_REC *p_dev_rec, tBTM_LE_IO_REQ *p_data) { UINT8 callback_rc = BTM_SUCCESS; BTM_TRACE_DEBUG ("%s\n", __func__); - if (btm_cb.api.p_le_callback) - { + if (btm_cb.api.p_le_callback) { /* the callback function implementation may change the IO capability... */ callback_rc = (*btm_cb.api.p_le_callback) (BTM_LE_IO_REQ_EVT, p_dev_rec->bd_addr, - (tBTM_LE_EVT_DATA *)p_data); + (tBTM_LE_EVT_DATA *)p_data); } return callback_rc; @@ -1684,7 +1598,7 @@ UINT8 btm_ble_br_keys_req(tBTM_SEC_DEV_REC *p_dev_rec, tBTM_LE_IO_REQ *p_data) ** Returns void ** *******************************************************************************/ -static void btm_ble_resolve_random_addr_on_conn_cmpl(void * p_rec, void *p_data) +static void btm_ble_resolve_random_addr_on_conn_cmpl(void *p_rec, void *p_data) { UINT8 *p = (UINT8 *)p_data; tBTM_SEC_DEV_REC *match_rec = (tBTM_SEC_DEV_REC *) p_rec; @@ -1707,24 +1621,18 @@ static void btm_ble_resolve_random_addr_on_conn_cmpl(void * p_rec, void *p_data) BTM_TRACE_EVENT ("%s\n", __func__); - if (match_rec) - { + if (match_rec) { LOG_INFO("%s matched and resolved random address", __func__); match = TRUE; match_rec->ble.active_addr_type = BTM_BLE_ADDR_RRA; memcpy(match_rec->ble.cur_rand_addr, bda, BD_ADDR_LEN); - if (!btm_ble_init_pseudo_addr (match_rec, bda)) - { + if (!btm_ble_init_pseudo_addr (match_rec, bda)) { /* assign the original address to be the current report address */ memcpy(bda, match_rec->ble.pseudo_addr, BD_ADDR_LEN); - } - else - { + } else { memcpy(bda, match_rec->bd_addr, BD_ADDR_LEN); } - } - else - { + } else { LOG_INFO("%s unable to match and resolve random address", __func__); } @@ -1759,31 +1667,26 @@ void btm_ble_connected (UINT8 *bda, UINT16 handle, UINT8 enc_mode, UINT8 role, /* Commenting out trace due to obf/compilation problems. */ #if (BT_USE_TRACES == TRUE) - if (p_dev_rec) - { + if (p_dev_rec) { BTM_TRACE_EVENT ("Security Manager: btm_ble_connected : handle:%d enc_mode:%d bda:%x RName:%s", - handle, enc_mode, - (bda[2]<<24)+(bda[3]<<16)+(bda[4]<<8)+bda[5], - p_dev_rec->sec_bd_name); + handle, enc_mode, + (bda[2] << 24) + (bda[3] << 16) + (bda[4] << 8) + bda[5], + p_dev_rec->sec_bd_name); - BTM_TRACE_DEBUG ("btm_ble_connected sec_flags=0x%x",p_dev_rec->sec_flags); - } - else - { + BTM_TRACE_DEBUG ("btm_ble_connected sec_flags=0x%x", p_dev_rec->sec_flags); + } else { BTM_TRACE_EVENT ("Security Manager: btm_ble_connected: handle:%d enc_mode:%d bda:%x ", - handle, enc_mode, - (bda[2]<<24)+(bda[3]<<16)+(bda[4]<<8)+bda[5]); + handle, enc_mode, + (bda[2] << 24) + (bda[3] << 16) + (bda[4] << 8) + bda[5]); } #endif - if (!p_dev_rec) - { + if (!p_dev_rec) { /* There is no device record for new connection. Allocate one */ - if ((p_dev_rec = btm_sec_alloc_dev (bda)) == NULL) + if ((p_dev_rec = btm_sec_alloc_dev (bda)) == NULL) { return; - } - else /* Update the timestamp for this device */ - { + } + } else { /* Update the timestamp for this device */ p_dev_rec->timestamp = btm_cb.dev_rec_count++; } @@ -1795,15 +1698,18 @@ void btm_ble_connected (UINT8 *bda, UINT16 handle, UINT8 enc_mode, UINT8 role, memcpy(p_dev_rec->ble.pseudo_addr, bda, BD_ADDR_LEN); p_dev_rec->role_master = FALSE; - if (role == HCI_ROLE_MASTER) + if (role == HCI_ROLE_MASTER) { p_dev_rec->role_master = TRUE; + } #if (defined BLE_PRIVACY_SPT && BLE_PRIVACY_SPT == TRUE) - if (!addr_matched) + if (!addr_matched) { p_dev_rec->ble.active_addr_type = BTM_BLE_ADDR_PSEUDO; + } - if (p_dev_rec->ble.ble_addr_type == BLE_ADDR_RANDOM && !addr_matched) + if (p_dev_rec->ble.ble_addr_type == BLE_ADDR_RANDOM && !addr_matched) { memcpy(p_dev_rec->ble.cur_rand_addr, bda, BD_ADDR_LEN); + } #endif p_cb->inq_var.directed_conn = BTM_BLE_CONNECT_EVT; @@ -1835,25 +1741,21 @@ void btm_ble_conn_complete(UINT8 *p, UINT16 evt_len, BOOLEAN enhanced) STREAM_TO_UINT8 (bda_type, p); STREAM_TO_BDADDR (bda, p); - if (status == 0) - { + if (status == 0) { #if (BLE_PRIVACY_SPT == TRUE ) peer_addr_type = bda_type; match = btm_identity_addr_to_random_pseudo (bda, &bda_type, TRUE); - if (enhanced) - { + if (enhanced) { STREAM_TO_BDADDR (local_rpa, p); STREAM_TO_BDADDR (peer_rpa, p); } /* possiblly receive connection complete with resolvable random on slave role while the device has been paired */ - if (!match && role == HCI_ROLE_SLAVE && BTM_BLE_IS_RESOLVE_BDA(bda)) - { + if (!match && role == HCI_ROLE_SLAVE && BTM_BLE_IS_RESOLVE_BDA(bda)) { btm_ble_resolve_random_addr(bda, btm_ble_resolve_random_addr_on_conn_cmpl, p_data); - } - else + } else #endif { STREAM_TO_UINT16 (conn_interval, p); @@ -1867,28 +1769,23 @@ void btm_ble_conn_complete(UINT8 *p, UINT16 evt_len, BOOLEAN enhanced) conn_latency, conn_timeout); #if (BLE_PRIVACY_SPT == TRUE) - if (enhanced) - { + if (enhanced) { btm_ble_refresh_local_resolvable_private_addr(bda, local_rpa); - if (peer_addr_type & BLE_ADDR_TYPE_ID_BIT) + if (peer_addr_type & BLE_ADDR_TYPE_ID_BIT) { btm_ble_refresh_peer_resolvable_private_addr(bda, peer_rpa, BLE_ADDR_RANDOM); + } } #endif } - } - else - { + } else { role = HCI_ROLE_UNKNOWN; - if (status != HCI_ERR_DIRECTED_ADVERTISING_TIMEOUT) - { + if (status != HCI_ERR_DIRECTED_ADVERTISING_TIMEOUT) { btm_ble_set_conn_st(BLE_CONN_IDLE); #if (defined BLE_PRIVACY_SPT && BLE_PRIVACY_SPT == TRUE) btm_ble_disable_resolving_list(BTM_BLE_RL_INIT, TRUE); #endif - } - else - { + } else { #if (defined BLE_PRIVACY_SPT && BLE_PRIVACY_SPT == TRUE) btm_cb.ble_ctr_cb.inq_var.adv_mode = BTM_BLE_ADV_DISABLE; btm_ble_disable_resolving_list(BTM_BLE_RL_ADV, TRUE); @@ -1909,8 +1806,7 @@ void btm_ble_conn_complete(UINT8 *p, UINT16 evt_len, BOOLEAN enhanced) ******************************************************************************/ void btm_ble_create_ll_conn_complete (UINT8 status) { - if (status != HCI_SUCCESS) - { + if (status != HCI_SUCCESS) { btm_ble_set_conn_st(BLE_CONN_IDLE); btm_ble_update_mode_operation(HCI_ROLE_UNKNOWN, NULL, status); } @@ -1928,126 +1824,111 @@ UINT8 btm_proc_smp_cback(tSMP_EVT event, BD_ADDR bd_addr, tSMP_EVT_DATA *p_data) BTM_TRACE_DEBUG ("btm_proc_smp_cback event = %d", event); - if (p_dev_rec != NULL) - { - switch (event) - { - case SMP_IO_CAP_REQ_EVT: - btm_ble_io_capabilities_req(p_dev_rec, (tBTM_LE_IO_REQ *)&p_data->io_req); + if (p_dev_rec != NULL) { + switch (event) { + case SMP_IO_CAP_REQ_EVT: + btm_ble_io_capabilities_req(p_dev_rec, (tBTM_LE_IO_REQ *)&p_data->io_req); + break; + + case SMP_BR_KEYS_REQ_EVT: + btm_ble_br_keys_req(p_dev_rec, (tBTM_LE_IO_REQ *)&p_data->io_req); + break; + + case SMP_PASSKEY_REQ_EVT: + case SMP_PASSKEY_NOTIF_EVT: + case SMP_OOB_REQ_EVT: + case SMP_NC_REQ_EVT: + case SMP_SC_OOB_REQ_EVT: + /* fall through */ + p_dev_rec->sec_flags |= BTM_SEC_LE_AUTHENTICATED; + + case SMP_SEC_REQUEST_EVT: + if (event == SMP_SEC_REQUEST_EVT && btm_cb.pairing_state != BTM_PAIR_STATE_IDLE) { + BTM_TRACE_DEBUG("%s: Ignoring SMP Security request", __func__); break; + } + memcpy (btm_cb.pairing_bda, bd_addr, BD_ADDR_LEN); + p_dev_rec->sec_state = BTM_SEC_STATE_AUTHENTICATING; + btm_cb.pairing_flags |= BTM_PAIR_FLAGS_LE_ACTIVE; + /* fall through */ - case SMP_BR_KEYS_REQ_EVT: - btm_ble_br_keys_req(p_dev_rec, (tBTM_LE_IO_REQ *)&p_data->io_req); - break; + case SMP_COMPLT_EVT: + if (btm_cb.api.p_le_callback) { + /* the callback function implementation may change the IO capability... */ + BTM_TRACE_DEBUG ("btm_cb.api.p_le_callback=0x%x", btm_cb.api.p_le_callback ); + (*btm_cb.api.p_le_callback) (event, bd_addr, (tBTM_LE_EVT_DATA *)p_data); + } - case SMP_PASSKEY_REQ_EVT: - case SMP_PASSKEY_NOTIF_EVT: - case SMP_OOB_REQ_EVT: - case SMP_NC_REQ_EVT: - case SMP_SC_OOB_REQ_EVT: - /* fall through */ - p_dev_rec->sec_flags |= BTM_SEC_LE_AUTHENTICATED; + if (event == SMP_COMPLT_EVT) { + BTM_TRACE_DEBUG ("evt=SMP_COMPLT_EVT before update sec_level=0x%x sec_flags=0x%x", p_data->cmplt.sec_level , p_dev_rec->sec_flags ); - case SMP_SEC_REQUEST_EVT: - if (event == SMP_SEC_REQUEST_EVT && btm_cb.pairing_state != BTM_PAIR_STATE_IDLE) - { - BTM_TRACE_DEBUG("%s: Ignoring SMP Security request", __func__); - break; + res = (p_data->cmplt.reason == SMP_SUCCESS) ? BTM_SUCCESS : BTM_ERR_PROCESSING; + + BTM_TRACE_DEBUG ("after update result=%d sec_level=0x%x sec_flags=0x%x", + res, p_data->cmplt.sec_level , p_dev_rec->sec_flags ); + + if (p_data->cmplt.is_pair_cancel && btm_cb.api.p_bond_cancel_cmpl_callback ) { + BTM_TRACE_DEBUG ("Pairing Cancel completed"); + (*btm_cb.api.p_bond_cancel_cmpl_callback)(BTM_SUCCESS); } - memcpy (btm_cb.pairing_bda, bd_addr, BD_ADDR_LEN); - p_dev_rec->sec_state = BTM_SEC_STATE_AUTHENTICATING; - btm_cb.pairing_flags |= BTM_PAIR_FLAGS_LE_ACTIVE; - /* fall through */ - - case SMP_COMPLT_EVT: - if (btm_cb.api.p_le_callback) - { - /* the callback function implementation may change the IO capability... */ - BTM_TRACE_DEBUG ("btm_cb.api.p_le_callback=0x%x", btm_cb.api.p_le_callback ); - (*btm_cb.api.p_le_callback) (event, bd_addr, (tBTM_LE_EVT_DATA *)p_data); - } - - if (event == SMP_COMPLT_EVT) - { - BTM_TRACE_DEBUG ("evt=SMP_COMPLT_EVT before update sec_level=0x%x sec_flags=0x%x", p_data->cmplt.sec_level , p_dev_rec->sec_flags ); - - res = (p_data->cmplt.reason == SMP_SUCCESS) ? BTM_SUCCESS : BTM_ERR_PROCESSING; - - BTM_TRACE_DEBUG ("after update result=%d sec_level=0x%x sec_flags=0x%x", - res, p_data->cmplt.sec_level , p_dev_rec->sec_flags ); - - if (p_data->cmplt.is_pair_cancel && btm_cb.api.p_bond_cancel_cmpl_callback ) - { - BTM_TRACE_DEBUG ("Pairing Cancel completed"); - (*btm_cb.api.p_bond_cancel_cmpl_callback)(BTM_SUCCESS); - } #if BTM_BLE_CONFORMANCE_TESTING == TRUE - if (res != BTM_SUCCESS) - { - if (!btm_cb.devcb.no_disc_if_pair_fail && p_data->cmplt.reason != SMP_CONN_TOUT) - { - BTM_TRACE_DEBUG ("Pairing failed - prepare to remove ACL"); - l2cu_start_post_bond_timer(p_dev_rec->ble_hci_handle); - } - else - { - BTM_TRACE_DEBUG ("Pairing failed - Not Removing ACL"); - p_dev_rec->sec_state = BTM_SEC_STATE_IDLE; - } - } -#else - if (res != BTM_SUCCESS && p_data->cmplt.reason != SMP_CONN_TOUT) - { + if (res != BTM_SUCCESS) { + if (!btm_cb.devcb.no_disc_if_pair_fail && p_data->cmplt.reason != SMP_CONN_TOUT) { BTM_TRACE_DEBUG ("Pairing failed - prepare to remove ACL"); l2cu_start_post_bond_timer(p_dev_rec->ble_hci_handle); - } -#endif - - BTM_TRACE_DEBUG ("btm_cb pairing_state=%x pairing_flags=%x pin_code_len=%x", - btm_cb.pairing_state, - btm_cb.pairing_flags, - btm_cb.pin_code_len ); - BTM_TRACE_DEBUG ("btm_cb.pairing_bda %02x:%02x:%02x:%02x:%02x:%02x", - btm_cb.pairing_bda[0], btm_cb.pairing_bda[1], btm_cb.pairing_bda[2], - btm_cb.pairing_bda[3], btm_cb.pairing_bda[4], btm_cb.pairing_bda[5]); - - /* Reset btm state only if the callback address matches pairing address*/ - if(memcmp(bd_addr, btm_cb.pairing_bda, BD_ADDR_LEN) == 0) - { - memset (btm_cb.pairing_bda, 0xff, BD_ADDR_LEN); - btm_cb.pairing_state = BTM_PAIR_STATE_IDLE; - btm_cb.pairing_flags = 0; - } - - if (res == BTM_SUCCESS) - { + } else { + BTM_TRACE_DEBUG ("Pairing failed - Not Removing ACL"); p_dev_rec->sec_state = BTM_SEC_STATE_IDLE; -#if (defined BLE_PRIVACY_SPT && BLE_PRIVACY_SPT == TRUE) - /* add all bonded device into resolving list if IRK is available*/ - btm_ble_resolving_list_load_dev(p_dev_rec); -#endif } - - btm_sec_dev_rec_cback_event(p_dev_rec, res, TRUE); } - break; +#else + if (res != BTM_SUCCESS && p_data->cmplt.reason != SMP_CONN_TOUT) { + BTM_TRACE_DEBUG ("Pairing failed - prepare to remove ACL"); + l2cu_start_post_bond_timer(p_dev_rec->ble_hci_handle); + } +#endif - default: - BTM_TRACE_DEBUG ("unknown event = %d", event); - break; + BTM_TRACE_DEBUG ("btm_cb pairing_state=%x pairing_flags=%x pin_code_len=%x", + btm_cb.pairing_state, + btm_cb.pairing_flags, + btm_cb.pin_code_len ); + BTM_TRACE_DEBUG ("btm_cb.pairing_bda %02x:%02x:%02x:%02x:%02x:%02x", + btm_cb.pairing_bda[0], btm_cb.pairing_bda[1], btm_cb.pairing_bda[2], + btm_cb.pairing_bda[3], btm_cb.pairing_bda[4], btm_cb.pairing_bda[5]); + + /* Reset btm state only if the callback address matches pairing address*/ + if (memcmp(bd_addr, btm_cb.pairing_bda, BD_ADDR_LEN) == 0) { + memset (btm_cb.pairing_bda, 0xff, BD_ADDR_LEN); + btm_cb.pairing_state = BTM_PAIR_STATE_IDLE; + btm_cb.pairing_flags = 0; + } + + if (res == BTM_SUCCESS) { + p_dev_rec->sec_state = BTM_SEC_STATE_IDLE; +#if (defined BLE_PRIVACY_SPT && BLE_PRIVACY_SPT == TRUE) + /* add all bonded device into resolving list if IRK is available*/ + btm_ble_resolving_list_load_dev(p_dev_rec); +#endif + } + + btm_sec_dev_rec_cback_event(p_dev_rec, res, TRUE); + } + break; + + default: + BTM_TRACE_DEBUG ("unknown event = %d", event); + break; } - } - else - { + } else { BTM_TRACE_ERROR("btm_proc_smp_cback received for unknown device"); } return 0; } - #endif /* SMP_INCLUDED */ +#endif /* SMP_INCLUDED */ /******************************************************************************* ** @@ -2072,21 +1953,16 @@ BOOLEAN BTM_BleDataSignature (BD_ADDR bd_addr, UINT8 *p_text, UINT16 len, BTM_TRACE_DEBUG ("%s", __func__); BOOLEAN ret = FALSE; - if (p_rec == NULL) - { + if (p_rec == NULL) { BTM_TRACE_ERROR("%s-data signing can not be done from unknown device", __func__); - } - else - { + } else { UINT8 *p_mac = (UINT8 *)signature; UINT8 *p_buf, *pp; - if ((p_buf = (UINT8 *)GKI_getbuf((UINT16)(len + 4))) != NULL) - { + if ((p_buf = (UINT8 *)GKI_getbuf((UINT16)(len + 4))) != NULL) { BTM_TRACE_DEBUG("%s-Start to generate Local CSRK", __func__); pp = p_buf; /* prepare plain text */ - if (p_text) - { + if (p_text) { memcpy(p_buf, p_text, len); pp = (p_buf + len); } @@ -2095,14 +1971,13 @@ BOOLEAN BTM_BleDataSignature (BD_ADDR bd_addr, UINT8 *p_text, UINT16 len, UINT32_TO_STREAM(p_mac, p_rec->ble.keys.local_counter); if ((ret = aes_cipher_msg_auth_code(p_rec->ble.keys.lcsrk, p_buf, (UINT16)(len + 4), - BTM_CMAC_TLEN_SIZE, p_mac)) == TRUE) - { - btm_ble_increment_sign_ctr(bd_addr, TRUE); + BTM_CMAC_TLEN_SIZE, p_mac)) == TRUE) { + btm_ble_increment_sign_ctr(bd_addr, TRUE); } BTM_TRACE_DEBUG("%s p_mac = %d", __func__, p_mac); BTM_TRACE_DEBUG("p_mac[0] = 0x%02x p_mac[1] = 0x%02x p_mac[2] = 0x%02x p_mac[3] = 0x%02x", - *p_mac, *(p_mac + 1), *(p_mac + 2), *(p_mac + 3)); + *p_mac, *(p_mac + 1), *(p_mac + 2), *(p_mac + 3)); BTM_TRACE_DEBUG("p_mac[4] = 0x%02x p_mac[5] = 0x%02x p_mac[6] = 0x%02x p_mac[7] = 0x%02x", *(p_mac + 4), *(p_mac + 5), *(p_mac + 6), *(p_mac + 7)); GKI_freebuf(p_buf); @@ -2134,27 +2009,18 @@ BOOLEAN BTM_BleVerifySignature (BD_ADDR bd_addr, UINT8 *p_orig, UINT16 len, UINT tBTM_SEC_DEV_REC *p_rec = btm_find_dev (bd_addr); UINT8 p_mac[BTM_CMAC_TLEN_SIZE]; - if (p_rec == NULL || (p_rec && !(p_rec->ble.key_type & BTM_LE_KEY_PCSRK))) - { + if (p_rec == NULL || (p_rec && !(p_rec->ble.key_type & BTM_LE_KEY_PCSRK))) { BTM_TRACE_ERROR("can not verify signature for unknown device"); - } - else if (counter < p_rec->ble.keys.counter) - { + } else if (counter < p_rec->ble.keys.counter) { BTM_TRACE_ERROR("signature received with out dated sign counter"); - } - else if (p_orig == NULL) - { + } else if (p_orig == NULL) { BTM_TRACE_ERROR("No signature to verify"); - } - else - { + } else { BTM_TRACE_DEBUG ("%s rcv_cnt=%d >= expected_cnt=%d", __func__, counter, - p_rec->ble.keys.counter); + p_rec->ble.keys.counter); - if (aes_cipher_msg_auth_code(p_rec->ble.keys.pcsrk, p_orig, len, BTM_CMAC_TLEN_SIZE, p_mac)) - { - if (memcmp(p_mac, p_comp, BTM_CMAC_TLEN_SIZE) == 0) - { + if (aes_cipher_msg_auth_code(p_rec->ble.keys.pcsrk, p_orig, len, BTM_CMAC_TLEN_SIZE, p_mac)) { + if (memcmp(p_mac, p_comp, BTM_CMAC_TLEN_SIZE) == 0) { btm_ble_increment_sign_ctr(bd_addr, FALSE); verified = TRUE; } @@ -2185,42 +2051,37 @@ BOOLEAN BTM_GetLeSecurityState (BD_ADDR bd_addr, UINT8 *p_le_dev_sec_flags, UINT *p_le_key_size = 0; #if (BLE_INCLUDED == TRUE && SMP_INCLUDED == TRUE) - if ((p_dev_rec = btm_find_dev (bd_addr)) == NULL) - { + if ((p_dev_rec = btm_find_dev (bd_addr)) == NULL) { BTM_TRACE_ERROR ("%s fails", __func__); return (FALSE); } - if (p_dev_rec->ble_hci_handle == BTM_SEC_INVALID_HANDLE) - { + if (p_dev_rec->ble_hci_handle == BTM_SEC_INVALID_HANDLE) { BTM_TRACE_ERROR ("%s-this is not LE device", __func__); return (FALSE); } dev_rec_sec_flags = p_dev_rec->sec_flags; - if (dev_rec_sec_flags & BTM_SEC_LE_ENCRYPTED) - { + if (dev_rec_sec_flags & BTM_SEC_LE_ENCRYPTED) { /* link is encrypted with LTK or STK */ *p_le_key_size = p_dev_rec->enc_key_size; *p_le_dev_sec_flags |= BTM_SEC_LE_LINK_ENCRYPTED; *p_le_dev_sec_flags |= (dev_rec_sec_flags & BTM_SEC_LE_AUTHENTICATED) - ? BTM_SEC_LE_LINK_PAIRED_WITH_MITM /* set auth LTK flag */ - : BTM_SEC_LE_LINK_PAIRED_WITHOUT_MITM; /* set unauth LTK flag */ - } - else if (p_dev_rec->ble.key_type & BTM_LE_KEY_PENC) - { + ? BTM_SEC_LE_LINK_PAIRED_WITH_MITM /* set auth LTK flag */ + : BTM_SEC_LE_LINK_PAIRED_WITHOUT_MITM; /* set unauth LTK flag */ + } else if (p_dev_rec->ble.key_type & BTM_LE_KEY_PENC) { /* link is unencrypted, still LTK is available */ *p_le_key_size = p_dev_rec->ble.keys.key_size; *p_le_dev_sec_flags |= (dev_rec_sec_flags & BTM_SEC_LE_LINK_KEY_AUTHED) - ? BTM_SEC_LE_LINK_PAIRED_WITH_MITM /* set auth LTK flag */ - : BTM_SEC_LE_LINK_PAIRED_WITHOUT_MITM; /* set unauth LTK flag */ + ? BTM_SEC_LE_LINK_PAIRED_WITH_MITM /* set auth LTK flag */ + : BTM_SEC_LE_LINK_PAIRED_WITHOUT_MITM; /* set unauth LTK flag */ } BTM_TRACE_DEBUG ("%s - le_dev_sec_flags: 0x%02x, le_key_size: %d", - __func__, *p_le_dev_sec_flags, *p_le_key_size); + __func__, *p_le_dev_sec_flags, *p_le_key_size); return TRUE; #else @@ -2243,11 +2104,10 @@ BOOLEAN BTM_BleSecurityProcedureIsRunning(BD_ADDR bd_addr) #if (BLE_INCLUDED == TRUE) tBTM_SEC_DEV_REC *p_dev_rec = btm_find_dev (bd_addr); - if (p_dev_rec == NULL) - { + if (p_dev_rec == NULL) { BTM_TRACE_ERROR ("%s device with BDA: %08x%04x is not found", - __func__, (bd_addr[0]<<24)+(bd_addr[1]<<16)+(bd_addr[2]<<8)+bd_addr[3], - (bd_addr[4]<<8)+bd_addr[5]); + __func__, (bd_addr[0] << 24) + (bd_addr[1] << 16) + (bd_addr[2] << 8) + bd_addr[3], + (bd_addr[4] << 8) + bd_addr[5]); return FALSE; } @@ -2272,33 +2132,30 @@ BOOLEAN BTM_BleSecurityProcedureIsRunning(BD_ADDR bd_addr) extern UINT8 BTM_BleGetSupportedKeySize (BD_ADDR bd_addr) { #ifndef L2CAP_LE_COC_INCLUDED -#define L2CAP_LE_COC_INCLUDED FALSE +#define L2CAP_LE_COC_INCLUDED FALSE #endif #if ((BLE_INCLUDED == TRUE) && (L2CAP_LE_COC_INCLUDED == TRUE)) tBTM_SEC_DEV_REC *p_dev_rec = btm_find_dev (bd_addr); tBTM_LE_IO_REQ dev_io_cfg; UINT8 callback_rc; - if (!p_dev_rec) - { + if (!p_dev_rec) { BTM_TRACE_ERROR ("%s device with BDA: %08x%04x is not found", - __func__,(bd_addr[0]<<24)+(bd_addr[1]<<16)+(bd_addr[2]<<8)+bd_addr[3], - (bd_addr[4]<<8)+bd_addr[5]); + __func__, (bd_addr[0] << 24) + (bd_addr[1] << 16) + (bd_addr[2] << 8) + bd_addr[3], + (bd_addr[4] << 8) + bd_addr[5]); return 0; } - if (btm_cb.api.p_le_callback == NULL) - { - BTM_TRACE_ERROR ("%s can't access supported key size",__func__); + if (btm_cb.api.p_le_callback == NULL) { + BTM_TRACE_ERROR ("%s can't access supported key size", __func__); return 0; } callback_rc = (*btm_cb.api.p_le_callback) (BTM_LE_IO_REQ_EVT, p_dev_rec->bd_addr, - (tBTM_LE_EVT_DATA *) &dev_io_cfg); + (tBTM_LE_EVT_DATA *) &dev_io_cfg); - if (callback_rc != BTM_SUCCESS) - { - BTM_TRACE_ERROR ("%s can't access supported key size",__func__); + if (callback_rc != BTM_SUCCESS) { + BTM_TRACE_ERROR ("%s can't access supported key size", __func__); return 0; } @@ -2328,26 +2185,25 @@ static void btm_notify_new_key(UINT8 key_type) BTM_TRACE_DEBUG ("btm_notify_new_key key_type=%d", key_type); - if (btm_cb.api.p_le_key_callback) - { - switch (key_type) - { - case BTM_BLE_KEY_TYPE_ID: - BTM_TRACE_DEBUG ("BTM_BLE_KEY_TYPE_ID"); - p_locak_keys = (tBTM_BLE_LOCAL_KEYS *)&btm_cb.devcb.id_keys; - break; + if (btm_cb.api.p_le_key_callback) { + switch (key_type) { + case BTM_BLE_KEY_TYPE_ID: + BTM_TRACE_DEBUG ("BTM_BLE_KEY_TYPE_ID"); + p_locak_keys = (tBTM_BLE_LOCAL_KEYS *)&btm_cb.devcb.id_keys; + break; - case BTM_BLE_KEY_TYPE_ER: - BTM_TRACE_DEBUG ("BTM_BLE_KEY_TYPE_ER"); - p_locak_keys = (tBTM_BLE_LOCAL_KEYS *)&btm_cb.devcb.ble_encryption_key_value; - break; + case BTM_BLE_KEY_TYPE_ER: + BTM_TRACE_DEBUG ("BTM_BLE_KEY_TYPE_ER"); + p_locak_keys = (tBTM_BLE_LOCAL_KEYS *)&btm_cb.devcb.ble_encryption_key_value; + break; - default: - BTM_TRACE_ERROR("unknown key type: %d", key_type); - break; + default: + BTM_TRACE_ERROR("unknown key type: %d", key_type); + break; } - if (p_locak_keys != NULL) + if (p_locak_keys != NULL) { (*btm_cb.api.p_le_key_callback) (key_type, p_locak_keys); + } } } @@ -2365,13 +2221,10 @@ static void btm_ble_process_er2(tBTM_RAND_ENC *p) { BTM_TRACE_DEBUG ("btm_ble_process_er2"); - if (p &&p->opcode == HCI_BLE_RAND) - { + if (p && p->opcode == HCI_BLE_RAND) { memcpy(&btm_cb.devcb.ble_encryption_key_value[8], p->param_buf, BT_OCTET8_LEN); btm_notify_new_key(BTM_BLE_KEY_TYPE_ER); - } - else - { + } else { BTM_TRACE_ERROR("Generating ER2 exception."); memset(&btm_cb.devcb.ble_encryption_key_value, 0, sizeof(BT_OCTET16)); } @@ -2391,18 +2244,14 @@ static void btm_ble_process_er(tBTM_RAND_ENC *p) { BTM_TRACE_DEBUG ("btm_ble_process_er"); - if (p &&p->opcode == HCI_BLE_RAND) - { + if (p && p->opcode == HCI_BLE_RAND) { memcpy(&btm_cb.devcb.ble_encryption_key_value[0], p->param_buf, BT_OCTET8_LEN); - if (!btsnd_hcic_ble_rand((void *)btm_ble_process_er2)) - { + if (!btsnd_hcic_ble_rand((void *)btm_ble_process_er2)) { memset(&btm_cb.devcb.ble_encryption_key_value, 0, sizeof(BT_OCTET16)); BTM_TRACE_ERROR("Generating ER2 failed."); } - } - else - { + } else { BTM_TRACE_ERROR("Generating ER1 exception."); } } @@ -2420,27 +2269,22 @@ static void btm_ble_process_er(tBTM_RAND_ENC *p) static void btm_ble_process_irk(tSMP_ENC *p) { BTM_TRACE_DEBUG ("btm_ble_process_irk"); - if (p &&p->opcode == HCI_BLE_ENCRYPT) - { + if (p && p->opcode == HCI_BLE_ENCRYPT) { memcpy(btm_cb.devcb.id_keys.irk, p->param_buf, BT_OCTET16_LEN); btm_notify_new_key(BTM_BLE_KEY_TYPE_ID); #if BLE_PRIVACY_SPT == TRUE /* if privacy is enabled, new RPA should be calculated */ - if (btm_cb.ble_ctr_cb.privacy_mode != BTM_PRIVACY_NONE) - { + if (btm_cb.ble_ctr_cb.privacy_mode != BTM_PRIVACY_NONE) { btm_gen_resolvable_private_addr((void *)btm_gen_resolve_paddr_low); } #endif - } - else - { + } else { BTM_TRACE_ERROR("Generating IRK exception."); } /* proceed generate ER */ - if (!btsnd_hcic_ble_rand((void *)btm_ble_process_er)) - { + if (!btsnd_hcic_ble_rand((void *)btm_ble_process_er)) { BTM_TRACE_ERROR("Generating ER failed."); } } @@ -2464,25 +2308,19 @@ static void btm_ble_process_dhk(tSMP_ENC *p) BTM_TRACE_DEBUG ("btm_ble_process_dhk"); - if (p && p->opcode == HCI_BLE_ENCRYPT) - { + if (p && p->opcode == HCI_BLE_ENCRYPT) { memcpy(btm_cb.devcb.id_keys.dhk, p->param_buf, BT_OCTET16_LEN); BTM_TRACE_DEBUG("BLE DHK generated."); /* IRK = D1(IR, 1) */ if (!SMP_Encrypt(btm_cb.devcb.id_keys.ir, BT_OCTET16_LEN, &btm_ble_irk_pt, - 1, &output)) - { + 1, &output)) { /* reset all identity root related key */ memset(&btm_cb.devcb.id_keys, 0, sizeof(tBTM_BLE_LOCAL_ID_KEYS)); - } - else - { + } else { btm_ble_process_irk(&output); } - } - else - { + } else { /* reset all identity root related key */ memset(&btm_cb.devcb.id_keys, 0, sizeof(tBTM_BLE_LOCAL_ID_KEYS)); } @@ -2508,8 +2346,7 @@ static void btm_ble_process_ir2(tBTM_RAND_ENC *p) BTM_TRACE_DEBUG ("btm_ble_process_ir2"); - if (p && p->opcode == HCI_BLE_RAND) - { + if (p && p->opcode == HCI_BLE_RAND) { /* remembering in control block */ memcpy(&btm_cb.devcb.id_keys.ir[8], p->param_buf, BT_OCTET8_LEN); /* generate DHK= Eir({0x03, 0x00, 0x00 ...}) */ @@ -2520,9 +2357,7 @@ static void btm_ble_process_ir2(tBTM_RAND_ENC *p) btm_ble_process_dhk(&output); BTM_TRACE_DEBUG("BLE IR generated."); - } - else - { + } else { memset(&btm_cb.devcb.id_keys, 0, sizeof(tBTM_BLE_LOCAL_ID_KEYS)); } #endif @@ -2543,13 +2378,11 @@ static void btm_ble_process_ir(tBTM_RAND_ENC *p) { BTM_TRACE_DEBUG ("btm_ble_process_ir"); - if (p && p->opcode == HCI_BLE_RAND) - { + if (p && p->opcode == HCI_BLE_RAND) { /* remembering in control block */ memcpy(btm_cb.devcb.id_keys.ir, p->param_buf, BT_OCTET8_LEN); - if (!btsnd_hcic_ble_rand((void *)btm_ble_process_ir2)) - { + if (!btsnd_hcic_ble_rand((void *)btm_ble_process_ir2)) { BTM_TRACE_ERROR("Generating IR2 failed."); memset(&btm_cb.devcb.id_keys, 0, sizeof(tBTM_BLE_LOCAL_ID_KEYS)); } @@ -2570,13 +2403,12 @@ void btm_ble_reset_id( void ) BTM_TRACE_DEBUG ("btm_ble_reset_id"); /* regenrate Identity Root*/ - if (!btsnd_hcic_ble_rand((void *)btm_ble_process_ir)) - { + if (!btsnd_hcic_ble_rand((void *)btm_ble_process_ir)) { BTM_TRACE_DEBUG("Generating IR failed."); } } - #if BTM_BLE_CONFORMANCE_TESTING == TRUE +#if BTM_BLE_CONFORMANCE_TESTING == TRUE /******************************************************************************* ** ** Function btm_ble_set_no_disc_if_pair_fail @@ -2621,7 +2453,7 @@ void btm_ble_set_test_mac_value(BOOLEAN enable, UINT8 *p_test_mac_val ) void btm_ble_set_test_local_sign_cntr_value(BOOLEAN enable, UINT32 test_local_sign_cntr ) { BTM_TRACE_DEBUG ("btm_ble_set_test_local_sign_cntr_value enable=%d local_sign_cntr=%d", - enable, test_local_sign_cntr); + enable, test_local_sign_cntr); btm_cb.devcb.enable_test_local_sign_cntr = enable; btm_cb.devcb.test_local_sign_cntr = test_local_sign_cntr; } @@ -2642,14 +2474,16 @@ void btm_set_random_address(BD_ADDR random_bda) BTM_TRACE_DEBUG ("btm_set_random_address"); - if (adv_mode == BTM_BLE_ADV_ENABLE) + if (adv_mode == BTM_BLE_ADV_ENABLE) { btsnd_hcic_ble_set_adv_enable (BTM_BLE_ADV_DISABLE); + } memcpy(p_cb->private_addr, random_bda, BD_ADDR_LEN); btsnd_hcic_ble_set_random_addr(p_cb->private_addr); - if (adv_mode == BTM_BLE_ADV_ENABLE) + if (adv_mode == BTM_BLE_ADV_ENABLE) { btsnd_hcic_ble_set_adv_enable (BTM_BLE_ADV_ENABLE); + } } diff --git a/components/bt/bluedroid/stack/btm/btm_ble_addr.c b/components/bt/bluedroid/stack/btm/btm_ble_addr.c old mode 100755 new mode 100644 index 70543c3b44..95a2ad9cc1 --- a/components/bt/bluedroid/stack/btm/btm_ble_addr.c +++ b/components/bt/bluedroid/stack/btm/btm_ble_addr.c @@ -51,8 +51,7 @@ static void btm_gen_resolve_paddr_cmpl(tSMP_ENC *p) tBTM_LE_RANDOM_CB *p_cb = &btm_cb.ble_ctr_cb.addr_mgnt_cb; BTM_TRACE_EVENT ("btm_gen_resolve_paddr_cmpl"); - if (p) - { + if (p) { /* set hash to be LSB of rpAddress */ p_cb->private_addr[5] = p->param_buf[0]; p_cb->private_addr[4] = p->param_buf[1]; @@ -66,14 +65,12 @@ static void btm_gen_resolve_paddr_cmpl(tSMP_ENC *p) btu_stop_timer_oneshot(&p_cb->raddr_timer_ent); #if (BTM_BLE_CONFORMANCE_TESTING == TRUE) btu_start_timer_oneshot(&p_cb->raddr_timer_ent, BTU_TTYPE_BLE_RANDOM_ADDR, - btm_cb.ble_ctr_cb.rpa_tout); + btm_cb.ble_ctr_cb.rpa_tout); #else btu_start_timer_oneshot(&p_cb->raddr_timer_ent, BTU_TTYPE_BLE_RANDOM_ADDR, - BTM_BLE_PRIVATE_ADDR_INT); + BTM_BLE_PRIVATE_ADDR_INT); #endif - } - else - { + } else { /* random address set failure */ BTM_TRACE_DEBUG("set random address failed"); } @@ -95,8 +92,7 @@ void btm_gen_resolve_paddr_low(tBTM_RAND_ENC *p) tSMP_ENC output; BTM_TRACE_EVENT ("btm_gen_resolve_paddr_low"); - if (p) - { + if (p) { p->param_buf[2] &= (~BLE_RESOLVE_ADDR_MASK); p->param_buf[2] |= BLE_RESOLVE_ADDR_MSB; @@ -105,12 +101,9 @@ void btm_gen_resolve_paddr_low(tBTM_RAND_ENC *p) p_cb->private_addr[0] = p->param_buf[2]; /* encrypt with ur IRK */ - if (!SMP_Encrypt(btm_cb.devcb.id_keys.irk, BT_OCTET16_LEN, p->param_buf, 3, &output)) - { + if (!SMP_Encrypt(btm_cb.devcb.id_keys.irk, BT_OCTET16_LEN, p->param_buf, 3, &output)) { btm_gen_resolve_paddr_cmpl(NULL); - } - else - { + } else { btm_gen_resolve_paddr_cmpl(&output); } } @@ -129,8 +122,9 @@ void btm_gen_resolvable_private_addr (void *p_cmd_cplt_cback) { BTM_TRACE_EVENT ("btm_gen_resolvable_private_addr"); /* generate 3B rand as BD LSB, SRK with it, get BD MSB */ - if (!btsnd_hcic_ble_rand((void *)p_cmd_cplt_cback)) + if (!btsnd_hcic_ble_rand((void *)p_cmd_cplt_cback)) { btm_gen_resolve_paddr_cmpl(NULL); + } } /******************************************************************************* ** @@ -153,8 +147,7 @@ static void btm_gen_non_resolve_paddr_cmpl(tBTM_RAND_ENC *p) BTM_TRACE_EVENT ("btm_gen_non_resolve_paddr_cmpl"); p_cb->p_generate_cback = NULL; - if (p) - { + if (p) { pp = p->param_buf; STREAM_TO_BDADDR(static_random, pp); @@ -162,14 +155,14 @@ static void btm_gen_non_resolve_paddr_cmpl(tBTM_RAND_ENC *p) static_random[0] &= BLE_STATIC_PRIVATE_MSB_MASK; /* report complete */ - if (p_cback) + if (p_cback) { (* p_cback)(static_random, p_data); - } - else - { + } + } else { BTM_TRACE_DEBUG("btm_gen_non_resolvable_private_addr failed"); - if (p_cback) + if (p_cback) { (* p_cback)(NULL, p_data); + } } } /******************************************************************************* @@ -188,13 +181,13 @@ void btm_gen_non_resolvable_private_addr (tBTM_BLE_ADDR_CBACK *p_cback, void *p) BTM_TRACE_EVENT ("btm_gen_non_resolvable_private_addr"); - if (p_mgnt_cb->p_generate_cback != NULL) + if (p_mgnt_cb->p_generate_cback != NULL) { return; + } p_mgnt_cb->p_generate_cback = p_cback; p_mgnt_cb->p = p; - if (!btsnd_hcic_ble_rand((void *)btm_gen_non_resolve_paddr_cmpl)) - { + if (!btsnd_hcic_ble_rand((void *)btm_gen_non_resolve_paddr_cmpl)) { btm_gen_non_resolve_paddr_cmpl(NULL); } @@ -221,8 +214,7 @@ static void btm_ble_resolve_address_cmpl(void) BTM_TRACE_EVENT ("btm_ble_resolve_address_cmpl p_mgnt_cb->index = %d", p_mgnt_cb->index); - if (p_mgnt_cb->index < BTM_SEC_MAX_DEVICE_RECORDS) - { + if (p_mgnt_cb->index < BTM_SEC_MAX_DEVICE_RECORDS) { p_dev_rec = &btm_cb.sec_dev_rec[p_mgnt_cb->index]; } @@ -250,10 +242,8 @@ static BOOLEAN btm_ble_proc_resolve_x(tSMP_ENC *p) comp[1] = p_mgnt_cb->random_bda[4]; comp[2] = p_mgnt_cb->random_bda[3]; - if (p) - { - if (!memcmp(p->param_buf, &comp[0], 3)) - { + if (p) { + if (!memcmp(p->param_buf, &comp[0], 3)) { /* match is found */ BTM_TRACE_EVENT ("match is found"); btm_ble_resolve_address_cmpl(); @@ -277,8 +267,7 @@ BOOLEAN btm_ble_init_pseudo_addr (tBTM_SEC_DEV_REC *p_dev_rec, BD_ADDR new_pseud { BD_ADDR dummy_bda = {0}; - if (memcmp(p_dev_rec->ble.pseudo_addr, dummy_bda, BD_ADDR_LEN) == 0) - { + if (memcmp(p_dev_rec->ble.pseudo_addr, dummy_bda, BD_ADDR_LEN) == 0) { memcpy(p_dev_rec->ble.pseudo_addr, new_pseudo_addr, BD_ADDR_LEN); return TRUE; } @@ -299,14 +288,14 @@ BOOLEAN btm_ble_addr_resolvable (BD_ADDR rpa, tBTM_SEC_DEV_REC *p_dev_rec) { BOOLEAN rt = FALSE; - if (!BTM_BLE_IS_RESOLVE_BDA(rpa)) + if (!BTM_BLE_IS_RESOLVE_BDA(rpa)) { return rt; + } UINT8 rand[3]; tSMP_ENC output; if ((p_dev_rec->device_type & BT_DEVICE_TYPE_BLE) && - (p_dev_rec->ble.key_type & BTM_LE_KEY_PID)) - { + (p_dev_rec->ble.key_type & BTM_LE_KEY_PID)) { BTM_TRACE_DEBUG("%s try to resolve", __func__); /* use the 3 MSB of bd address as prand */ rand[0] = rpa[2]; @@ -321,8 +310,7 @@ BOOLEAN btm_ble_addr_resolvable (BD_ADDR rpa, tBTM_SEC_DEV_REC *p_dev_rec) rand[1] = rpa[4]; rand[2] = rpa[3]; - if (!memcmp(output.param_buf, &rand[0], 3)) - { + if (!memcmp(output.param_buf, &rand[0], 3)) { btm_ble_init_pseudo_addr (p_dev_rec, rpa); rt = TRUE; } @@ -354,8 +342,7 @@ static BOOLEAN btm_ble_match_random_bda(UINT16 rec_index) BTM_TRACE_EVENT("%s rec_index = %d", __func__, rec_index); - if (rec_index < BTM_SEC_MAX_DEVICE_RECORDS) - { + if (rec_index < BTM_SEC_MAX_DEVICE_RECORDS) { tSMP_ENC output; tBTM_SEC_DEV_REC *p_dev_rec; p_dev_rec = &btm_cb.sec_dev_rec[rec_index]; @@ -364,21 +351,16 @@ static BOOLEAN btm_ble_match_random_bda(UINT16 rec_index) p_dev_rec->device_type); if ((p_dev_rec->device_type & BT_DEVICE_TYPE_BLE) && - (p_dev_rec->ble.key_type & BTM_LE_KEY_PID)) - { + (p_dev_rec->ble.key_type & BTM_LE_KEY_PID)) { /* generate X = E irk(R0, R1, R2) and R is random address 3 LSO */ SMP_Encrypt(p_dev_rec->ble.keys.irk, BT_OCTET16_LEN, &rand[0], 3, &output); return btm_ble_proc_resolve_x(&output); - } - else - { + } else { // not completed return FALSE; } - } - else /* no match found */ - { + } else { /* no match found */ btm_ble_resolve_address_cmpl(); return TRUE; } @@ -395,13 +377,12 @@ static BOOLEAN btm_ble_match_random_bda(UINT16 rec_index) ** address is matched to. ** *******************************************************************************/ -void btm_ble_resolve_random_addr(BD_ADDR random_bda, tBTM_BLE_RESOLVE_CBACK * p_cback, void *p) +void btm_ble_resolve_random_addr(BD_ADDR random_bda, tBTM_BLE_RESOLVE_CBACK *p_cback, void *p) { tBTM_LE_RANDOM_CB *p_mgnt_cb = &btm_cb.ble_ctr_cb.addr_mgnt_cb; BTM_TRACE_EVENT ("btm_ble_resolve_random_addr"); - if ( !p_mgnt_cb->busy) - { + if ( !p_mgnt_cb->busy) { p_mgnt_cb->p = p; p_mgnt_cb->busy = TRUE; p_mgnt_cb->index = 0; @@ -409,18 +390,16 @@ void btm_ble_resolve_random_addr(BD_ADDR random_bda, tBTM_BLE_RESOLVE_CBACK * p_ memcpy(p_mgnt_cb->random_bda, random_bda, BD_ADDR_LEN); /* start to resolve random address */ /* check for next security record */ - while (TRUE) - { - if (btm_ble_match_random_bda(p_mgnt_cb->index)) - { + while (TRUE) { + if (btm_ble_match_random_bda(p_mgnt_cb->index)) { /* atch found or went through the list */ break; } p_mgnt_cb->index ++; } - } - else + } else { (*p_cback)(NULL, p); + } } #endif @@ -434,22 +413,19 @@ void btm_ble_resolve_random_addr(BD_ADDR random_bda, tBTM_BLE_RESOLVE_CBACK * p_ ** Description find the security record whose LE static address is matching ** *******************************************************************************/ -tBTM_SEC_DEV_REC* btm_find_dev_by_identity_addr(BD_ADDR bd_addr, UINT8 addr_type) +tBTM_SEC_DEV_REC *btm_find_dev_by_identity_addr(BD_ADDR bd_addr, UINT8 addr_type) { #if BLE_PRIVACY_SPT == TRUE UINT8 i; tBTM_SEC_DEV_REC *p_dev_rec = &btm_cb.sec_dev_rec[0]; - for (i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i ++, p_dev_rec ++) - { + for (i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i ++, p_dev_rec ++) { if ((p_dev_rec->sec_flags & BTM_SEC_IN_USE) && - memcmp(p_dev_rec->ble.static_addr, bd_addr, BD_ADDR_LEN) == 0) - { + memcmp(p_dev_rec->ble.static_addr, bd_addr, BD_ADDR_LEN) == 0) { if ((p_dev_rec->ble.static_addr_type & (~BLE_ADDR_TYPE_ID_BIT)) != - (addr_type & (~BLE_ADDR_TYPE_ID_BIT))) - { + (addr_type & (~BLE_ADDR_TYPE_ID_BIT))) { BTM_TRACE_WARNING("%s find pseudo->random match with diff addr type: %d vs %d", - __func__, p_dev_rec->ble.static_addr_type, addr_type); + __func__, p_dev_rec->ble.static_addr_type, addr_type); } /* found the match */ @@ -476,15 +452,16 @@ BOOLEAN btm_identity_addr_to_random_pseudo(BD_ADDR bd_addr, UINT8 *p_addr_type, BTM_TRACE_EVENT ("%s", __func__); /* evt reported on static address, map static address to random pseudo */ - if (p_dev_rec != NULL) - { + if (p_dev_rec != NULL) { /* if RPA offloading is supported, or 4.2 controller, do RPA refresh */ - if (refresh && controller_get_interface()->get_ble_resolving_list_max_size() != 0) + if (refresh && controller_get_interface()->get_ble_resolving_list_max_size() != 0) { btm_ble_read_resolving_list_entry(p_dev_rec); + } /* assign the original address to be the current report address */ - if (!btm_ble_init_pseudo_addr (p_dev_rec, bd_addr)) + if (!btm_ble_init_pseudo_addr (p_dev_rec, bd_addr)) { memcpy(bd_addr, p_dev_rec->ble.pseudo_addr, BD_ADDR_LEN); + } *p_addr_type = p_dev_rec->ble.ble_addr_type; return TRUE; @@ -506,14 +483,13 @@ BOOLEAN btm_random_pseudo_to_identity_addr(BD_ADDR random_pseudo, UINT8 *p_stati #if BLE_PRIVACY_SPT == TRUE tBTM_SEC_DEV_REC *p_dev_rec = btm_find_dev (random_pseudo); - if (p_dev_rec != NULL) - { - if (p_dev_rec->ble.in_controller_list & BTM_RESOLVING_LIST_BIT) - { + if (p_dev_rec != NULL) { + if (p_dev_rec->ble.in_controller_list & BTM_RESOLVING_LIST_BIT) { * p_static_addr_type = p_dev_rec->ble.static_addr_type; memcpy(random_pseudo, p_dev_rec->ble.static_addr, BD_ADDR_LEN); - if (controller_get_interface()->supports_ble_privacy()) + if (controller_get_interface()->supports_ble_privacy()) { *p_static_addr_type |= BLE_ADDR_TYPE_ID_BIT; + } return TRUE; } } @@ -530,29 +506,28 @@ BOOLEAN btm_random_pseudo_to_identity_addr(BD_ADDR random_pseudo, UINT8 *p_stati ** *******************************************************************************/ void btm_ble_refresh_peer_resolvable_private_addr(BD_ADDR pseudo_bda, BD_ADDR rpa, - UINT8 rra_type) + UINT8 rra_type) { #if BLE_PRIVACY_SPT == TRUE UINT8 rra_dummy = FALSE; BD_ADDR dummy_bda = {0}; - if (memcmp(dummy_bda, rpa, BD_ADDR_LEN) == 0) + if (memcmp(dummy_bda, rpa, BD_ADDR_LEN) == 0) { rra_dummy = TRUE; + } /* update security record here, in adv event or connection complete process */ tBTM_SEC_DEV_REC *p_sec_rec = btm_find_dev(pseudo_bda); - if (p_sec_rec != NULL) - { + if (p_sec_rec != NULL) { memcpy(p_sec_rec->ble.cur_rand_addr, rpa, BD_ADDR_LEN); /* unknown, if dummy address, set to static */ - if (rra_type == BTM_BLE_ADDR_PSEUDO) - p_sec_rec->ble.active_addr_type = rra_dummy ? BTM_BLE_ADDR_STATIC: BTM_BLE_ADDR_RRA; - else + if (rra_type == BTM_BLE_ADDR_PSEUDO) { + p_sec_rec->ble.active_addr_type = rra_dummy ? BTM_BLE_ADDR_STATIC : BTM_BLE_ADDR_RRA; + } else { p_sec_rec->ble.active_addr_type = rra_type; - } - else - { + } + } else { BTM_TRACE_ERROR("No matching known device in record"); return; } @@ -562,36 +537,30 @@ void btm_ble_refresh_peer_resolvable_private_addr(BD_ADDR pseudo_bda, BD_ADDR rp /* connection refresh remote address */ tACL_CONN *p_acl = btm_bda_to_acl(p_sec_rec->bd_addr, BT_TRANSPORT_LE); - if (p_acl == NULL) + if (p_acl == NULL) { p_acl = btm_bda_to_acl(p_sec_rec->ble.pseudo_addr, BT_TRANSPORT_LE); + } - if (p_acl != NULL) - { - if (rra_type == BTM_BLE_ADDR_PSEUDO) - { + if (p_acl != NULL) { + if (rra_type == BTM_BLE_ADDR_PSEUDO) { /* use static address, resolvable_private_addr is empty */ - if (rra_dummy) - { + if (rra_dummy) { p_acl->active_remote_addr_type = p_sec_rec->ble.static_addr_type; memcpy(p_acl->active_remote_addr, p_sec_rec->ble.static_addr, BD_ADDR_LEN); - } - else - { + } else { p_acl->active_remote_addr_type = BLE_ADDR_RANDOM; memcpy(p_acl->active_remote_addr, rpa, BD_ADDR_LEN); } - } - else - { - p_acl->active_remote_addr_type = rra_type; - memcpy(p_acl->active_remote_addr, rpa, BD_ADDR_LEN); + } else { + p_acl->active_remote_addr_type = rra_type; + memcpy(p_acl->active_remote_addr, rpa, BD_ADDR_LEN); } BTM_TRACE_DEBUG("p_acl->active_remote_addr_type: %d ", p_acl->active_remote_addr_type); BTM_TRACE_DEBUG("%s conn_addr: %02x:%02x:%02x:%02x:%02x:%02x", - __func__,p_acl->active_remote_addr[0], p_acl->active_remote_addr[1], - p_acl->active_remote_addr[2], p_acl->active_remote_addr[3], - p_acl->active_remote_addr[4], p_acl->active_remote_addr[5]); + __func__, p_acl->active_remote_addr[0], p_acl->active_remote_addr[1], + p_acl->active_remote_addr[2], p_acl->active_remote_addr[3], + p_acl->active_remote_addr[4], p_acl->active_remote_addr[5]); } #endif } @@ -605,26 +574,23 @@ void btm_ble_refresh_peer_resolvable_private_addr(BD_ADDR pseudo_bda, BD_ADDR rp ** *******************************************************************************/ void btm_ble_refresh_local_resolvable_private_addr(BD_ADDR pseudo_addr, - BD_ADDR local_rpa) + BD_ADDR local_rpa) { #if BLE_PRIVACY_SPT == TRUE tACL_CONN *p = btm_bda_to_acl(pseudo_addr, BT_TRANSPORT_LE); BD_ADDR dummy_bda = {0}; - if (p != NULL) - { - if (btm_cb.ble_ctr_cb.privacy_mode != BTM_PRIVACY_NONE) - { + if (p != NULL) { + if (btm_cb.ble_ctr_cb.privacy_mode != BTM_PRIVACY_NONE) { p->conn_addr_type = BLE_ADDR_RANDOM; - if (memcmp(local_rpa, dummy_bda, BD_ADDR_LEN)) + if (memcmp(local_rpa, dummy_bda, BD_ADDR_LEN)) { memcpy(p->conn_addr, local_rpa, BD_ADDR_LEN); - else + } else { memcpy(p->conn_addr, btm_cb.ble_ctr_cb.addr_mgnt_cb.private_addr, BD_ADDR_LEN); - } - else - { + } + } else { p->conn_addr_type = BLE_ADDR_PUBLIC; - memcpy(p->conn_addr,&controller_get_interface()->get_address()->address, BD_ADDR_LEN); + memcpy(p->conn_addr, &controller_get_interface()->get_address()->address, BD_ADDR_LEN); } } #endif diff --git a/components/bt/bluedroid/stack/btm/btm_ble_adv_filter.c b/components/bt/bluedroid/stack/btm/btm_ble_adv_filter.c old mode 100755 new mode 100644 index 933bd3d315..1190643f32 --- a/components/bt/bluedroid/stack/btm/btm_ble_adv_filter.c +++ b/components/bt/bluedroid/stack/btm/btm_ble_adv_filter.c @@ -50,10 +50,10 @@ tBTM_BLE_ADV_FILTER_CB btm_ble_adv_filt_cb; tBTM_BLE_VSC_CB cmn_ble_vsc_cb; -static const BD_ADDR na_bda= {0}; +static const BD_ADDR na_bda = {0}; static UINT8 btm_ble_cs_update_pf_counter(tBTM_BLE_SCAN_COND_OP action, - UINT8 cond_type, tBLE_BD_ADDR *p_bd_addr, UINT8 num_available); + UINT8 cond_type, tBLE_BD_ADDR *p_bd_addr, UINT8 num_available); #define BTM_BLE_SET_SCAN_PF_OPCODE(x, y) (((x)<<4)|y) #define BTM_BLE_GET_SCAN_PF_SUBCODE(x) ((x) >> 4) @@ -88,8 +88,7 @@ tBTM_STATUS btm_ble_obtain_vsc_details() #if BLE_VND_INCLUDED == TRUE BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb); - if (0 == cmn_ble_vsc_cb.max_filter) - { + if (0 == cmn_ble_vsc_cb.max_filter) { st = BTM_MODE_UNSUPPORTED; return st; } @@ -113,17 +112,17 @@ void btm_ble_advfilt_enq_op_q(UINT8 action, UINT8 ocf, tBTM_BLE_FILT_CB_EVT cb_e tBTM_BLE_REF_VALUE ref, tBTM_BLE_PF_CFG_CBACK *p_cmpl_cback, tBTM_BLE_PF_PARAM_CBACK *p_filt_param_cback) { - btm_ble_adv_filt_cb.op_q.action_ocf[btm_ble_adv_filt_cb.op_q.next_idx] = (action |(ocf << 4)); + btm_ble_adv_filt_cb.op_q.action_ocf[btm_ble_adv_filt_cb.op_q.next_idx] = (action | (ocf << 4)); btm_ble_adv_filt_cb.op_q.ref_value[btm_ble_adv_filt_cb.op_q.next_idx] = ref; btm_ble_adv_filt_cb.op_q.cb_evt[btm_ble_adv_filt_cb.op_q.next_idx] = cb_evt; btm_ble_adv_filt_cb.op_q.p_scan_cfg_cback[btm_ble_adv_filt_cb.op_q.next_idx] = p_cmpl_cback; btm_ble_adv_filt_cb.op_q.p_filt_param_cback[btm_ble_adv_filt_cb.op_q.next_idx] = p_filt_param_cback; BTM_TRACE_DEBUG("btm_ble_advfilt_enq_op_q: act_ocf:%d, action:%d, ocf:%d,cb_evt;%d, cback:%x", - btm_ble_adv_filt_cb.op_q.action_ocf[btm_ble_adv_filt_cb.op_q.next_idx], action, - ocf, cb_evt, p_cmpl_cback); + btm_ble_adv_filt_cb.op_q.action_ocf[btm_ble_adv_filt_cb.op_q.next_idx], action, + ocf, cb_evt, p_cmpl_cback); btm_ble_adv_filt_cb.op_q.next_idx = (btm_ble_adv_filt_cb.op_q.next_idx + 1) - % BTM_BLE_PF_TYPE_MAX; + % BTM_BLE_PF_TYPE_MAX; } /******************************************************************************* @@ -136,13 +135,13 @@ void btm_ble_advfilt_enq_op_q(UINT8 action, UINT8 ocf, tBTM_BLE_FILT_CB_EVT cb_e ** Returns void ** *******************************************************************************/ -void btm_ble_advfilt_deq_op_q(UINT8 *p_action,UINT8 *p_ocf, tBTM_BLE_FILT_CB_EVT *p_cb_evt, - tBTM_BLE_REF_VALUE *p_ref, tBTM_BLE_PF_CFG_CBACK ** p_cmpl_cback, +void btm_ble_advfilt_deq_op_q(UINT8 *p_action, UINT8 *p_ocf, tBTM_BLE_FILT_CB_EVT *p_cb_evt, + tBTM_BLE_REF_VALUE *p_ref, tBTM_BLE_PF_CFG_CBACK **p_cmpl_cback, tBTM_BLE_PF_PARAM_CBACK **p_filt_param_cback) { *p_ocf = (btm_ble_adv_filt_cb.op_q.action_ocf[btm_ble_adv_filt_cb.op_q.pending_idx] >> 4); *p_action = (btm_ble_adv_filt_cb.op_q.action_ocf[btm_ble_adv_filt_cb.op_q.pending_idx] - & BTM_BLE_ADV_FILT_SUBCODE_MASK); + & BTM_BLE_ADV_FILT_SUBCODE_MASK); *p_ref = btm_ble_adv_filt_cb.op_q.ref_value[btm_ble_adv_filt_cb.op_q.pending_idx]; *p_cb_evt = btm_ble_adv_filt_cb.op_q.cb_evt[btm_ble_adv_filt_cb.op_q.pending_idx]; *p_cmpl_cback = btm_ble_adv_filt_cb.op_q.p_scan_cfg_cback[btm_ble_adv_filt_cb.op_q.pending_idx]; @@ -150,9 +149,9 @@ void btm_ble_advfilt_deq_op_q(UINT8 *p_action,UINT8 *p_ocf, tBTM_BLE_FILT_CB_EVT btm_ble_adv_filt_cb.op_q.p_filt_param_cback[btm_ble_adv_filt_cb.op_q.pending_idx]; btm_ble_adv_filt_cb.op_q.pending_idx = (btm_ble_adv_filt_cb.op_q.pending_idx + 1) - % BTM_BLE_PF_TYPE_MAX; + % BTM_BLE_PF_TYPE_MAX; BTM_TRACE_DEBUG("btm_ble_advfilt_deq_op_q: ocf:%d, action:%d, ref_value:%d, cb_evt:%x", - *p_ocf,*p_action, *p_ref, *p_cb_evt); + *p_ocf, *p_action, *p_ref, *p_cb_evt); } /******************************************************************************* @@ -168,32 +167,31 @@ UINT8 btm_ble_condtype_to_ocf(UINT8 cond_type) { UINT8 ocf = 0; - switch(cond_type) - { - case BTM_BLE_PF_ADDR_FILTER: - ocf = BTM_BLE_META_PF_ADDR; - break; - case BTM_BLE_PF_SRVC_UUID: - ocf = BTM_BLE_META_PF_UUID; - break; - case BTM_BLE_PF_SRVC_SOL_UUID: - ocf = BTM_BLE_META_PF_SOL_UUID; - break; - case BTM_BLE_PF_LOCAL_NAME: - ocf = BTM_BLE_META_PF_LOCAL_NAME; - break; - case BTM_BLE_PF_MANU_DATA: - ocf = BTM_BLE_META_PF_MANU_DATA; - break; - case BTM_BLE_PF_SRVC_DATA_PATTERN: - ocf = BTM_BLE_META_PF_SRVC_DATA; - break; - case BTM_BLE_PF_TYPE_ALL: - ocf = BTM_BLE_META_PF_ALL; - break; - default: - ocf = BTM_BLE_PF_TYPE_MAX; - break; + switch (cond_type) { + case BTM_BLE_PF_ADDR_FILTER: + ocf = BTM_BLE_META_PF_ADDR; + break; + case BTM_BLE_PF_SRVC_UUID: + ocf = BTM_BLE_META_PF_UUID; + break; + case BTM_BLE_PF_SRVC_SOL_UUID: + ocf = BTM_BLE_META_PF_SOL_UUID; + break; + case BTM_BLE_PF_LOCAL_NAME: + ocf = BTM_BLE_META_PF_LOCAL_NAME; + break; + case BTM_BLE_PF_MANU_DATA: + ocf = BTM_BLE_META_PF_MANU_DATA; + break; + case BTM_BLE_PF_SRVC_DATA_PATTERN: + ocf = BTM_BLE_META_PF_SRVC_DATA; + break; + case BTM_BLE_PF_TYPE_ALL: + ocf = BTM_BLE_META_PF_ALL; + break; + default: + ocf = BTM_BLE_PF_TYPE_MAX; + break; } return ocf; } @@ -211,35 +209,34 @@ UINT8 btm_ble_ocf_to_condtype(UINT8 ocf) { UINT8 cond_type = 0; - switch(ocf) - { - case BTM_BLE_META_PF_FEAT_SEL: - cond_type = BTM_BLE_META_PF_FEAT_SEL; - break; - case BTM_BLE_META_PF_ADDR: - cond_type = BTM_BLE_PF_ADDR_FILTER; - break; - case BTM_BLE_META_PF_UUID: - cond_type = BTM_BLE_PF_SRVC_UUID; - break; - case BTM_BLE_META_PF_SOL_UUID: - cond_type = BTM_BLE_PF_SRVC_SOL_UUID; - break; - case BTM_BLE_META_PF_LOCAL_NAME: - cond_type = BTM_BLE_PF_LOCAL_NAME; - break; - case BTM_BLE_META_PF_MANU_DATA: - cond_type = BTM_BLE_PF_MANU_DATA; - break; - case BTM_BLE_META_PF_SRVC_DATA: - cond_type = BTM_BLE_PF_SRVC_DATA_PATTERN; - break; - case BTM_BLE_META_PF_ALL: - cond_type = BTM_BLE_PF_TYPE_ALL; - break; - default: - cond_type = BTM_BLE_PF_TYPE_MAX; - break; + switch (ocf) { + case BTM_BLE_META_PF_FEAT_SEL: + cond_type = BTM_BLE_META_PF_FEAT_SEL; + break; + case BTM_BLE_META_PF_ADDR: + cond_type = BTM_BLE_PF_ADDR_FILTER; + break; + case BTM_BLE_META_PF_UUID: + cond_type = BTM_BLE_PF_SRVC_UUID; + break; + case BTM_BLE_META_PF_SOL_UUID: + cond_type = BTM_BLE_PF_SRVC_SOL_UUID; + break; + case BTM_BLE_META_PF_LOCAL_NAME: + cond_type = BTM_BLE_PF_LOCAL_NAME; + break; + case BTM_BLE_META_PF_MANU_DATA: + cond_type = BTM_BLE_PF_MANU_DATA; + break; + case BTM_BLE_META_PF_SRVC_DATA: + cond_type = BTM_BLE_PF_SRVC_DATA_PATTERN; + break; + case BTM_BLE_META_PF_ALL: + cond_type = BTM_BLE_PF_TYPE_ALL; + break; + default: + cond_type = BTM_BLE_PF_TYPE_MAX; + break; } return cond_type; } @@ -264,10 +261,9 @@ void btm_ble_scan_pf_cmpl_cback(tBTM_VSC_CMPL *p_params) tBTM_BLE_PF_CFG_CBACK *p_scan_cfg_cback = NULL; tBTM_BLE_PF_PARAM_CBACK *p_filt_param_cback = NULL; - if (evt_len < 3 || evt_len > 4) - { - BTM_TRACE_ERROR("%s cannot interpret APCF callback status = %d, length = %d", - __func__, status, evt_len); + if (evt_len < 3 || evt_len > 4) { + BTM_TRACE_ERROR("%s cannot interpret APCF callback status = %d, length = %d", + __func__, status, evt_len); btm_ble_advfilt_deq_op_q(&action, &ocf, &cb_evt, &ref_value, &p_scan_cfg_cback, &p_filt_param_cback); return; @@ -281,79 +277,74 @@ void btm_ble_scan_pf_cmpl_cback(tBTM_VSC_CMPL *p_params) STREAM_TO_UINT8(action, p); /* Ignore the event, if it is not the same one expected */ - if (3 == evt_len) - { - if(ocf != op_subcode) - { - BTM_TRACE_ERROR("btm_ble_scan_pf_cmpl_cback:3-Incorrect opcode :%d, %d, %d, %d, %d, %d", - ocf, op_subcode, action, evt_len, ref_value, status); - return; - } - else - { - if(NULL != btm_ble_adv_filt_cb.p_filt_stat_cback) - btm_ble_adv_filt_cb.p_filt_stat_cback(action, status, ref_value); + if (3 == evt_len) { + if (ocf != op_subcode) { + BTM_TRACE_ERROR("btm_ble_scan_pf_cmpl_cback:3-Incorrect opcode :%d, %d, %d, %d, %d, %d", + ocf, op_subcode, action, evt_len, ref_value, status); + return; + } else { + if (NULL != btm_ble_adv_filt_cb.p_filt_stat_cback) { + btm_ble_adv_filt_cb.p_filt_stat_cback(action, status, ref_value); + } BTM_TRACE_DEBUG("btm_ble_scan_pf_cmpl_cback enabled/disabled, %d, %d, %d, %d", - ocf, action, status, ref_value); + ocf, action, status, ref_value); return; } } - if (4 == evt_len && ocf != op_subcode) - { + if (4 == evt_len && ocf != op_subcode) { BTM_TRACE_ERROR("btm_ble_scan_pf_cmpl_cback:4-Incorrect opcode: %d, %d, %d, %d, %d", - ocf, op_subcode, action, status, ref_value); + ocf, op_subcode, action, status, ref_value); return; } STREAM_TO_UINT8(num_avail, p); - switch (op_subcode) - { - case BTM_BLE_META_PF_ADDR: - case BTM_BLE_META_PF_UUID: - case BTM_BLE_META_PF_SOL_UUID: - case BTM_BLE_META_PF_LOCAL_NAME: - case BTM_BLE_META_PF_MANU_DATA: - case BTM_BLE_META_PF_SRVC_DATA: - cond_type = btm_ble_ocf_to_condtype(ocf); - BTM_TRACE_DEBUG("btm_ble_scan_pf_cmpl_cback Recd: %d, %d, %d, %d, %d, %d", op_subcode, - ocf, action, status, ref_value, num_avail); - if (HCI_SUCCESS == status) - { - if (memcmp(&btm_ble_adv_filt_cb.cur_filter_target.bda, &na_bda, BD_ADDR_LEN) == 0) - btm_ble_cs_update_pf_counter(action, cond_type, NULL, num_avail); - else - btm_ble_cs_update_pf_counter(action, cond_type, - &btm_ble_adv_filt_cb.cur_filter_target, num_avail); - } + switch (op_subcode) { + case BTM_BLE_META_PF_ADDR: + case BTM_BLE_META_PF_UUID: + case BTM_BLE_META_PF_SOL_UUID: + case BTM_BLE_META_PF_LOCAL_NAME: + case BTM_BLE_META_PF_MANU_DATA: + case BTM_BLE_META_PF_SRVC_DATA: + cond_type = btm_ble_ocf_to_condtype(ocf); + BTM_TRACE_DEBUG("btm_ble_scan_pf_cmpl_cback Recd: %d, %d, %d, %d, %d, %d", op_subcode, + ocf, action, status, ref_value, num_avail); + if (HCI_SUCCESS == status) { + if (memcmp(&btm_ble_adv_filt_cb.cur_filter_target.bda, &na_bda, BD_ADDR_LEN) == 0) { + btm_ble_cs_update_pf_counter(action, cond_type, NULL, num_avail); + } else + btm_ble_cs_update_pf_counter(action, cond_type, + &btm_ble_adv_filt_cb.cur_filter_target, num_avail); + } - /* send ADV PF operation complete */ - btm_ble_adv_filt_cb.op_type = 0; - break; + /* send ADV PF operation complete */ + btm_ble_adv_filt_cb.op_type = 0; + break; - case BTM_BLE_META_PF_FEAT_SEL: - BTM_TRACE_DEBUG("btm_ble_scan_pf_cmpl_cback-Feat sel event: %d, %d, %d, %d", - action, status, ref_value, num_avail); - break; + case BTM_BLE_META_PF_FEAT_SEL: + BTM_TRACE_DEBUG("btm_ble_scan_pf_cmpl_cback-Feat sel event: %d, %d, %d, %d", + action, status, ref_value, num_avail); + break; - default: - BTM_TRACE_ERROR("btm_ble_scan_pf_cmpl_cback: unknown operation: %d", op_subcode); - break; + default: + BTM_TRACE_ERROR("btm_ble_scan_pf_cmpl_cback: unknown operation: %d", op_subcode); + break; } - switch(cb_evt) - { + switch (cb_evt) { BTM_TRACE_DEBUG("btm_ble_scan_pf_cmpl_cback: calling the cback: %d", cb_evt); - case BTM_BLE_FILT_CFG: - if(NULL != p_scan_cfg_cback) - p_scan_cfg_cback(action, cond_type, num_avail, status, ref_value); - break; - case BTM_BLE_FILT_ADV_PARAM: - if(NULL != p_filt_param_cback) - p_filt_param_cback(action, num_avail, ref_value, status); - break; - default: - break; + case BTM_BLE_FILT_CFG: + if (NULL != p_scan_cfg_cback) { + p_scan_cfg_cback(action, cond_type, num_avail, status, ref_value); + } + break; + case BTM_BLE_FILT_ADV_PARAM: + if (NULL != p_filt_param_cback) { + p_filt_param_cback(action, num_avail, ref_value, status); + } + break; + default: + break; } } @@ -366,19 +357,18 @@ void btm_ble_scan_pf_cmpl_cback(tBTM_VSC_CMPL *p_params) ** Returns pointer to the counter if found; NULL otherwise. ** *******************************************************************************/ -tBTM_BLE_PF_COUNT* btm_ble_find_addr_filter_counter(tBLE_BD_ADDR *p_le_bda) +tBTM_BLE_PF_COUNT *btm_ble_find_addr_filter_counter(tBLE_BD_ADDR *p_le_bda) { UINT8 i; tBTM_BLE_PF_COUNT *p_addr_filter = &btm_ble_adv_filt_cb.p_addr_filter_count[1]; - if (p_le_bda == NULL) + if (p_le_bda == NULL) { return &btm_ble_adv_filt_cb.p_addr_filter_count[0]; + } - for (i = 0; i < cmn_ble_vsc_cb.max_filter; i ++, p_addr_filter ++) - { + for (i = 0; i < cmn_ble_vsc_cb.max_filter; i ++, p_addr_filter ++) { if (p_addr_filter->in_use && - memcmp(p_le_bda->bda, p_addr_filter->bd_addr, BD_ADDR_LEN) == 0) - { + memcmp(p_le_bda->bda, p_addr_filter->bd_addr, BD_ADDR_LEN) == 0) { return p_addr_filter; } } @@ -394,15 +384,13 @@ tBTM_BLE_PF_COUNT* btm_ble_find_addr_filter_counter(tBLE_BD_ADDR *p_le_bda) ** Returns pointer to the counter if allocation succeed; NULL otherwise. ** *******************************************************************************/ -tBTM_BLE_PF_COUNT * btm_ble_alloc_addr_filter_counter(BD_ADDR bd_addr) +tBTM_BLE_PF_COUNT *btm_ble_alloc_addr_filter_counter(BD_ADDR bd_addr) { UINT8 i; tBTM_BLE_PF_COUNT *p_addr_filter = &btm_ble_adv_filt_cb.p_addr_filter_count[1]; - for (i = 0; i < cmn_ble_vsc_cb.max_filter; i ++, p_addr_filter ++) - { - if (memcmp(na_bda, p_addr_filter->bd_addr, BD_ADDR_LEN) == 0) - { + for (i = 0; i < cmn_ble_vsc_cb.max_filter; i ++, p_addr_filter ++) { + if (memcmp(na_bda, p_addr_filter->bd_addr, BD_ADDR_LEN) == 0) { memcpy(p_addr_filter->bd_addr, bd_addr, BD_ADDR_LEN); p_addr_filter->in_use = TRUE; return p_addr_filter; @@ -425,19 +413,20 @@ BOOLEAN btm_ble_dealloc_addr_filter_counter(tBLE_BD_ADDR *p_bd_addr, UINT8 filte tBTM_BLE_PF_COUNT *p_addr_filter = &btm_ble_adv_filt_cb.p_addr_filter_count[1]; BOOLEAN found = FALSE; - if (BTM_BLE_PF_TYPE_ALL == filter_type && NULL == p_bd_addr) + if (BTM_BLE_PF_TYPE_ALL == filter_type && NULL == p_bd_addr) { memset(&btm_ble_adv_filt_cb.p_addr_filter_count[0], 0, sizeof(tBTM_BLE_PF_COUNT)); + } - for (i = 0; i < cmn_ble_vsc_cb.max_filter; i ++, p_addr_filter ++) - { + for (i = 0; i < cmn_ble_vsc_cb.max_filter; i ++, p_addr_filter ++) { if ((p_addr_filter->in_use) && (NULL == p_bd_addr || - (NULL != p_bd_addr && - memcmp(p_bd_addr->bda, p_addr_filter->bd_addr, BD_ADDR_LEN) == 0))) - { + (NULL != p_bd_addr && + memcmp(p_bd_addr->bda, p_addr_filter->bd_addr, BD_ADDR_LEN) == 0))) { found = TRUE; memset(p_addr_filter, 0, sizeof(tBTM_BLE_PF_COUNT)); - if (NULL != p_bd_addr) break; + if (NULL != p_bd_addr) { + break; + } } } return found; @@ -455,13 +444,13 @@ BOOLEAN btm_ble_dealloc_addr_filter_counter(tBLE_BD_ADDR *p_bd_addr, UINT8 filte ** *******************************************************************************/ tBTM_STATUS btm_ble_update_pf_local_name(tBTM_BLE_SCAN_COND_OP action, - tBTM_BLE_PF_FILT_INDEX filt_index, - tBTM_BLE_PF_COND_PARAM *p_cond) + tBTM_BLE_PF_FILT_INDEX filt_index, + tBTM_BLE_PF_COND_PARAM *p_cond) { tBTM_BLE_PF_LOCAL_NAME_COND *p_local_name = (p_cond == NULL) ? NULL : &p_cond->local_name; UINT8 param[BTM_BLE_PF_STR_LEN_MAX + BTM_BLE_ADV_FILT_META_HDR_LENGTH], *p = param, - len = BTM_BLE_ADV_FILT_META_HDR_LENGTH; + len = BTM_BLE_ADV_FILT_META_HDR_LENGTH; tBTM_STATUS st = BTM_ILLEGAL_VALUE; memset(param, 0, BTM_BLE_PF_STR_LEN_MAX + BTM_BLE_ADV_FILT_META_HDR_LENGTH); @@ -473,13 +462,14 @@ tBTM_STATUS btm_ble_update_pf_local_name(tBTM_BLE_SCAN_COND_OP action, UINT8_TO_STREAM(p, filt_index); if (BTM_BLE_SCAN_COND_ADD == action || - BTM_BLE_SCAN_COND_DELETE == action) - { - if (NULL == p_local_name) + BTM_BLE_SCAN_COND_DELETE == action) { + if (NULL == p_local_name) { return st; + } - if (p_local_name->data_len > BTM_BLE_PF_STR_LEN_MAX) + if (p_local_name->data_len > BTM_BLE_PF_STR_LEN_MAX) { p_local_name->data_len = BTM_BLE_PF_STR_LEN_MAX; + } ARRAY_TO_STREAM(p, p_local_name->p_data, p_local_name->data_len); len += p_local_name->data_len; @@ -487,15 +477,12 @@ tBTM_STATUS btm_ble_update_pf_local_name(tBTM_BLE_SCAN_COND_OP action, /* send local name filter */ if ((st = BTM_VendorSpecificCommand (HCI_BLE_ADV_FILTER_OCF, - len, - param, - btm_ble_scan_pf_cmpl_cback)) - != BTM_NO_RESOURCES) - { + len, + param, + btm_ble_scan_pf_cmpl_cback)) + != BTM_NO_RESOURCES) { memset(&btm_ble_adv_filt_cb.cur_filter_target, 0, sizeof(tBLE_BD_ADDR)); - } - else - { + } else { BTM_TRACE_ERROR("Local Name PF filter update failed"); } @@ -515,16 +502,17 @@ tBTM_STATUS btm_ble_update_pf_local_name(tBTM_BLE_SCAN_COND_OP action, ** *******************************************************************************/ tBTM_STATUS btm_ble_update_srvc_data_change(tBTM_BLE_SCAN_COND_OP action, - tBTM_BLE_PF_FILT_INDEX filt_index, - tBTM_BLE_PF_COND_PARAM *p_cond) + tBTM_BLE_PF_FILT_INDEX filt_index, + tBTM_BLE_PF_COND_PARAM *p_cond) { tBTM_STATUS st = BTM_ILLEGAL_VALUE; tBLE_BD_ADDR *p_bd_addr = p_cond ? &p_cond->target_addr : NULL; UINT8 num_avail = (action == BTM_BLE_SCAN_COND_ADD) ? 0 : 1; if (btm_ble_cs_update_pf_counter (action, BTM_BLE_PF_SRVC_DATA, p_bd_addr, num_avail) - != BTM_BLE_INVALID_COUNTER) + != BTM_BLE_INVALID_COUNTER) { st = BTM_SUCCESS; + } return st; } @@ -553,21 +541,19 @@ tBTM_STATUS btm_ble_update_pf_manu_data(tBTM_BLE_SCAN_COND_OP action, UINT8 param[BTM_BLE_PF_STR_LEN_MAX + BTM_BLE_PF_STR_LEN_MAX + BTM_BLE_ADV_FILT_META_HDR_LENGTH], *p = param, - len = BTM_BLE_ADV_FILT_META_HDR_LENGTH; + len = BTM_BLE_ADV_FILT_META_HDR_LENGTH; tBTM_STATUS st = BTM_ILLEGAL_VALUE; - if (NULL == p_data) + if (NULL == p_data) { return st; + } memset(param, 0, BTM_BLE_PF_STR_LEN_MAX + BTM_BLE_PF_STR_LEN_MAX - + BTM_BLE_ADV_FILT_META_HDR_LENGTH); + + BTM_BLE_ADV_FILT_META_HDR_LENGTH); - if (BTM_BLE_PF_SRVC_DATA_PATTERN == cond_type) - { + if (BTM_BLE_PF_SRVC_DATA_PATTERN == cond_type) { UINT8_TO_STREAM(p, BTM_BLE_META_PF_SRVC_DATA); - } - else - { + } else { UINT8_TO_STREAM(p, BTM_BLE_META_PF_MANU_DATA); } @@ -576,17 +562,16 @@ tBTM_STATUS btm_ble_update_pf_manu_data(tBTM_BLE_SCAN_COND_OP action, /* Filter index */ UINT8_TO_STREAM(p, filt_index); - if (BTM_BLE_SCAN_COND_ADD == action || BTM_BLE_SCAN_COND_DELETE == action) - { - if (BTM_BLE_PF_SRVC_DATA_PATTERN == cond_type) - { - if (NULL == p_srvc_data) + if (BTM_BLE_SCAN_COND_ADD == action || BTM_BLE_SCAN_COND_DELETE == action) { + if (BTM_BLE_PF_SRVC_DATA_PATTERN == cond_type) { + if (NULL == p_srvc_data) { return st; - if (p_srvc_data->data_len > (BTM_BLE_PF_STR_LEN_MAX - 2)) + } + if (p_srvc_data->data_len > (BTM_BLE_PF_STR_LEN_MAX - 2)) { p_srvc_data->data_len = (BTM_BLE_PF_STR_LEN_MAX - 2); + } - if (p_srvc_data->data_len > 0) - { + if (p_srvc_data->data_len > 0) { ARRAY_TO_STREAM(p, p_srvc_data->p_pattern, p_srvc_data->data_len); len += (p_srvc_data->data_len); ARRAY_TO_STREAM(p, p_srvc_data->p_pattern_mask, p_srvc_data->data_len); @@ -594,41 +579,34 @@ tBTM_STATUS btm_ble_update_pf_manu_data(tBTM_BLE_SCAN_COND_OP action, len += (p_srvc_data->data_len); BTM_TRACE_DEBUG("Service data length: %d", len); - } - else - { - if (NULL == p_manu_data) - { + } else { + if (NULL == p_manu_data) { BTM_TRACE_ERROR("btm_ble_update_pf_manu_data - No manuf data"); return st; } BTM_TRACE_EVENT("btm_ble_update_pf_manu_data length: %d", - p_manu_data->data_len); - if (p_manu_data->data_len > (BTM_BLE_PF_STR_LEN_MAX - 2)) + p_manu_data->data_len); + if (p_manu_data->data_len > (BTM_BLE_PF_STR_LEN_MAX - 2)) { p_manu_data->data_len = (BTM_BLE_PF_STR_LEN_MAX - 2); + } UINT16_TO_STREAM(p, p_manu_data->company_id); - if (p_manu_data->data_len > 0 && p_manu_data->p_pattern_mask != NULL) - { + if (p_manu_data->data_len > 0 && p_manu_data->p_pattern_mask != NULL) { ARRAY_TO_STREAM(p, p_manu_data->p_pattern, p_manu_data->data_len); len += (p_manu_data->data_len + 2); - } - else + } else { len += 2; - - if (p_manu_data->company_id_mask != 0) - { - UINT16_TO_STREAM (p, p_manu_data->company_id_mask); } - else - { + + if (p_manu_data->company_id_mask != 0) { + UINT16_TO_STREAM (p, p_manu_data->company_id_mask); + } else { memset(p, 0xff, 2); p += 2; } len += 2; - if (p_manu_data->data_len > 0 && p_manu_data->p_pattern_mask != NULL) - { + if (p_manu_data->data_len > 0 && p_manu_data->p_pattern_mask != NULL) { ARRAY_TO_STREAM(p, p_manu_data->p_pattern_mask, p_manu_data->data_len); len += (p_manu_data->data_len); } @@ -639,14 +617,11 @@ tBTM_STATUS btm_ble_update_pf_manu_data(tBTM_BLE_SCAN_COND_OP action, /* send manufacturer*/ if ((st = BTM_VendorSpecificCommand (HCI_BLE_ADV_FILTER_OCF, - len, - param, - btm_ble_scan_pf_cmpl_cback)) != BTM_NO_RESOURCES) - { + len, + param, + btm_ble_scan_pf_cmpl_cback)) != BTM_NO_RESOURCES) { memset(&btm_ble_adv_filt_cb.cur_filter_target, 0, sizeof(tBLE_BD_ADDR)); - } - else - { + } else { BTM_TRACE_ERROR("manufacturer data PF filter update failed"); } @@ -664,57 +639,52 @@ tBTM_STATUS btm_ble_update_pf_manu_data(tBTM_BLE_SCAN_COND_OP action, ** *******************************************************************************/ UINT8 btm_ble_cs_update_pf_counter(tBTM_BLE_SCAN_COND_OP action, - UINT8 cond_type, tBLE_BD_ADDR *p_bd_addr, - UINT8 num_available) + UINT8 cond_type, tBLE_BD_ADDR *p_bd_addr, + UINT8 num_available) { tBTM_BLE_PF_COUNT *p_addr_filter = NULL; UINT8 *p_counter = NULL; btm_ble_obtain_vsc_details(); - if (cond_type > BTM_BLE_PF_TYPE_ALL) - { + if (cond_type > BTM_BLE_PF_TYPE_ALL) { BTM_TRACE_ERROR("unknown PF filter condition type %d", cond_type); return BTM_BLE_INVALID_COUNTER; } /* for these three types of filter, always generic */ if (BTM_BLE_PF_ADDR_FILTER == cond_type || - BTM_BLE_PF_MANU_DATA == cond_type || - BTM_BLE_PF_LOCAL_NAME == cond_type || - BTM_BLE_PF_SRVC_DATA_PATTERN == cond_type) + BTM_BLE_PF_MANU_DATA == cond_type || + BTM_BLE_PF_LOCAL_NAME == cond_type || + BTM_BLE_PF_SRVC_DATA_PATTERN == cond_type) { p_bd_addr = NULL; + } if ((p_addr_filter = btm_ble_find_addr_filter_counter(p_bd_addr)) == NULL && - BTM_BLE_SCAN_COND_ADD == action) - { + BTM_BLE_SCAN_COND_ADD == action) { p_addr_filter = btm_ble_alloc_addr_filter_counter(p_bd_addr->bda); } - if (NULL != p_addr_filter) - { + if (NULL != p_addr_filter) { /* all filter just cleared */ if ((BTM_BLE_PF_TYPE_ALL == cond_type && BTM_BLE_SCAN_COND_CLEAR == action) || - /* or bd address filter been deleted */ - (BTM_BLE_PF_ADDR_FILTER == cond_type && - (BTM_BLE_SCAN_COND_DELETE == action || BTM_BLE_SCAN_COND_CLEAR == action))) - { + /* or bd address filter been deleted */ + (BTM_BLE_PF_ADDR_FILTER == cond_type && + (BTM_BLE_SCAN_COND_DELETE == action || BTM_BLE_SCAN_COND_CLEAR == action))) { btm_ble_dealloc_addr_filter_counter(p_bd_addr, cond_type); } /* if not feature selection, update new addition/reduction of the filter counter */ - else if (cond_type != BTM_BLE_PF_TYPE_ALL) - { + else if (cond_type != BTM_BLE_PF_TYPE_ALL) { p_counter = p_addr_filter->pf_counter; - if (num_available > 0) + if (num_available > 0) { p_counter[cond_type] += 1; + } BTM_TRACE_DEBUG("counter = %d, maxfilt = %d, num_avbl=%d", - p_counter[cond_type], cmn_ble_vsc_cb.max_filter, num_available); + p_counter[cond_type], cmn_ble_vsc_cb.max_filter, num_available); return p_counter[cond_type]; } - } - else - { + } else { BTM_TRACE_ERROR("no matching filter counter found"); } /* no matching filter located and updated */ @@ -738,7 +708,7 @@ tBTM_STATUS btm_ble_update_addr_filter(tBTM_BLE_SCAN_COND_OP action, tBTM_BLE_PF_COND_PARAM *p_cond) { UINT8 param[BTM_BLE_META_ADDR_LEN + BTM_BLE_ADV_FILT_META_HDR_LENGTH], - * p= param; + * p = param; tBTM_STATUS st = BTM_ILLEGAL_VALUE; tBLE_BD_ADDR *p_addr = (p_cond == NULL) ? NULL : &p_cond->target_addr; @@ -751,24 +721,21 @@ tBTM_STATUS btm_ble_update_addr_filter(tBTM_BLE_SCAN_COND_OP action, UINT8_TO_STREAM(p, filt_index); if (BTM_BLE_SCAN_COND_ADD == action || - BTM_BLE_SCAN_COND_DELETE == action) - { - if (NULL == p_addr) + BTM_BLE_SCAN_COND_DELETE == action) { + if (NULL == p_addr) { return st; + } BDADDR_TO_STREAM(p, p_addr->bda); UINT8_TO_STREAM(p, p_addr->type); } /* send address filter */ if ((st = BTM_VendorSpecificCommand (HCI_BLE_ADV_FILTER_OCF, - (UINT8)(BTM_BLE_ADV_FILT_META_HDR_LENGTH + BTM_BLE_META_ADDR_LEN), - param, - btm_ble_scan_pf_cmpl_cback)) != BTM_NO_RESOURCES) - { + (UINT8)(BTM_BLE_ADV_FILT_META_HDR_LENGTH + BTM_BLE_META_ADDR_LEN), + param, + btm_ble_scan_pf_cmpl_cback)) != BTM_NO_RESOURCES) { memset(&btm_ble_adv_filt_cb.cur_filter_target, 0, sizeof(tBLE_BD_ADDR)); - } - else - { + } else { BTM_TRACE_ERROR("Broadcaster Address Filter Update failed"); } return st; @@ -793,36 +760,31 @@ tBTM_STATUS btm_ble_update_uuid_filter(tBTM_BLE_SCAN_COND_OP action, tBTM_BLE_REF_VALUE ref_value) { UINT8 param[BTM_BLE_META_UUID_LEN + BTM_BLE_ADV_FILT_META_HDR_LENGTH], - * p= param, - len = BTM_BLE_ADV_FILT_META_HDR_LENGTH; + * p = param, + len = BTM_BLE_ADV_FILT_META_HDR_LENGTH; tBTM_STATUS st = BTM_ILLEGAL_VALUE; tBTM_BLE_PF_UUID_COND *p_uuid_cond; UINT8 evt_type; memset(param, 0, BTM_BLE_META_UUID_LEN + BTM_BLE_ADV_FILT_META_HDR_LENGTH); - if (BTM_BLE_PF_SRVC_UUID == filter_type) - { + if (BTM_BLE_PF_SRVC_UUID == filter_type) { evt_type = BTM_BLE_META_PF_UUID; p_uuid_cond = p_cond ? &p_cond->srvc_uuid : NULL; - } - else - { + } else { evt_type = BTM_BLE_META_PF_SOL_UUID; p_uuid_cond = p_cond ? &p_cond->solicitate_uuid : NULL; } - if (NULL == p_uuid_cond && action != BTM_BLE_SCAN_COND_CLEAR) - { + if (NULL == p_uuid_cond && action != BTM_BLE_SCAN_COND_CLEAR) { BTM_TRACE_ERROR("Illegal param for add/delete UUID filter"); return st; } /* need to add address filter first, if adding per bda UUID filter without address filter */ if (BTM_BLE_SCAN_COND_ADD == action && NULL != p_uuid_cond && - p_uuid_cond->p_target_addr && - btm_ble_find_addr_filter_counter(p_uuid_cond->p_target_addr) == NULL) - { + p_uuid_cond->p_target_addr && + btm_ble_find_addr_filter_counter(p_uuid_cond->p_target_addr) == NULL) { UINT8_TO_STREAM(p, BTM_BLE_META_PF_ADDR); UINT8_TO_STREAM(p, action); @@ -834,10 +796,9 @@ tBTM_STATUS btm_ble_update_uuid_filter(tBTM_BLE_SCAN_COND_OP action, /* send address filter */ if ((st = BTM_VendorSpecificCommand (HCI_BLE_ADV_FILTER_OCF, - (UINT8)(BTM_BLE_ADV_FILT_META_HDR_LENGTH + BTM_BLE_META_ADDR_LEN), - param, - btm_ble_scan_pf_cmpl_cback)) == BTM_NO_RESOURCES) - { + (UINT8)(BTM_BLE_ADV_FILT_META_HDR_LENGTH + BTM_BLE_META_ADDR_LEN), + param, + btm_ble_scan_pf_cmpl_cback)) == BTM_NO_RESOURCES) { BTM_TRACE_ERROR("Update Address filter into controller failed."); return st; } @@ -854,50 +815,34 @@ tBTM_STATUS btm_ble_update_uuid_filter(tBTM_BLE_SCAN_COND_OP action, UINT8_TO_STREAM(p, filt_index); if ((BTM_BLE_SCAN_COND_ADD == action || - BTM_BLE_SCAN_COND_DELETE == action) && - NULL != p_uuid_cond) - { - if (p_uuid_cond->uuid.len == LEN_UUID_16) - { + BTM_BLE_SCAN_COND_DELETE == action) && + NULL != p_uuid_cond) { + if (p_uuid_cond->uuid.len == LEN_UUID_16) { UINT16_TO_STREAM(p, p_uuid_cond->uuid.uu.uuid16); len += LEN_UUID_16; - } - else if (p_uuid_cond->uuid.len == LEN_UUID_32)/*4 bytes */ - { + } else if (p_uuid_cond->uuid.len == LEN_UUID_32) { /*4 bytes */ UINT32_TO_STREAM(p, p_uuid_cond->uuid.uu.uuid32); len += LEN_UUID_32; - } - else if (p_uuid_cond->uuid.len == LEN_UUID_128) - { + } else if (p_uuid_cond->uuid.len == LEN_UUID_128) { ARRAY_TO_STREAM (p, p_uuid_cond->uuid.uu.uuid128, LEN_UUID_128); len += LEN_UUID_128; - } - else - { + } else { BTM_TRACE_ERROR("illegal UUID length: %d", p_uuid_cond->uuid.len); return BTM_ILLEGAL_VALUE; } - if (NULL != p_uuid_cond->p_uuid_mask) - { - if (p_uuid_cond->uuid.len == LEN_UUID_16) - { + if (NULL != p_uuid_cond->p_uuid_mask) { + if (p_uuid_cond->uuid.len == LEN_UUID_16) { UINT16_TO_STREAM(p, p_uuid_cond->p_uuid_mask->uuid16_mask); len += LEN_UUID_16; - } - else if (p_uuid_cond->uuid.len == LEN_UUID_32)/*4 bytes */ - { + } else if (p_uuid_cond->uuid.len == LEN_UUID_32) { /*4 bytes */ UINT32_TO_STREAM(p, p_uuid_cond->p_uuid_mask->uuid32_mask); len += LEN_UUID_32; - } - else if (p_uuid_cond->uuid.len == LEN_UUID_128) - { + } else if (p_uuid_cond->uuid.len == LEN_UUID_128) { ARRAY_TO_STREAM (p, p_uuid_cond->p_uuid_mask->uuid128_mask, LEN_UUID_128); len += LEN_UUID_128; } - } - else - { + } else { memset(p, 0xff, p_uuid_cond->uuid.len); len += p_uuid_cond->uuid.len; } @@ -907,18 +852,16 @@ tBTM_STATUS btm_ble_update_uuid_filter(tBTM_BLE_SCAN_COND_OP action, /* send UUID filter update */ if ((st = BTM_VendorSpecificCommand (HCI_BLE_ADV_FILTER_OCF, - len, - param, - btm_ble_scan_pf_cmpl_cback)) != BTM_NO_RESOURCES) - { + len, + param, + btm_ble_scan_pf_cmpl_cback)) != BTM_NO_RESOURCES) { if (p_uuid_cond && p_uuid_cond->p_target_addr) memcpy(&btm_ble_adv_filt_cb.cur_filter_target, p_uuid_cond->p_target_addr, - sizeof(tBLE_BD_ADDR)); - else + sizeof(tBLE_BD_ADDR)); + else { memset(&btm_ble_adv_filt_cb.cur_filter_target, 0, sizeof(tBLE_BD_ADDR)); - } - else - { + } + } else { BTM_TRACE_ERROR("UUID filter udpating failed"); } @@ -938,19 +881,18 @@ tBTM_STATUS btm_ble_update_uuid_filter(tBTM_BLE_SCAN_COND_OP action, ** *******************************************************************************/ tBTM_STATUS btm_ble_clear_scan_pf_filter(tBTM_BLE_SCAN_COND_OP action, - tBTM_BLE_PF_FILT_INDEX filt_index, - tBTM_BLE_PF_COND_PARAM *p_cond, - tBTM_BLE_PF_CFG_CBACK *p_cmpl_cback, - tBTM_BLE_FILT_CB_EVT cb_evt, - tBTM_BLE_REF_VALUE ref_value) + tBTM_BLE_PF_FILT_INDEX filt_index, + tBTM_BLE_PF_COND_PARAM *p_cond, + tBTM_BLE_PF_CFG_CBACK *p_cmpl_cback, + tBTM_BLE_FILT_CB_EVT cb_evt, + tBTM_BLE_REF_VALUE ref_value) { - tBLE_BD_ADDR *p_target = (p_cond == NULL)? NULL : &p_cond->target_addr; + tBLE_BD_ADDR *p_target = (p_cond == NULL) ? NULL : &p_cond->target_addr; tBTM_BLE_PF_COUNT *p_bda_filter; tBTM_STATUS st = BTM_WRONG_MODE; UINT8 param[20], *p; - if (BTM_BLE_SCAN_COND_CLEAR != action) - { + if (BTM_BLE_SCAN_COND_CLEAR != action) { BTM_TRACE_ERROR("unable to perform action:%d for generic adv filter type", action); return BTM_ILLEGAL_VALUE; } @@ -961,50 +903,49 @@ tBTM_STATUS btm_ble_clear_scan_pf_filter(tBTM_BLE_SCAN_COND_OP action, p_bda_filter = btm_ble_find_addr_filter_counter(p_target); if (NULL == p_bda_filter || - /* not a generic filter */ - (p_target != NULL && p_bda_filter)) - { + /* not a generic filter */ + (p_target != NULL && p_bda_filter)) { BTM_TRACE_ERROR("Error: Can not clear filter, No PF filter has been configured!"); return st; } /* clear the general filter entry */ - if (NULL == p_target) - { + if (NULL == p_target) { /* clear manufactuer data filter */ st = btm_ble_update_pf_manu_data(BTM_BLE_SCAN_COND_CLEAR, filt_index, NULL, - BTM_BLE_PF_MANU_DATA, cb_evt, ref_value); - if(BTM_CMD_STARTED == st) - btm_ble_advfilt_enq_op_q(action, BTM_BLE_META_PF_MANU_DATA, cb_evt, - ref_value, NULL, NULL); + BTM_BLE_PF_MANU_DATA, cb_evt, ref_value); + if (BTM_CMD_STARTED == st) + btm_ble_advfilt_enq_op_q(action, BTM_BLE_META_PF_MANU_DATA, cb_evt, + ref_value, NULL, NULL); /* clear local name filter */ st = btm_ble_update_pf_local_name(BTM_BLE_SCAN_COND_CLEAR, filt_index, NULL); - if(BTM_CMD_STARTED == st) - btm_ble_advfilt_enq_op_q(action, BTM_BLE_META_PF_LOCAL_NAME, cb_evt, - ref_value, NULL, NULL); + if (BTM_CMD_STARTED == st) + btm_ble_advfilt_enq_op_q(action, BTM_BLE_META_PF_LOCAL_NAME, cb_evt, + ref_value, NULL, NULL); /* update the counter for service data */ st = btm_ble_update_srvc_data_change(BTM_BLE_SCAN_COND_CLEAR, filt_index, NULL); /* clear UUID filter */ st = btm_ble_update_uuid_filter(BTM_BLE_SCAN_COND_CLEAR, filt_index, - BTM_BLE_PF_SRVC_UUID, NULL, cb_evt, ref_value); - if(BTM_CMD_STARTED == st) - btm_ble_advfilt_enq_op_q(action, BTM_BLE_META_PF_UUID, cb_evt, ref_value, NULL, NULL); + BTM_BLE_PF_SRVC_UUID, NULL, cb_evt, ref_value); + if (BTM_CMD_STARTED == st) { + btm_ble_advfilt_enq_op_q(action, BTM_BLE_META_PF_UUID, cb_evt, ref_value, NULL, NULL); + } st = btm_ble_update_uuid_filter(BTM_BLE_SCAN_COND_CLEAR, filt_index, - BTM_BLE_PF_SRVC_SOL_UUID, NULL, cb_evt, ref_value); - if(BTM_CMD_STARTED == st) - btm_ble_advfilt_enq_op_q(action, BTM_BLE_META_PF_SOL_UUID, cb_evt, - ref_value, NULL, NULL); + BTM_BLE_PF_SRVC_SOL_UUID, NULL, cb_evt, ref_value); + if (BTM_CMD_STARTED == st) + btm_ble_advfilt_enq_op_q(action, BTM_BLE_META_PF_SOL_UUID, cb_evt, + ref_value, NULL, NULL); /* clear service data filter */ st = btm_ble_update_pf_manu_data(BTM_BLE_SCAN_COND_CLEAR, filt_index, NULL, - BTM_BLE_PF_SRVC_DATA_PATTERN, cb_evt, ref_value); - if(BTM_CMD_STARTED == st) - btm_ble_advfilt_enq_op_q(action, BTM_BLE_META_PF_SRVC_DATA, cb_evt, - ref_value, NULL, NULL); + BTM_BLE_PF_SRVC_DATA_PATTERN, cb_evt, ref_value); + if (BTM_CMD_STARTED == st) + btm_ble_advfilt_enq_op_q(action, BTM_BLE_META_PF_SRVC_DATA, cb_evt, + ref_value, NULL, NULL); } /* select feature based on control block settings */ @@ -1020,15 +961,15 @@ tBTM_STATUS btm_ble_clear_scan_pf_filter(tBTM_BLE_SCAN_COND_OP action, UINT8_TO_STREAM(p, BTM_BLE_PF_LOGIC_OR); if ((st = BTM_VendorSpecificCommand (HCI_BLE_ADV_FILTER_OCF, - (UINT8)(BTM_BLE_ADV_FILT_META_HDR_LENGTH + BTM_BLE_PF_FEAT_SEL_LEN), - param, - btm_ble_scan_pf_cmpl_cback)) - != BTM_NO_RESOURCES) - { - if (p_target) + (UINT8)(BTM_BLE_ADV_FILT_META_HDR_LENGTH + BTM_BLE_PF_FEAT_SEL_LEN), + param, + btm_ble_scan_pf_cmpl_cback)) + != BTM_NO_RESOURCES) { + if (p_target) { memcpy(&btm_ble_adv_filt_cb.cur_filter_target, p_target, sizeof(tBLE_BD_ADDR)); - else + } else { memset(&btm_ble_adv_filt_cb.cur_filter_target, 0, sizeof(tBLE_BD_ADDR)); + } } return st; } @@ -1051,9 +992,9 @@ tBTM_STATUS btm_ble_clear_scan_pf_filter(tBTM_BLE_SCAN_COND_OP action, ** *******************************************************************************/ tBTM_STATUS BTM_BleAdvFilterParamSetup(int action, tBTM_BLE_PF_FILT_INDEX filt_index, - tBTM_BLE_PF_FILT_PARAMS *p_filt_params, - tBLE_BD_ADDR *p_target, tBTM_BLE_PF_PARAM_CBACK *p_cmpl_cback, - tBTM_BLE_REF_VALUE ref_value) + tBTM_BLE_PF_FILT_PARAMS *p_filt_params, + tBLE_BD_ADDR *p_target, tBTM_BLE_PF_PARAM_CBACK *p_cmpl_cback, + tBTM_BLE_REF_VALUE ref_value) { tBTM_STATUS st = BTM_WRONG_MODE; tBTM_BLE_PF_COUNT *p_bda_filter = NULL; @@ -1061,20 +1002,19 @@ tBTM_STATUS BTM_BleAdvFilterParamSetup(int action, tBTM_BLE_PF_FILT_INDEX filt_i BTM_BLE_ADV_FILT_TRACK_NUM; UINT8 param[len], *p; - if (BTM_SUCCESS != btm_ble_obtain_vsc_details()) + if (BTM_SUCCESS != btm_ble_obtain_vsc_details()) { return st; + } p = param; memset(param, 0, len); BTM_TRACE_EVENT (" BTM_BleAdvFilterParamSetup"); - if (BTM_BLE_SCAN_COND_ADD == action) - { + if (BTM_BLE_SCAN_COND_ADD == action) { p_bda_filter = btm_ble_find_addr_filter_counter(p_target); - if (NULL == p_bda_filter) - { - BTM_TRACE_ERROR("BD Address not found!"); - return st; + if (NULL == p_bda_filter) { + BTM_TRACE_ERROR("BD Address not found!"); + return st; } BTM_TRACE_DEBUG("BTM_BleAdvFilterParamSetup : Feat mask:%d", p_filt_params->feat_seln); @@ -1096,8 +1036,7 @@ tBTM_STATUS BTM_BleAdvFilterParamSetup(int action, tBTM_BLE_PF_FILT_INDEX filt_i /* set delivery mode */ UINT8_TO_STREAM(p, p_filt_params->dely_mode); - if (0x01 == p_filt_params->dely_mode) - { + if (0x01 == p_filt_params->dely_mode) { /* set onfound timeout */ UINT16_TO_STREAM(p, p_filt_params->found_timeout); /* set onfound timeout count*/ @@ -1107,30 +1046,27 @@ tBTM_STATUS BTM_BleAdvFilterParamSetup(int action, tBTM_BLE_PF_FILT_INDEX filt_i /* set onlost timeout */ UINT16_TO_STREAM(p, p_filt_params->lost_timeout); /* set num_of_track_entries for firmware greater than L-release version */ - if (cmn_ble_vsc_cb.version_supported > BTM_VSC_CHIP_CAPABILITY_L_VERSION) + if (cmn_ble_vsc_cb.version_supported > BTM_VSC_CHIP_CAPABILITY_L_VERSION) { UINT16_TO_STREAM(p, p_filt_params->num_of_tracking_entries); + } } - if (cmn_ble_vsc_cb.version_supported == BTM_VSC_CHIP_CAPABILITY_L_VERSION) + if (cmn_ble_vsc_cb.version_supported == BTM_VSC_CHIP_CAPABILITY_L_VERSION) { len = BTM_BLE_ADV_FILT_META_HDR_LENGTH + BTM_BLE_ADV_FILT_FEAT_SELN_LEN; - else + } else len = BTM_BLE_ADV_FILT_META_HDR_LENGTH + BTM_BLE_ADV_FILT_FEAT_SELN_LEN + BTM_BLE_ADV_FILT_TRACK_NUM; if ((st = BTM_VendorSpecificCommand (HCI_BLE_ADV_FILTER_OCF, - (UINT8)len, - param, - btm_ble_scan_pf_cmpl_cback)) - == BTM_NO_RESOURCES) - { + (UINT8)len, + param, + btm_ble_scan_pf_cmpl_cback)) + == BTM_NO_RESOURCES) { return st; } btm_ble_advfilt_enq_op_q(action, BTM_BLE_META_PF_FEAT_SEL, BTM_BLE_FILT_ADV_PARAM, ref_value, NULL, p_cmpl_cback); - } - else - if (BTM_BLE_SCAN_COND_DELETE == action) - { + } else if (BTM_BLE_SCAN_COND_DELETE == action) { /* select feature based on control block settings */ UINT8_TO_STREAM(p, BTM_BLE_META_PF_FEAT_SEL); UINT8_TO_STREAM(p, BTM_BLE_SCAN_COND_DELETE); @@ -1138,19 +1074,15 @@ tBTM_STATUS BTM_BleAdvFilterParamSetup(int action, tBTM_BLE_PF_FILT_INDEX filt_i UINT8_TO_STREAM(p, filt_index); if ((st = BTM_VendorSpecificCommand (HCI_BLE_ADV_FILTER_OCF, - (UINT8)(BTM_BLE_ADV_FILT_META_HDR_LENGTH), - param, - btm_ble_scan_pf_cmpl_cback)) - == BTM_NO_RESOURCES) - { + (UINT8)(BTM_BLE_ADV_FILT_META_HDR_LENGTH), + param, + btm_ble_scan_pf_cmpl_cback)) + == BTM_NO_RESOURCES) { return st; } btm_ble_advfilt_enq_op_q(action, BTM_BLE_META_PF_FEAT_SEL, BTM_BLE_FILT_ADV_PARAM, ref_value, NULL, p_cmpl_cback); - } - else - if (BTM_BLE_SCAN_COND_CLEAR == action) - { + } else if (BTM_BLE_SCAN_COND_CLEAR == action) { /* Deallocate all filters here */ btm_ble_dealloc_addr_filter_counter(NULL, BTM_BLE_PF_TYPE_ALL); @@ -1159,11 +1091,10 @@ tBTM_STATUS BTM_BleAdvFilterParamSetup(int action, tBTM_BLE_PF_FILT_INDEX filt_i UINT8_TO_STREAM(p, BTM_BLE_SCAN_COND_CLEAR); if ((st = BTM_VendorSpecificCommand (HCI_BLE_ADV_FILTER_OCF, - (UINT8)(BTM_BLE_ADV_FILT_META_HDR_LENGTH-1), - param, - btm_ble_scan_pf_cmpl_cback)) - == BTM_NO_RESOURCES) - { + (UINT8)(BTM_BLE_ADV_FILT_META_HDR_LENGTH - 1), + param, + btm_ble_scan_pf_cmpl_cback)) + == BTM_NO_RESOURCES) { return st; } btm_ble_advfilt_enq_op_q(action, BTM_BLE_META_PF_FEAT_SEL, BTM_BLE_FILT_ADV_PARAM, @@ -1187,14 +1118,15 @@ tBTM_STATUS BTM_BleAdvFilterParamSetup(int action, tBTM_BLE_PF_FILT_INDEX filt_i ** *******************************************************************************/ tBTM_STATUS BTM_BleEnableDisableFilterFeature(UINT8 enable, - tBTM_BLE_PF_STATUS_CBACK *p_stat_cback, - tBTM_BLE_REF_VALUE ref_value) + tBTM_BLE_PF_STATUS_CBACK *p_stat_cback, + tBTM_BLE_REF_VALUE ref_value) { UINT8 param[20], *p; tBTM_STATUS st = BTM_WRONG_MODE; - if (BTM_SUCCESS != btm_ble_obtain_vsc_details()) - return st; + if (BTM_SUCCESS != btm_ble_obtain_vsc_details()) { + return st; + } p = param; memset(param, 0, 20); @@ -1206,12 +1138,11 @@ tBTM_STATUS BTM_BleEnableDisableFilterFeature(UINT8 enable, UINT8_TO_STREAM(p, enable); if ((st = BTM_VendorSpecificCommand (HCI_BLE_ADV_FILTER_OCF, - BTM_BLE_PCF_ENABLE_LEN, param, - btm_ble_scan_pf_cmpl_cback)) == BTM_CMD_STARTED) - { - btm_ble_adv_filt_cb.p_filt_stat_cback = p_stat_cback; - btm_ble_advfilt_enq_op_q(enable, BTM_BLE_META_PF_ENABLE, BTM_BLE_FILT_ENABLE_DISABLE, - ref_value, NULL, NULL); + BTM_BLE_PCF_ENABLE_LEN, param, + btm_ble_scan_pf_cmpl_cback)) == BTM_CMD_STARTED) { + btm_ble_adv_filt_cb.p_filt_stat_cback = p_stat_cback; + btm_ble_advfilt_enq_op_q(enable, BTM_BLE_META_PF_ENABLE, BTM_BLE_FILT_ENABLE_DISABLE, + ref_value, NULL, NULL); } return st; } @@ -1243,60 +1174,56 @@ tBTM_STATUS BTM_BleCfgFilterCondition(tBTM_BLE_SCAN_COND_OP action, tBTM_STATUS st = BTM_ILLEGAL_VALUE; UINT8 ocf = 0; BTM_TRACE_EVENT (" BTM_BleCfgFilterCondition action:%d, cond_type:%d, index:%d", action, - cond_type, filt_index); + cond_type, filt_index); - if (BTM_SUCCESS != btm_ble_obtain_vsc_details()) + if (BTM_SUCCESS != btm_ble_obtain_vsc_details()) { return st; - - switch (cond_type) - { - /* write service data filter */ - case BTM_BLE_PF_SRVC_DATA_PATTERN: - /* write manufacturer data filter */ - case BTM_BLE_PF_MANU_DATA: - st = btm_ble_update_pf_manu_data(action, filt_index, p_cond, cond_type, 0, ref_value); - break; - - /* write local name filter */ - case BTM_BLE_PF_LOCAL_NAME: - st = btm_ble_update_pf_local_name(action, filt_index, p_cond); - break; - - /* filter on advertiser address */ - case BTM_BLE_PF_ADDR_FILTER: - st = btm_ble_update_addr_filter(action, filt_index, p_cond); - break; - - /* filter on service/solicitated UUID */ - case BTM_BLE_PF_SRVC_UUID: - case BTM_BLE_PF_SRVC_SOL_UUID: - st = btm_ble_update_uuid_filter(action, filt_index, cond_type, p_cond, 0, ref_value); - break; - - case BTM_BLE_PF_SRVC_DATA: - st = btm_ble_update_srvc_data_change(action, filt_index, p_cond); - break; - - case BTM_BLE_PF_TYPE_ALL: /* only used to clear filter */ - st = btm_ble_clear_scan_pf_filter(action, filt_index, p_cond, p_cmpl_cback, - 0, ref_value); - break; - - default: - BTM_TRACE_WARNING("condition type [%d] not supported currently.", cond_type); - break; } - if(BTM_CMD_STARTED == st && cond_type != BTM_BLE_PF_TYPE_ALL) - { - ocf = btm_ble_condtype_to_ocf(cond_type); - btm_ble_advfilt_enq_op_q(action, ocf, BTM_BLE_FILT_CFG, ref_value, p_cmpl_cback, NULL); + switch (cond_type) { + /* write service data filter */ + case BTM_BLE_PF_SRVC_DATA_PATTERN: + /* write manufacturer data filter */ + case BTM_BLE_PF_MANU_DATA: + st = btm_ble_update_pf_manu_data(action, filt_index, p_cond, cond_type, 0, ref_value); + break; + + /* write local name filter */ + case BTM_BLE_PF_LOCAL_NAME: + st = btm_ble_update_pf_local_name(action, filt_index, p_cond); + break; + + /* filter on advertiser address */ + case BTM_BLE_PF_ADDR_FILTER: + st = btm_ble_update_addr_filter(action, filt_index, p_cond); + break; + + /* filter on service/solicitated UUID */ + case BTM_BLE_PF_SRVC_UUID: + case BTM_BLE_PF_SRVC_SOL_UUID: + st = btm_ble_update_uuid_filter(action, filt_index, cond_type, p_cond, 0, ref_value); + break; + + case BTM_BLE_PF_SRVC_DATA: + st = btm_ble_update_srvc_data_change(action, filt_index, p_cond); + break; + + case BTM_BLE_PF_TYPE_ALL: /* only used to clear filter */ + st = btm_ble_clear_scan_pf_filter(action, filt_index, p_cond, p_cmpl_cback, + 0, ref_value); + break; + + default: + BTM_TRACE_WARNING("condition type [%d] not supported currently.", cond_type); + break; } - else - if(BTM_CMD_STARTED == st && BTM_BLE_PF_TYPE_ALL == cond_type) - { - btm_ble_advfilt_enq_op_q(action, BTM_BLE_META_PF_FEAT_SEL, BTM_BLE_FILT_CFG, - ref_value, p_cmpl_cback, NULL); + + if (BTM_CMD_STARTED == st && cond_type != BTM_BLE_PF_TYPE_ALL) { + ocf = btm_ble_condtype_to_ocf(cond_type); + btm_ble_advfilt_enq_op_q(action, ocf, BTM_BLE_FILT_CFG, ref_value, p_cmpl_cback, NULL); + } else if (BTM_CMD_STARTED == st && BTM_BLE_PF_TYPE_ALL == cond_type) { + btm_ble_advfilt_enq_op_q(action, BTM_BLE_META_PF_FEAT_SEL, BTM_BLE_FILT_CFG, + ref_value, p_cmpl_cback, NULL); } return st; } @@ -1315,13 +1242,13 @@ tBTM_STATUS BTM_BleCfgFilterCondition(tBTM_BLE_SCAN_COND_OP action, void btm_ble_adv_filter_init(void) { memset(&btm_ble_adv_filt_cb, 0, sizeof(tBTM_BLE_MULTI_ADV_CB)); - if (BTM_SUCCESS != btm_ble_obtain_vsc_details()) - return; + if (BTM_SUCCESS != btm_ble_obtain_vsc_details()) { + return; + } - if (cmn_ble_vsc_cb.max_filter > 0) - { + if (cmn_ble_vsc_cb.max_filter > 0) { btm_ble_adv_filt_cb.p_addr_filter_count = - (tBTM_BLE_PF_COUNT*) GKI_getbuf( sizeof(tBTM_BLE_PF_COUNT) * cmn_ble_vsc_cb.max_filter); + (tBTM_BLE_PF_COUNT *) GKI_getbuf( sizeof(tBTM_BLE_PF_COUNT) * cmn_ble_vsc_cb.max_filter); } } @@ -1338,8 +1265,9 @@ void btm_ble_adv_filter_init(void) *******************************************************************************/ void btm_ble_adv_filter_cleanup(void) { - if (btm_ble_adv_filt_cb.p_addr_filter_count) + if (btm_ble_adv_filt_cb.p_addr_filter_count) { GKI_freebuf (btm_ble_adv_filt_cb.p_addr_filter_count); + } } #endif diff --git a/components/bt/bluedroid/stack/btm/btm_ble_batchscan.c b/components/bt/bluedroid/stack/btm/btm_ble_batchscan.c old mode 100755 new mode 100644 index 22d01c6b4d..d64373664e --- a/components/bt/bluedroid/stack/btm/btm_ble_batchscan.c +++ b/components/bt/bluedroid/stack/btm/btm_ble_batchscan.c @@ -68,22 +68,20 @@ void btm_ble_batchscan_filter_track_adv_vse_cback(UINT8 len, UINT8 *p) BTM_TRACE_EVENT("btm_ble_batchscan_filter_track_adv_vse_cback called with event:%x", sub_event); if (HCI_VSE_SUBCODE_BLE_THRESHOLD_SUB_EVT == sub_event && - NULL != ble_batchscan_cb.p_thres_cback) - { + NULL != ble_batchscan_cb.p_thres_cback) { ble_batchscan_cb.p_thres_cback(ble_batchscan_cb.ref_value); return; } - if (HCI_VSE_SUBCODE_BLE_TRACKING_SUB_EVT == sub_event && NULL != ble_advtrack_cb.p_track_cback) - { - if (len < 10) + if (HCI_VSE_SUBCODE_BLE_TRACKING_SUB_EVT == sub_event && NULL != ble_advtrack_cb.p_track_cback) { + if (len < 10) { return; + } memset(&adv_data, 0 , sizeof(tBTM_BLE_TRACK_ADV_DATA)); BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb); adv_data.client_if = (UINT8)ble_advtrack_cb.ref_value; - if (cmn_ble_vsc_cb.version_supported > BTM_VSC_CHIP_CAPABILITY_L_VERSION) - { + if (cmn_ble_vsc_cb.version_supported > BTM_VSC_CHIP_CAPABILITY_L_VERSION) { STREAM_TO_UINT8(adv_data.filt_index, p); STREAM_TO_UINT8(adv_data.advertiser_state, p); STREAM_TO_UINT8(adv_data.advertiser_info_present, p); @@ -91,29 +89,24 @@ void btm_ble_batchscan_filter_track_adv_vse_cback(UINT8 len, UINT8 *p) STREAM_TO_UINT8(adv_data.addr_type, p); /* Extract the adv info details */ - if (ADV_INFO_PRESENT == adv_data.advertiser_info_present) - { + if (ADV_INFO_PRESENT == adv_data.advertiser_info_present) { STREAM_TO_UINT8(adv_data.tx_power, p); STREAM_TO_UINT8(adv_data.rssi_value, p); STREAM_TO_UINT16(adv_data.time_stamp, p); STREAM_TO_UINT8(adv_data.adv_pkt_len, p); - if (adv_data.adv_pkt_len > 0) - { + if (adv_data.adv_pkt_len > 0) { adv_data.p_adv_pkt_data = GKI_getbuf(adv_data.adv_pkt_len); memcpy(adv_data.p_adv_pkt_data, p, adv_data.adv_pkt_len); } STREAM_TO_UINT8(adv_data.scan_rsp_len, p); - if (adv_data.scan_rsp_len > 0) - { + if (adv_data.scan_rsp_len > 0) { adv_data.p_scan_rsp_data = GKI_getbuf(adv_data.scan_rsp_len); memcpy(adv_data.p_scan_rsp_data, p, adv_data.scan_rsp_len); } } - } - else - { + } else { /* Based on L-release version */ STREAM_TO_UINT8(adv_data.filt_index, p); STREAM_TO_UINT8(adv_data.addr_type, p); @@ -122,7 +115,7 @@ void btm_ble_batchscan_filter_track_adv_vse_cback(UINT8 len, UINT8 *p) } BTM_TRACE_EVENT("track_adv_vse_cback called: %d, %d, %d", adv_data.filt_index, - adv_data.addr_type, adv_data.advertiser_state); + adv_data.addr_type, adv_data.advertiser_state); ble_advtrack_cb.p_track_cback(&adv_data); return; } @@ -139,17 +132,17 @@ void btm_ble_batchscan_filter_track_adv_vse_cback(UINT8 len, UINT8 *p) ** *******************************************************************************/ void btm_ble_batchscan_enq_op_q(UINT8 opcode, tBTM_BLE_BATCH_SCAN_STATE cur_state, - UINT8 cb_evt, tBTM_BLE_REF_VALUE ref_value) + UINT8 cb_evt, tBTM_BLE_REF_VALUE ref_value) { - ble_batchscan_cb.op_q.sub_code[ble_batchscan_cb.op_q.next_idx] = (opcode |(cb_evt << 4)); + ble_batchscan_cb.op_q.sub_code[ble_batchscan_cb.op_q.next_idx] = (opcode | (cb_evt << 4)); ble_batchscan_cb.op_q.cur_state[ble_batchscan_cb.op_q.next_idx] = cur_state; ble_batchscan_cb.op_q.ref_value[ble_batchscan_cb.op_q.next_idx] = ref_value; BTM_TRACE_DEBUG("btm_ble_batchscan_enq_op_q: subcode:%d, Cur_state:%d, ref_value:%d", - ble_batchscan_cb.op_q.sub_code[ble_batchscan_cb.op_q.next_idx], - ble_batchscan_cb.op_q.cur_state[ble_batchscan_cb.op_q.next_idx], - ble_batchscan_cb.op_q.ref_value[ble_batchscan_cb.op_q.next_idx]); + ble_batchscan_cb.op_q.sub_code[ble_batchscan_cb.op_q.next_idx], + ble_batchscan_cb.op_q.cur_state[ble_batchscan_cb.op_q.next_idx], + ble_batchscan_cb.op_q.ref_value[ble_batchscan_cb.op_q.next_idx]); ble_batchscan_cb.op_q.next_idx = (ble_batchscan_cb.op_q.next_idx + 1) - % BTM_BLE_BATCH_SCAN_MAX; + % BTM_BLE_BATCH_SCAN_MAX; } /******************************************************************************* @@ -165,10 +158,10 @@ void btm_ble_batchscan_enq_op_q(UINT8 opcode, tBTM_BLE_BATCH_SCAN_STATE cur_stat tBTM_STATUS btm_ble_batchscan_enq_rep_q(UINT8 report_format, tBTM_BLE_REF_VALUE ref_value) { int i = 0; - for (i = 0; i < BTM_BLE_BATCH_REP_MAIN_Q_SIZE; i++) - { - if (report_format == ble_batchscan_cb.main_rep_q.rep_mode[i]) + for (i = 0; i < BTM_BLE_BATCH_REP_MAIN_Q_SIZE; i++) { + if (report_format == ble_batchscan_cb.main_rep_q.rep_mode[i]) { return BTM_ILLEGAL_VALUE; + } } ble_batchscan_cb.main_rep_q.rep_mode[ble_batchscan_cb.main_rep_q.next_idx] = report_format; @@ -177,10 +170,10 @@ tBTM_STATUS btm_ble_batchscan_enq_rep_q(UINT8 report_format, tBTM_BLE_REF_VALUE ble_batchscan_cb.main_rep_q.data_len[ble_batchscan_cb.main_rep_q.next_idx] = 0; ble_batchscan_cb.main_rep_q.p_data[ble_batchscan_cb.main_rep_q.next_idx] = NULL; BTM_TRACE_DEBUG("btm_ble_batchscan_enq_rep_q: index:%d, rep %d, ref %d", - ble_batchscan_cb.main_rep_q.next_idx, report_format, ref_value); + ble_batchscan_cb.main_rep_q.next_idx, report_format, ref_value); ble_batchscan_cb.main_rep_q.next_idx = (ble_batchscan_cb.main_rep_q.next_idx + 1) - % BTM_BLE_BATCH_REP_MAIN_Q_SIZE; + % BTM_BLE_BATCH_REP_MAIN_Q_SIZE; return BTM_SUCCESS; } @@ -199,31 +192,27 @@ void btm_ble_batchscan_enq_rep_data(UINT8 report_format, UINT8 num_records, UINT int index = 0, len = 0; UINT8 *p_orig_data = NULL, *p_app_data = NULL; - for (index = 0; index < BTM_BLE_BATCH_REP_MAIN_Q_SIZE; index++) - { - if (report_format == ble_batchscan_cb.main_rep_q.rep_mode[index]) + for (index = 0; index < BTM_BLE_BATCH_REP_MAIN_Q_SIZE; index++) { + if (report_format == ble_batchscan_cb.main_rep_q.rep_mode[index]) { break; + } } BTM_TRACE_DEBUG("btm_ble_batchscan_enq_rep_data: index:%d, rep %d, num %d len : %d", - index, report_format, num_records, data_len); + index, report_format, num_records, data_len); - if (index < BTM_BLE_BATCH_REP_MAIN_Q_SIZE && data_len > 0 && num_records > 0) - { + if (index < BTM_BLE_BATCH_REP_MAIN_Q_SIZE && data_len > 0 && num_records > 0) { len = ble_batchscan_cb.main_rep_q.data_len[index]; p_orig_data = ble_batchscan_cb.main_rep_q.p_data[index]; - if (NULL != p_orig_data) - { + if (NULL != p_orig_data) { p_app_data = GKI_getbuf(len + data_len); memcpy(p_app_data, p_orig_data, len); - memcpy(p_app_data+len, p_data, data_len); + memcpy(p_app_data + len, p_data, data_len); GKI_freebuf(p_orig_data); ble_batchscan_cb.main_rep_q.p_data[index] = p_app_data; ble_batchscan_cb.main_rep_q.num_records[index] += num_records; ble_batchscan_cb.main_rep_q.data_len[index] += data_len; - } - else - { + } else { p_app_data = GKI_getbuf(data_len); memcpy(p_app_data, p_data, data_len); ble_batchscan_cb.main_rep_q.p_data[index] = p_app_data; @@ -244,18 +233,17 @@ void btm_ble_batchscan_enq_rep_data(UINT8 report_format, UINT8 num_records, UINT ** *******************************************************************************/ void btm_ble_batchscan_deq_rep_data(UINT8 report_format, tBTM_BLE_REF_VALUE *p_ref_value, - UINT8 *p_num_records, UINT8 **p_data, UINT16 *p_data_len) + UINT8 *p_num_records, UINT8 **p_data, UINT16 *p_data_len) { int index = 0; - for (index = 0; index < BTM_BLE_BATCH_REP_MAIN_Q_SIZE; index++) - { - if (report_format == ble_batchscan_cb.main_rep_q.rep_mode[index]) + for (index = 0; index < BTM_BLE_BATCH_REP_MAIN_Q_SIZE; index++) { + if (report_format == ble_batchscan_cb.main_rep_q.rep_mode[index]) { break; + } } - if (BTM_BLE_BATCH_REP_MAIN_Q_SIZE == index) - { + if (BTM_BLE_BATCH_REP_MAIN_Q_SIZE == index) { BTM_TRACE_ERROR("btm_ble_batchscan_deq_rep_data: rep_format:%d not found", report_format); return; } @@ -272,10 +260,10 @@ void btm_ble_batchscan_deq_rep_data(UINT8 report_format, tBTM_BLE_REF_VALUE *p_r ble_batchscan_cb.main_rep_q.num_records[index] = 0; BTM_TRACE_DEBUG("btm_ble_batchscan_deq_rep_data: index:%d, rep %d, num %d, data_len %d", - index, report_format, *p_num_records, *p_data_len); + index, report_format, *p_num_records, *p_data_len); ble_batchscan_cb.main_rep_q.pending_idx = (ble_batchscan_cb.main_rep_q.pending_idx + 1) - % BTM_BLE_BATCH_SCAN_MAX; + % BTM_BLE_BATCH_SCAN_MAX; } /******************************************************************************* @@ -288,16 +276,16 @@ void btm_ble_batchscan_deq_rep_data(UINT8 report_format, tBTM_BLE_REF_VALUE *p_r ** Returns void ** *******************************************************************************/ -void btm_ble_batchscan_deq_op_q(UINT8 *p_opcode,tBTM_BLE_BATCH_SCAN_STATE *cur_state, - UINT8 *p_cb_evt, tBTM_BLE_REF_VALUE *p_ref) +void btm_ble_batchscan_deq_op_q(UINT8 *p_opcode, tBTM_BLE_BATCH_SCAN_STATE *cur_state, + UINT8 *p_cb_evt, tBTM_BLE_REF_VALUE *p_ref) { *p_cb_evt = (ble_batchscan_cb.op_q.sub_code[ble_batchscan_cb.op_q.pending_idx] >> 4); *p_opcode = (ble_batchscan_cb.op_q.sub_code[ble_batchscan_cb.op_q.pending_idx] - & BTM_BLE_BATCH_SCAN_SUBCODE_MASK); + & BTM_BLE_BATCH_SCAN_SUBCODE_MASK); *p_ref = ble_batchscan_cb.op_q.ref_value[ble_batchscan_cb.op_q.pending_idx]; *cur_state = (ble_batchscan_cb.op_q.cur_state[ble_batchscan_cb.op_q.pending_idx]); ble_batchscan_cb.op_q.pending_idx = (ble_batchscan_cb.op_q.pending_idx + 1) - % BTM_BLE_BATCH_SCAN_MAX; + % BTM_BLE_BATCH_SCAN_MAX; } /******************************************************************************* @@ -313,7 +301,7 @@ void btm_ble_batchscan_deq_op_q(UINT8 *p_opcode,tBTM_BLE_BATCH_SCAN_STATE *cur_s ** *******************************************************************************/ tBTM_STATUS btm_ble_read_batchscan_reports(tBTM_BLE_BATCH_SCAN_MODE scan_mode, - tBTM_BLE_REF_VALUE ref_value) + tBTM_BLE_REF_VALUE ref_value) { tBTM_STATUS status = BTM_NO_RESOURCES; UINT8 param[BTM_BLE_BATCH_SCAN_READ_RESULTS_LEN], *pp; @@ -325,15 +313,13 @@ tBTM_STATUS btm_ble_read_batchscan_reports(tBTM_BLE_BATCH_SCAN_MODE scan_mode, UINT8_TO_STREAM (pp, scan_mode); if ((status = BTM_VendorSpecificCommand (HCI_BLE_BATCH_SCAN_OCF, - BTM_BLE_BATCH_SCAN_READ_RESULTS_LEN, param, btm_ble_batchscan_vsc_cmpl_cback)) - != BTM_CMD_STARTED) - { + BTM_BLE_BATCH_SCAN_READ_RESULTS_LEN, param, btm_ble_batchscan_vsc_cmpl_cback)) + != BTM_CMD_STARTED) { BTM_TRACE_ERROR("btm_ble_read_batchscan_reports %d", status); return BTM_ILLEGAL_VALUE; } - if (BTM_CMD_STARTED == status) - { + if (BTM_CMD_STARTED == status) { /* The user needs to be provided scan read reports event */ btm_ble_batchscan_enq_op_q(BTM_BLE_BATCH_SCAN_READ_RESULTS, ble_batchscan_cb.cur_state, BTM_BLE_BATCH_SCAN_READ_REPTS_EVT, ref_value); @@ -366,8 +352,7 @@ void btm_ble_batchscan_vsc_cmpl_cback (tBTM_VSC_CMPL *p_params) tBTM_STATUS btm_status = 0; UINT8 *p_data = NULL; - if (len < 2) - { + if (len < 2) { BTM_TRACE_ERROR("wrong length for btm_ble_batch_scan_vsc_cmpl_cback"); btm_ble_batchscan_deq_op_q(&opcode, &cur_state, &cb_evt, &ref_value); return; @@ -379,108 +364,93 @@ void btm_ble_batchscan_vsc_cmpl_cback (tBTM_VSC_CMPL *p_params) btm_ble_batchscan_deq_op_q(&opcode, &cur_state, &cb_evt, &ref_value); BTM_TRACE_DEBUG("btm_ble_batchscan op_code = %02x state = %02x cb_evt = %02x,ref_value=%d", - opcode, cur_state, cb_evt, ref_value); + opcode, cur_state, cb_evt, ref_value); - if (opcode != subcode) - { - BTM_TRACE_ERROR("Got unexpected VSC cmpl, expected: %d got: %d",subcode,opcode); + if (opcode != subcode) { + BTM_TRACE_ERROR("Got unexpected VSC cmpl, expected: %d got: %d", subcode, opcode); return; } - switch (subcode) - { - case BTM_BLE_BATCH_SCAN_ENB_DISAB_CUST_FEATURE: - { - if (BTM_SUCCESS == status && BTM_BLE_SCAN_ENABLE_CALLED == cur_state) - ble_batchscan_cb.cur_state = BTM_BLE_SCAN_ENABLED_STATE; - else - if (BTM_BLE_SCAN_ENABLE_CALLED == cur_state) - { - BTM_TRACE_ERROR("SCAN_ENB_DISAB_CUST_FEATURE - Invalid state after enb"); - ble_batchscan_cb.cur_state = BTM_BLE_SCAN_INVALID_STATE; - } - - BTM_TRACE_DEBUG("BTM_BLE_BATCH_SCAN_ENB_DISAB_CUST_FEAT status = %d, state: %d,evt=%d", - status, ble_batchscan_cb.cur_state, cb_evt); - - if (cb_evt != 0 && NULL != ble_batchscan_cb.p_setup_cback) - ble_batchscan_cb.p_setup_cback(cb_evt, ref_value, status); - break; + switch (subcode) { + case BTM_BLE_BATCH_SCAN_ENB_DISAB_CUST_FEATURE: { + if (BTM_SUCCESS == status && BTM_BLE_SCAN_ENABLE_CALLED == cur_state) { + ble_batchscan_cb.cur_state = BTM_BLE_SCAN_ENABLED_STATE; + } else if (BTM_BLE_SCAN_ENABLE_CALLED == cur_state) { + BTM_TRACE_ERROR("SCAN_ENB_DISAB_CUST_FEATURE - Invalid state after enb"); + ble_batchscan_cb.cur_state = BTM_BLE_SCAN_INVALID_STATE; } - case BTM_BLE_BATCH_SCAN_SET_STORAGE_PARAM: - { - BTM_TRACE_DEBUG("BTM_BLE_BATCH_SCAN_SET_STORAGE_PARAM status = %d, evt=%d", - status, cb_evt); - if (cb_evt != 0 && NULL != ble_batchscan_cb.p_setup_cback) - ble_batchscan_cb.p_setup_cback(cb_evt, ref_value, status); - break; + BTM_TRACE_DEBUG("BTM_BLE_BATCH_SCAN_ENB_DISAB_CUST_FEAT status = %d, state: %d,evt=%d", + status, ble_batchscan_cb.cur_state, cb_evt); + + if (cb_evt != 0 && NULL != ble_batchscan_cb.p_setup_cback) { + ble_batchscan_cb.p_setup_cback(cb_evt, ref_value, status); } + break; + } - case BTM_BLE_BATCH_SCAN_SET_PARAMS: - { - BTM_TRACE_DEBUG("BTM_BLE_BATCH_SCAN_SET_PARAMS status = %d,evt=%d", status, cb_evt); + case BTM_BLE_BATCH_SCAN_SET_STORAGE_PARAM: { + BTM_TRACE_DEBUG("BTM_BLE_BATCH_SCAN_SET_STORAGE_PARAM status = %d, evt=%d", + status, cb_evt); + if (cb_evt != 0 && NULL != ble_batchscan_cb.p_setup_cback) { + ble_batchscan_cb.p_setup_cback(cb_evt, ref_value, status); + } + break; + } - if (BTM_BLE_SCAN_DISABLE_CALLED == cur_state) - { - if (BTM_SUCCESS == status) - { - ble_batchscan_cb.cur_state = BTM_BLE_SCAN_DISABLED_STATE; - } - else - { - BTM_TRACE_ERROR("BTM_BLE_BATCH_SCAN_SET_PARAMS - Invalid state after disabled"); - ble_batchscan_cb.cur_state = BTM_BLE_SCAN_INVALID_STATE; - } + case BTM_BLE_BATCH_SCAN_SET_PARAMS: { + BTM_TRACE_DEBUG("BTM_BLE_BATCH_SCAN_SET_PARAMS status = %d,evt=%d", status, cb_evt); + + if (BTM_BLE_SCAN_DISABLE_CALLED == cur_state) { + if (BTM_SUCCESS == status) { + ble_batchscan_cb.cur_state = BTM_BLE_SCAN_DISABLED_STATE; + } else { + BTM_TRACE_ERROR("BTM_BLE_BATCH_SCAN_SET_PARAMS - Invalid state after disabled"); + ble_batchscan_cb.cur_state = BTM_BLE_SCAN_INVALID_STATE; } - - if (cb_evt != 0 && NULL != ble_batchscan_cb.p_setup_cback) - ble_batchscan_cb.p_setup_cback(cb_evt, ref_value, status); - break; } - case BTM_BLE_BATCH_SCAN_READ_RESULTS: - { - if (cb_evt != 0 && NULL != ble_batchscan_cb.p_scan_rep_cback) - { - STREAM_TO_UINT8(report_format,p); - STREAM_TO_UINT8(num_records, p); - p = (uint8_t *)(p_params->p_param_buf + 4); - BTM_TRACE_DEBUG("BTM_BLE_BATCH_SCAN_READ_RESULTS status=%d,len=%d,rec=%d", - status, len-4, num_records); + if (cb_evt != 0 && NULL != ble_batchscan_cb.p_setup_cback) { + ble_batchscan_cb.p_setup_cback(cb_evt, ref_value, status); + } + break; + } - if (0 == num_records) - { - btm_ble_batchscan_deq_rep_data(report_format, &ref_value, &num_records, - &p_data, &data_len); - if (NULL != ble_batchscan_cb.p_scan_rep_cback) - ble_batchscan_cb.p_scan_rep_cback(ref_value,report_format, num_records, - data_len, p_data, status); - } - else - { - if ((len-4) > 0) - { - btm_ble_batchscan_enq_rep_data(report_format, num_records, p, len-4); - /* More records could be in the buffer and needs to be pulled out */ - btm_status = btm_ble_read_batchscan_reports(report_format, ref_value); - if (BTM_CMD_STARTED != btm_status) - { - btm_ble_batchscan_deq_rep_data(report_format, &ref_value, &num_records, - &p_data, &data_len); - /* Send whatever is available, in case of a command failure */ - if (NULL != ble_batchscan_cb.p_scan_rep_cback && NULL != p_data) - ble_batchscan_cb.p_scan_rep_cback(ref_value,report_format, - num_records, data_len, p_data, status); - } + case BTM_BLE_BATCH_SCAN_READ_RESULTS: { + if (cb_evt != 0 && NULL != ble_batchscan_cb.p_scan_rep_cback) { + STREAM_TO_UINT8(report_format, p); + STREAM_TO_UINT8(num_records, p); + p = (uint8_t *)(p_params->p_param_buf + 4); + BTM_TRACE_DEBUG("BTM_BLE_BATCH_SCAN_READ_RESULTS status=%d,len=%d,rec=%d", + status, len - 4, num_records); + + if (0 == num_records) { + btm_ble_batchscan_deq_rep_data(report_format, &ref_value, &num_records, + &p_data, &data_len); + if (NULL != ble_batchscan_cb.p_scan_rep_cback) + ble_batchscan_cb.p_scan_rep_cback(ref_value, report_format, num_records, + data_len, p_data, status); + } else { + if ((len - 4) > 0) { + btm_ble_batchscan_enq_rep_data(report_format, num_records, p, len - 4); + /* More records could be in the buffer and needs to be pulled out */ + btm_status = btm_ble_read_batchscan_reports(report_format, ref_value); + if (BTM_CMD_STARTED != btm_status) { + btm_ble_batchscan_deq_rep_data(report_format, &ref_value, &num_records, + &p_data, &data_len); + /* Send whatever is available, in case of a command failure */ + if (NULL != ble_batchscan_cb.p_scan_rep_cback && NULL != p_data) + ble_batchscan_cb.p_scan_rep_cback(ref_value, report_format, + num_records, data_len, p_data, status); } } } - break; } + break; + } - default: - break; + default: + break; } return; @@ -514,9 +484,8 @@ tBTM_STATUS btm_ble_set_storage_config(UINT8 batch_scan_full_max, UINT8 batch_sc UINT8_TO_STREAM (pp, batch_scan_notify_threshold); if ((status = BTM_VendorSpecificCommand (HCI_BLE_BATCH_SCAN_OCF, - BTM_BLE_BATCH_SCAN_STORAGE_CFG_LEN, param, - btm_ble_batchscan_vsc_cmpl_cback))!= BTM_CMD_STARTED) - { + BTM_BLE_BATCH_SCAN_STORAGE_CFG_LEN, param, + btm_ble_batchscan_vsc_cmpl_cback)) != BTM_CMD_STARTED) { BTM_TRACE_ERROR("btm_ble_set_storage_config %d", status); return BTM_ILLEGAL_VALUE; } @@ -540,8 +509,8 @@ tBTM_STATUS btm_ble_set_storage_config(UINT8 batch_scan_full_max, UINT8 batch_sc ** *******************************************************************************/ tBTM_STATUS btm_ble_set_batchscan_param(tBTM_BLE_BATCH_SCAN_MODE scan_mode, - UINT32 scan_interval, UINT32 scan_window, tBLE_ADDR_TYPE addr_type, - tBTM_BLE_DISCARD_RULE discard_rule) + UINT32 scan_interval, UINT32 scan_window, tBLE_ADDR_TYPE addr_type, + tBTM_BLE_DISCARD_RULE discard_rule) { tBTM_STATUS status = BTM_NO_RESOURCES; UINT8 scan_param[BTM_BLE_BATCH_SCAN_PARAM_CONFIG_LEN], *pp_scan; @@ -561,9 +530,8 @@ tBTM_STATUS btm_ble_set_batchscan_param(tBTM_BLE_BATCH_SCAN_MODE scan_mode, UINT8_TO_STREAM (pp_scan, discard_rule); if ((status = BTM_VendorSpecificCommand (HCI_BLE_BATCH_SCAN_OCF, - BTM_BLE_BATCH_SCAN_PARAM_CONFIG_LEN, - scan_param, btm_ble_batchscan_vsc_cmpl_cback))!= BTM_CMD_STARTED) - { + BTM_BLE_BATCH_SCAN_PARAM_CONFIG_LEN, + scan_param, btm_ble_batchscan_vsc_cmpl_cback)) != BTM_CMD_STARTED) { BTM_TRACE_ERROR("btm_ble_set_batchscan_param %d", status); return BTM_ILLEGAL_VALUE; } @@ -588,11 +556,11 @@ tBTM_STATUS btm_ble_enable_disable_batchscan(BOOLEAN should_enable) UINT8 shld_enable = 0x01; UINT8 enable_param[BTM_BLE_BATCH_SCAN_ENB_DISB_LEN], *pp_enable; - if (!should_enable) + if (!should_enable) { shld_enable = 0x00; + } - if (should_enable) - { + if (should_enable) { pp_enable = enable_param; memset(enable_param, 0, BTM_BLE_BATCH_SCAN_ENB_DISB_LEN); @@ -600,28 +568,25 @@ tBTM_STATUS btm_ble_enable_disable_batchscan(BOOLEAN should_enable) UINT8_TO_STREAM (pp_enable, shld_enable); if ((status = BTM_VendorSpecificCommand(HCI_BLE_BATCH_SCAN_OCF, - BTM_BLE_BATCH_SCAN_ENB_DISB_LEN, enable_param, - btm_ble_batchscan_vsc_cmpl_cback)) != BTM_CMD_STARTED) - { + BTM_BLE_BATCH_SCAN_ENB_DISB_LEN, enable_param, + btm_ble_batchscan_vsc_cmpl_cback)) != BTM_CMD_STARTED) { status = BTM_MODE_UNSUPPORTED; BTM_TRACE_ERROR("btm_ble_enable_disable_batchscan %d", status); return BTM_ILLEGAL_VALUE; } - } - else - if ((status = btm_ble_set_batchscan_param(BTM_BLE_BATCH_SCAN_MODE_DISABLE, - ble_batchscan_cb.scan_interval, ble_batchscan_cb.scan_window, - ble_batchscan_cb.addr_type, ble_batchscan_cb.discard_rule)) != BTM_CMD_STARTED) - { - status = BTM_MODE_UNSUPPORTED; - BTM_TRACE_ERROR("btm_ble_enable_disable_batchscan %d", status); - return BTM_ILLEGAL_VALUE; + } else if ((status = btm_ble_set_batchscan_param(BTM_BLE_BATCH_SCAN_MODE_DISABLE, + ble_batchscan_cb.scan_interval, ble_batchscan_cb.scan_window, + ble_batchscan_cb.addr_type, ble_batchscan_cb.discard_rule)) != BTM_CMD_STARTED) { + status = BTM_MODE_UNSUPPORTED; + BTM_TRACE_ERROR("btm_ble_enable_disable_batchscan %d", status); + return BTM_ILLEGAL_VALUE; } - if (should_enable) + if (should_enable) { ble_batchscan_cb.cur_state = BTM_BLE_SCAN_ENABLE_CALLED; - else + } else { ble_batchscan_cb.cur_state = BTM_BLE_SCAN_DISABLE_CALLED; + } return status; } @@ -643,26 +608,26 @@ tBTM_STATUS btm_ble_enable_disable_batchscan(BOOLEAN should_enable) ** *******************************************************************************/ tBTM_STATUS BTM_BleSetStorageConfig(UINT8 batch_scan_full_max, UINT8 batch_scan_trunc_max, - UINT8 batch_scan_notify_threshold, - tBTM_BLE_SCAN_SETUP_CBACK *p_setup_cback, - tBTM_BLE_SCAN_THRESHOLD_CBACK *p_thres_cback, - tBTM_BLE_SCAN_REP_CBACK* p_rep_cback, - tBTM_BLE_REF_VALUE ref_value) + UINT8 batch_scan_notify_threshold, + tBTM_BLE_SCAN_SETUP_CBACK *p_setup_cback, + tBTM_BLE_SCAN_THRESHOLD_CBACK *p_thres_cback, + tBTM_BLE_SCAN_REP_CBACK *p_rep_cback, + tBTM_BLE_REF_VALUE ref_value) { tBTM_STATUS status = BTM_NO_RESOURCES; tBTM_BLE_VSC_CB cmn_ble_vsc_cb; BTM_TRACE_EVENT (" BTM_BleSetStorageConfig: %d, %d, %d, %d, %d", - ble_batchscan_cb.cur_state, ref_value, batch_scan_full_max, batch_scan_trunc_max, - batch_scan_notify_threshold); + ble_batchscan_cb.cur_state, ref_value, batch_scan_full_max, batch_scan_trunc_max, + batch_scan_notify_threshold); - if (!controller_get_interface()->supports_ble()) + if (!controller_get_interface()->supports_ble()) { return BTM_ILLEGAL_VALUE; + } BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb); - if (0 == cmn_ble_vsc_cb.tot_scan_results_strg) - { + if (0 == cmn_ble_vsc_cb.tot_scan_results_strg) { BTM_TRACE_ERROR("Controller does not support batch scan"); return BTM_ERR_PROCESSING; } @@ -673,33 +638,33 @@ tBTM_STATUS BTM_BleSetStorageConfig(UINT8 batch_scan_full_max, UINT8 batch_scan_ ble_batchscan_cb.ref_value = ref_value; if (batch_scan_full_max > BTM_BLE_ADV_SCAN_FULL_MAX || - batch_scan_trunc_max > BTM_BLE_ADV_SCAN_TRUNC_MAX || - batch_scan_notify_threshold > BTM_BLE_ADV_SCAN_THR_MAX) - { + batch_scan_trunc_max > BTM_BLE_ADV_SCAN_TRUNC_MAX || + batch_scan_notify_threshold > BTM_BLE_ADV_SCAN_THR_MAX) { BTM_TRACE_ERROR("Illegal set storage config params"); return BTM_ILLEGAL_VALUE; } - if (BTM_BLE_SCAN_INVALID_STATE == ble_batchscan_cb.cur_state || - BTM_BLE_SCAN_DISABLED_STATE == ble_batchscan_cb.cur_state || - BTM_BLE_SCAN_DISABLE_CALLED == ble_batchscan_cb.cur_state) - { + if (BTM_BLE_SCAN_INVALID_STATE == ble_batchscan_cb.cur_state || + BTM_BLE_SCAN_DISABLED_STATE == ble_batchscan_cb.cur_state || + BTM_BLE_SCAN_DISABLE_CALLED == ble_batchscan_cb.cur_state) { status = btm_ble_enable_disable_batchscan(TRUE); - if (BTM_CMD_STARTED != status) + if (BTM_CMD_STARTED != status) { return status; + } ble_batchscan_cb.cur_state = BTM_BLE_SCAN_ENABLE_CALLED; btm_ble_batchscan_enq_op_q(BTM_BLE_BATCH_SCAN_ENB_DISAB_CUST_FEATURE, - BTM_BLE_SCAN_ENABLE_CALLED, 0, ref_value); + BTM_BLE_SCAN_ENABLE_CALLED, 0, ref_value); } status = btm_ble_set_storage_config(batch_scan_full_max, batch_scan_trunc_max, batch_scan_notify_threshold); - if (BTM_CMD_STARTED != status) - return status; - /* The user needs to be provided scan config storage event */ - btm_ble_batchscan_enq_op_q(BTM_BLE_BATCH_SCAN_SET_STORAGE_PARAM, ble_batchscan_cb.cur_state, - BTM_BLE_BATCH_SCAN_CFG_STRG_EVT, ref_value); + if (BTM_CMD_STARTED != status) { + return status; + } + /* The user needs to be provided scan config storage event */ + btm_ble_batchscan_enq_op_q(BTM_BLE_BATCH_SCAN_SET_STORAGE_PARAM, ble_batchscan_cb.cur_state, + BTM_BLE_BATCH_SCAN_CFG_STRG_EVT, ref_value); return status; } @@ -721,44 +686,43 @@ tBTM_STATUS BTM_BleSetStorageConfig(UINT8 batch_scan_full_max, UINT8 batch_scan_ ** *******************************************************************************/ tBTM_STATUS BTM_BleEnableBatchScan(tBTM_BLE_BATCH_SCAN_MODE scan_mode, - UINT32 scan_interval, UINT32 scan_window, tBLE_ADDR_TYPE addr_type, - tBTM_BLE_DISCARD_RULE discard_rule, tBTM_BLE_REF_VALUE ref_value) + UINT32 scan_interval, UINT32 scan_window, tBLE_ADDR_TYPE addr_type, + tBTM_BLE_DISCARD_RULE discard_rule, tBTM_BLE_REF_VALUE ref_value) { tBTM_STATUS status = BTM_NO_RESOURCES; tBTM_BLE_VSC_CB cmn_ble_vsc_cb; BTM_TRACE_EVENT (" BTM_BleEnableBatchScan: %d, %d, %d, %d, %d, %d", - scan_mode, scan_interval, scan_window, addr_type, discard_rule, ref_value); + scan_mode, scan_interval, scan_window, addr_type, discard_rule, ref_value); - if (!controller_get_interface()->supports_ble()) + if (!controller_get_interface()->supports_ble()) { return BTM_ILLEGAL_VALUE; + } BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb); - if (0 == cmn_ble_vsc_cb.tot_scan_results_strg) - { + if (0 == cmn_ble_vsc_cb.tot_scan_results_strg) { BTM_TRACE_ERROR("Controller does not support batch scan"); return BTM_ERR_PROCESSING; } BTM_TRACE_DEBUG("BTM_BleEnableBatchScan: %d, %x, %x, %d, %d", scan_mode, scan_interval, - scan_window, discard_rule, ble_batchscan_cb.cur_state); + scan_window, discard_rule, ble_batchscan_cb.cur_state); /* Only 16 bits will be used for scan interval and scan window as per agreement with Google */ /* So the standard LE range would suffice for scan interval and scan window */ if ((BTM_BLE_ISVALID_PARAM(scan_interval, BTM_BLE_SCAN_INT_MIN, BTM_BLE_SCAN_INT_MAX) || - BTM_BLE_ISVALID_PARAM(scan_window, BTM_BLE_SCAN_WIN_MIN, BTM_BLE_SCAN_WIN_MAX)) - && (BTM_BLE_BATCH_SCAN_MODE_PASS == scan_mode || BTM_BLE_BATCH_SCAN_MODE_ACTI == scan_mode - || BTM_BLE_BATCH_SCAN_MODE_PASS_ACTI == scan_mode) - && (BTM_BLE_DISCARD_OLD_ITEMS == discard_rule || - BTM_BLE_DISCARD_LOWER_RSSI_ITEMS == discard_rule)) - { + BTM_BLE_ISVALID_PARAM(scan_window, BTM_BLE_SCAN_WIN_MIN, BTM_BLE_SCAN_WIN_MAX)) + && (BTM_BLE_BATCH_SCAN_MODE_PASS == scan_mode || BTM_BLE_BATCH_SCAN_MODE_ACTI == scan_mode + || BTM_BLE_BATCH_SCAN_MODE_PASS_ACTI == scan_mode) + && (BTM_BLE_DISCARD_OLD_ITEMS == discard_rule || + BTM_BLE_DISCARD_LOWER_RSSI_ITEMS == discard_rule)) { if (BTM_BLE_SCAN_INVALID_STATE == ble_batchscan_cb.cur_state || - BTM_BLE_SCAN_DISABLED_STATE == ble_batchscan_cb.cur_state || - BTM_BLE_SCAN_DISABLE_CALLED == ble_batchscan_cb.cur_state) - { + BTM_BLE_SCAN_DISABLED_STATE == ble_batchscan_cb.cur_state || + BTM_BLE_SCAN_DISABLE_CALLED == ble_batchscan_cb.cur_state) { status = btm_ble_enable_disable_batchscan(TRUE); - if (BTM_CMD_STARTED != status) - return status; + if (BTM_CMD_STARTED != status) { + return status; + } btm_ble_batchscan_enq_op_q(BTM_BLE_BATCH_SCAN_ENB_DISAB_CUST_FEATURE, BTM_BLE_SCAN_ENABLE_CALLED, 0, ref_value); } @@ -770,16 +734,15 @@ tBTM_STATUS BTM_BleEnableBatchScan(tBTM_BLE_BATCH_SCAN_MODE scan_mode, ble_batchscan_cb.discard_rule = discard_rule; /* This command starts batch scanning, if enabled */ status = btm_ble_set_batchscan_param(scan_mode, scan_interval, scan_window, addr_type, - discard_rule); - if (BTM_CMD_STARTED != status) + discard_rule); + if (BTM_CMD_STARTED != status) { return status; + } /* The user needs to be provided scan enable event */ btm_ble_batchscan_enq_op_q(BTM_BLE_BATCH_SCAN_SET_PARAMS, ble_batchscan_cb.cur_state, BTM_BLE_BATCH_SCAN_ENABLE_EVT, ref_value); - } - else - { + } else { BTM_TRACE_ERROR("Illegal enable scan params"); return BTM_ILLEGAL_VALUE; } @@ -803,24 +766,23 @@ tBTM_STATUS BTM_BleDisableBatchScan(tBTM_BLE_REF_VALUE ref_value) tBTM_BLE_VSC_CB cmn_ble_vsc_cb; BTM_TRACE_EVENT (" BTM_BleDisableBatchScan"); - if (!controller_get_interface()->supports_ble()) + if (!controller_get_interface()->supports_ble()) { return BTM_ILLEGAL_VALUE; + } BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb); - if (0 == cmn_ble_vsc_cb.tot_scan_results_strg) - { + if (0 == cmn_ble_vsc_cb.tot_scan_results_strg) { BTM_TRACE_ERROR("Controller does not support batch scan"); return BTM_ERR_PROCESSING; } status = btm_ble_enable_disable_batchscan(FALSE); - if (BTM_CMD_STARTED == status) - { - /* The user needs to be provided scan disable event */ - btm_ble_batchscan_enq_op_q(BTM_BLE_BATCH_SCAN_SET_PARAMS, - BTM_BLE_SCAN_DISABLE_CALLED, BTM_BLE_BATCH_SCAN_DISABLE_EVT, - ref_value); + if (BTM_CMD_STARTED == status) { + /* The user needs to be provided scan disable event */ + btm_ble_batchscan_enq_op_q(BTM_BLE_BATCH_SCAN_SET_PARAMS, + BTM_BLE_SCAN_DISABLE_CALLED, BTM_BLE_BATCH_SCAN_DISABLE_EVT, + ref_value); } return status; @@ -839,7 +801,7 @@ tBTM_STATUS BTM_BleDisableBatchScan(tBTM_BLE_REF_VALUE ref_value) ** *******************************************************************************/ tBTM_STATUS BTM_BleReadScanReports(tBTM_BLE_BATCH_SCAN_MODE scan_mode, - tBTM_BLE_REF_VALUE ref_value) + tBTM_BLE_REF_VALUE ref_value) { tBTM_STATUS status = BTM_NO_RESOURCES; tBTM_BLE_VSC_CB cmn_ble_vsc_cb; @@ -849,41 +811,37 @@ tBTM_STATUS BTM_BleReadScanReports(tBTM_BLE_BATCH_SCAN_MODE scan_mode, BTM_TRACE_EVENT (" BTM_BleReadScanReports; %d, %d", scan_mode, ref_value); - if (!controller_get_interface()->supports_ble()) + if (!controller_get_interface()->supports_ble()) { return BTM_ILLEGAL_VALUE; + } BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb); - if (0 == cmn_ble_vsc_cb.tot_scan_results_strg) - { + if (0 == cmn_ble_vsc_cb.tot_scan_results_strg) { BTM_TRACE_ERROR("Controller does not support batch scan"); return BTM_ERR_PROCESSING; } /* Check if the requested scan mode has already been setup by the user */ read_scan_mode = ble_batchscan_cb.scan_mode & BTM_BLE_BATCH_SCAN_MODE_ACTI; - if (0 == read_scan_mode) + if (0 == read_scan_mode) { read_scan_mode = ble_batchscan_cb.scan_mode & BTM_BLE_BATCH_SCAN_MODE_PASS; + } /* Check only for modes, as scan reports can be called after disabling batch scan */ if (read_scan_mode > 0 && (BTM_BLE_BATCH_SCAN_MODE_PASS == scan_mode || - BTM_BLE_BATCH_SCAN_MODE_ACTI == scan_mode)) - { + BTM_BLE_BATCH_SCAN_MODE_ACTI == scan_mode)) { status = btm_ble_batchscan_enq_rep_q(scan_mode, ref_value); - if (BTM_SUCCESS == status) - { + if (BTM_SUCCESS == status) { status = btm_ble_read_batchscan_reports(scan_mode, ref_value); - if (BTM_CMD_STARTED != status) - { + if (BTM_CMD_STARTED != status) { btm_ble_batchscan_deq_rep_data(scan_mode, &ref_value, &num_records, &p_data, &data_len); } } - } - else - { + } else { BTM_TRACE_ERROR("Illegal read scan params: %d, %d, %d", read_scan_mode, scan_mode, - ble_batchscan_cb.cur_state); + ble_batchscan_cb.cur_state); return BTM_ILLEGAL_VALUE; } return status; @@ -903,17 +861,17 @@ tBTM_STATUS BTM_BleReadScanReports(tBTM_BLE_BATCH_SCAN_MODE scan_mode, ** *******************************************************************************/ tBTM_STATUS BTM_BleTrackAdvertiser(tBTM_BLE_TRACK_ADV_CBACK *p_track_cback, - tBTM_BLE_REF_VALUE ref_value) + tBTM_BLE_REF_VALUE ref_value) { tBTM_BLE_VSC_CB cmn_ble_vsc_cb; BTM_TRACE_EVENT (" BTM_BleTrackAdvertiser"); - if (!controller_get_interface()->supports_ble()) + if (!controller_get_interface()->supports_ble()) { return BTM_ILLEGAL_VALUE; + } BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb); - if (0 == cmn_ble_vsc_cb.tot_scan_results_strg) - { + if (0 == cmn_ble_vsc_cb.tot_scan_results_strg) { BTM_TRACE_ERROR("Controller does not support scan storage"); return BTM_ERR_PROCESSING; } @@ -958,10 +916,10 @@ void btm_ble_batchscan_cleanup(void) int index = 0; BTM_TRACE_EVENT (" btm_ble_batchscan_cleanup"); - for (index = 0; index < BTM_BLE_BATCH_REP_MAIN_Q_SIZE; index++) - { - if (NULL != ble_batchscan_cb.main_rep_q.p_data[index]) + for (index = 0; index < BTM_BLE_BATCH_REP_MAIN_Q_SIZE; index++) { + if (NULL != ble_batchscan_cb.main_rep_q.p_data[index]) { GKI_freebuf(ble_batchscan_cb.main_rep_q.p_data[index]); + } ble_batchscan_cb.main_rep_q.p_data[index] = NULL; } diff --git a/components/bt/bluedroid/stack/btm/btm_ble_bgconn.c b/components/bt/bluedroid/stack/btm/btm_ble_bgconn.c old mode 100755 new mode 100644 index e69d44637d..f53f71a5d4 --- a/components/bt/bluedroid/stack/btm/btm_ble_bgconn.c +++ b/components/bt/bluedroid/stack/btm/btm_ble_bgconn.c @@ -52,59 +52,68 @@ static const size_t background_connection_buckets = 42; static hash_map_t *background_connections = NULL; typedef struct background_connection_t { - bt_bdaddr_t address; + bt_bdaddr_t address; } background_connection_t; -static bool bdaddr_equality_fn(const void *x, const void *y) { - return bdaddr_equals((bt_bdaddr_t *)x, (bt_bdaddr_t *)y); +static bool bdaddr_equality_fn(const void *x, const void *y) +{ + return bdaddr_equals((bt_bdaddr_t *)x, (bt_bdaddr_t *)y); } static void background_connections_lazy_init() { - if (!background_connections) { - background_connections = hash_map_new(background_connection_buckets, - hash_function_bdaddr, NULL, osi_free, bdaddr_equality_fn); - assert(background_connections); - } + if (!background_connections) { + background_connections = hash_map_new(background_connection_buckets, + hash_function_bdaddr, NULL, osi_free, bdaddr_equality_fn); + assert(background_connections); + } } -static void background_connection_add(bt_bdaddr_t *address) { - assert(address); - background_connections_lazy_init(); - background_connection_t *connection = hash_map_get(background_connections, address); - if (!connection) { - connection = osi_calloc(sizeof(background_connection_t)); - connection->address = *address; - hash_map_set(background_connections, &(connection->address), connection); - } +static void background_connection_add(bt_bdaddr_t *address) +{ + assert(address); + background_connections_lazy_init(); + background_connection_t *connection = hash_map_get(background_connections, address); + if (!connection) { + connection = osi_calloc(sizeof(background_connection_t)); + connection->address = *address; + hash_map_set(background_connections, &(connection->address), connection); + } } -static void background_connection_remove(bt_bdaddr_t *address) { - if (address && background_connections) - hash_map_erase(background_connections, address); +static void background_connection_remove(bt_bdaddr_t *address) +{ + if (address && background_connections) { + hash_map_erase(background_connections, address); + } } -static void background_connections_clear() { - if (background_connections) - hash_map_clear(background_connections); +static void background_connections_clear() +{ + if (background_connections) { + hash_map_clear(background_connections); + } } -static bool background_connections_pending_cb(hash_map_entry_t *hash_entry, void *context) { - bool *pending_connections = context; - background_connection_t *connection = hash_entry->data; - const bool connected = BTM_IsAclConnectionUp(connection->address.address, BT_TRANSPORT_LE); - if (!connected) { - *pending_connections = true; - return false; - } - return true; +static bool background_connections_pending_cb(hash_map_entry_t *hash_entry, void *context) +{ + bool *pending_connections = context; + background_connection_t *connection = hash_entry->data; + const bool connected = BTM_IsAclConnectionUp(connection->address.address, BT_TRANSPORT_LE); + if (!connected) { + *pending_connections = true; + return false; + } + return true; } -static bool background_connections_pending() { - bool pending_connections = false; - if (background_connections) - hash_map_foreach(background_connections, background_connections_pending_cb, &pending_connections); - return pending_connections; +static bool background_connections_pending() +{ + bool pending_connections = false; + if (background_connections) { + hash_map_foreach(background_connections, background_connections_pending_cb, &pending_connections); + } + return pending_connections; } /******************************************************************************* @@ -125,15 +134,12 @@ void btm_update_scanner_filter_policy(tBTM_BLE_SFP scan_policy) p_inq->sfp = scan_policy; p_inq->scan_type = p_inq->scan_type == BTM_BLE_SCAN_MODE_NONE ? BTM_BLE_SCAN_MODE_ACTI : p_inq->scan_type; - if (btm_cb.cmn_ble_vsc_cb.extended_scan_support == 0) - { + if (btm_cb.cmn_ble_vsc_cb.extended_scan_support == 0) { btsnd_hcic_ble_set_scan_params(p_inq->scan_type, (UINT16)scan_interval, (UINT16)scan_window, btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type, scan_policy); - } - else - { + } else { btm_ble_send_extended_scan_params(p_inq->scan_type, scan_interval, scan_window, btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type, scan_policy); @@ -154,44 +160,35 @@ BOOLEAN btm_add_dev_to_controller (BOOLEAN to_add, BD_ADDR bd_addr) tBT_DEVICE_TYPE dev_type; if (p_dev_rec != NULL && - p_dev_rec->device_type & BT_DEVICE_TYPE_BLE) - { - if (to_add) - { - if (p_dev_rec->ble.ble_addr_type == BLE_ADDR_PUBLIC || !BTM_BLE_IS_RESOLVE_BDA(bd_addr)) - { + p_dev_rec->device_type & BT_DEVICE_TYPE_BLE) { + if (to_add) { + if (p_dev_rec->ble.ble_addr_type == BLE_ADDR_PUBLIC || !BTM_BLE_IS_RESOLVE_BDA(bd_addr)) { started = btsnd_hcic_ble_add_white_list (p_dev_rec->ble.ble_addr_type, bd_addr); p_dev_rec->ble.in_controller_list |= BTM_WHITE_LIST_BIT; - } - else if (memcmp(p_dev_rec->ble.static_addr, bd_addr, BD_ADDR_LEN) != 0 && - memcmp(p_dev_rec->ble.static_addr, dummy_bda, BD_ADDR_LEN) != 0) - { + } else if (memcmp(p_dev_rec->ble.static_addr, bd_addr, BD_ADDR_LEN) != 0 && + memcmp(p_dev_rec->ble.static_addr, dummy_bda, BD_ADDR_LEN) != 0) { started = btsnd_hcic_ble_add_white_list (p_dev_rec->ble.static_addr_type, - p_dev_rec->ble.static_addr); + p_dev_rec->ble.static_addr); p_dev_rec->ble.in_controller_list |= BTM_WHITE_LIST_BIT; } - } - else - { - if (p_dev_rec->ble.ble_addr_type == BLE_ADDR_PUBLIC || !BTM_BLE_IS_RESOLVE_BDA(bd_addr)) - { + } else { + if (p_dev_rec->ble.ble_addr_type == BLE_ADDR_PUBLIC || !BTM_BLE_IS_RESOLVE_BDA(bd_addr)) { started = btsnd_hcic_ble_remove_from_white_list (p_dev_rec->ble.ble_addr_type, bd_addr); } if (memcmp(p_dev_rec->ble.static_addr, dummy_bda, BD_ADDR_LEN) != 0 && - memcmp(p_dev_rec->ble.static_addr, bd_addr, BD_ADDR_LEN) != 0) - { + memcmp(p_dev_rec->ble.static_addr, bd_addr, BD_ADDR_LEN) != 0) { started = btsnd_hcic_ble_remove_from_white_list (p_dev_rec->ble.static_addr_type, p_dev_rec->ble.static_addr); } p_dev_rec->ble.in_controller_list &= ~BTM_WHITE_LIST_BIT; } } /* if not a known device, shall we add it? */ - else - { + else { BTM_ReadDevInfo(bd_addr, &dev_type, &addr_type); started = btsnd_hcic_ble_remove_from_white_list (addr_type, bd_addr); - if (to_add) + if (to_add) { started = btsnd_hcic_ble_add_white_list (addr_type, bd_addr); + } } return started; @@ -209,15 +206,13 @@ BOOLEAN btm_execute_wl_dev_operation(void) UINT8 i = 0; BOOLEAN rt = TRUE; - for (i = 0; i < BTM_BLE_MAX_BG_CONN_DEV_NUM && rt; i ++, p_dev_op ++) - { - if (p_dev_op->in_use) - { + for (i = 0; i < BTM_BLE_MAX_BG_CONN_DEV_NUM && rt; i ++, p_dev_op ++) { + if (p_dev_op->in_use) { rt = btm_add_dev_to_controller(p_dev_op->to_add, p_dev_op->bd_addr); memset(p_dev_op, 0, sizeof(tBTM_BLE_WL_OP)); - } - else + } else { break; + } } return rt; } @@ -232,24 +227,19 @@ void btm_enq_wl_dev_operation(BOOLEAN to_add, BD_ADDR bd_addr) tBTM_BLE_WL_OP *p_dev_op = btm_cb.ble_ctr_cb.wl_op_q; UINT8 i = 0; - for (i = 0; i < BTM_BLE_MAX_BG_CONN_DEV_NUM; i ++, p_dev_op ++) - { - if (p_dev_op->in_use && !memcmp(p_dev_op->bd_addr, bd_addr, BD_ADDR_LEN)) - { + for (i = 0; i < BTM_BLE_MAX_BG_CONN_DEV_NUM; i ++, p_dev_op ++) { + if (p_dev_op->in_use && !memcmp(p_dev_op->bd_addr, bd_addr, BD_ADDR_LEN)) { p_dev_op->to_add = to_add; return; - } - else if (!p_dev_op->in_use) + } else if (!p_dev_op->in_use) { break; + } } - if (i != BTM_BLE_MAX_BG_CONN_DEV_NUM) - { + if (i != BTM_BLE_MAX_BG_CONN_DEV_NUM) { p_dev_op->in_use = TRUE; p_dev_op->to_add = to_add; memcpy(p_dev_op->bd_addr, bd_addr, BD_ADDR_LEN); - } - else - { + } else { BTM_TRACE_ERROR("max pending WL operation reached, discard"); } return; @@ -267,16 +257,16 @@ BOOLEAN btm_update_dev_to_white_list(BOOLEAN to_add, BD_ADDR bd_addr) { tBTM_BLE_CB *p_cb = &btm_cb.ble_ctr_cb; - if (to_add && p_cb->white_list_avail_size == 0) - { + if (to_add && p_cb->white_list_avail_size == 0) { BTM_TRACE_ERROR("%s Whitelist full, unable to add device", __func__); return FALSE; } - if (to_add) - background_connection_add((bt_bdaddr_t*)bd_addr); - else - background_connection_remove((bt_bdaddr_t*)bd_addr); + if (to_add) { + background_connection_add((bt_bdaddr_t *)bd_addr); + } else { + background_connection_remove((bt_bdaddr_t *)bd_addr); + } btm_suspend_wl_activity(p_cb->wl_state); btm_enq_wl_dev_operation(to_add, bd_addr); @@ -314,8 +304,9 @@ void btm_ble_clear_white_list_complete(UINT8 *p_data, UINT16 evt_len) BTM_TRACE_EVENT ("btm_ble_clear_white_list_complete"); STREAM_TO_UINT8 (status, p_data); - if (status == HCI_SUCCESS) + if (status == HCI_SUCCESS) { p_cb->white_list_avail_size = controller_get_interface()->get_ble_white_list_size(); + } } /******************************************************************************* @@ -341,8 +332,9 @@ void btm_ble_white_list_init(UINT8 white_list_size) void btm_ble_add_2_white_list_complete(UINT8 status) { BTM_TRACE_EVENT("%s status=%d", __func__, status); - if (status == HCI_SUCCESS) + if (status == HCI_SUCCESS) { --btm_cb.ble_ctr_cb.white_list_avail_size; + } } /******************************************************************************* @@ -356,8 +348,9 @@ void btm_ble_remove_from_white_list_complete(UINT8 *p, UINT16 evt_len) { UNUSED(evt_len); BTM_TRACE_EVENT ("%s status=%d", __func__, *p); - if (*p == HCI_SUCCESS) + if (*p == HCI_SUCCESS) { ++btm_cb.ble_ctr_cb.white_list_avail_size; + } } /******************************************************************************* @@ -381,11 +374,9 @@ BOOLEAN btm_ble_start_auto_conn(BOOLEAN start) UINT8 own_addr_type = p_cb->addr_mgnt_cb.own_addr_type; UINT8 peer_addr_type = BLE_ADDR_PUBLIC; - if (start) - { + if (start) { if (p_cb->conn_state == BLE_CONN_IDLE && background_connections_pending() - && btm_ble_topology_check(BTM_BLE_STATE_INIT)) - { + && btm_ble_topology_check(BTM_BLE_STATE_INIT)) { p_cb->wl_state |= BTM_BLE_WL_INIT; btm_execute_wl_dev_operation(); @@ -394,14 +385,13 @@ BOOLEAN btm_ble_start_auto_conn(BOOLEAN start) btm_ble_enable_resolving_list_for_platform(BTM_BLE_RL_INIT); #endif scan_int = (p_cb->scan_int == BTM_BLE_SCAN_PARAM_UNDEF) ? - BTM_BLE_SCAN_SLOW_INT_1 : p_cb->scan_int; + BTM_BLE_SCAN_SLOW_INT_1 : p_cb->scan_int; scan_win = (p_cb->scan_win == BTM_BLE_SCAN_PARAM_UNDEF) ? - BTM_BLE_SCAN_SLOW_WIN_1 : p_cb->scan_win; + BTM_BLE_SCAN_SLOW_WIN_1 : p_cb->scan_win; #if BLE_PRIVACY_SPT == TRUE if (btm_cb.ble_ctr_cb.rl_state != BTM_BLE_RL_IDLE - && controller_get_interface()->supports_ble_privacy()) - { + && controller_get_interface()->supports_ble_privacy()) { own_addr_type |= BLE_ADDR_TYPE_ID_BIT; peer_addr_type |= BLE_ADDR_TYPE_ID_BIT; } @@ -418,32 +408,22 @@ BOOLEAN btm_ble_start_auto_conn(BOOLEAN start) BTM_BLE_CONN_SLAVE_LATENCY_DEF, /* UINT16 conn_latency */ BTM_BLE_CONN_TIMEOUT_DEF, /* UINT16 conn_timeout */ 0, /* UINT16 min_len */ - 0)) /* UINT16 max_len */ - { + 0)) { /* UINT16 max_len */ /* start auto connection failed */ exec = FALSE; p_cb->wl_state &= ~BTM_BLE_WL_INIT; - } - else - { + } else { btm_ble_set_conn_st (BLE_BG_CONN); } - } - else - { + } else { exec = FALSE; } - } - else - { - if (p_cb->conn_state == BLE_BG_CONN) - { + } else { + if (p_cb->conn_state == BLE_BG_CONN) { btsnd_hcic_ble_create_conn_cancel(); btm_ble_set_conn_st (BLE_CONN_CANCEL); p_cb->wl_state &= ~BTM_BLE_WL_INIT; - } - else - { + } else { BTM_TRACE_DEBUG("conn_st = %d, not in auto conn state, cannot stop", p_cb->conn_state); exec = FALSE; } @@ -472,12 +452,11 @@ BOOLEAN btm_ble_start_select_conn(BOOLEAN start, tBTM_BLE_SEL_CBACK *p_select_cb BTM_TRACE_EVENT ("%s", __func__); - if (start) - { - if (!BTM_BLE_IS_SCAN_ACTIVE(p_cb->scan_activity)) - { - if (p_select_cback != NULL) + if (start) { + if (!BTM_BLE_IS_SCAN_ACTIVE(p_cb->scan_activity)) { + if (p_select_cback != NULL) { btm_cb.ble_ctr_cb.p_select_cback = p_select_cback; + } btm_execute_wl_dev_operation(); @@ -485,62 +464,52 @@ BOOLEAN btm_ble_start_select_conn(BOOLEAN start, tBTM_BLE_SEL_CBACK *p_select_cb btm_cb.ble_ctr_cb.inq_var.scan_type = BTM_BLE_SCAN_MODE_PASS; /* Process advertising packets only from devices in the white list */ - if (btm_cb.cmn_ble_vsc_cb.extended_scan_support == 0) - { + if (btm_cb.cmn_ble_vsc_cb.extended_scan_support == 0) { /* use passive scan by default */ if (!btsnd_hcic_ble_set_scan_params(BTM_BLE_SCAN_MODE_PASS, scan_int, scan_win, p_cb->addr_mgnt_cb.own_addr_type, - SP_ADV_WL)) - { + SP_ADV_WL)) { return FALSE; } - } - else - { + } else { if (!btm_ble_send_extended_scan_params(BTM_BLE_SCAN_MODE_PASS, scan_int, scan_win, p_cb->addr_mgnt_cb.own_addr_type, - SP_ADV_WL)) - { + SP_ADV_WL)) { return FALSE; } } - if (!btm_ble_topology_check(BTM_BLE_STATE_PASSIVE_SCAN)) - { + if (!btm_ble_topology_check(BTM_BLE_STATE_PASSIVE_SCAN)) { BTM_TRACE_ERROR("peripheral device cannot initiate passive scan for a selective connection"); return FALSE; - } - else if (background_connections_pending()) - { + } else if (background_connections_pending()) { #if BLE_PRIVACY_SPT == TRUE btm_ble_enable_resolving_list_for_platform(BTM_BLE_RL_SCAN); #endif - if (!btsnd_hcic_ble_set_scan_enable(TRUE, TRUE)) /* duplicate filtering enabled */ - return FALSE; - /* mark up inquiry status flag */ - p_cb->scan_activity |= BTM_LE_SELECT_CONN_ACTIVE; - p_cb->wl_state |= BTM_BLE_WL_SCAN; + if (!btsnd_hcic_ble_set_scan_enable(TRUE, TRUE)) { /* duplicate filtering enabled */ + return FALSE; + } + /* mark up inquiry status flag */ + p_cb->scan_activity |= BTM_LE_SELECT_CONN_ACTIVE; + p_cb->wl_state |= BTM_BLE_WL_SCAN; } - } - else - { + } else { BTM_TRACE_ERROR("scan active, can not start selective connection procedure"); return FALSE; } - } - else /* disable selective connection mode */ - { + } else { /* disable selective connection mode */ p_cb->scan_activity &= ~BTM_LE_SELECT_CONN_ACTIVE; p_cb->p_select_cback = NULL; p_cb->wl_state &= ~BTM_BLE_WL_SCAN; /* stop scanning */ - if (!BTM_BLE_IS_SCAN_ACTIVE(p_cb->scan_activity)) - btm_ble_stop_scan(); /* duplicate filtering enabled */ + if (!BTM_BLE_IS_SCAN_ACTIVE(p_cb->scan_activity)) { + btm_ble_stop_scan(); /* duplicate filtering enabled */ + } } return TRUE; } @@ -562,8 +531,7 @@ void btm_ble_initiate_select_conn(BD_ADDR bda) BTM_TRACE_EVENT ("btm_ble_initiate_select_conn"); /* use direct connection procedure to initiate connection */ - if (!L2CA_ConnectFixedChnl(L2CAP_ATT_CID, bda)) - { + if (!L2CA_ConnectFixedChnl(L2CAP_ATT_CID, bda)) { BTM_TRACE_ERROR("btm_ble_initiate_select_conn failed"); } } @@ -583,10 +551,11 @@ BOOLEAN btm_ble_suspend_bg_conn(void) { BTM_TRACE_EVENT ("%s\n", __func__); - if (btm_cb.ble_ctr_cb.bg_conn_type == BTM_BLE_CONN_AUTO) + if (btm_cb.ble_ctr_cb.bg_conn_type == BTM_BLE_CONN_AUTO) { return btm_ble_start_auto_conn(FALSE); - else if (btm_cb.ble_ctr_cb.bg_conn_type == BTM_BLE_CONN_SELECTIVE) + } else if (btm_cb.ble_ctr_cb.bg_conn_type == BTM_BLE_CONN_SELECTIVE) { return btm_ble_start_select_conn(FALSE, NULL); + } return FALSE; } @@ -601,16 +570,13 @@ BOOLEAN btm_ble_suspend_bg_conn(void) *******************************************************************************/ static void btm_suspend_wl_activity(tBTM_BLE_WL_STATE wl_state) { - if (wl_state & BTM_BLE_WL_INIT) - { + if (wl_state & BTM_BLE_WL_INIT) { btm_ble_start_auto_conn(FALSE); } - if (wl_state & BTM_BLE_WL_SCAN) - { + if (wl_state & BTM_BLE_WL_SCAN) { btm_ble_start_select_conn(FALSE, NULL); } - if (wl_state & BTM_BLE_WL_ADV) - { + if (wl_state & BTM_BLE_WL_ADV) { btm_ble_stop_adv(); } @@ -628,9 +594,8 @@ static void btm_resume_wl_activity(tBTM_BLE_WL_STATE wl_state) { btm_ble_resume_bg_conn(); - if (wl_state & BTM_BLE_WL_ADV) - { - btm_ble_start_adv(); + if (wl_state & BTM_BLE_WL_ADV) { + btm_ble_start_adv(); } } @@ -651,13 +616,14 @@ BOOLEAN btm_ble_resume_bg_conn(void) tBTM_BLE_CB *p_cb = &btm_cb.ble_ctr_cb; BOOLEAN ret = FALSE; - if (p_cb->bg_conn_type != BTM_BLE_CONN_NONE) - { - if (p_cb->bg_conn_type == BTM_BLE_CONN_AUTO) + if (p_cb->bg_conn_type != BTM_BLE_CONN_NONE) { + if (p_cb->bg_conn_type == BTM_BLE_CONN_AUTO) { ret = btm_ble_start_auto_conn(TRUE); + } - if (p_cb->bg_conn_type == BTM_BLE_CONN_SELECTIVE) + if (p_cb->bg_conn_type == BTM_BLE_CONN_SELECTIVE) { ret = btm_ble_start_select_conn(TRUE, btm_cb.ble_ctr_cb.p_select_cback); + } } return ret; @@ -688,10 +654,11 @@ void btm_ble_set_conn_st(tBTM_BLE_CONN_ST new_st) { btm_cb.ble_ctr_cb.conn_state = new_st; - if (new_st == BLE_BG_CONN || new_st == BLE_DIR_CONN) + if (new_st == BLE_BG_CONN || new_st == BLE_DIR_CONN) { btm_ble_set_topology_mask(BTM_BLE_STATE_INIT_BIT); - else + } else { btm_ble_clear_topology_mask(BTM_BLE_STATE_INIT_BIT); + } } /******************************************************************************* @@ -725,9 +692,8 @@ BOOLEAN btm_send_pending_direct_conn(void) tBTM_BLE_CONN_REQ *p_req; BOOLEAN rt = FALSE; - if (!GKI_queue_is_empty(&btm_cb.ble_ctr_cb.conn_pending_q)) - { - p_req = (tBTM_BLE_CONN_REQ*)GKI_dequeue (&btm_cb.ble_ctr_cb.conn_pending_q); + if (!GKI_queue_is_empty(&btm_cb.ble_ctr_cb.conn_pending_q)) { + p_req = (tBTM_BLE_CONN_REQ *)GKI_dequeue (&btm_cb.ble_ctr_cb.conn_pending_q); rt = l2cble_init_direct_conn((tL2C_LCB *)(p_req->p_param)); diff --git a/components/bt/bluedroid/stack/btm/btm_ble_cont_energy.c b/components/bt/bluedroid/stack/btm/btm_ble_cont_energy.c old mode 100755 new mode 100644 index 286127b5b7..5a9629d875 --- a/components/bt/bluedroid/stack/btm/btm_ble_cont_energy.c +++ b/components/bt/bluedroid/stack/btm/btm_ble_cont_energy.c @@ -48,8 +48,7 @@ void btm_ble_cont_energy_cmpl_cback (tBTM_VSC_CMPL *p_params) UINT8 status = 0; UINT32 total_tx_time = 0, total_rx_time = 0, total_idle_time = 0, total_energy_used = 0; - if (len < 17) - { + if (len < 17) { BTM_TRACE_ERROR("wrong length for btm_ble_cont_energy_cmpl_cback"); return; } @@ -61,11 +60,11 @@ void btm_ble_cont_energy_cmpl_cback (tBTM_VSC_CMPL *p_params) STREAM_TO_UINT32(total_energy_used, p); BTM_TRACE_DEBUG("energy_info status=%d,tx_t=%ld, rx_t=%ld, ener_used=%ld, idle_t=%ld", - status, total_tx_time, total_rx_time, total_energy_used, total_idle_time); + status, total_tx_time, total_rx_time, total_energy_used, total_idle_time); if (NULL != ble_energy_info_cb.p_ener_cback) ble_energy_info_cb.p_ener_cback(total_tx_time, total_rx_time, total_idle_time, - total_energy_used, status); + total_energy_used, status); return; } @@ -90,16 +89,14 @@ tBTM_STATUS BTM_BleGetEnergyInfo(tBTM_BLE_ENERGY_INFO_CBACK *p_ener_cback) BTM_TRACE_EVENT("BTM_BleGetEnergyInfo\n"); - if (0 == cmn_ble_vsc_cb.energy_support) - { + if (0 == cmn_ble_vsc_cb.energy_support) { BTM_TRACE_ERROR("Controller does not support get energy info\n"); return BTM_ERR_PROCESSING; } ble_energy_info_cb.p_ener_cback = p_ener_cback; if ((status = BTM_VendorSpecificCommand (HCI_BLE_ENERGY_INFO_OCF, 0, NULL, - btm_ble_cont_energy_cmpl_cback)) != BTM_CMD_STARTED) - { + btm_ble_cont_energy_cmpl_cback)) != BTM_CMD_STARTED) { BTM_TRACE_ERROR("BTM_BleGetEnergyInfo status: %d", status); return BTM_ILLEGAL_VALUE; } diff --git a/components/bt/bluedroid/stack/btm/btm_ble_gap.c b/components/bt/bluedroid/stack/btm/btm_ble_gap.c old mode 100755 new mode 100644 index 33785a296b..0e484d9526 --- a/components/bt/bluedroid/stack/btm/btm_ble_gap.c +++ b/components/bt/bluedroid/stack/btm/btm_ble_gap.c @@ -69,9 +69,9 @@ static void btm_ble_process_adv_pkt_cont(BD_ADDR bda, UINT8 addr_type, UINT8 evt UINT8 *btm_ble_build_adv_data(tBTM_BLE_AD_MASK *p_data_mask, UINT8 **p_dst, tBTM_BLE_ADV_DATA *p_data); static UINT8 btm_set_conn_mode_adv_init_addr(tBTM_BLE_INQ_CB *p_cb, - BD_ADDR_PTR p_peer_addr_ptr, - tBLE_ADDR_TYPE *p_peer_addr_type, - tBLE_ADDR_TYPE *p_own_addr_type); + BD_ADDR_PTR p_peer_addr_ptr, + tBLE_ADDR_TYPE *p_peer_addr_type, + tBLE_ADDR_TYPE *p_own_addr_type); static void btm_ble_stop_observe(void); #define BTM_BLE_INQ_RESULT 0x01 @@ -79,8 +79,7 @@ static void btm_ble_stop_observe(void); #define BTM_BLE_SEL_CONN_RESULT 0x04 /* LE states combo bit to check */ -const UINT8 btm_le_state_combo_tbl[BTM_BLE_STATE_MAX][BTM_BLE_STATE_MAX][2] = -{ +const UINT8 btm_le_state_combo_tbl[BTM_BLE_STATE_MAX][BTM_BLE_STATE_MAX][2] = { {/* single state support */ {HCI_SUPP_LE_STATES_CONN_ADV_MASK, HCI_SUPP_LE_STATES_CONN_ADV_OFF}, /* conn_adv */ {HCI_SUPP_LE_STATES_INIT_MASK, HCI_SUPP_LE_STATES_INIT_OFF}, /* init */ @@ -190,7 +189,7 @@ const UINT8 btm_le_state_combo_tbl[BTM_BLE_STATE_MAX][BTM_BLE_STATE_MAX][2] = {HCI_SUPP_LE_STATES_NON_CONN_ADV_PASS_SCAN_MASK, HCI_SUPP_LE_STATES_NON_CONN_ADV_PASS_SCAN_OFF}, /* non connectable adv */ {0, 0}, /* passive scan */ {0, 0}, /* active scan */ - {HCI_SUPP_LE_STATES_SCAN_ADV_PASS_SCAN_MASK, HCI_SUPP_LE_STATES_SCAN_ADV_PASS_SCAN_OFF} /* scanable adv */ + {HCI_SUPP_LE_STATES_SCAN_ADV_PASS_SCAN_MASK, HCI_SUPP_LE_STATES_SCAN_ADV_PASS_SCAN_OFF} /* scanable adv */ }, { /* active scan */ {HCI_SUPP_LE_STATES_CONN_ADV_ACTIVE_SCAN_MASK, HCI_SUPP_LE_STATES_CONN_ADV_ACTIVE_SCAN_OFF}, /* conn_adv: */ @@ -253,16 +252,16 @@ void BTM_BleUpdateAdvFilterPolicy(tBTM_BLE_AFP adv_policy) { tBTM_BLE_INQ_CB *p_cb = &btm_cb.ble_ctr_cb.inq_var; tBLE_ADDR_TYPE init_addr_type = BLE_ADDR_PUBLIC; - BD_ADDR p_addr_ptr= {0}; + BD_ADDR p_addr_ptr = {0}; UINT8 adv_mode = p_cb->adv_mode; BTM_TRACE_EVENT ("BTM_BleUpdateAdvFilterPolicy\n"); - if (!controller_get_interface()->supports_ble()) + if (!controller_get_interface()->supports_ble()) { return; + } - if (p_cb->afp != adv_policy) - { + if (p_cb->afp != adv_policy) { p_cb->afp = adv_policy; /* if adv active, stop and restart */ @@ -270,12 +269,12 @@ void BTM_BleUpdateAdvFilterPolicy(tBTM_BLE_AFP adv_policy) if (p_cb->connectable_mode & BTM_BLE_CONNECTABLE) p_cb->evt_type = btm_set_conn_mode_adv_init_addr(p_cb, p_addr_ptr, &init_addr_type, - &p_cb->adv_addr_type); + &p_cb->adv_addr_type); btsnd_hcic_ble_write_adv_params ((UINT16)(p_cb->adv_interval_min ? p_cb->adv_interval_min : BTM_BLE_GAP_ADV_SLOW_INT), (UINT16)(p_cb->adv_interval_max ? p_cb->adv_interval_max : - BTM_BLE_GAP_ADV_SLOW_INT), + BTM_BLE_GAP_ADV_SLOW_INT), p_cb->evt_type, p_cb->adv_addr_type, init_addr_type, @@ -283,8 +282,9 @@ void BTM_BleUpdateAdvFilterPolicy(tBTM_BLE_AFP adv_policy) p_cb->adv_chnl_map, p_cb->afp); - if (adv_mode == BTM_BLE_ADV_ENABLE) + if (adv_mode == BTM_BLE_ADV_ENABLE) { btm_ble_start_adv (); + } } } @@ -305,8 +305,8 @@ void BTM_BleUpdateAdvFilterPolicy(tBTM_BLE_AFP adv_policy) ** *******************************************************************************/ BOOLEAN btm_ble_send_extended_scan_params(UINT8 scan_type, UINT32 scan_int, - UINT32 scan_win, UINT8 addr_type_own, - UINT8 scan_filter_policy) + UINT32 scan_win, UINT8 addr_type_own, + UINT8 scan_filter_policy) { UINT8 scan_param[HCIC_PARAM_SIZE_BLE_WRITE_EXTENDED_SCAN_PARAM]; UINT8 *pp_scan = scan_param; @@ -321,8 +321,7 @@ BOOLEAN btm_ble_send_extended_scan_params(UINT8 scan_type, UINT32 scan_int, BTM_TRACE_DEBUG("%s, %d, %d", __func__, scan_int, scan_win); if ((BTM_VendorSpecificCommand(HCI_BLE_EXTENDED_SCAN_PARAMS_OCF, - HCIC_PARAM_SIZE_BLE_WRITE_EXTENDED_SCAN_PARAM, scan_param, NULL)) != BTM_SUCCESS) - { + HCIC_PARAM_SIZE_BLE_WRITE_EXTENDED_SCAN_PARAM, scan_param, NULL)) != BTM_SUCCESS) { BTM_TRACE_ERROR("%s error sending extended scan parameters", __func__); return FALSE; } @@ -352,16 +351,15 @@ tBTM_STATUS BTM_BleObserve(BOOLEAN start, UINT8 duration, UINT32 scan_window = !p_inq->scan_window ? BTM_BLE_GAP_DISC_SCAN_WIN : p_inq->scan_window; BTM_TRACE_EVENT ("%s : scan_type:%d, %d, %d\n", __func__, btm_cb.btm_inq_vars.scan_type, - p_inq->scan_interval, p_inq->scan_window); + p_inq->scan_interval, p_inq->scan_window); - if (!controller_get_interface()->supports_ble()) + if (!controller_get_interface()->supports_ble()) { return BTM_ILLEGAL_VALUE; + } - if (start) - { + if (start) { /* shared inquiry database, do not allow observe if any inquiry is active */ - if (BTM_BLE_IS_OBS_ACTIVE(btm_cb.ble_ctr_cb.scan_activity)) - { + if (BTM_BLE_IS_OBS_ACTIVE(btm_cb.ble_ctr_cb.scan_activity)) { BTM_TRACE_ERROR("%s Observe Already Active", __func__); return status; } @@ -371,26 +369,22 @@ tBTM_STATUS BTM_BleObserve(BOOLEAN start, UINT8 duration, status = BTM_CMD_STARTED; /* scan is not started */ - if (!BTM_BLE_IS_SCAN_ACTIVE(btm_cb.ble_ctr_cb.scan_activity)) - { + if (!BTM_BLE_IS_SCAN_ACTIVE(btm_cb.ble_ctr_cb.scan_activity)) { /* allow config of scan type */ p_inq->scan_type = (p_inq->scan_type == BTM_BLE_SCAN_MODE_NONE) ? - BTM_BLE_SCAN_MODE_ACTI: p_inq->scan_type; + BTM_BLE_SCAN_MODE_ACTI : p_inq->scan_type; /* assume observe always not using white list */ - #if (defined BLE_PRIVACY_SPT && BLE_PRIVACY_SPT == TRUE) - /* enable resolving list */ - btm_ble_enable_resolving_list_for_platform(BTM_BLE_RL_SCAN); - #endif +#if (defined BLE_PRIVACY_SPT && BLE_PRIVACY_SPT == TRUE) + /* enable resolving list */ + btm_ble_enable_resolving_list_for_platform(BTM_BLE_RL_SCAN); +#endif - if (cmn_ble_vsc_cb.extended_scan_support == 0) - { + if (cmn_ble_vsc_cb.extended_scan_support == 0) { btsnd_hcic_ble_set_scan_params(p_inq->scan_type, (UINT16)scan_interval, (UINT16)scan_window, btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type, BTM_BLE_DEFAULT_SFP); - } - else - { + } else { btm_ble_send_extended_scan_params(p_inq->scan_type, scan_interval, scan_window, btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type, BTM_BLE_DEFAULT_SFP); @@ -400,21 +394,18 @@ tBTM_STATUS BTM_BleObserve(BOOLEAN start, UINT8 duration, status = btm_ble_start_scan(); } - if (status == BTM_CMD_STARTED) - { + if (status == BTM_CMD_STARTED) { btm_cb.ble_ctr_cb.scan_activity |= BTM_LE_OBSERVE_ACTIVE; if (duration != 0) /* start observer timer */ + { btu_start_timer (&btm_cb.ble_ctr_cb.obs_timer_ent, BTU_TTYPE_BLE_OBSERVE, duration); + } } - } - else if (BTM_BLE_IS_OBS_ACTIVE(btm_cb.ble_ctr_cb.scan_activity)) - { + } else if (BTM_BLE_IS_OBS_ACTIVE(btm_cb.ble_ctr_cb.scan_activity)) { status = BTM_CMD_STARTED; btm_ble_stop_observe(); - } - else - { + } else { BTM_TRACE_ERROR("%s Observe not active\n", __func__); } @@ -438,25 +429,24 @@ tBTM_STATUS BTM_BleBroadcast(BOOLEAN start) tBTM_STATUS status = BTM_NO_RESOURCES; tBTM_LE_RANDOM_CB *p_addr_cb = &btm_cb.ble_ctr_cb.addr_mgnt_cb; tBTM_BLE_INQ_CB *p_cb = &btm_cb.ble_ctr_cb.inq_var; - UINT8 evt_type = p_cb->scan_rsp ? BTM_BLE_DISCOVER_EVT: BTM_BLE_NON_CONNECT_EVT; + UINT8 evt_type = p_cb->scan_rsp ? BTM_BLE_DISCOVER_EVT : BTM_BLE_NON_CONNECT_EVT; - if (!controller_get_interface()->supports_ble()) + if (!controller_get_interface()->supports_ble()) { return BTM_ILLEGAL_VALUE; + } #ifdef BTM_BLE_PC_ADV_TEST_MODE - if (BTM_BLE_PC_ADV_TEST_MODE) - { - evt_type = p_cb->scan_rsp ? BTM_BLE_CONNECT_EVT: BTM_BLE_NON_CONNECT_EVT; + if (BTM_BLE_PC_ADV_TEST_MODE) { + evt_type = p_cb->scan_rsp ? BTM_BLE_CONNECT_EVT : BTM_BLE_NON_CONNECT_EVT; } #endif - if (start && p_cb->adv_mode == BTM_BLE_ADV_DISABLE) - { + if (start && p_cb->adv_mode == BTM_BLE_ADV_DISABLE) { /* update adv params */ if (!btsnd_hcic_ble_write_adv_params ((UINT16)(p_cb->adv_interval_min ? p_cb->adv_interval_min : BTM_BLE_GAP_ADV_INT), (UINT16)(p_cb->adv_interval_max ? p_cb->adv_interval_max : - BTM_BLE_GAP_ADV_INT), + BTM_BLE_GAP_ADV_INT), evt_type, p_addr_cb->own_addr_type, p_cb->direct_bda.type, @@ -464,24 +454,22 @@ tBTM_STATUS BTM_BleBroadcast(BOOLEAN start) p_cb->adv_chnl_map, p_cb->afp)) + { status = BTM_NO_RESOURCES; - else + } else { p_cb->evt_type = evt_type; + } status = btm_ble_start_adv (); - } - else if (!start) - { + } else if (!start) { status = btm_ble_stop_adv(); #if BLE_PRIVACY_SPT == TRUE btm_ble_disable_resolving_list(BTM_BLE_RL_ADV, TRUE); #endif - } - else - { + } else { status = BTM_WRONG_MODE; BTM_TRACE_ERROR("Can not %s Broadcast, device %s in Broadcast mode", - (start ? "Start" : "Stop"), (start ? "already" :"not")); + (start ? "Start" : "Stop"), (start ? "already" : "not")); } return status; } @@ -505,14 +493,12 @@ static void btm_ble_vendor_capability_vsc_cmpl_cback (tBTM_VSC_CMPL *p_vcs_cplt_ /* Check status of command complete event */ if ((p_vcs_cplt_params->opcode == HCI_BLE_VENDOR_CAP_OCF) && - (p_vcs_cplt_params->param_len > 0)) - { + (p_vcs_cplt_params->param_len > 0)) { p = p_vcs_cplt_params->p_param_buf; STREAM_TO_UINT8(status, p); } - if (status == HCI_SUCCESS) - { + if (status == HCI_SUCCESS) { STREAM_TO_UINT8(btm_cb.cmn_ble_vsc_cb.adv_inst_max, p); STREAM_TO_UINT8(btm_cb.cmn_ble_vsc_cb.rpa_offloading, p); STREAM_TO_UINT16(btm_cb.cmn_ble_vsc_cb.tot_scan_results_strg, p); @@ -521,17 +507,13 @@ static void btm_ble_vendor_capability_vsc_cmpl_cback (tBTM_VSC_CMPL *p_vcs_cplt_ STREAM_TO_UINT8(btm_cb.cmn_ble_vsc_cb.max_filter, p); STREAM_TO_UINT8(btm_cb.cmn_ble_vsc_cb.energy_support, p); - if (p_vcs_cplt_params->param_len > BTM_VSC_CHIP_CAPABILITY_RSP_LEN_L_RELEASE) - { + if (p_vcs_cplt_params->param_len > BTM_VSC_CHIP_CAPABILITY_RSP_LEN_L_RELEASE) { STREAM_TO_UINT16(btm_cb.cmn_ble_vsc_cb.version_supported, p); - } - else - { + } else { btm_cb.cmn_ble_vsc_cb.version_supported = BTM_VSC_CHIP_CAPABILITY_L_VERSION; } - if (btm_cb.cmn_ble_vsc_cb.version_supported >= BTM_VSC_CHIP_CAPABILITY_M_VERSION) - { + if (btm_cb.cmn_ble_vsc_cb.version_supported >= BTM_VSC_CHIP_CAPABILITY_M_VERSION) { STREAM_TO_UINT16(btm_cb.cmn_ble_vsc_cb.total_trackable_advertisers, p); STREAM_TO_UINT16(btm_cb.cmn_ble_vsc_cb.extended_scan_support, p); STREAM_TO_UINT16(btm_cb.cmn_ble_vsc_cb.debug_logging_supported, p); @@ -540,28 +522,33 @@ static void btm_ble_vendor_capability_vsc_cmpl_cback (tBTM_VSC_CMPL *p_vcs_cplt_ } BTM_TRACE_DEBUG("%s: stat=%d, irk=%d, ADV ins:%d, rpa=%d, ener=%d, ext_scan=%d", - __func__, status, btm_cb.cmn_ble_vsc_cb.max_irk_list_sz, - btm_cb.cmn_ble_vsc_cb.adv_inst_max, btm_cb.cmn_ble_vsc_cb.rpa_offloading, - btm_cb.cmn_ble_vsc_cb.energy_support, btm_cb.cmn_ble_vsc_cb.extended_scan_support); + __func__, status, btm_cb.cmn_ble_vsc_cb.max_irk_list_sz, + btm_cb.cmn_ble_vsc_cb.adv_inst_max, btm_cb.cmn_ble_vsc_cb.rpa_offloading, + btm_cb.cmn_ble_vsc_cb.energy_support, btm_cb.cmn_ble_vsc_cb.extended_scan_support); - if (BTM_BleMaxMultiAdvInstanceCount() > 0) + if (BTM_BleMaxMultiAdvInstanceCount() > 0) { btm_ble_multi_adv_init(); + } - if (btm_cb.cmn_ble_vsc_cb.max_filter > 0) + if (btm_cb.cmn_ble_vsc_cb.max_filter > 0) { btm_ble_adv_filter_init(); + } #if (defined BLE_PRIVACY_SPT && BLE_PRIVACY_SPT == TRUE) /* VS capability included and non-4.2 device */ if (btm_cb.cmn_ble_vsc_cb.max_irk_list_sz > 0 && - controller_get_interface()->get_ble_resolving_list_max_size() == 0) + controller_get_interface()->get_ble_resolving_list_max_size() == 0) { btm_ble_resolving_list_init(btm_cb.cmn_ble_vsc_cb.max_irk_list_sz); + } #endif - if (btm_cb.cmn_ble_vsc_cb.tot_scan_results_strg > 0) + if (btm_cb.cmn_ble_vsc_cb.tot_scan_results_strg > 0) { btm_ble_batchscan_init(); + } - if (p_ctrl_le_feature_rd_cmpl_cback != NULL) + if (p_ctrl_le_feature_rd_cmpl_cback != NULL) { p_ctrl_le_feature_rd_cmpl_cback(status); + } #endif } @@ -580,8 +567,7 @@ extern void BTM_BleGetVendorCapabilities(tBTM_BLE_VSC_CB *p_cmn_vsc_cb) { BTM_TRACE_DEBUG("BTM_BleGetVendorCapabilities"); - if (NULL != p_cmn_vsc_cb) - { + if (NULL != p_cmn_vsc_cb) { *p_cmn_vsc_cb = btm_cb.cmn_ble_vsc_cb; } } @@ -599,8 +585,9 @@ extern void BTM_BleGetVendorCapabilities(tBTM_BLE_VSC_CB *p_cmn_vsc_cb) *******************************************************************************/ extern void BTM_BleReadControllerFeatures(tBTM_BLE_CTRL_FEATURES_CBACK *p_vsc_cback) { - if (TRUE == btm_cb.cmn_ble_vsc_cb.values_read) + if (TRUE == btm_cb.cmn_ble_vsc_cb.values_read) { return; + } #if BLE_VND_INCLUDED == TRUE BTM_TRACE_DEBUG("BTM_BleReadControllerFeatures"); @@ -610,8 +597,7 @@ extern void BTM_BleReadControllerFeatures(tBTM_BLE_CTRL_FEATURES_CBACK *p_vsc_c 0, NULL, btm_ble_vendor_capability_vsc_cmpl_cback) - != BTM_CMD_STARTED) - { + != BTM_CMD_STARTED) { BTM_TRACE_ERROR("LE Get_Vendor Capabilities Command Failed."); } #else @@ -662,33 +648,31 @@ BOOLEAN BTM_BleConfigPrivacy(BOOLEAN privacy_mode) BTM_TRACE_EVENT ("%s\n", __func__); /* if LE is not supported, return error */ - if (!controller_get_interface()->supports_ble()) + if (!controller_get_interface()->supports_ble()) { return FALSE; + } uint8_t addr_resolution = 0; - if(!privacy_mode)/* if privacy disabled, always use public address */ - { + if (!privacy_mode) { /* if privacy disabled, always use public address */ p_cb->addr_mgnt_cb.own_addr_type = BLE_ADDR_PUBLIC; p_cb->privacy_mode = BTM_PRIVACY_NONE; - } - else /* privacy is turned on*/ - { + } else { /* privacy is turned on*/ /* always set host random address, used when privacy 1.1 or priavcy 1.2 is disabled */ p_cb->addr_mgnt_cb.own_addr_type = BLE_ADDR_RANDOM; btm_gen_resolvable_private_addr((void *)btm_gen_resolve_paddr_low); - if (BTM_BleMaxMultiAdvInstanceCount() > 0) + if (BTM_BleMaxMultiAdvInstanceCount() > 0) { btm_ble_multi_adv_enb_privacy(privacy_mode); + } /* 4.2 controller only allow privacy 1.2 or mixed mode, resolvable private address in controller */ - if (controller_get_interface()->supports_ble_privacy()) - { + if (controller_get_interface()->supports_ble_privacy()) { addr_resolution = 1; /* check vendor specific capability */ p_cb->privacy_mode = btm_cb.ble_ctr_cb.mixed_mode ? BTM_PRIVACY_MIXED : BTM_PRIVACY_1_2; - } - else /* 4.1/4.0 controller */ + } else { /* 4.1/4.0 controller */ p_cb->privacy_mode = BTM_PRIVACY_1_1; + } } #if (defined(GAP_INCLUDED) && GAP_INCLUDED == TRUE) @@ -713,7 +697,7 @@ BOOLEAN BTM_BleConfigPrivacy(BOOLEAN privacy_mode) extern UINT8 BTM_BleMaxMultiAdvInstanceCount(void) { return btm_cb.cmn_ble_vsc_cb.adv_inst_max < BTM_BLE_MULTI_ADV_MAX ? - btm_cb.cmn_ble_vsc_cb.adv_inst_max : BTM_BLE_MULTI_ADV_MAX; + btm_cb.cmn_ble_vsc_cb.adv_inst_max : BTM_BLE_MULTI_ADV_MAX; } #if BLE_PRIVACY_SPT == TRUE @@ -726,7 +710,7 @@ extern UINT8 BTM_BleMaxMultiAdvInstanceCount(void) ** Returns void ** *******************************************************************************/ -static void btm_ble_resolve_random_addr_on_adv(void * p_rec, void *p) +static void btm_ble_resolve_random_addr_on_adv(void *p_rec, void *p) { tBTM_SEC_DEV_REC *match_rec = (tBTM_SEC_DEV_REC *) p_rec; UINT8 addr_type = BLE_ADDR_RANDOM; @@ -740,14 +724,12 @@ static void btm_ble_resolve_random_addr_on_adv(void * p_rec, void *p) STREAM_TO_UINT8 (addr_type, pp); STREAM_TO_BDADDR (bda, pp); - if (match_rec) - { + if (match_rec) { BTM_TRACE_DEBUG("Random match"); match_rec->ble.active_addr_type = BTM_BLE_ADDR_RRA; memcpy(match_rec->ble.cur_rand_addr, bda, BD_ADDR_LEN); - if (btm_ble_init_pseudo_addr(match_rec, bda)) - { + if (btm_ble_init_pseudo_addr(match_rec, bda)) { memcpy(bda, match_rec->bd_addr, BD_ADDR_LEN); } else { // Assign the original address to be the current report address @@ -799,45 +781,41 @@ BOOLEAN BTM_BleSetBgConnType(tBTM_BLE_CONN_TYPE bg_conn_type, BOOLEAN started = TRUE; BTM_TRACE_EVENT ("BTM_BleSetBgConnType "); - if (!controller_get_interface()->supports_ble()) + if (!controller_get_interface()->supports_ble()) { return FALSE; + } - if (btm_cb.ble_ctr_cb.bg_conn_type != bg_conn_type) - { - switch (bg_conn_type) - { - case BTM_BLE_CONN_AUTO: - btm_ble_start_auto_conn(TRUE); - break; + if (btm_cb.ble_ctr_cb.bg_conn_type != bg_conn_type) { + switch (bg_conn_type) { + case BTM_BLE_CONN_AUTO: + btm_ble_start_auto_conn(TRUE); + break; - case BTM_BLE_CONN_SELECTIVE: - if (btm_cb.ble_ctr_cb.bg_conn_type == BTM_BLE_CONN_AUTO) - { - btm_ble_start_auto_conn(FALSE); - } - btm_ble_start_select_conn(TRUE, p_select_cback); - break; + case BTM_BLE_CONN_SELECTIVE: + if (btm_cb.ble_ctr_cb.bg_conn_type == BTM_BLE_CONN_AUTO) { + btm_ble_start_auto_conn(FALSE); + } + btm_ble_start_select_conn(TRUE, p_select_cback); + break; - case BTM_BLE_CONN_NONE: - if (btm_cb.ble_ctr_cb.bg_conn_type == BTM_BLE_CONN_AUTO) - { - btm_ble_start_auto_conn(FALSE); - } - else if (btm_cb.ble_ctr_cb.bg_conn_type == BTM_BLE_CONN_SELECTIVE) - { - btm_ble_start_select_conn(FALSE, NULL); - } - started = TRUE; - break; + case BTM_BLE_CONN_NONE: + if (btm_cb.ble_ctr_cb.bg_conn_type == BTM_BLE_CONN_AUTO) { + btm_ble_start_auto_conn(FALSE); + } else if (btm_cb.ble_ctr_cb.bg_conn_type == BTM_BLE_CONN_SELECTIVE) { + btm_ble_start_select_conn(FALSE, NULL); + } + started = TRUE; + break; - default: - BTM_TRACE_ERROR("invalid bg connection type : %d ", bg_conn_type); - started = FALSE; - break; + default: + BTM_TRACE_ERROR("invalid bg connection type : %d ", bg_conn_type); + started = FALSE; + break; } - if (started) + if (started) { btm_cb.ble_ctr_cb.bg_conn_type = bg_conn_type; + } } return started; } @@ -903,8 +881,9 @@ tBTM_STATUS BTM_BleSetConnectableMode(tBTM_BLE_CONN_MODE connectable_mode) tBTM_BLE_INQ_CB *p_cb = &btm_cb.ble_ctr_cb.inq_var; BTM_TRACE_EVENT ("%s connectable_mode = %d ", __func__, connectable_mode); - if (!controller_get_interface()->supports_ble()) + if (!controller_get_interface()->supports_ble()) { return BTM_ILLEGAL_VALUE; + } p_cb->directed_conn = connectable_mode; return btm_ble_set_connectability( p_cb->connectable_mode); @@ -920,45 +899,40 @@ tBTM_STATUS BTM_BleSetConnectableMode(tBTM_BLE_CONN_MODE connectable_mode) ** *******************************************************************************/ static UINT8 btm_set_conn_mode_adv_init_addr(tBTM_BLE_INQ_CB *p_cb, - BD_ADDR_PTR p_peer_addr_ptr, - tBLE_ADDR_TYPE *p_peer_addr_type, - tBLE_ADDR_TYPE *p_own_addr_type) + BD_ADDR_PTR p_peer_addr_ptr, + tBLE_ADDR_TYPE *p_peer_addr_type, + tBLE_ADDR_TYPE *p_own_addr_type) { UINT8 evt_type, i = BTM_SEC_MAX_DEVICE_RECORDS; tBTM_SEC_DEV_REC *p_dev_rec; evt_type = (p_cb->connectable_mode == BTM_BLE_NON_CONNECTABLE) ? \ - ((p_cb->scan_rsp) ? BTM_BLE_DISCOVER_EVT : BTM_BLE_NON_CONNECT_EVT )\ - : BTM_BLE_CONNECT_EVT; + ((p_cb->scan_rsp) ? BTM_BLE_DISCOVER_EVT : BTM_BLE_NON_CONNECT_EVT )\ + : BTM_BLE_CONNECT_EVT; - if (evt_type == BTM_BLE_CONNECT_EVT) - { + if (evt_type == BTM_BLE_CONNECT_EVT) { evt_type = p_cb->directed_conn; if ( p_cb->directed_conn == BTM_BLE_CONNECT_DIR_EVT || - p_cb->directed_conn == BTM_BLE_CONNECT_LO_DUTY_DIR_EVT) - { + p_cb->directed_conn == BTM_BLE_CONNECT_LO_DUTY_DIR_EVT) { #if BLE_PRIVACY_SPT == TRUE /* for privacy 1.2, convert peer address as static, own address set as ID addr */ if (btm_cb.ble_ctr_cb.privacy_mode == BTM_PRIVACY_1_2 || - btm_cb.ble_ctr_cb.privacy_mode == BTM_PRIVACY_MIXED) - { + btm_cb.ble_ctr_cb.privacy_mode == BTM_PRIVACY_MIXED) { /* only do so for bonded device */ - if ((p_dev_rec = btm_find_or_alloc_dev (p_cb->direct_bda.bda)) != NULL && - p_dev_rec->ble.in_controller_list & BTM_RESOLVING_LIST_BIT) - { - btm_ble_enable_resolving_list(BTM_BLE_RL_ADV); - memcpy(p_peer_addr_ptr, p_dev_rec->ble.static_addr, BD_ADDR_LEN); - *p_peer_addr_type = p_dev_rec->ble.static_addr_type; - *p_own_addr_type = BLE_ADDR_RANDOM_ID; - return evt_type; - } - /* otherwise fall though as normal directed adv */ - else - { + if ((p_dev_rec = btm_find_or_alloc_dev (p_cb->direct_bda.bda)) != NULL && + p_dev_rec->ble.in_controller_list & BTM_RESOLVING_LIST_BIT) { + btm_ble_enable_resolving_list(BTM_BLE_RL_ADV); + memcpy(p_peer_addr_ptr, p_dev_rec->ble.static_addr, BD_ADDR_LEN); + *p_peer_addr_type = p_dev_rec->ble.static_addr_type; + *p_own_addr_type = BLE_ADDR_RANDOM_ID; + return evt_type; + } + /* otherwise fall though as normal directed adv */ + else { btm_ble_disable_resolving_list(BTM_BLE_RL_ADV, TRUE); - } + } } #endif /* direct adv mode does not have privacy, if privacy is not enabled */ @@ -972,30 +946,28 @@ static UINT8 btm_set_conn_mode_adv_init_addr(tBTM_BLE_INQ_CB *p_cb, #if BLE_PRIVACY_SPT == TRUE /* when privacy 1.2 privacy only mode is used, or mixed mode */ if ((btm_cb.ble_ctr_cb.privacy_mode == BTM_PRIVACY_1_2 && p_cb->afp != AP_SCAN_CONN_ALL) || - btm_cb.ble_ctr_cb.privacy_mode == BTM_PRIVACY_MIXED) - { + btm_cb.ble_ctr_cb.privacy_mode == BTM_PRIVACY_MIXED) { /* if enhanced privacy is required, set Identity address and matching IRK peer */ - for (i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i ++) - { + for (i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i ++) { if ((btm_cb.sec_dev_rec[i].sec_flags & BTM_SEC_IN_USE) != 0 && - (btm_cb.sec_dev_rec[i].ble.in_controller_list & BTM_RESOLVING_LIST_BIT) != 0) - { + (btm_cb.sec_dev_rec[i].ble.in_controller_list & BTM_RESOLVING_LIST_BIT) != 0) { memcpy(p_peer_addr_ptr, btm_cb.sec_dev_rec[i].ble.static_addr, BD_ADDR_LEN); *p_peer_addr_type = btm_cb.sec_dev_rec[i].ble.static_addr_type; - break; + break; } } - if (i != BTM_SEC_MAX_DEVICE_RECORDS) + if (i != BTM_SEC_MAX_DEVICE_RECORDS) { *p_own_addr_type = BLE_ADDR_RANDOM_ID; - else + } else /* resolving list is empty, not enabled */ + { *p_own_addr_type = BLE_ADDR_RANDOM; + } } /* privacy 1.1, or privacy 1.2, general discoverable/connectable mode, disable privacy in */ /* controller fall back to host based privacy */ - else if (btm_cb.ble_ctr_cb.privacy_mode != BTM_PRIVACY_NONE) - { + else if (btm_cb.ble_ctr_cb.privacy_mode != BTM_PRIVACY_NONE) { *p_own_addr_type = BLE_ADDR_RANDOM; } #endif @@ -1033,12 +1005,12 @@ tBTM_STATUS BTM_BleSetAdvParams(UINT16 adv_int_min, UINT16 adv_int_max, BTM_TRACE_EVENT ("BTM_BleSetAdvParams"); - if (!controller_get_interface()->supports_ble()) + if (!controller_get_interface()->supports_ble()) { return BTM_ILLEGAL_VALUE; + } if (!BTM_BLE_ISVALID_PARAM(adv_int_min, BTM_BLE_ADV_INT_MIN, BTM_BLE_ADV_INT_MAX) || - !BTM_BLE_ISVALID_PARAM(adv_int_max, BTM_BLE_ADV_INT_MIN, BTM_BLE_ADV_INT_MAX)) - { + !BTM_BLE_ISVALID_PARAM(adv_int_max, BTM_BLE_ADV_INT_MIN, BTM_BLE_ADV_INT_MAX)) { return BTM_ILLEGAL_VALUE; } @@ -1046,8 +1018,7 @@ tBTM_STATUS BTM_BleSetAdvParams(UINT16 adv_int_min, UINT16 adv_int_max, p_cb->adv_interval_max = adv_int_max; p_cb->adv_chnl_map = chnl_map; - if (p_dir_bda) - { + if (p_dir_bda) { memcpy(&p_cb->direct_bda, p_dir_bda, sizeof(tBLE_BD_ADDR)); } @@ -1056,7 +1027,7 @@ tBTM_STATUS BTM_BleSetAdvParams(UINT16 adv_int_min, UINT16 adv_int_max, btm_ble_stop_adv(); p_cb->evt_type = btm_set_conn_mode_adv_init_addr(p_cb, p_addr_ptr, &init_addr_type, - &own_addr_type); + &own_addr_type); /* update adv params */ btsnd_hcic_ble_write_adv_params (p_cb->adv_interval_min, @@ -1068,8 +1039,9 @@ tBTM_STATUS BTM_BleSetAdvParams(UINT16 adv_int_min, UINT16 adv_int_max, p_cb->adv_chnl_map, p_cb->afp); - if (adv_mode == BTM_BLE_ADV_ENABLE) + if (adv_mode == BTM_BLE_ADV_ENABLE) { btm_ble_start_adv(); + } return status; } @@ -1087,42 +1059,41 @@ tBTM_STATUS BTM_BleSetAdvParams(UINT16 adv_int_min, UINT16 adv_int_max, ** *******************************************************************************/ tBTM_STATUS BTM_BleSetAdvParamsStartAdv(UINT16 adv_int_min, UINT16 adv_int_max, UINT8 adv_type, - tBLE_ADDR_TYPE own_bda_type, tBLE_BD_ADDR *p_dir_bda, - tBTM_BLE_ADV_CHNL_MAP chnl_map, tBTM_BLE_AFP afp) + tBLE_ADDR_TYPE own_bda_type, tBLE_BD_ADDR *p_dir_bda, + tBTM_BLE_ADV_CHNL_MAP chnl_map, tBTM_BLE_AFP afp) { - tBTM_LE_RANDOM_CB *p_addr_cb = &btm_cb.ble_ctr_cb.addr_mgnt_cb; + tBTM_LE_RANDOM_CB *p_addr_cb = &btm_cb.ble_ctr_cb.addr_mgnt_cb; tBTM_BLE_INQ_CB *p_cb = &btm_cb.ble_ctr_cb.inq_var; tBTM_STATUS status = BTM_SUCCESS; - - BTM_TRACE_EVENT ("BTM_BleSetAdvParamsStartAdv\n"); - if (!controller_get_interface()->supports_ble()) + BTM_TRACE_EVENT ("BTM_BleSetAdvParamsStartAdv\n"); + + if (!controller_get_interface()->supports_ble()) { return BTM_ILLEGAL_VALUE; + } if (!BTM_BLE_ISVALID_PARAM(adv_int_min, BTM_BLE_ADV_INT_MIN, BTM_BLE_ADV_INT_MAX) || - !BTM_BLE_ISVALID_PARAM(adv_int_max, BTM_BLE_ADV_INT_MIN, BTM_BLE_ADV_INT_MAX)) - { + !BTM_BLE_ISVALID_PARAM(adv_int_max, BTM_BLE_ADV_INT_MIN, BTM_BLE_ADV_INT_MAX)) { return BTM_ILLEGAL_VALUE; } p_cb->adv_interval_min = adv_int_min; p_cb->adv_interval_max = adv_int_max; p_cb->adv_chnl_map = chnl_map; - p_addr_cb->own_addr_type = own_bda_type; - p_cb->evt_type = adv_type; - p_cb->adv_mode = BTM_BLE_ADV_ENABLE; - p_cb->afp = afp; - - if (p_dir_bda) - { + p_addr_cb->own_addr_type = own_bda_type; + p_cb->evt_type = adv_type; + p_cb->adv_mode = BTM_BLE_ADV_ENABLE; + p_cb->afp = afp; + + if (p_dir_bda) { memcpy(&p_cb->direct_bda, p_dir_bda, sizeof(tBLE_BD_ADDR)); } - BTM_TRACE_EVENT ("update params for an active adv\n"); + BTM_TRACE_EVENT ("update params for an active adv\n"); btm_ble_stop_adv(); - /* update adv params */ + /* update adv params */ btsnd_hcic_ble_write_adv_params (adv_int_min, adv_int_max, adv_type, @@ -1132,7 +1103,7 @@ tBTM_STATUS BTM_BleSetAdvParamsStartAdv(UINT16 adv_int_min, UINT16 adv_int_max, chnl_map, p_cb->afp); - btm_ble_start_adv(); + btm_ble_start_adv(); } @@ -1158,15 +1129,15 @@ void BTM_BleReadAdvParams (UINT16 *adv_int_min, UINT16 *adv_int_max, tBTM_BLE_INQ_CB *p_cb = &btm_cb.ble_ctr_cb.inq_var; BTM_TRACE_EVENT ("BTM_BleReadAdvParams "); - if (!controller_get_interface()->supports_ble()) + if (!controller_get_interface()->supports_ble()) { return ; + } *adv_int_min = p_cb->adv_interval_min; *adv_int_max = p_cb->adv_interval_max; *p_chnl_map = p_cb->adv_chnl_map; - if (p_dir_bda != NULL) - { + if (p_dir_bda != NULL) { memcpy(p_dir_bda, &p_cb->direct_bda, sizeof(tBLE_BD_ADDR)); } } @@ -1195,37 +1166,34 @@ void BTM_BleSetScanParams(tGATT_IF client_if, UINT32 scan_interval, UINT32 scan_ UINT32 max_scan_window; BTM_TRACE_EVENT ("%s\n", __func__); - if (!controller_get_interface()->supports_ble()) + if (!controller_get_interface()->supports_ble()) { return; + } /* If not supporting extended scan support, use the older range for checking */ - if (btm_cb.cmn_ble_vsc_cb.extended_scan_support == 0) - { + if (btm_cb.cmn_ble_vsc_cb.extended_scan_support == 0) { max_scan_interval = BTM_BLE_SCAN_INT_MAX; max_scan_window = BTM_BLE_SCAN_WIN_MAX; - } - else - { + } else { /* If supporting extended scan support, use the new extended range for checking */ max_scan_interval = BTM_BLE_EXT_SCAN_INT_MAX; max_scan_window = BTM_BLE_EXT_SCAN_WIN_MAX; } if (BTM_BLE_ISVALID_PARAM(scan_interval, BTM_BLE_SCAN_INT_MIN, max_scan_interval) && - BTM_BLE_ISVALID_PARAM(scan_window, BTM_BLE_SCAN_WIN_MIN, max_scan_window) && - (scan_mode == BTM_BLE_SCAN_MODE_ACTI || scan_mode == BTM_BLE_SCAN_MODE_PASS)) - { + BTM_BLE_ISVALID_PARAM(scan_window, BTM_BLE_SCAN_WIN_MIN, max_scan_window) && + (scan_mode == BTM_BLE_SCAN_MODE_ACTI || scan_mode == BTM_BLE_SCAN_MODE_PASS)) { p_cb->scan_type = scan_mode; p_cb->scan_interval = scan_interval; p_cb->scan_window = scan_window; - if (scan_setup_status_cback != NULL) + if (scan_setup_status_cback != NULL) { scan_setup_status_cback(client_if, BTM_SUCCESS); - } - else - { - if (scan_setup_status_cback != NULL) + } + } else { + if (scan_setup_status_cback != NULL) { scan_setup_status_cback(client_if, BTM_ILLEGAL_VALUE); + } BTM_TRACE_ERROR("Illegal params: scan_interval = %d scan_window = %d\n", scan_interval, scan_window); @@ -1234,51 +1202,48 @@ void BTM_BleSetScanParams(tGATT_IF client_if, UINT32 scan_interval, UINT32 scan_ } void BTM_BleSetScanFilterParams(tGATT_IF client_if, UINT32 scan_interval, UINT32 scan_window, - tBLE_SCAN_MODE scan_mode, UINT8 addr_type_own, tBTM_BLE_SFP scan_filter_policy, - tBLE_SCAN_PARAM_SETUP_CBACK scan_setup_status_cback) + tBLE_SCAN_MODE scan_mode, UINT8 addr_type_own, tBTM_BLE_SFP scan_filter_policy, + tBLE_SCAN_PARAM_SETUP_CBACK scan_setup_status_cback) { - tBTM_BLE_INQ_CB *p_cb = &btm_cb.ble_ctr_cb.inq_var; + tBTM_BLE_INQ_CB *p_cb = &btm_cb.ble_ctr_cb.inq_var; UINT32 max_scan_interval; UINT32 max_scan_window; BTM_TRACE_EVENT ("%s\n", __func__); - if (!controller_get_interface()->supports_ble()) + if (!controller_get_interface()->supports_ble()) { return; + } /* If not supporting extended scan support, use the older range for checking */ - if (btm_cb.cmn_ble_vsc_cb.extended_scan_support == 0) - { + if (btm_cb.cmn_ble_vsc_cb.extended_scan_support == 0) { max_scan_interval = BTM_BLE_SCAN_INT_MAX; max_scan_window = BTM_BLE_SCAN_WIN_MAX; - } - else - { + } else { /* If supporting extended scan support, use the new extended range for checking */ max_scan_interval = BTM_BLE_EXT_SCAN_INT_MAX; max_scan_window = BTM_BLE_EXT_SCAN_WIN_MAX; } if (BTM_BLE_ISVALID_PARAM(scan_interval, BTM_BLE_SCAN_INT_MIN, max_scan_interval) && - BTM_BLE_ISVALID_PARAM(scan_window, BTM_BLE_SCAN_WIN_MIN, max_scan_window) && - (scan_mode == BTM_BLE_SCAN_MODE_ACTI || scan_mode == BTM_BLE_SCAN_MODE_PASS)) - { + BTM_BLE_ISVALID_PARAM(scan_window, BTM_BLE_SCAN_WIN_MIN, max_scan_window) && + (scan_mode == BTM_BLE_SCAN_MODE_ACTI || scan_mode == BTM_BLE_SCAN_MODE_PASS)) { p_cb->scan_type = scan_mode; p_cb->scan_interval = scan_interval; p_cb->scan_window = scan_window; - p_cb->sfp = scan_filter_policy; + p_cb->sfp = scan_filter_policy; - btsnd_hcic_ble_set_scan_params(p_cb->scan_type, (UINT16)scan_interval, - (UINT16)scan_window, - addr_type_own, - scan_filter_policy); - - if (scan_setup_status_cback != NULL) + btsnd_hcic_ble_set_scan_params(p_cb->scan_type, (UINT16)scan_interval, + (UINT16)scan_window, + addr_type_own, + scan_filter_policy); + + if (scan_setup_status_cback != NULL) { scan_setup_status_cback(client_if, BTM_SUCCESS); - } - else - { - if (scan_setup_status_cback != NULL) + } + } else { + if (scan_setup_status_cback != NULL) { scan_setup_status_cback(client_if, BTM_ILLEGAL_VALUE); + } BTM_TRACE_ERROR("Illegal params: scan_interval = %d scan_window = %d\n", scan_interval, scan_window); @@ -1305,23 +1270,24 @@ tBTM_STATUS BTM_BleWriteScanRsp(tBTM_BLE_AD_MASK data_mask, tBTM_BLE_ADV_DATA *p BTM_TRACE_EVENT (" BTM_BleWriteScanRsp"); - if (!controller_get_interface()->supports_ble()) + if (!controller_get_interface()->supports_ble()) { return BTM_ILLEGAL_VALUE; + } memset(rsp_data, 0, BTM_BLE_AD_DATA_LEN); btm_ble_build_adv_data(&data_mask, &p, p_data); - if (btsnd_hcic_ble_set_scan_rsp_data((UINT8)(p - rsp_data), rsp_data)) - { + if (btsnd_hcic_ble_set_scan_rsp_data((UINT8)(p - rsp_data), rsp_data)) { status = BTM_SUCCESS; - if (data_mask != 0) + if (data_mask != 0) { btm_cb.ble_ctr_cb.inq_var.scan_rsp = TRUE; - else + } else { btm_cb.ble_ctr_cb.inq_var.scan_rsp = FALSE; - } - else + } + } else { status = BTM_ILLEGAL_VALUE; + } return status; } @@ -1345,8 +1311,9 @@ tBTM_STATUS BTM_BleWriteAdvData(tBTM_BLE_AD_MASK data_mask, tBTM_BLE_ADV_DATA *p BTM_TRACE_EVENT ("BTM_BleWriteAdvData "); - if (!controller_get_interface()->supports_ble()) + if (!controller_get_interface()->supports_ble()) { return BTM_ILLEGAL_VALUE; + } memset(p_cb_data, 0, sizeof(tBTM_BLE_LOCAL_ADV_DATA)); p = p_cb_data->ad_data; @@ -1356,18 +1323,18 @@ tBTM_STATUS BTM_BleWriteAdvData(tBTM_BLE_AD_MASK data_mask, tBTM_BLE_ADV_DATA *p p_cb_data->p_pad = p; - if (mask != 0) - { + if (mask != 0) { BTM_TRACE_ERROR("Partial data write into ADV"); } p_cb_data->data_mask &= ~mask; if (btsnd_hcic_ble_set_adv_data((UINT8)(p_cb_data->p_pad - p_cb_data->ad_data), - p_cb_data->ad_data)) + p_cb_data->ad_data)) { return BTM_SUCCESS; - else + } else { return BTM_NO_RESOURCES; + } } @@ -1385,16 +1352,15 @@ tBTM_STATUS BTM_BleWriteAdvData(tBTM_BLE_AD_MASK data_mask, tBTM_BLE_ADV_DATA *p *******************************************************************************/ BOOLEAN BTM_BleSetRandAddress(BD_ADDR rand_addr) { - BOOLEAN set_flag = false; - UINT8 len = sizeof(rand_addr); - if(len != BD_ADDR_LEN) - { - APPL_TRACE_ERROR("Invalid random adress"); - return false; - } - //send the set random address to the controller - set_flag = btsnd_hcic_ble_set_random_addr(rand_addr); - return set_flag; + BOOLEAN set_flag = false; + UINT8 len = sizeof(rand_addr); + if (len != BD_ADDR_LEN) { + APPL_TRACE_ERROR("Invalid random adress"); + return false; + } + //send the set random address to the controller + set_flag = btsnd_hcic_ble_set_random_addr(rand_addr); + return set_flag; } /******************************************************************************* @@ -1419,12 +1385,10 @@ UINT8 *BTM_CheckAdvData( UINT8 *p_adv, UINT8 type, UINT8 *p_length) STREAM_TO_UINT8(length, p); - while ( length && (p - p_adv <= BTM_BLE_CACHE_ADV_DATA_MAX)) - { + while ( length && (p - p_adv <= BTM_BLE_CACHE_ADV_DATA_MAX)) { STREAM_TO_UINT8(adv_type, p); - if ( adv_type == type ) - { + if ( adv_type == type ) { /* length doesn't include itself */ *p_length = length - 1; /* minus the length of type */ return p; @@ -1483,7 +1447,7 @@ UINT8 *btm_ble_build_adv_data(tBTM_BLE_AD_MASK *p_data_mask, UINT8 **p_dst, { UINT32 data_mask = *p_data_mask; UINT8 *p = *p_dst, - *p_flag = NULL; + *p_flag = NULL; UINT16 len = BTM_BLE_AD_DATA_LEN, cp_len = 0; UINT8 i = 0; tBTM_BLE_PROP_ELEM *p_elem; @@ -1491,26 +1455,24 @@ UINT8 *btm_ble_build_adv_data(tBTM_BLE_AD_MASK *p_data_mask, UINT8 **p_dst, BTM_TRACE_EVENT (" btm_ble_build_adv_data"); /* build the adv data structure and build the data string */ - if (data_mask) - { + if (data_mask) { /* flags */ - if (data_mask & BTM_BLE_AD_BIT_FLAGS) - { + if (data_mask & BTM_BLE_AD_BIT_FLAGS) { *p++ = MIN_ADV_LENGTH; *p++ = BTM_BLE_AD_TYPE_FLAG; p_flag = p; - if (p_data) + if (p_data) { *p++ = p_data->flag; - else + } else { *p++ = 0; + } len -= 3; data_mask &= ~BTM_BLE_AD_BIT_FLAGS; } /* appearance data */ - if (len > 3 && data_mask & BTM_BLE_AD_BIT_APPEARANCE) - { + if (len > 3 && data_mask & BTM_BLE_AD_BIT_APPEARANCE) { *p++ = 3; /* length */ *p++ = BTM_BLE_AD_TYPE_APPEARANCE; UINT16_TO_STREAM(p, p_data->appearance); @@ -1520,16 +1482,12 @@ UINT8 *btm_ble_build_adv_data(tBTM_BLE_AD_MASK *p_data_mask, UINT8 **p_dst, } /* device name */ #if BTM_MAX_LOC_BD_NAME_LEN > 0 - if (len > MIN_ADV_LENGTH && data_mask & BTM_BLE_AD_BIT_DEV_NAME) - { - if (strlen(btm_cb.cfg.bd_name) > (UINT16)(len - MIN_ADV_LENGTH)) - { + if (len > MIN_ADV_LENGTH && data_mask & BTM_BLE_AD_BIT_DEV_NAME) { + if (strlen(btm_cb.cfg.bd_name) > (UINT16)(len - MIN_ADV_LENGTH)) { *p++ = len - MIN_ADV_LENGTH + 1; *p++ = BTM_BLE_AD_TYPE_NAME_SHORT; ARRAY_TO_STREAM(p, btm_cb.cfg.bd_name, len - MIN_ADV_LENGTH); - } - else - { + } else { cp_len = (UINT16)strlen(btm_cb.cfg.bd_name); *p++ = cp_len + 1; *p++ = BTM_BLE_AD_TYPE_NAME_CMPL; @@ -1541,56 +1499,50 @@ UINT8 *btm_ble_build_adv_data(tBTM_BLE_AD_MASK *p_data_mask, UINT8 **p_dst, #endif /* manufacturer data */ if (len > MIN_ADV_LENGTH && data_mask & BTM_BLE_AD_BIT_MANU && - p_data && p_data->p_manu && - p_data->p_manu->len != 0 && p_data->p_manu->p_val) - { - if (p_data->p_manu->len > (len - MIN_ADV_LENGTH)) + p_data && p_data->p_manu && + p_data->p_manu->len != 0 && p_data->p_manu->p_val) { + if (p_data->p_manu->len > (len - MIN_ADV_LENGTH)) { cp_len = len - MIN_ADV_LENGTH; - else + } else { cp_len = p_data->p_manu->len; - LOG_DEBUG("cp_len = %d\n,p_data->p_manu->len=%d\n",cp_len,p_data->p_manu->len); - for(int i = 0; i < p_data->p_manu->len; i++) - { - LOG_DEBUG("p_data->p_manu->p_val[%d] = %x\n",i,p_data->p_manu->p_val[i]); + } + LOG_DEBUG("cp_len = %d\n,p_data->p_manu->len=%d\n", cp_len, p_data->p_manu->len); + for (int i = 0; i < p_data->p_manu->len; i++) { + LOG_DEBUG("p_data->p_manu->p_val[%d] = %x\n", i, p_data->p_manu->p_val[i]); } *p++ = cp_len + 1; *p++ = BTM_BLE_AD_TYPE_MANU; ARRAY_TO_STREAM(p, p_data->p_manu->p_val, cp_len); - LOG_DEBUG("p_addr = %p\n,p_data->p_manu->p_val = %p\n",p,p_data->p_manu->p_val); + LOG_DEBUG("p_addr = %p\n,p_data->p_manu->p_val = %p\n", p, p_data->p_manu->p_val); len -= (cp_len + MIN_ADV_LENGTH); data_mask &= ~BTM_BLE_AD_BIT_MANU; } /* TX power */ - if (len > MIN_ADV_LENGTH && data_mask & BTM_BLE_AD_BIT_TX_PWR) - { + if (len > MIN_ADV_LENGTH && data_mask & BTM_BLE_AD_BIT_TX_PWR) { *p++ = MIN_ADV_LENGTH; *p++ = BTM_BLE_AD_TYPE_TX_PWR; - if (p_data->tx_power > BTM_BLE_ADV_TX_POWER_MAX) + if (p_data->tx_power > BTM_BLE_ADV_TX_POWER_MAX) { p_data->tx_power = BTM_BLE_ADV_TX_POWER_MAX; + } *p++ = btm_ble_map_adv_tx_power(p_data->tx_power); len -= 3; data_mask &= ~BTM_BLE_AD_BIT_TX_PWR; } /* 16 bits services */ if (len > MIN_ADV_LENGTH && data_mask & BTM_BLE_AD_BIT_SERVICE && - p_data && p_data->p_services && - p_data->p_services->num_service != 0 && - p_data->p_services->p_uuid) - { - if (p_data->p_services->num_service * LEN_UUID_16 > (len - MIN_ADV_LENGTH)) - { - cp_len = (len - MIN_ADV_LENGTH)/LEN_UUID_16; + p_data && p_data->p_services && + p_data->p_services->num_service != 0 && + p_data->p_services->p_uuid) { + if (p_data->p_services->num_service * LEN_UUID_16 > (len - MIN_ADV_LENGTH)) { + cp_len = (len - MIN_ADV_LENGTH) / LEN_UUID_16; *p ++ = 1 + cp_len * LEN_UUID_16; *p++ = BTM_BLE_AD_TYPE_16SRV_PART; - } - else - { + } else { cp_len = p_data->p_services->num_service; *p++ = 1 + cp_len * LEN_UUID_16; *p++ = BTM_BLE_AD_TYPE_16SRV_CMPL; } - for (i = 0; i < cp_len; i ++) - { + for (i = 0; i < cp_len; i ++) { UINT16_TO_STREAM(p, *(p_data->p_services->p_uuid + i)); } @@ -1599,24 +1551,19 @@ UINT8 *btm_ble_build_adv_data(tBTM_BLE_AD_MASK *p_data_mask, UINT8 **p_dst, } /* 32 bits service uuid */ if (len > MIN_ADV_LENGTH && data_mask & BTM_BLE_AD_BIT_SERVICE_32 && - p_data && p_data->p_service_32b && - p_data->p_service_32b->num_service != 0 && - p_data->p_service_32b->p_uuid) - { - if ((p_data->p_service_32b->num_service * LEN_UUID_32) > (len - MIN_ADV_LENGTH)) - { - cp_len = (len - MIN_ADV_LENGTH)/LEN_UUID_32; + p_data && p_data->p_service_32b && + p_data->p_service_32b->num_service != 0 && + p_data->p_service_32b->p_uuid) { + if ((p_data->p_service_32b->num_service * LEN_UUID_32) > (len - MIN_ADV_LENGTH)) { + cp_len = (len - MIN_ADV_LENGTH) / LEN_UUID_32; *p ++ = 1 + cp_len * LEN_UUID_32; *p++ = BTM_BLE_AD_TYPE_32SRV_PART; - } - else - { + } else { cp_len = p_data->p_service_32b->num_service; *p++ = 1 + cp_len * LEN_UUID_32; *p++ = BTM_BLE_AD_TYPE_32SRV_CMPL; } - for (i = 0; i < cp_len; i ++) - { + for (i = 0; i < cp_len; i ++) { UINT32_TO_STREAM(p, *(p_data->p_service_32b->p_uuid + i)); } @@ -1625,13 +1572,13 @@ UINT8 *btm_ble_build_adv_data(tBTM_BLE_AD_MASK *p_data_mask, UINT8 **p_dst, } /* 128 bits services */ if (len >= (MAX_UUID_SIZE + 2) && data_mask & BTM_BLE_AD_BIT_SERVICE_128 && - p_data && p_data->p_services_128b) - { + p_data && p_data->p_services_128b) { *p ++ = 1 + MAX_UUID_SIZE; - if (!p_data->p_services_128b->list_cmpl) + if (!p_data->p_services_128b->list_cmpl) { *p++ = BTM_BLE_AD_TYPE_128SRV_PART; - else + } else { *p++ = BTM_BLE_AD_TYPE_128SRV_CMPL; + } ARRAY_TO_STREAM(p, p_data->p_services_128b->uuid128, MAX_UUID_SIZE); @@ -1640,24 +1587,19 @@ UINT8 *btm_ble_build_adv_data(tBTM_BLE_AD_MASK *p_data_mask, UINT8 **p_dst, } /* 32 bits Service Solicitation UUIDs */ if (len > MIN_ADV_LENGTH && data_mask & BTM_BLE_AD_BIT_SERVICE_32SOL && - p_data && p_data->p_sol_service_32b && - p_data->p_sol_service_32b->num_service != 0 && - p_data->p_sol_service_32b->p_uuid) - { - if ((p_data->p_sol_service_32b->num_service * LEN_UUID_32) > (len - MIN_ADV_LENGTH)) - { - cp_len = (len - MIN_ADV_LENGTH)/LEN_UUID_32; + p_data && p_data->p_sol_service_32b && + p_data->p_sol_service_32b->num_service != 0 && + p_data->p_sol_service_32b->p_uuid) { + if ((p_data->p_sol_service_32b->num_service * LEN_UUID_32) > (len - MIN_ADV_LENGTH)) { + cp_len = (len - MIN_ADV_LENGTH) / LEN_UUID_32; *p ++ = 1 + cp_len * LEN_UUID_32; - } - else - { + } else { cp_len = p_data->p_sol_service_32b->num_service; *p++ = 1 + cp_len * LEN_UUID_32; } *p++ = BTM_BLE_AD_TYPE_32SOL_SRV_UUID; - for (i = 0; i < cp_len; i ++) - { + for (i = 0; i < cp_len; i ++) { UINT32_TO_STREAM(p, *(p_data->p_sol_service_32b->p_uuid + i)); } @@ -1666,8 +1608,7 @@ UINT8 *btm_ble_build_adv_data(tBTM_BLE_AD_MASK *p_data_mask, UINT8 **p_dst, } /* 128 bits Solicitation services UUID */ if (len >= (MAX_UUID_SIZE + MIN_ADV_LENGTH) && data_mask & BTM_BLE_AD_BIT_SERVICE_128SOL && - p_data && p_data->p_sol_service_128b) - { + p_data && p_data->p_sol_service_128b) { *p ++ = 1 + MAX_UUID_SIZE; *p++ = BTM_BLE_AD_TYPE_128SOL_SRV_UUID; ARRAY_TO_STREAM(p, p_data->p_sol_service_128b->uuid128, MAX_UUID_SIZE); @@ -1676,28 +1617,22 @@ UINT8 *btm_ble_build_adv_data(tBTM_BLE_AD_MASK *p_data_mask, UINT8 **p_dst, } /* 16bits/32bits/128bits Service Data */ if (len > MIN_ADV_LENGTH && data_mask & BTM_BLE_AD_BIT_SERVICE_DATA && - p_data && p_data->p_service_data->len != 0 && p_data->p_service_data->p_val) - { - if (len > (p_data->p_service_data->service_uuid.len + MIN_ADV_LENGTH)) - { - if (p_data->p_service_data->len > (len - MIN_ADV_LENGTH)) - cp_len = len - MIN_ADV_LENGTH- p_data->p_service_data->service_uuid.len; - else + p_data && p_data->p_service_data->len != 0 && p_data->p_service_data->p_val) { + if (len > (p_data->p_service_data->service_uuid.len + MIN_ADV_LENGTH)) { + if (p_data->p_service_data->len > (len - MIN_ADV_LENGTH)) { + cp_len = len - MIN_ADV_LENGTH - p_data->p_service_data->service_uuid.len; + } else { cp_len = p_data->p_service_data->len; + } *p++ = cp_len + 1 + p_data->p_service_data->service_uuid.len; - if (p_data->p_service_data->service_uuid.len == LEN_UUID_16) - { + if (p_data->p_service_data->service_uuid.len == LEN_UUID_16) { *p++ = BTM_BLE_AD_TYPE_SERVICE_DATA; UINT16_TO_STREAM(p, p_data->p_service_data->service_uuid.uu.uuid16); - } - else if (p_data->p_service_data->service_uuid.len == LEN_UUID_32) - { + } else if (p_data->p_service_data->service_uuid.len == LEN_UUID_32) { *p++ = BTM_BLE_AD_TYPE_32SERVICE_DATA; UINT32_TO_STREAM(p, p_data->p_service_data->service_uuid.uu.uuid32); - } - else - { + } else { *p++ = BTM_BLE_AD_TYPE_128SERVICE_DATA; ARRAY_TO_STREAM(p, p_data->p_service_data->service_uuid.uu.uuid128, LEN_UUID_128); @@ -1707,16 +1642,13 @@ UINT8 *btm_ble_build_adv_data(tBTM_BLE_AD_MASK *p_data_mask, UINT8 **p_dst, len -= (cp_len + MIN_ADV_LENGTH + p_data->p_service_data->service_uuid.len); data_mask &= ~BTM_BLE_AD_BIT_SERVICE_DATA; - } - else - { + } else { BTM_TRACE_WARNING("service data does not fit"); } } if (len >= 6 && data_mask & BTM_BLE_AD_BIT_INT_RANGE && - p_data) - { + p_data) { *p++ = 5; *p++ = BTM_BLE_AD_TYPE_INT_RANGE; UINT16_TO_STREAM(p, p_data->int_range.low); @@ -1724,10 +1656,8 @@ UINT8 *btm_ble_build_adv_data(tBTM_BLE_AD_MASK *p_data_mask, UINT8 **p_dst, len -= 6; data_mask &= ~BTM_BLE_AD_BIT_INT_RANGE; } - if (data_mask & BTM_BLE_AD_BIT_PROPRIETARY && p_data && p_data->p_proprietary) - { - for (i = 0; i < p_data->p_proprietary->num_elem ; i ++) - { + if (data_mask & BTM_BLE_AD_BIT_PROPRIETARY && p_data && p_data->p_proprietary) { + for (i = 0; i < p_data->p_proprietary->num_elem ; i ++) { p_elem = p_data->p_proprietary->p_elem + i; if (len >= (MIN_ADV_LENGTH + p_elem->len))/* len byte(1) + ATTR type(1) + Uuid len(2) @@ -1738,9 +1668,7 @@ UINT8 *btm_ble_build_adv_data(tBTM_BLE_AD_MASK *p_data_mask, UINT8 **p_dst, ARRAY_TO_STREAM(p, p_elem->p_val, p_elem->len); len -= (MIN_ADV_LENGTH + p_elem->len); - } - else - { + } else { BTM_TRACE_WARNING("data exceed max adv packet length"); break; } @@ -1765,15 +1693,11 @@ UINT8 *btm_ble_build_adv_data(tBTM_BLE_AD_MASK *p_data_mask, UINT8 **p_dst, *******************************************************************************/ void btm_ble_select_adv_interval(tBTM_BLE_INQ_CB *p_cb, UINT8 evt_type, UINT16 *p_adv_int_min, UINT16 *p_adv_int_max) { - if (p_cb->adv_interval_min && p_cb->adv_interval_max) - { + if (p_cb->adv_interval_min && p_cb->adv_interval_max) { *p_adv_int_min = p_cb->adv_interval_min; *p_adv_int_max = p_cb->adv_interval_max; - } - else - { - switch (evt_type) - { + } else { + switch (evt_type) { case BTM_BLE_CONNECT_EVT: case BTM_BLE_CONNECT_LO_DUTY_DIR_EVT: *p_adv_int_min = *p_adv_int_max = BTM_BLE_GAP_ADV_FAST_INT_1; @@ -1814,20 +1738,22 @@ void btm_ble_select_adv_interval(tBTM_BLE_INQ_CB *p_cb, UINT8 evt_type, UINT16 * ** *******************************************************************************/ void btm_ble_update_dmt_flag_bits(UINT8 *adv_flag_value, const UINT16 connect_mode, - const UINT16 disc_mode) + const UINT16 disc_mode) { /* BR/EDR non-discoverable , non-connectable */ if ((disc_mode & BTM_DISCOVERABLE_MASK) == 0 && - (connect_mode & BTM_CONNECTABLE_MASK) == 0) + (connect_mode & BTM_CONNECTABLE_MASK) == 0) { *adv_flag_value |= BTM_BLE_BREDR_NOT_SPT; - else + } else { *adv_flag_value &= ~BTM_BLE_BREDR_NOT_SPT; + } /* if local controller support, mark both controller and host support in flag */ - if (controller_get_interface()->supports_simultaneous_le_bredr()) - *adv_flag_value |= (BTM_BLE_DMT_CONTROLLER_SPT|BTM_BLE_DMT_HOST_SPT); - else - *adv_flag_value &= ~(BTM_BLE_DMT_CONTROLLER_SPT|BTM_BLE_DMT_HOST_SPT); + if (controller_get_interface()->supports_simultaneous_le_bredr()) { + *adv_flag_value |= (BTM_BLE_DMT_CONTROLLER_SPT | BTM_BLE_DMT_HOST_SPT); + } else { + *adv_flag_value &= ~(BTM_BLE_DMT_CONTROLLER_SPT | BTM_BLE_DMT_HOST_SPT); + } } /******************************************************************************* @@ -1847,30 +1773,25 @@ void btm_ble_set_adv_flag(UINT16 connect_mode, UINT16 disc_mode) UINT8 flag = 0, old_flag = 0; tBTM_BLE_LOCAL_ADV_DATA *p_adv_data = &btm_cb.ble_ctr_cb.inq_var.adv_data; - if (p_adv_data->p_flags != NULL) + if (p_adv_data->p_flags != NULL) { flag = old_flag = *(p_adv_data->p_flags); + } btm_ble_update_dmt_flag_bits (&flag, connect_mode, disc_mode); LOG_DEBUG("disc_mode %04x", disc_mode); /* update discoverable flag */ - if (disc_mode & BTM_BLE_LIMITED_DISCOVERABLE) - { + if (disc_mode & BTM_BLE_LIMITED_DISCOVERABLE) { flag &= ~BTM_BLE_GEN_DISC_FLAG; flag |= BTM_BLE_LIMIT_DISC_FLAG; - } - else if (disc_mode & BTM_BLE_GENERAL_DISCOVERABLE) - { + } else if (disc_mode & BTM_BLE_GENERAL_DISCOVERABLE) { flag |= BTM_BLE_GEN_DISC_FLAG; flag &= ~BTM_BLE_LIMIT_DISC_FLAG; - } - else /* remove all discoverable flags */ - { - flag &= ~(BTM_BLE_LIMIT_DISC_FLAG|BTM_BLE_GEN_DISC_FLAG); + } else { /* remove all discoverable flags */ + flag &= ~(BTM_BLE_LIMIT_DISC_FLAG | BTM_BLE_GEN_DISC_FLAG); } - if (flag != old_flag) - { + if (flag != old_flag) { LOG_ERROR("flag = 0x%x,old_flag = 0x%x", flag, old_flag); btm_ble_update_adv_flag(flag); } @@ -1894,7 +1815,7 @@ tBTM_STATUS btm_ble_set_discoverability(UINT16 combined_mode) UINT8 new_mode = BTM_BLE_ADV_ENABLE; UINT8 evt_type; tBTM_STATUS status = BTM_SUCCESS; - BD_ADDR p_addr_ptr= {0}; + BD_ADDR p_addr_ptr = {0}; tBLE_ADDR_TYPE init_addr_type = BLE_ADDR_PUBLIC, own_addr_type = p_addr_cb->own_addr_type; UINT16 adv_int_min, adv_int_max; @@ -1902,15 +1823,17 @@ tBTM_STATUS btm_ble_set_discoverability(UINT16 combined_mode) BTM_TRACE_EVENT ("%s mode=0x%0x combined_mode=0x%x\n", __FUNCTION__, mode, combined_mode); /*** Check mode parameter ***/ - if (mode > BTM_BLE_MAX_DISCOVERABLE) - return(BTM_ILLEGAL_VALUE); + if (mode > BTM_BLE_MAX_DISCOVERABLE) { + return (BTM_ILLEGAL_VALUE); + } p_cb->discoverable_mode = mode; evt_type = btm_set_conn_mode_adv_init_addr(p_cb, p_addr_ptr, &init_addr_type, &own_addr_type); - if (p_cb->connectable_mode == BTM_BLE_NON_CONNECTABLE && mode == BTM_BLE_NON_DISCOVERABLE) + if (p_cb->connectable_mode == BTM_BLE_NON_CONNECTABLE && mode == BTM_BLE_NON_DISCOVERABLE) { new_mode = BTM_BLE_ADV_DISABLE; + } btm_ble_select_adv_interval(p_cb, evt_type, &adv_int_min, &adv_int_max); @@ -1919,13 +1842,11 @@ tBTM_STATUS btm_ble_set_discoverability(UINT16 combined_mode) /* update adv params if start advertising */ BTM_TRACE_EVENT ("evt_type=0x%x p-cb->evt_type=0x%x\n ", evt_type, p_cb->evt_type); - if (new_mode == BTM_BLE_ADV_ENABLE) - { + if (new_mode == BTM_BLE_ADV_ENABLE) { btm_ble_set_adv_flag (btm_cb.btm_inq_vars.connectable_mode, combined_mode); - if (evt_type != p_cb->evt_type ||p_cb->adv_addr_type != own_addr_type - || !p_cb->fast_adv_on) - { + if (evt_type != p_cb->evt_type || p_cb->adv_addr_type != own_addr_type + || !p_cb->fast_adv_on) { btm_ble_stop_adv(); /* update adv params */ @@ -1936,43 +1857,36 @@ tBTM_STATUS btm_ble_set_discoverability(UINT16 combined_mode) init_addr_type, p_addr_ptr, p_cb->adv_chnl_map, - p_cb->afp)) - { + p_cb->afp)) { status = BTM_NO_RESOURCES; - } - else - { + } else { p_cb->evt_type = evt_type; p_cb->adv_addr_type = own_addr_type; } } } - if (status == BTM_SUCCESS && p_cb->adv_mode != new_mode) - { - if (new_mode == BTM_BLE_ADV_ENABLE) + if (status == BTM_SUCCESS && p_cb->adv_mode != new_mode) { + if (new_mode == BTM_BLE_ADV_ENABLE) { status = btm_ble_start_adv(); - else + } else { status = btm_ble_stop_adv(); + } } - if (p_cb->adv_mode == BTM_BLE_ADV_ENABLE) - { + if (p_cb->adv_mode == BTM_BLE_ADV_ENABLE) { p_cb->fast_adv_on = TRUE; /* start initial GAP mode adv timer */ btu_start_timer (&p_cb->fast_adv_timer, BTU_TTYPE_BLE_GAP_FAST_ADV, - BTM_BLE_GAP_FAST_ADV_TOUT); - } - else - { + BTM_BLE_GAP_FAST_ADV_TOUT); + } else { #if BLE_PRIVACY_SPT == TRUE btm_ble_disable_resolving_list(BTM_BLE_RL_ADV, TRUE); #endif } /* set up stop advertising timer */ - if (status == BTM_SUCCESS && mode == BTM_BLE_LIMITED_DISCOVERABLE) - { + if (status == BTM_SUCCESS && mode == BTM_BLE_LIMITED_DISCOVERABLE) { BTM_TRACE_EVENT ("start timer for limited disc mode duration=%d (180 secs)", BTM_BLE_GAP_LIM_TOUT); /* start Tgap(lim_timeout) */ btu_start_timer (&p_cb->inq_timer_ent, BTU_TTYPE_BLE_GAP_LIM_DISC, @@ -2008,26 +1922,26 @@ tBTM_STATUS btm_ble_set_connectability(UINT16 combined_mode) BTM_TRACE_EVENT ("%s mode=0x%0x combined_mode=0x%x\n", __FUNCTION__, mode, combined_mode); /*** Check mode parameter ***/ - if (mode > BTM_BLE_MAX_CONNECTABLE) - return(BTM_ILLEGAL_VALUE); + if (mode > BTM_BLE_MAX_CONNECTABLE) { + return (BTM_ILLEGAL_VALUE); + } p_cb->connectable_mode = mode; evt_type = btm_set_conn_mode_adv_init_addr(p_cb, p_addr_ptr, &peer_addr_type, &own_addr_type); - if (mode == BTM_BLE_NON_CONNECTABLE && p_cb->discoverable_mode == BTM_BLE_NON_DISCOVERABLE) + if (mode == BTM_BLE_NON_CONNECTABLE && p_cb->discoverable_mode == BTM_BLE_NON_DISCOVERABLE) { new_mode = BTM_BLE_ADV_DISABLE; + } btm_ble_select_adv_interval(p_cb, evt_type, &adv_int_min, &adv_int_max); btu_stop_timer(&p_cb->fast_adv_timer); /* update adv params if needed */ - if (new_mode == BTM_BLE_ADV_ENABLE) - { + if (new_mode == BTM_BLE_ADV_ENABLE) { btm_ble_set_adv_flag (combined_mode, btm_cb.btm_inq_vars.discoverable_mode); if (p_cb->evt_type != evt_type || p_cb->adv_addr_type != p_addr_cb->own_addr_type - || !p_cb->fast_adv_on) - { + || !p_cb->fast_adv_on) { btm_ble_stop_adv(); if (!btsnd_hcic_ble_write_adv_params (adv_int_min, @@ -2037,12 +1951,9 @@ tBTM_STATUS btm_ble_set_connectability(UINT16 combined_mode) peer_addr_type, p_addr_ptr, p_cb->adv_chnl_map, - p_cb->afp)) - { + p_cb->afp)) { status = BTM_NO_RESOURCES; - } - else - { + } else { p_cb->evt_type = evt_type; p_cb->adv_addr_type = own_addr_type; } @@ -2050,23 +1961,20 @@ tBTM_STATUS btm_ble_set_connectability(UINT16 combined_mode) } /* update advertising mode */ - if (status == BTM_SUCCESS && new_mode != p_cb->adv_mode) - { - if (new_mode == BTM_BLE_ADV_ENABLE) + if (status == BTM_SUCCESS && new_mode != p_cb->adv_mode) { + if (new_mode == BTM_BLE_ADV_ENABLE) { status = btm_ble_start_adv(); - else + } else { status = btm_ble_stop_adv(); + } } - if (p_cb->adv_mode == BTM_BLE_ADV_ENABLE) - { + if (p_cb->adv_mode == BTM_BLE_ADV_ENABLE) { p_cb->fast_adv_on = TRUE; /* start initial GAP mode adv timer */ btu_start_timer (&p_cb->fast_adv_timer, BTU_TTYPE_BLE_GAP_FAST_ADV, - BTM_BLE_GAP_FAST_ADV_TOUT); - } - else - { + BTM_BLE_GAP_FAST_ADV_TOUT); + } else { #if BLE_PRIVACY_SPT == TRUE btm_ble_disable_resolving_list(BTM_BLE_RL_ADV, TRUE); #endif @@ -2104,47 +2012,42 @@ tBTM_STATUS btm_ble_start_inquiry (UINT8 mode, UINT8 duration) /* if selective connection is active, or inquiry is already active, reject it */ if (BTM_BLE_IS_INQ_ACTIVE(p_ble_cb->scan_activity) || - BTM_BLE_IS_SEL_CONN_ACTIVE (p_ble_cb->scan_activity)) - { + BTM_BLE_IS_SEL_CONN_ACTIVE (p_ble_cb->scan_activity)) { BTM_TRACE_ERROR("LE Inquiry is active, can not start inquiry"); - return(BTM_BUSY); + return (BTM_BUSY); } - if (!BTM_BLE_IS_SCAN_ACTIVE(p_ble_cb->scan_activity)) - { + if (!BTM_BLE_IS_SCAN_ACTIVE(p_ble_cb->scan_activity)) { btsnd_hcic_ble_set_scan_params(BTM_BLE_SCAN_MODE_ACTI, - BTM_BLE_LOW_LATENCY_SCAN_INT, - BTM_BLE_LOW_LATENCY_SCAN_WIN, - btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type, - SP_ADV_ALL); + BTM_BLE_LOW_LATENCY_SCAN_INT, + BTM_BLE_LOW_LATENCY_SCAN_WIN, + btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type, + SP_ADV_ALL); #if (defined BLE_PRIVACY_SPT && BLE_PRIVACY_SPT == TRUE) /* enable IRK list */ btm_ble_enable_resolving_list_for_platform(BTM_BLE_RL_SCAN); #endif p_ble_cb->inq_var.scan_duplicate_filter = BTM_BLE_DUPLICATE_DISABLE; status = btm_ble_start_scan(); - } - else if ((p_ble_cb->inq_var.scan_interval != BTM_BLE_LOW_LATENCY_SCAN_INT) || - (p_ble_cb->inq_var.scan_window != BTM_BLE_LOW_LATENCY_SCAN_WIN)) { + } else if ((p_ble_cb->inq_var.scan_interval != BTM_BLE_LOW_LATENCY_SCAN_INT) || + (p_ble_cb->inq_var.scan_window != BTM_BLE_LOW_LATENCY_SCAN_WIN)) { BTM_TRACE_DEBUG("%s, restart LE scan with low latency scan params", __FUNCTION__); btsnd_hcic_ble_set_scan_enable(BTM_BLE_SCAN_DISABLE, BTM_BLE_DUPLICATE_ENABLE); btsnd_hcic_ble_set_scan_params(BTM_BLE_SCAN_MODE_ACTI, - BTM_BLE_LOW_LATENCY_SCAN_INT, - BTM_BLE_LOW_LATENCY_SCAN_WIN, - btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type, - SP_ADV_ALL); + BTM_BLE_LOW_LATENCY_SCAN_INT, + BTM_BLE_LOW_LATENCY_SCAN_WIN, + btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type, + SP_ADV_ALL); btsnd_hcic_ble_set_scan_enable(BTM_BLE_SCAN_ENABLE, BTM_BLE_DUPLICATE_DISABLE); } - if (status == BTM_CMD_STARTED) - { + if (status == BTM_CMD_STARTED) { p_inq->inq_active |= mode; p_ble_cb->scan_activity |= mode; BTM_TRACE_DEBUG("btm_ble_start_inquiry inq_active = 0x%02x", p_inq->inq_active); - if (duration != 0) - { + if (duration != 0) { /* start inquiry timer */ btu_start_timer (&p_ble_cb->inq_var.inq_timer_ent, BTU_TTYPE_BLE_INQUIRY, duration); } @@ -2169,18 +2072,16 @@ void btm_ble_read_remote_name_cmpl(BOOLEAN status, BD_ADDR bda, UINT16 length, c BD_NAME bd_name; memset(bd_name, 0, (BD_NAME_LEN + 1)); - if (length > BD_NAME_LEN) - { + if (length > BD_NAME_LEN) { length = BD_NAME_LEN; } - memcpy((UINT8*)bd_name, p_name, length); + memcpy((UINT8 *)bd_name, p_name, length); - if ((!status) || (length==0)) - { + if ((!status) || (length == 0)) { hci_status = HCI_ERR_HOST_TIMEOUT; } - btm_process_remote_name(bda, bd_name, length +1, hci_status); + btm_process_remote_name(bda, bd_name, length + 1, hci_status); btm_sec_rmt_name_request_complete (bda, (UINT8 *)p_name, hci_status); } @@ -2200,24 +2101,26 @@ tBTM_STATUS btm_ble_read_remote_name(BD_ADDR remote_bda, tBTM_INQ_INFO *p_cur, t { tBTM_INQUIRY_VAR_ST *p_inq = &btm_cb.btm_inq_vars; - if (!controller_get_interface()->supports_ble()) + if (!controller_get_interface()->supports_ble()) { return BTM_ERR_PROCESSING; + } if (p_cur && - p_cur->results.ble_evt_type != BTM_BLE_EVT_CONN_ADV && - p_cur->results.ble_evt_type != BTM_BLE_EVT_CONN_DIR_ADV) - { + p_cur->results.ble_evt_type != BTM_BLE_EVT_CONN_ADV && + p_cur->results.ble_evt_type != BTM_BLE_EVT_CONN_DIR_ADV) { BTM_TRACE_DEBUG("name request to non-connectable device failed."); return BTM_ERR_PROCESSING; } /* read remote device name using GATT procedure */ - if (p_inq->remname_active) + if (p_inq->remname_active) { return BTM_BUSY; + } #if (defined(GAP_INCLUDED) && GAP_INCLUDED == TRUE) - if (!GAP_BleReadPeerDevName(remote_bda, btm_ble_read_remote_name_cmpl)) + if (!GAP_BleReadPeerDevName(remote_bda, btm_ble_read_remote_name_cmpl)) { return BTM_BUSY; + } #endif p_inq->p_remname_cmpl_cb = p_cb; @@ -2278,18 +2181,14 @@ static void btm_ble_update_adv_flag(UINT8 flag) BTM_TRACE_DEBUG ("btm_ble_update_adv_flag new=0x%x", flag); - if (p_adv_data->p_flags != NULL) - { + if (p_adv_data->p_flags != NULL) { BTM_TRACE_DEBUG ("btm_ble_update_adv_flag old=0x%x", *p_adv_data->p_flags); *p_adv_data->p_flags = flag; - } - else /* no FLAGS in ADV data*/ - { + } else { /* no FLAGS in ADV data*/ p = (p_adv_data->p_pad == NULL) ? p_adv_data->ad_data : p_adv_data->p_pad; /* need 3 bytes space to stuff in the flags, if not */ /* erase all written data, just for flags */ - if ((BTM_BLE_AD_DATA_LEN - (p - p_adv_data->ad_data)) < 3) - { + if ((BTM_BLE_AD_DATA_LEN - (p - p_adv_data->ad_data)) < 3) { p = p_adv_data->p_pad = p_adv_data->ad_data; memset(p_adv_data->ad_data, 0, BTM_BLE_AD_DATA_LEN); } @@ -2302,8 +2201,9 @@ static void btm_ble_update_adv_flag(UINT8 flag) } if (btsnd_hcic_ble_set_adv_data((UINT8)(p_adv_data->p_pad - p_adv_data->ad_data), - p_adv_data->ad_data)) + p_adv_data->ad_data)) { p_adv_data->data_mask |= BTM_BLE_AD_BIT_FLAGS; + } } @@ -2325,84 +2225,82 @@ static void btm_ble_parse_adv_data(tBTM_INQ_INFO *p_info, UINT8 *p_data, BTM_TRACE_EVENT (" btm_ble_parse_adv_data"); - while (len > 0) - { + while (len > 0) { BTM_TRACE_DEBUG("btm_ble_parse_adv_data: len = %d", len); - if ((ad_len = *p_cur ++) == 0) + if ((ad_len = *p_cur ++) == 0) { break; + } ad_type = *p_cur ++; BTM_TRACE_DEBUG(" ad_type = %02x ad_len = %d", ad_type, ad_len); - switch (ad_type) - { - case BTM_BLE_AD_TYPE_NAME_SHORT: + switch (ad_type) { + case BTM_BLE_AD_TYPE_NAME_SHORT: - case BTM_BLE_AD_TYPE_NAME_CMPL: - p_adv_data->ad_mask |= BTM_BLE_AD_BIT_DEV_NAME; - if (p_info) - { - p_info->remote_name_type =(ad_type == BTM_BLE_AD_TYPE_NAME_SHORT) ? - BTM_BLE_NAME_SHORT: BTM_BLE_NAME_CMPL; - memcpy(p_info->remote_name, p_cur, ad_len -1); - p_info->remote_name[ad_len] = 0; - p_adv_data->p_remote_name = p_info->remote_name; - p_info->remote_name_len = p_adv_data->remote_name_len = ad_len - 1; - BTM_TRACE_DEBUG("BTM_BLE_AD_TYPE_NAME name = %s",p_adv_data->p_remote_name); - } - p_cur += (ad_len -1); + case BTM_BLE_AD_TYPE_NAME_CMPL: + p_adv_data->ad_mask |= BTM_BLE_AD_BIT_DEV_NAME; + if (p_info) { + p_info->remote_name_type = (ad_type == BTM_BLE_AD_TYPE_NAME_SHORT) ? + BTM_BLE_NAME_SHORT : BTM_BLE_NAME_CMPL; + memcpy(p_info->remote_name, p_cur, ad_len - 1); + p_info->remote_name[ad_len] = 0; + p_adv_data->p_remote_name = p_info->remote_name; + p_info->remote_name_len = p_adv_data->remote_name_len = ad_len - 1; + BTM_TRACE_DEBUG("BTM_BLE_AD_TYPE_NAME name = %s", p_adv_data->p_remote_name); + } + p_cur += (ad_len - 1); - break; + break; - case BTM_BLE_AD_TYPE_FLAG: - p_adv_data->ad_mask |= BTM_BLE_AD_BIT_FLAGS; - ad_flag = *p_cur ++; - p_adv_data->flag = (UINT8)(ad_flag & BTM_BLE_ADV_FLAG_MASK) ; - BTM_TRACE_DEBUG("BTM_BLE_AD_TYPE_FLAG flag = %s | %s | %s", - (p_adv_data->flag & BTM_BLE_LIMIT_DISC_FLAG)? "LE_LIMIT_DISC" : "", - (p_adv_data->flag & BTM_BLE_GEN_DISC_FLAG)? "LE_GENERAL_DISC" : "", - (p_adv_data->flag & BTM_BLE_BREDR_NOT_SPT)? "LE Only device" : ""); - break; + case BTM_BLE_AD_TYPE_FLAG: + p_adv_data->ad_mask |= BTM_BLE_AD_BIT_FLAGS; + ad_flag = *p_cur ++; + p_adv_data->flag = (UINT8)(ad_flag & BTM_BLE_ADV_FLAG_MASK) ; + BTM_TRACE_DEBUG("BTM_BLE_AD_TYPE_FLAG flag = %s | %s | %s", + (p_adv_data->flag & BTM_BLE_LIMIT_DISC_FLAG) ? "LE_LIMIT_DISC" : "", + (p_adv_data->flag & BTM_BLE_GEN_DISC_FLAG) ? "LE_GENERAL_DISC" : "", + (p_adv_data->flag & BTM_BLE_BREDR_NOT_SPT) ? "LE Only device" : ""); + break; - case BTM_BLE_AD_TYPE_TX_PWR: - p_adv_data->ad_mask |= BTM_BLE_AD_BIT_TX_PWR; - p_adv_data->tx_power_level = (INT8)*p_cur ++; - BTM_TRACE_DEBUG("BTM_BLE_AD_TYPE_TX_PWR tx_level = %d", p_adv_data->tx_power_level); - break; + case BTM_BLE_AD_TYPE_TX_PWR: + p_adv_data->ad_mask |= BTM_BLE_AD_BIT_TX_PWR; + p_adv_data->tx_power_level = (INT8) * p_cur ++; + BTM_TRACE_DEBUG("BTM_BLE_AD_TYPE_TX_PWR tx_level = %d", p_adv_data->tx_power_level); + break; - case BTM_BLE_AD_TYPE_MANU: + case BTM_BLE_AD_TYPE_MANU: - case BTM_BLE_AD_TYPE_16SRV_PART: - case BTM_BLE_AD_TYPE_16SRV_CMPL: - p_adv_data->ad_mask |= BTM_BLE_AD_BIT_SERVICE; - /* need allocate memory to store UUID list */ - p_adv_data->service.num_service = (ad_len - 1)/2; - BTM_TRACE_DEBUG("service UUID list, num = %d", p_adv_data->service.num_service); - p_cur += (ad_len - 1); - break; + case BTM_BLE_AD_TYPE_16SRV_PART: + case BTM_BLE_AD_TYPE_16SRV_CMPL: + p_adv_data->ad_mask |= BTM_BLE_AD_BIT_SERVICE; + /* need allocate memory to store UUID list */ + p_adv_data->service.num_service = (ad_len - 1) / 2; + BTM_TRACE_DEBUG("service UUID list, num = %d", p_adv_data->service.num_service); + p_cur += (ad_len - 1); + break; - case BTM_BLE_AD_TYPE_SOL_SRV_UUID: - p_adv_data->ad_mask |= BTM_BLE_AD_BIT_SERVICE_SOL; - /* need allocate memory to store UUID list */ - p_adv_data->service.num_service = (ad_len - 1)/2; - BTM_TRACE_DEBUG("service UUID list, num = %d", p_adv_data->service.num_service); - p_cur += (ad_len - 1); - break; + case BTM_BLE_AD_TYPE_SOL_SRV_UUID: + p_adv_data->ad_mask |= BTM_BLE_AD_BIT_SERVICE_SOL; + /* need allocate memory to store UUID list */ + p_adv_data->service.num_service = (ad_len - 1) / 2; + BTM_TRACE_DEBUG("service UUID list, num = %d", p_adv_data->service.num_service); + p_cur += (ad_len - 1); + break; - case BTM_BLE_AD_TYPE_128SOL_SRV_UUID: - p_adv_data->ad_mask |= BTM_BLE_AD_BIT_SERVICE_128SOL; - /* need allocate memory to store UUID list */ - p_adv_data->service.num_service = (ad_len - 1)/16; - BTM_TRACE_DEBUG("service UUID list, num = %d", p_adv_data->service.num_service); - p_cur += (ad_len - 1); - break; + case BTM_BLE_AD_TYPE_128SOL_SRV_UUID: + p_adv_data->ad_mask |= BTM_BLE_AD_BIT_SERVICE_128SOL; + /* need allocate memory to store UUID list */ + p_adv_data->service.num_service = (ad_len - 1) / 16; + BTM_TRACE_DEBUG("service UUID list, num = %d", p_adv_data->service.num_service); + p_cur += (ad_len - 1); + break; - case BTM_BLE_AD_TYPE_APPEARANCE: - case BTM_BLE_AD_TYPE_PUBLIC_TARGET: - case BTM_BLE_AD_TYPE_RANDOM_TARGET: - default: - break; + case BTM_BLE_AD_TYPE_APPEARANCE: + case BTM_BLE_AD_TYPE_PUBLIC_TARGET: + case BTM_BLE_AD_TYPE_RANDOM_TARGET: + default: + break; } len -= (ad_len + 1); } @@ -2426,24 +2324,21 @@ void btm_ble_cache_adv_data(tBTM_INQ_RESULTS *p_cur, UINT8 data_len, UINT8 *p, U UNUSED(p_cur); /* cache adv report/scan response data */ - if (evt_type != BTM_BLE_SCAN_RSP_EVT) - { + if (evt_type != BTM_BLE_SCAN_RSP_EVT) { p_le_inq_cb->adv_len = 0; memset(p_le_inq_cb->adv_data_cache, 0, BTM_BLE_CACHE_ADV_DATA_MAX); } - if (data_len > 0) - { + if (data_len > 0) { p_cache = &p_le_inq_cb->adv_data_cache[p_le_inq_cb->adv_len]; STREAM_TO_UINT8(length, p); - while ( length && ((p_le_inq_cb->adv_len + length + 1) <= BTM_BLE_CACHE_ADV_DATA_MAX)) - { + while ( length && ((p_le_inq_cb->adv_len + length + 1) <= BTM_BLE_CACHE_ADV_DATA_MAX)) { /* copy from the length byte & data into cache */ - memcpy(p_cache, p-1, length+1); + memcpy(p_cache, p - 1, length + 1); /* advance the cache pointer past data */ - p_cache += length+1; + p_cache += length + 1; /* increment cache length */ - p_le_inq_cb->adv_len += length+1; + p_le_inq_cb->adv_len += length + 1; /* skip the length of data */ p += length; STREAM_TO_UINT8(length, p); @@ -2476,38 +2371,35 @@ UINT8 btm_ble_is_discoverable(BD_ADDR bda, UINT8 evt_type, UINT8 *p) UNUSED(p); /* for observer, always "discoverable */ - if (BTM_BLE_IS_OBS_ACTIVE(btm_cb.ble_ctr_cb.scan_activity)) + if (BTM_BLE_IS_OBS_ACTIVE(btm_cb.ble_ctr_cb.scan_activity)) { rt |= BTM_BLE_OBS_RESULT; + } if (BTM_BLE_IS_SEL_CONN_ACTIVE(btm_cb.ble_ctr_cb.scan_activity) && - (evt_type == BTM_BLE_CONNECT_EVT || evt_type == BTM_BLE_CONNECT_DIR_EVT)) + (evt_type == BTM_BLE_CONNECT_EVT || evt_type == BTM_BLE_CONNECT_DIR_EVT)) { rt |= BTM_BLE_SEL_CONN_RESULT; + } /* does not match filter condition */ if (p_cond->filter_cond_type == BTM_FILTER_COND_BD_ADDR && - memcmp(bda, p_cond->filter_cond.bdaddr_cond, BD_ADDR_LEN) != 0) - { + memcmp(bda, p_cond->filter_cond.bdaddr_cond, BD_ADDR_LEN) != 0) { BTM_TRACE_DEBUG("BD ADDR does not meet filter condition"); return rt; } - if (p_le_inq_cb->adv_len != 0) - { + if (p_le_inq_cb->adv_len != 0) { if ((p_flag = BTM_CheckAdvData(p_le_inq_cb->adv_data_cache, - BTM_BLE_AD_TYPE_FLAG, &data_len)) != NULL) - { + BTM_BLE_AD_TYPE_FLAG, &data_len)) != NULL) { flag = * p_flag; if ((btm_cb.btm_inq_vars.inq_active & BTM_BLE_GENERAL_INQUIRY) && - (flag & (BTM_BLE_LIMIT_DISC_FLAG|BTM_BLE_GEN_DISC_FLAG)) != 0) - { + (flag & (BTM_BLE_LIMIT_DISC_FLAG | BTM_BLE_GEN_DISC_FLAG)) != 0) { BTM_TRACE_DEBUG("Find Generable Discoverable device"); rt |= BTM_BLE_INQ_RESULT; } else if (btm_cb.btm_inq_vars.inq_active & BTM_BLE_LIMITED_INQUIRY && - (flag & BTM_BLE_LIMIT_DISC_FLAG) != 0) - { + (flag & BTM_BLE_LIMIT_DISC_FLAG) != 0) { BTM_TRACE_DEBUG("Find limited discoverable device"); rt |= BTM_BLE_INQ_RESULT; } @@ -2520,126 +2412,125 @@ static void btm_ble_appearance_to_cod(UINT16 appearance, UINT8 *dev_class) { dev_class[0] = 0; - switch (appearance) - { - case BTM_BLE_APPEARANCE_GENERIC_PHONE: - dev_class[1] = BTM_COD_MAJOR_PHONE; - dev_class[2] = BTM_COD_MINOR_UNCLASSIFIED; - break; - case BTM_BLE_APPEARANCE_GENERIC_COMPUTER: - dev_class[1] = BTM_COD_MAJOR_COMPUTER; - dev_class[2] = BTM_COD_MINOR_UNCLASSIFIED; - break; - case BTM_BLE_APPEARANCE_GENERIC_REMOTE: - dev_class[1] = BTM_COD_MAJOR_PERIPHERAL; - dev_class[2] = BTM_COD_MINOR_REMOTE_CONTROL; - break; - case BTM_BLE_APPEARANCE_GENERIC_THERMOMETER: - case BTM_BLE_APPEARANCE_THERMOMETER_EAR: - dev_class[1] = BTM_COD_MAJOR_HEALTH; - dev_class[2] = BTM_COD_MINOR_THERMOMETER; - break; - case BTM_BLE_APPEARANCE_GENERIC_HEART_RATE: - case BTM_BLE_APPEARANCE_HEART_RATE_BELT: - dev_class[1] = BTM_COD_MAJOR_HEALTH; - dev_class[2] = BTM_COD_MINOR_HEART_PULSE_MONITOR; - break; - case BTM_BLE_APPEARANCE_GENERIC_BLOOD_PRESSURE: - case BTM_BLE_APPEARANCE_BLOOD_PRESSURE_ARM: - case BTM_BLE_APPEARANCE_BLOOD_PRESSURE_WRIST: - dev_class[1] = BTM_COD_MAJOR_HEALTH; - dev_class[2] = BTM_COD_MINOR_BLOOD_MONITOR; - break; - case BTM_BLE_APPEARANCE_GENERIC_PULSE_OXIMETER: - case BTM_BLE_APPEARANCE_PULSE_OXIMETER_FINGERTIP: - case BTM_BLE_APPEARANCE_PULSE_OXIMETER_WRIST: - dev_class[1] = BTM_COD_MAJOR_HEALTH; - dev_class[2] = BTM_COD_MINOR_PULSE_OXIMETER; - break; - case BTM_BLE_APPEARANCE_GENERIC_GLUCOSE: - dev_class[1] = BTM_COD_MAJOR_HEALTH; - dev_class[2] = BTM_COD_MINOR_GLUCOSE_METER; - break; - case BTM_BLE_APPEARANCE_GENERIC_WEIGHT: - dev_class[1] = BTM_COD_MAJOR_HEALTH; - dev_class[2] = BTM_COD_MINOR_WEIGHING_SCALE; - break; - case BTM_BLE_APPEARANCE_GENERIC_WALKING: - case BTM_BLE_APPEARANCE_WALKING_IN_SHOE: - case BTM_BLE_APPEARANCE_WALKING_ON_SHOE: - case BTM_BLE_APPEARANCE_WALKING_ON_HIP: - dev_class[1] = BTM_COD_MAJOR_HEALTH; - dev_class[2] = BTM_COD_MINOR_STEP_COUNTER; - break; - case BTM_BLE_APPEARANCE_GENERIC_WATCH: - case BTM_BLE_APPEARANCE_SPORTS_WATCH: - dev_class[1] = BTM_COD_MAJOR_WEARABLE; - dev_class[2] = BTM_COD_MINOR_WRIST_WATCH; - break; - case BTM_BLE_APPEARANCE_GENERIC_EYEGLASSES: - dev_class[1] = BTM_COD_MAJOR_WEARABLE; - dev_class[2] = BTM_COD_MINOR_GLASSES; - break; - case BTM_BLE_APPEARANCE_GENERIC_DISPLAY: - dev_class[1] = BTM_COD_MAJOR_IMAGING; - dev_class[2] = BTM_COD_MINOR_DISPLAY; - break; - case BTM_BLE_APPEARANCE_GENERIC_MEDIA_PLAYER: - dev_class[1] = BTM_COD_MAJOR_AUDIO; - dev_class[2] = BTM_COD_MINOR_UNCLASSIFIED; - break; - case BTM_BLE_APPEARANCE_GENERIC_BARCODE_SCANNER: - case BTM_BLE_APPEARANCE_HID_BARCODE_SCANNER: - case BTM_BLE_APPEARANCE_GENERIC_HID: - dev_class[1] = BTM_COD_MAJOR_PERIPHERAL; - dev_class[2] = BTM_COD_MINOR_UNCLASSIFIED; - break; - case BTM_BLE_APPEARANCE_HID_KEYBOARD: - dev_class[1] = BTM_COD_MAJOR_PERIPHERAL; - dev_class[2] = BTM_COD_MINOR_KEYBOARD; - break; - case BTM_BLE_APPEARANCE_HID_MOUSE: - dev_class[1] = BTM_COD_MAJOR_PERIPHERAL; - dev_class[2] = BTM_COD_MINOR_POINTING; - break; - case BTM_BLE_APPEARANCE_HID_JOYSTICK: - dev_class[1] = BTM_COD_MAJOR_PERIPHERAL; - dev_class[2] = BTM_COD_MINOR_JOYSTICK; - break; - case BTM_BLE_APPEARANCE_HID_GAMEPAD: - dev_class[1] = BTM_COD_MAJOR_PERIPHERAL; - dev_class[2] = BTM_COD_MINOR_GAMEPAD; - break; - case BTM_BLE_APPEARANCE_HID_DIGITIZER_TABLET: - dev_class[1] = BTM_COD_MAJOR_PERIPHERAL; - dev_class[2] = BTM_COD_MINOR_DIGITIZING_TABLET; - break; - case BTM_BLE_APPEARANCE_HID_CARD_READER: - dev_class[1] = BTM_COD_MAJOR_PERIPHERAL; - dev_class[2] = BTM_COD_MINOR_CARD_READER; - break; - case BTM_BLE_APPEARANCE_HID_DIGITAL_PEN: - dev_class[1] = BTM_COD_MAJOR_PERIPHERAL; - dev_class[2] = BTM_COD_MINOR_DIGITAL_PAN; - break; - case BTM_BLE_APPEARANCE_UKNOWN: - case BTM_BLE_APPEARANCE_GENERIC_CLOCK: - case BTM_BLE_APPEARANCE_GENERIC_TAG: - case BTM_BLE_APPEARANCE_GENERIC_KEYRING: - case BTM_BLE_APPEARANCE_GENERIC_CYCLING: - case BTM_BLE_APPEARANCE_CYCLING_COMPUTER: - case BTM_BLE_APPEARANCE_CYCLING_SPEED: - case BTM_BLE_APPEARANCE_CYCLING_CADENCE: - case BTM_BLE_APPEARANCE_CYCLING_POWER: - case BTM_BLE_APPEARANCE_CYCLING_SPEED_CADENCE: - case BTM_BLE_APPEARANCE_GENERIC_OUTDOOR_SPORTS: - case BTM_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION: - case BTM_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_AND_NAV: - case BTM_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_POD: - case BTM_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_POD_AND_NAV: - default: - dev_class[1] = BTM_COD_MAJOR_UNCLASSIFIED; - dev_class[2] = BTM_COD_MINOR_UNCLASSIFIED; + switch (appearance) { + case BTM_BLE_APPEARANCE_GENERIC_PHONE: + dev_class[1] = BTM_COD_MAJOR_PHONE; + dev_class[2] = BTM_COD_MINOR_UNCLASSIFIED; + break; + case BTM_BLE_APPEARANCE_GENERIC_COMPUTER: + dev_class[1] = BTM_COD_MAJOR_COMPUTER; + dev_class[2] = BTM_COD_MINOR_UNCLASSIFIED; + break; + case BTM_BLE_APPEARANCE_GENERIC_REMOTE: + dev_class[1] = BTM_COD_MAJOR_PERIPHERAL; + dev_class[2] = BTM_COD_MINOR_REMOTE_CONTROL; + break; + case BTM_BLE_APPEARANCE_GENERIC_THERMOMETER: + case BTM_BLE_APPEARANCE_THERMOMETER_EAR: + dev_class[1] = BTM_COD_MAJOR_HEALTH; + dev_class[2] = BTM_COD_MINOR_THERMOMETER; + break; + case BTM_BLE_APPEARANCE_GENERIC_HEART_RATE: + case BTM_BLE_APPEARANCE_HEART_RATE_BELT: + dev_class[1] = BTM_COD_MAJOR_HEALTH; + dev_class[2] = BTM_COD_MINOR_HEART_PULSE_MONITOR; + break; + case BTM_BLE_APPEARANCE_GENERIC_BLOOD_PRESSURE: + case BTM_BLE_APPEARANCE_BLOOD_PRESSURE_ARM: + case BTM_BLE_APPEARANCE_BLOOD_PRESSURE_WRIST: + dev_class[1] = BTM_COD_MAJOR_HEALTH; + dev_class[2] = BTM_COD_MINOR_BLOOD_MONITOR; + break; + case BTM_BLE_APPEARANCE_GENERIC_PULSE_OXIMETER: + case BTM_BLE_APPEARANCE_PULSE_OXIMETER_FINGERTIP: + case BTM_BLE_APPEARANCE_PULSE_OXIMETER_WRIST: + dev_class[1] = BTM_COD_MAJOR_HEALTH; + dev_class[2] = BTM_COD_MINOR_PULSE_OXIMETER; + break; + case BTM_BLE_APPEARANCE_GENERIC_GLUCOSE: + dev_class[1] = BTM_COD_MAJOR_HEALTH; + dev_class[2] = BTM_COD_MINOR_GLUCOSE_METER; + break; + case BTM_BLE_APPEARANCE_GENERIC_WEIGHT: + dev_class[1] = BTM_COD_MAJOR_HEALTH; + dev_class[2] = BTM_COD_MINOR_WEIGHING_SCALE; + break; + case BTM_BLE_APPEARANCE_GENERIC_WALKING: + case BTM_BLE_APPEARANCE_WALKING_IN_SHOE: + case BTM_BLE_APPEARANCE_WALKING_ON_SHOE: + case BTM_BLE_APPEARANCE_WALKING_ON_HIP: + dev_class[1] = BTM_COD_MAJOR_HEALTH; + dev_class[2] = BTM_COD_MINOR_STEP_COUNTER; + break; + case BTM_BLE_APPEARANCE_GENERIC_WATCH: + case BTM_BLE_APPEARANCE_SPORTS_WATCH: + dev_class[1] = BTM_COD_MAJOR_WEARABLE; + dev_class[2] = BTM_COD_MINOR_WRIST_WATCH; + break; + case BTM_BLE_APPEARANCE_GENERIC_EYEGLASSES: + dev_class[1] = BTM_COD_MAJOR_WEARABLE; + dev_class[2] = BTM_COD_MINOR_GLASSES; + break; + case BTM_BLE_APPEARANCE_GENERIC_DISPLAY: + dev_class[1] = BTM_COD_MAJOR_IMAGING; + dev_class[2] = BTM_COD_MINOR_DISPLAY; + break; + case BTM_BLE_APPEARANCE_GENERIC_MEDIA_PLAYER: + dev_class[1] = BTM_COD_MAJOR_AUDIO; + dev_class[2] = BTM_COD_MINOR_UNCLASSIFIED; + break; + case BTM_BLE_APPEARANCE_GENERIC_BARCODE_SCANNER: + case BTM_BLE_APPEARANCE_HID_BARCODE_SCANNER: + case BTM_BLE_APPEARANCE_GENERIC_HID: + dev_class[1] = BTM_COD_MAJOR_PERIPHERAL; + dev_class[2] = BTM_COD_MINOR_UNCLASSIFIED; + break; + case BTM_BLE_APPEARANCE_HID_KEYBOARD: + dev_class[1] = BTM_COD_MAJOR_PERIPHERAL; + dev_class[2] = BTM_COD_MINOR_KEYBOARD; + break; + case BTM_BLE_APPEARANCE_HID_MOUSE: + dev_class[1] = BTM_COD_MAJOR_PERIPHERAL; + dev_class[2] = BTM_COD_MINOR_POINTING; + break; + case BTM_BLE_APPEARANCE_HID_JOYSTICK: + dev_class[1] = BTM_COD_MAJOR_PERIPHERAL; + dev_class[2] = BTM_COD_MINOR_JOYSTICK; + break; + case BTM_BLE_APPEARANCE_HID_GAMEPAD: + dev_class[1] = BTM_COD_MAJOR_PERIPHERAL; + dev_class[2] = BTM_COD_MINOR_GAMEPAD; + break; + case BTM_BLE_APPEARANCE_HID_DIGITIZER_TABLET: + dev_class[1] = BTM_COD_MAJOR_PERIPHERAL; + dev_class[2] = BTM_COD_MINOR_DIGITIZING_TABLET; + break; + case BTM_BLE_APPEARANCE_HID_CARD_READER: + dev_class[1] = BTM_COD_MAJOR_PERIPHERAL; + dev_class[2] = BTM_COD_MINOR_CARD_READER; + break; + case BTM_BLE_APPEARANCE_HID_DIGITAL_PEN: + dev_class[1] = BTM_COD_MAJOR_PERIPHERAL; + dev_class[2] = BTM_COD_MINOR_DIGITAL_PAN; + break; + case BTM_BLE_APPEARANCE_UKNOWN: + case BTM_BLE_APPEARANCE_GENERIC_CLOCK: + case BTM_BLE_APPEARANCE_GENERIC_TAG: + case BTM_BLE_APPEARANCE_GENERIC_KEYRING: + case BTM_BLE_APPEARANCE_GENERIC_CYCLING: + case BTM_BLE_APPEARANCE_CYCLING_COMPUTER: + case BTM_BLE_APPEARANCE_CYCLING_SPEED: + case BTM_BLE_APPEARANCE_CYCLING_CADENCE: + case BTM_BLE_APPEARANCE_CYCLING_POWER: + case BTM_BLE_APPEARANCE_CYCLING_SPEED_CADENCE: + case BTM_BLE_APPEARANCE_GENERIC_OUTDOOR_SPORTS: + case BTM_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION: + case BTM_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_AND_NAV: + case BTM_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_POD: + case BTM_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_POD_AND_NAV: + default: + dev_class[1] = BTM_COD_MAJOR_UNCLASSIFIED; + dev_class[2] = BTM_COD_MINOR_UNCLASSIFIED; }; } @@ -2668,8 +2559,7 @@ BOOLEAN btm_ble_update_inq_result(tINQ_DB_ENT *p_i, UINT8 addr_type, UINT8 evt_t STREAM_TO_UINT8 (data_len, p); - if (data_len > BTM_BLE_ADV_DATA_LEN_MAX) - { + if (data_len > BTM_BLE_ADV_DATA_LEN_MAX) { BTM_TRACE_WARNING("EIR data too long %d. discard", data_len); return FALSE; } @@ -2685,54 +2575,48 @@ BOOLEAN btm_ble_update_inq_result(tINQ_DB_ENT *p_i, UINT8 addr_type, UINT8 evt_t /* active scan, always wait until get scan_rsp to report the result */ if ((btm_cb.ble_ctr_cb.inq_var.scan_type == BTM_BLE_SCAN_MODE_ACTI && - (evt_type == BTM_BLE_CONNECT_EVT || evt_type == BTM_BLE_DISCOVER_EVT))) - { + (evt_type == BTM_BLE_CONNECT_EVT || evt_type == BTM_BLE_DISCOVER_EVT))) { BTM_TRACE_DEBUG("btm_ble_update_inq_result scan_rsp=false, to_report=false,\ scan_type_active=%d", btm_cb.ble_ctr_cb.inq_var.scan_type); p_i->scan_rsp = FALSE; to_report = FALSE; - } - else + } else { p_i->scan_rsp = TRUE; + } - if (p_i->inq_count != p_inq->inq_counter) + if (p_i->inq_count != p_inq->inq_counter) { p_cur->device_type = BT_DEVICE_TYPE_BLE; - else + } else { p_cur->device_type |= BT_DEVICE_TYPE_BLE; + } - if (evt_type != BTM_BLE_SCAN_RSP_EVT) + if (evt_type != BTM_BLE_SCAN_RSP_EVT) { p_cur->ble_evt_type = evt_type; + } p_i->inq_count = p_inq->inq_counter; /* Mark entry for current inquiry */ - if (p_le_inq_cb->adv_len != 0) - { - if ((p_flag = BTM_CheckAdvData(p_le_inq_cb->adv_data_cache, BTM_BLE_AD_TYPE_FLAG, &len)) != NULL) + if (p_le_inq_cb->adv_len != 0) { + if ((p_flag = BTM_CheckAdvData(p_le_inq_cb->adv_data_cache, BTM_BLE_AD_TYPE_FLAG, &len)) != NULL) { p_cur->flag = * p_flag; + } } - if (p_le_inq_cb->adv_len != 0) - { + if (p_le_inq_cb->adv_len != 0) { /* Check to see the BLE device has the Appearance UUID in the advertising data. If it does * then try to convert the appearance value to a class of device value Bluedroid can use. * Otherwise fall back to trying to infer if it is a HID device based on the service class. */ p_uuid16 = BTM_CheckAdvData(p_le_inq_cb->adv_data_cache, BTM_BLE_AD_TYPE_APPEARANCE, &len); - if (p_uuid16 && len == 2) - { + if (p_uuid16 && len == 2) { btm_ble_appearance_to_cod((UINT16)p_uuid16[0] | (p_uuid16[1] << 8), p_cur->dev_class); - } - else - { + } else { if ((p_uuid16 = BTM_CheckAdvData(p_le_inq_cb->adv_data_cache, - BTM_BLE_AD_TYPE_16SRV_CMPL, &len)) != NULL) - { + BTM_BLE_AD_TYPE_16SRV_CMPL, &len)) != NULL) { UINT8 i; - for (i = 0; i + 2 <= len; i = i + 2) - { + for (i = 0; i + 2 <= len; i = i + 2) { /* if this BLE device support HID over LE, set HID Major in class of device */ - if ((p_uuid16[i] | (p_uuid16[i+1] << 8)) == UUID_SERVCLASS_LE_HID) - { + if ((p_uuid16[i] | (p_uuid16[i + 1] << 8)) == UUID_SERVCLASS_LE_HID) { p_cur->dev_class[0] = 0; p_cur->dev_class[1] = BTM_COD_MAJOR_PERIPHERAL; p_cur->dev_class[2] = 0; @@ -2745,18 +2629,14 @@ BOOLEAN btm_ble_update_inq_result(tINQ_DB_ENT *p_i, UINT8 addr_type, UINT8 evt_t /* if BR/EDR not supported is not set, assume is a DUMO device */ if ((p_cur->flag & BTM_BLE_BREDR_NOT_SPT) == 0 && - evt_type != BTM_BLE_CONNECT_DIR_EVT) - { - if (p_cur->ble_addr_type != BLE_ADDR_RANDOM) - { + evt_type != BTM_BLE_CONNECT_DIR_EVT) { + if (p_cur->ble_addr_type != BLE_ADDR_RANDOM) { BTM_TRACE_DEBUG("BR/EDR NOT support bit not set, treat as DUMO"); p_cur->device_type |= BT_DEVICE_TYPE_DUMO; } else { BTM_TRACE_DEBUG("Random address, treating device as LE only"); } - } - else - { + } else { BTM_TRACE_DEBUG("BR/EDR NOT SUPPORT bit set, LE only device"); } @@ -2779,13 +2659,13 @@ void btm_clear_all_pending_le_entry(void) UINT16 xx; tINQ_DB_ENT *p_ent = btm_cb.btm_inq_vars.inq_db; - for (xx = 0; xx < BTM_INQ_DB_SIZE; xx++, p_ent++) - { + for (xx = 0; xx < BTM_INQ_DB_SIZE; xx++, p_ent++) { /* mark all pending LE entry as unused if an LE only device has scan response outstanding */ if ((p_ent->in_use) && - (p_ent->inq_info.results.device_type == BT_DEVICE_TYPE_BLE) && - !p_ent->scan_rsp) + (p_ent->inq_info.results.device_type == BT_DEVICE_TYPE_BLE) && + !p_ent->scan_rsp) { p_ent->in_use = FALSE; + } } } @@ -2807,26 +2687,27 @@ void btm_send_sel_conn_callback(BD_ADDR remote_bda, UINT8 evt_type, UINT8 *p_dat UNUSED(addr_type); if (btm_cb.ble_ctr_cb.p_select_cback == NULL || - /* non-connectable device */ - (evt_type != BTM_BLE_EVT_CONN_ADV && evt_type != BTM_BLE_EVT_CONN_DIR_ADV)) + /* non-connectable device */ + (evt_type != BTM_BLE_EVT_CONN_ADV && evt_type != BTM_BLE_EVT_CONN_DIR_ADV)) { return; + } STREAM_TO_UINT8 (data_len, p_data); /* get the device name if exist in ADV data */ - if (data_len != 0) - { + if (data_len != 0) { p_dev_name = BTM_CheckAdvData(p_data, BTM_BLE_AD_TYPE_NAME_CMPL, &len); - if (p_dev_name == NULL) + if (p_dev_name == NULL) { p_dev_name = BTM_CheckAdvData(p_data, BTM_BLE_AD_TYPE_NAME_SHORT, &len); + } - if (p_dev_name) + if (p_dev_name) { memcpy(remname, p_dev_name, len); + } } /* allow connection */ - if ((* btm_cb.ble_ctr_cb.p_select_cback)(remote_bda, remname)) - { + if ((* btm_cb.ble_ctr_cb.p_select_cback)(remote_bda, remname)) { /* terminate selective connection, initiate connection */ btm_ble_initiate_select_conn(remote_bda); } @@ -2857,32 +2738,30 @@ void btm_ble_process_adv_pkt (UINT8 *p_data) #endif /* Only process the results if the inquiry is still active */ - if (!BTM_BLE_IS_SCAN_ACTIVE(btm_cb.ble_ctr_cb.scan_activity)) + if (!BTM_BLE_IS_SCAN_ACTIVE(btm_cb.ble_ctr_cb.scan_activity)) { return; + } /* Extract the number of reports in this event. */ STREAM_TO_UINT8(num_reports, p); - while (num_reports--) - { + while (num_reports--) { /* Extract inquiry results */ STREAM_TO_UINT8 (evt_type, p); STREAM_TO_UINT8 (addr_type, p); STREAM_TO_BDADDR (bda, p); - //BTM_TRACE_ERROR("btm_ble_process_adv_pkt:bda= %0x:%0x:%0x:%0x:%0x:%0x\n", - // bda[0],bda[1],bda[2],bda[3],bda[4],bda[5]); + //BTM_TRACE_ERROR("btm_ble_process_adv_pkt:bda= %0x:%0x:%0x:%0x:%0x:%0x\n", + // bda[0],bda[1],bda[2],bda[3],bda[4],bda[5]); #if (defined BLE_PRIVACY_SPT && BLE_PRIVACY_SPT == TRUE) /* map address to security record */ match = btm_identity_addr_to_random_pseudo(bda, &addr_type, FALSE); - // BTM_TRACE_ERROR("btm_ble_process_adv_pkt:bda= %0x:%0x:%0x:%0x:%0x:%0x\n", + // BTM_TRACE_ERROR("btm_ble_process_adv_pkt:bda= %0x:%0x:%0x:%0x:%0x:%0x\n", // bda[0],bda[1],bda[2],bda[3],bda[4],bda[5]); /* always do RRA resolution on host */ - if (!match && BTM_BLE_IS_RESOLVE_BDA(bda)) - { + if (!match && BTM_BLE_IS_RESOLVE_BDA(bda)) { btm_ble_resolve_random_addr(bda, btm_ble_resolve_random_addr_on_adv, p_data); - } - else + } else #endif btm_ble_process_adv_pkt_cont(bda, addr_type, evt_type, p); @@ -2918,69 +2797,59 @@ static void btm_ble_process_adv_pkt_cont(BD_ADDR bda, UINT8 addr_type, UINT8 evt p_i = btm_inq_db_find (bda); /* Check if this address has already been processed for this inquiry */ - if (btm_inq_find_bdaddr(bda)) - { + if (btm_inq_find_bdaddr(bda)) { /* never been report as an LE device */ if (p_i && - (!(p_i->inq_info.results.device_type & BT_DEVICE_TYPE_BLE) || - /* scan repsonse to be updated */ - (!p_i->scan_rsp))) - { + (!(p_i->inq_info.results.device_type & BT_DEVICE_TYPE_BLE) || + /* scan repsonse to be updated */ + (!p_i->scan_rsp))) { update = TRUE; - } - else if (BTM_BLE_IS_OBS_ACTIVE(btm_cb.ble_ctr_cb.scan_activity)) - { + } else if (BTM_BLE_IS_OBS_ACTIVE(btm_cb.ble_ctr_cb.scan_activity)) { update = FALSE; - } - else - { + } else { /* if yes, skip it */ return; /* assumption: one result per event */ } } /* If existing entry, use that, else get a new one (possibly reusing the oldest) */ - if (p_i == NULL) - { - if ((p_i = btm_inq_db_new (bda)) != NULL) - { + if (p_i == NULL) { + if ((p_i = btm_inq_db_new (bda)) != NULL) { p_inq->inq_cmpl_info.num_resp++; - } - else + } else { return; - } - else if (p_i->inq_count != p_inq->inq_counter) /* first time seen in this inquiry */ - { + } + } else if (p_i->inq_count != p_inq->inq_counter) { /* first time seen in this inquiry */ p_inq->inq_cmpl_info.num_resp++; } /* update the LE device information in inquiry database */ - if (!btm_ble_update_inq_result(p_i, addr_type, evt_type, p)) - return; - - if ((result = btm_ble_is_discoverable(bda, evt_type, p)) == 0) - { - LOG_WARN("%s device is no longer discoverable so discarding advertising packet pkt", - __func__); + if (!btm_ble_update_inq_result(p_i, addr_type, evt_type, p)) { return; } - if (!update) + + if ((result = btm_ble_is_discoverable(bda, evt_type, p)) == 0) { + LOG_WARN("%s device is no longer discoverable so discarding advertising packet pkt", + __func__); + return; + } + if (!update) { result &= ~BTM_BLE_INQ_RESULT; + } /* If the number of responses found and limited, issue a cancel inquiry */ if (p_inq->inqparms.max_resps && - p_inq->inq_cmpl_info.num_resp == p_inq->inqparms.max_resps) - { + p_inq->inq_cmpl_info.num_resp == p_inq->inqparms.max_resps) { /* new device */ if (p_i == NULL || - /* assume a DUMO device, BR/EDR inquiry is always active */ - (p_i && - (p_i->inq_info.results.device_type & BT_DEVICE_TYPE_BLE) == BT_DEVICE_TYPE_BLE && - p_i->scan_rsp)) - { + /* assume a DUMO device, BR/EDR inquiry is always active */ + (p_i && + (p_i->inq_info.results.device_type & BT_DEVICE_TYPE_BLE) == BT_DEVICE_TYPE_BLE && + p_i->scan_rsp)) { BTM_TRACE_WARNING("INQ RES: Extra Response Received...cancelling inquiry.."); /* if is non-periodic inquiry active, cancel now */ if ((p_inq->inq_active & BTM_BR_INQ_ACTIVE_MASK) != 0 && - (p_inq->inq_active & BTM_PERIODIC_INQUIRY_ACTIVE) == 0) + (p_inq->inq_active & BTM_PERIODIC_INQUIRY_ACTIVE) == 0) { btsnd_hcic_inq_cancel(); + } btm_ble_stop_inquiry(); @@ -2988,23 +2857,17 @@ static void btm_ble_process_adv_pkt_cont(BD_ADDR bda, UINT8 addr_type, UINT8 evt } } /* background connection in selective connection mode */ - if (btm_cb.ble_ctr_cb.bg_conn_type == BTM_BLE_CONN_SELECTIVE) - { - if (result & BTM_BLE_SEL_CONN_RESULT) + if (btm_cb.ble_ctr_cb.bg_conn_type == BTM_BLE_CONN_SELECTIVE) { + if (result & BTM_BLE_SEL_CONN_RESULT) { btm_send_sel_conn_callback(bda, evt_type, p, addr_type); - else - { + } else { BTM_TRACE_DEBUG("None LE device, can not initiate selective connection\n"); } - } - else - { - if (p_inq_results_cb && (result & BTM_BLE_INQ_RESULT)) - { + } else { + if (p_inq_results_cb && (result & BTM_BLE_INQ_RESULT)) { (p_inq_results_cb)((tBTM_INQ_RESULTS *) &p_i->inq_info.results, p_le_inq_cb->adv_data_cache); } - if (p_obs_results_cb && (result & BTM_BLE_OBS_RESULT)) - { + if (p_obs_results_cb && (result & BTM_BLE_OBS_RESULT)) { (p_obs_results_cb)((tBTM_INQ_RESULTS *) &p_i->inq_info.results, p_le_inq_cb->adv_data_cache); } } @@ -3025,16 +2888,14 @@ tBTM_STATUS btm_ble_start_scan(void) tBTM_STATUS status = BTM_CMD_STARTED; /* start scan, disable duplicate filtering */ - if (!btsnd_hcic_ble_set_scan_enable (BTM_BLE_SCAN_ENABLE, p_inq->scan_duplicate_filter)) - { + if (!btsnd_hcic_ble_set_scan_enable (BTM_BLE_SCAN_ENABLE, p_inq->scan_duplicate_filter)) { status = BTM_NO_RESOURCES; - } - else - { - if (p_inq->scan_type == BTM_BLE_SCAN_MODE_ACTI) + } else { + if (p_inq->scan_type == BTM_BLE_SCAN_MODE_ACTI) { btm_ble_set_topology_mask(BTM_BLE_STATE_ACTIVE_SCAN_BIT); - else + } else { btm_ble_set_topology_mask(BTM_BLE_STATE_PASSIVE_SCAN_BIT); + } } return status; } @@ -3081,11 +2942,10 @@ void btm_ble_stop_inquiry(void) p_ble_cb->scan_activity &= ~BTM_BLE_INQUIRY_MASK; /* If no more scan activity, stop LE scan now */ - if (!BTM_BLE_IS_SCAN_ACTIVE(p_ble_cb->scan_activity)) + if (!BTM_BLE_IS_SCAN_ACTIVE(p_ble_cb->scan_activity)) { btm_ble_stop_scan(); - else if((p_ble_cb->inq_var.scan_interval != BTM_BLE_LOW_LATENCY_SCAN_INT) || - (p_ble_cb->inq_var.scan_window != BTM_BLE_LOW_LATENCY_SCAN_WIN)) - { + } else if ((p_ble_cb->inq_var.scan_interval != BTM_BLE_LOW_LATENCY_SCAN_INT) || + (p_ble_cb->inq_var.scan_window != BTM_BLE_LOW_LATENCY_SCAN_WIN)) { BTM_TRACE_DEBUG("%s: setting default params for ongoing observe", __FUNCTION__); btm_ble_stop_scan(); btm_ble_start_scan(); @@ -3093,7 +2953,7 @@ void btm_ble_stop_inquiry(void) /* If we have a callback registered for inquiry complete, call it */ BTM_TRACE_DEBUG ("BTM Inq Compl Callback: status 0x%02x, num results %d", - p_inq->inq_cmpl_info.status, p_inq->inq_cmpl_info.num_resp); + p_inq->inq_cmpl_info.status, p_inq->inq_cmpl_info.num_resp); btm_process_inq_complete(HCI_SUCCESS, (UINT8)(p_inq->inqparms.mode & BTM_BLE_INQUIRY_MASK)); } @@ -3119,11 +2979,13 @@ static void btm_ble_stop_observe(void) p_ble_cb->p_obs_results_cb = NULL; p_ble_cb->p_obs_cmpl_cb = NULL; - if (!BTM_BLE_IS_SCAN_ACTIVE(p_ble_cb->scan_activity)) + if (!BTM_BLE_IS_SCAN_ACTIVE(p_ble_cb->scan_activity)) { btm_ble_stop_scan(); + } - if (p_obs_cb) + if (p_obs_cb) { (p_obs_cb)((tBTM_INQUIRY_CMPL *) &btm_cb.btm_inq_vars.inq_cmpl_info); + } } /******************************************************************************* ** @@ -3139,8 +3001,7 @@ static BOOLEAN btm_ble_adv_states_operation(BTM_TOPOLOGY_FUNC_PTR *p_handler, UI { BOOLEAN rt = FALSE; - switch (adv_evt) - { + switch (adv_evt) { case BTM_BLE_CONNECT_EVT: rt = (*p_handler)(BTM_BLE_STATE_CONN_ADV_BIT); break; @@ -3182,32 +3043,31 @@ tBTM_STATUS btm_ble_start_adv(void) { tBTM_BLE_INQ_CB *p_cb = &btm_cb.ble_ctr_cb.inq_var; tBTM_STATUS rt = BTM_NO_RESOURCES; - BTM_TRACE_EVENT ("btm_ble_start_adv\n"); - if (!btm_ble_adv_states_operation (btm_ble_topology_check, p_cb->evt_type)) + BTM_TRACE_EVENT ("btm_ble_start_adv\n"); + if (!btm_ble_adv_states_operation (btm_ble_topology_check, p_cb->evt_type)) { return BTM_WRONG_MODE; + } #if (defined BLE_PRIVACY_SPT && BLE_PRIVACY_SPT == TRUE) /* To relax resolving list, always have resolving list enabled, unless directed adv */ if (p_cb->evt_type != BTM_BLE_CONNECT_LO_DUTY_DIR_EVT && - p_cb->evt_type != BTM_BLE_CONNECT_DIR_EVT) + p_cb->evt_type != BTM_BLE_CONNECT_DIR_EVT) /* enable resolving list is desired */ - btm_ble_enable_resolving_list_for_platform(BTM_BLE_RL_ADV); -#endif - if (p_cb->afp != AP_SCAN_CONN_ALL) { + btm_ble_enable_resolving_list_for_platform(BTM_BLE_RL_ADV); + } +#endif + if (p_cb->afp != AP_SCAN_CONN_ALL) { btm_execute_wl_dev_operation(); btm_cb.ble_ctr_cb.wl_state |= BTM_BLE_WL_ADV; } - if (btsnd_hcic_ble_set_adv_enable (BTM_BLE_ADV_ENABLE)) - { - p_cb->adv_mode = BTM_BLE_ADV_ENABLE; - btm_ble_adv_states_operation(btm_ble_set_topology_mask, p_cb->evt_type); - rt = BTM_SUCCESS; - BTM_TRACE_EVENT ("BTM_SUCCESS\n"); - } - else - { + if (btsnd_hcic_ble_set_adv_enable (BTM_BLE_ADV_ENABLE)) { + p_cb->adv_mode = BTM_BLE_ADV_ENABLE; + btm_ble_adv_states_operation(btm_ble_set_topology_mask, p_cb->evt_type); + rt = BTM_SUCCESS; + BTM_TRACE_EVENT ("BTM_SUCCESS\n"); + } else { p_cb->adv_mode = BTM_BLE_ADV_DISABLE; btm_cb.ble_ctr_cb.wl_state &= ~BTM_BLE_WL_ADV; } @@ -3228,19 +3088,17 @@ tBTM_STATUS btm_ble_stop_adv(void) tBTM_BLE_INQ_CB *p_cb = &btm_cb.ble_ctr_cb.inq_var; tBTM_STATUS rt = BTM_SUCCESS; - if (p_cb->adv_mode == BTM_BLE_ADV_ENABLE) - { - if (btsnd_hcic_ble_set_adv_enable (BTM_BLE_ADV_DISABLE)) - { + if (p_cb->adv_mode == BTM_BLE_ADV_ENABLE) { + if (btsnd_hcic_ble_set_adv_enable (BTM_BLE_ADV_DISABLE)) { p_cb->fast_adv_on = FALSE; p_cb->adv_mode = BTM_BLE_ADV_DISABLE; btm_cb.ble_ctr_cb.wl_state &= ~BTM_BLE_WL_ADV; /* clear all adv states */ btm_ble_clear_topology_mask (BTM_BLE_STATE_ALL_ADV_MASK); - } - else + } else { rt = BTM_NO_RESOURCES; + } } return rt; } @@ -3259,8 +3117,7 @@ static void btm_ble_start_slow_adv (void) { tBTM_BLE_INQ_CB *p_cb = &btm_cb.ble_ctr_cb.inq_var; - if (p_cb->adv_mode == BTM_BLE_ADV_ENABLE) - { + if (p_cb->adv_mode == BTM_BLE_ADV_ENABLE) { tBTM_LE_RANDOM_CB *p_addr_cb = &btm_cb.ble_ctr_cb.addr_mgnt_cb; BD_ADDR p_addr_ptr = {0}; tBLE_ADDR_TYPE init_addr_type = BLE_ADDR_PUBLIC; @@ -3269,7 +3126,7 @@ static void btm_ble_start_slow_adv (void) btm_ble_stop_adv(); p_cb->evt_type = btm_set_conn_mode_adv_init_addr(p_cb, p_addr_ptr, &init_addr_type, - &own_addr_type); + &own_addr_type); /* slow adv mode never goes into directed adv */ btsnd_hcic_ble_write_adv_params (BTM_BLE_GAP_ADV_SLOW_INT, BTM_BLE_GAP_ADV_SLOW_INT, @@ -3293,45 +3150,41 @@ void btm_ble_timeout(TIMER_LIST_ENT *p_tle) { BTM_TRACE_EVENT ("btm_ble_timeout"); - switch (p_tle->event) - { - case BTU_TTYPE_BLE_OBSERVE: - btm_ble_stop_observe(); - break; + switch (p_tle->event) { + case BTU_TTYPE_BLE_OBSERVE: + btm_ble_stop_observe(); + break; - case BTU_TTYPE_BLE_INQUIRY: - btm_ble_stop_inquiry(); - break; + case BTU_TTYPE_BLE_INQUIRY: + btm_ble_stop_inquiry(); + break; - case BTU_TTYPE_BLE_GAP_LIM_DISC: - /* lim_timeout expiried, limited discovery should exit now */ - btm_cb.btm_inq_vars.discoverable_mode &= ~BTM_BLE_LIMITED_DISCOVERABLE; - btm_ble_set_adv_flag(btm_cb.btm_inq_vars.connectable_mode, btm_cb.btm_inq_vars.discoverable_mode); - break; + case BTU_TTYPE_BLE_GAP_LIM_DISC: + /* lim_timeout expiried, limited discovery should exit now */ + btm_cb.btm_inq_vars.discoverable_mode &= ~BTM_BLE_LIMITED_DISCOVERABLE; + btm_ble_set_adv_flag(btm_cb.btm_inq_vars.connectable_mode, btm_cb.btm_inq_vars.discoverable_mode); + break; - case BTU_TTYPE_BLE_RANDOM_ADDR: - if (btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type == BLE_ADDR_RANDOM) - { - if (NULL == (void *)(p_tle->param)) - { - /* refresh the random addr */ - btm_gen_resolvable_private_addr((void *)btm_gen_resolve_paddr_low); - } - else - { - if (BTM_BleMaxMultiAdvInstanceCount() > 0) - btm_ble_multi_adv_configure_rpa((tBTM_BLE_MULTI_ADV_INST*)p_tle->param); + case BTU_TTYPE_BLE_RANDOM_ADDR: + if (btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type == BLE_ADDR_RANDOM) { + if (NULL == (void *)(p_tle->param)) { + /* refresh the random addr */ + btm_gen_resolvable_private_addr((void *)btm_gen_resolve_paddr_low); + } else { + if (BTM_BleMaxMultiAdvInstanceCount() > 0) { + btm_ble_multi_adv_configure_rpa((tBTM_BLE_MULTI_ADV_INST *)p_tle->param); } } - break; + } + break; - case BTU_TTYPE_BLE_GAP_FAST_ADV: - /* fast adv is completed, fall back to slow adv interval */ - btm_ble_start_slow_adv(); - break; + case BTU_TTYPE_BLE_GAP_FAST_ADV: + /* fast adv is completed, fall back to slow adv interval */ + btm_ble_start_slow_adv(); + break; - default: - break; + default: + break; } } @@ -3361,15 +3214,12 @@ void btm_ble_read_remote_features_complete(UINT8 *p) // if LE read remote feature failed for HCI_ERR_CONN_FAILED_ESTABLISHMENT, // expect disconnect complete to be received - if (status != HCI_ERR_CONN_FAILED_ESTABLISHMENT) - { + if (status != HCI_ERR_CONN_FAILED_ESTABLISHMENT) { STREAM_TO_UINT16 (handle, p); /* Look up the connection by handle and copy features */ - for (xx = 0; xx < MAX_L2CAP_LINKS; xx++, p_acl_cb++) - { - if ((p_acl_cb->in_use) && (p_acl_cb->hci_handle == handle)) - { + for (xx = 0; xx < MAX_L2CAP_LINKS; xx++, p_acl_cb++) { + if ((p_acl_cb->in_use) && (p_acl_cb->hci_handle == handle)) { STREAM_TO_ARRAY(p_acl_cb->peer_le_features, p, BD_FEATURES_LEN); btsnd_hcic_rmt_ver_req (p_acl_cb->hci_handle); break; @@ -3388,13 +3238,12 @@ void btm_ble_read_remote_features_complete(UINT8 *p) ** Returns void ** *******************************************************************************/ -void btm_ble_write_adv_enable_complete(UINT8 * p) +void btm_ble_write_adv_enable_complete(UINT8 *p) { tBTM_BLE_INQ_CB *p_cb = &btm_cb.ble_ctr_cb.inq_var; /* if write adv enable/disbale not succeed */ - if (*p != HCI_SUCCESS) - { + if (*p != HCI_SUCCESS) { /* toggle back the adv mode */ p_cb->adv_mode = !p_cb->adv_mode; } @@ -3462,19 +3311,21 @@ void btm_ble_update_link_topology_mask(UINT8 link_role, BOOLEAN increase) { btm_ble_clear_topology_mask (BTM_BLE_STATE_ALL_CONN_MASK); - if (increase) + if (increase) { btm_cb.ble_ctr_cb.link_count[link_role]++; - else if (btm_cb.ble_ctr_cb.link_count[link_role] > 0) + } else if (btm_cb.ble_ctr_cb.link_count[link_role] > 0) { btm_cb.ble_ctr_cb.link_count[link_role]--; + } - if (btm_cb.ble_ctr_cb.link_count[HCI_ROLE_MASTER]) + if (btm_cb.ble_ctr_cb.link_count[HCI_ROLE_MASTER]) { btm_ble_set_topology_mask (BTM_BLE_STATE_MASTER_BIT); + } - if (btm_cb.ble_ctr_cb.link_count[HCI_ROLE_SLAVE]) + if (btm_cb.ble_ctr_cb.link_count[HCI_ROLE_SLAVE]) { btm_ble_set_topology_mask(BTM_BLE_STATE_SLAVE_BIT); + } - if (link_role == HCI_ROLE_SLAVE && increase) - { + if (link_role == HCI_ROLE_SLAVE && increase) { btm_cb.ble_ctr_cb.inq_var.adv_mode = BTM_BLE_ADV_DISABLE; /* make device fall back into undirected adv mode by default */ btm_cb.ble_ctr_cb.inq_var.directed_conn = BTM_BLE_CONNECT_EVT; @@ -3495,8 +3346,7 @@ void btm_ble_update_link_topology_mask(UINT8 link_role, BOOLEAN increase) *******************************************************************************/ void btm_ble_update_mode_operation(UINT8 link_role, BD_ADDR bd_addr, UINT8 status) { - if (status == HCI_ERR_DIRECTED_ADVERTISING_TIMEOUT) - { + if (status == HCI_ERR_DIRECTED_ADVERTISING_TIMEOUT) { btm_cb.ble_ctr_cb.inq_var.adv_mode = BTM_BLE_ADV_DISABLE; /* make device fall back into undirected adv mode by default */ btm_cb.ble_ctr_cb.inq_var.directed_conn = BTM_BLE_CONNECT_EVT; @@ -3504,8 +3354,7 @@ void btm_ble_update_mode_operation(UINT8 link_role, BD_ADDR bd_addr, UINT8 statu btm_ble_clear_topology_mask (BTM_BLE_STATE_ALL_ADV_MASK); } - if (btm_cb.ble_ctr_cb.inq_var.connectable_mode == BTM_BLE_CONNECTABLE) - { + if (btm_cb.ble_ctr_cb.inq_var.connectable_mode == BTM_BLE_CONNECTABLE) { btm_ble_set_connectability(btm_cb.btm_inq_vars.connectable_mode | btm_cb.ble_ctr_cb.inq_var.connectable_mode); } @@ -3514,9 +3363,8 @@ void btm_ble_update_mode_operation(UINT8 link_role, BD_ADDR bd_addr, UINT8 statu due to resource limitation, start next direct connection or background connection now in order */ if (btm_ble_get_conn_st() == BLE_CONN_IDLE && status != HCI_ERR_HOST_REJECT_RESOURCES && - !btm_send_pending_direct_conn()) - { - btm_ble_resume_bg_conn(); + !btm_send_pending_direct_conn()) { + btm_ble_resume_bg_conn(); } } @@ -3579,27 +3427,24 @@ BOOLEAN btm_ble_topology_check(tBTM_BLE_STATE_MASK request_state_mask) /* check only one bit is set and within valid range */ if (request_state_mask == BTM_BLE_STATE_INVALID || - request_state_mask > BTM_BLE_STATE_SCAN_ADV_BIT || - (request_state_mask & (request_state_mask -1 )) != 0) - { + request_state_mask > BTM_BLE_STATE_SCAN_ADV_BIT || + (request_state_mask & (request_state_mask - 1 )) != 0) { BTM_TRACE_ERROR("illegal state requested: %d", request_state_mask); return rt; } - while (request_state_mask) - { + while (request_state_mask) { request_state_mask >>= 1; request_state ++; } /* check if the requested state is supported or not */ mask = btm_le_state_combo_tbl[0][request_state - 1][0]; - offset = btm_le_state_combo_tbl[0][request_state-1][1]; + offset = btm_le_state_combo_tbl[0][request_state - 1][1]; const uint8_t *ble_supported_states = controller_get_interface()->get_ble_supported_states(); - if (!BTM_LE_STATES_SUPPORTED(ble_supported_states, mask, offset)) - { + if (!BTM_LE_STATES_SUPPORTED(ble_supported_states, mask, offset)) { BTM_TRACE_ERROR("state requested not supported: %d", request_state); return rt; } @@ -3607,17 +3452,13 @@ BOOLEAN btm_ble_topology_check(tBTM_BLE_STATE_MASK request_state_mask) rt = TRUE; /* make sure currently active states are all supported in conjunction with the requested state. If the bit in table is not set, the combination is not supported */ - while (cur_states != 0) - { - if (cur_states & 0x01) - { + while (cur_states != 0) { + if (cur_states & 0x01) { mask = btm_le_state_combo_tbl[request_state][state_offset][0]; offset = btm_le_state_combo_tbl[request_state][state_offset][1]; - if (mask != 0 && offset != 0) - { - if (!BTM_LE_STATES_SUPPORTED(ble_supported_states, mask, offset)) - { + if (mask != 0 && offset != 0) { + if (!BTM_LE_STATES_SUPPORTED(ble_supported_states, mask, offset)) { rt = FALSE; break; } diff --git a/components/bt/bluedroid/stack/btm/btm_ble_multi_adv.c b/components/bt/bluedroid/stack/btm/btm_ble_multi_adv.c old mode 100755 new mode 100644 index dd7876bf53..cb273ef9d4 --- a/components/bt/bluedroid/stack/btm/btm_ble_multi_adv.c +++ b/components/bt/bluedroid/stack/btm/btm_ble_multi_adv.c @@ -52,7 +52,7 @@ tBTM_BLE_MULTI_ADV_INST_IDX_Q btm_multi_adv_idx_q; ** Externs ************************************************************************************/ extern void btm_ble_update_dmt_flag_bits(UINT8 *flag_value, - const UINT16 connect_mode, const UINT16 disc_mode); + const UINT16 connect_mode, const UINT16 disc_mode); /******************************************************************************* ** @@ -70,7 +70,7 @@ void btm_ble_multi_adv_enq_op_q(UINT8 opcode, UINT8 inst_id, UINT8 cb_evt) p_op_q->p_inst_id[p_op_q->next_idx] = inst_id; - p_op_q->p_sub_code[p_op_q->next_idx] = (opcode |(cb_evt << 4)); + p_op_q->p_sub_code[p_op_q->next_idx] = (opcode | (cb_evt << 4)); p_op_q->next_idx = (p_op_q->next_idx + 1) % BTM_BleMaxMultiAdvInstanceCount(); } @@ -115,8 +115,7 @@ void btm_ble_multi_adv_vsc_cmpl_cback (tBTM_VSC_CMPL *p_params) tBTM_BLE_MULTI_ADV_INST *p_inst ; UINT8 cb_evt = 0, opcode; - if (len < 2) - { + if (len < 2) { BTM_TRACE_ERROR("wrong length for btm_ble_multi_adv_vsc_cmpl_cback"); return; } @@ -128,56 +127,49 @@ void btm_ble_multi_adv_vsc_cmpl_cback (tBTM_VSC_CMPL *p_params) BTM_TRACE_DEBUG("op_code = %02x inst_id = %d cb_evt = %02x", opcode, inst_id, cb_evt); - if (opcode != subcode || inst_id == 0) - { - BTM_TRACE_ERROR("get unexpected VSC cmpl, expect: %d get: %d",subcode,opcode); + if (opcode != subcode || inst_id == 0) { + BTM_TRACE_ERROR("get unexpected VSC cmpl, expect: %d get: %d", subcode, opcode); return; } p_inst = &btm_multi_adv_cb.p_adv_inst[inst_id - 1]; - switch (subcode) - { - case BTM_BLE_MULTI_ADV_ENB: - { - BTM_TRACE_DEBUG("BTM_BLE_MULTI_ADV_ENB status = %d", status); + switch (subcode) { + case BTM_BLE_MULTI_ADV_ENB: { + BTM_TRACE_DEBUG("BTM_BLE_MULTI_ADV_ENB status = %d", status); - /* Mark as not in use here, if instance cannot be enabled */ - if (HCI_SUCCESS != status && BTM_BLE_MULTI_ADV_ENB_EVT == cb_evt) - btm_multi_adv_cb.p_adv_inst[inst_id-1].in_use = FALSE; - break; + /* Mark as not in use here, if instance cannot be enabled */ + if (HCI_SUCCESS != status && BTM_BLE_MULTI_ADV_ENB_EVT == cb_evt) { + btm_multi_adv_cb.p_adv_inst[inst_id - 1].in_use = FALSE; } - - case BTM_BLE_MULTI_ADV_SET_PARAM: - { - BTM_TRACE_DEBUG("BTM_BLE_MULTI_ADV_SET_PARAM status = %d", status); - break; - } - - case BTM_BLE_MULTI_ADV_WRITE_ADV_DATA: - { - BTM_TRACE_DEBUG("BTM_BLE_MULTI_ADV_WRITE_ADV_DATA status = %d", status); - break; - } - - case BTM_BLE_MULTI_ADV_WRITE_SCAN_RSP_DATA: - { - BTM_TRACE_DEBUG("BTM_BLE_MULTI_ADV_WRITE_SCAN_RSP_DATA status = %d", status); - break; - } - - case BTM_BLE_MULTI_ADV_SET_RANDOM_ADDR: - { - BTM_TRACE_DEBUG("BTM_BLE_MULTI_ADV_SET_RANDOM_ADDR status = %d", status); - break; - } - - default: - break; + break; } - if (cb_evt != 0 && p_inst->p_cback != NULL) - { + case BTM_BLE_MULTI_ADV_SET_PARAM: { + BTM_TRACE_DEBUG("BTM_BLE_MULTI_ADV_SET_PARAM status = %d", status); + break; + } + + case BTM_BLE_MULTI_ADV_WRITE_ADV_DATA: { + BTM_TRACE_DEBUG("BTM_BLE_MULTI_ADV_WRITE_ADV_DATA status = %d", status); + break; + } + + case BTM_BLE_MULTI_ADV_WRITE_SCAN_RSP_DATA: { + BTM_TRACE_DEBUG("BTM_BLE_MULTI_ADV_WRITE_SCAN_RSP_DATA status = %d", status); + break; + } + + case BTM_BLE_MULTI_ADV_SET_RANDOM_ADDR: { + BTM_TRACE_DEBUG("BTM_BLE_MULTI_ADV_SET_RANDOM_ADDR status = %d", status); + break; + } + + default: + break; + } + + if (cb_evt != 0 && p_inst->p_cback != NULL) { (p_inst->p_cback)(cb_evt, inst_id, p_inst->p_ref, status); } return; @@ -198,7 +190,7 @@ void btm_ble_multi_adv_vsc_cmpl_cback (tBTM_VSC_CMPL *p_params) tBTM_STATUS btm_ble_enable_multi_adv (BOOLEAN enable, UINT8 inst_id, UINT8 cb_evt) { UINT8 param[BTM_BLE_MULTI_ADV_ENB_LEN], *pp; - UINT8 enb = enable ? 1: 0; + UINT8 enb = enable ? 1 : 0; tBTM_STATUS rt; pp = param; @@ -208,14 +200,13 @@ tBTM_STATUS btm_ble_enable_multi_adv (BOOLEAN enable, UINT8 inst_id, UINT8 cb_ev UINT8_TO_STREAM (pp, enb); UINT8_TO_STREAM (pp, inst_id); - BTM_TRACE_EVENT (" btm_ble_enable_multi_adv: enb %d, Inst ID %d",enb,inst_id); + BTM_TRACE_EVENT (" btm_ble_enable_multi_adv: enb %d, Inst ID %d", enb, inst_id); if ((rt = BTM_VendorSpecificCommand (HCI_BLE_MULTI_ADV_OCF, - BTM_BLE_MULTI_ADV_ENB_LEN, - param, - btm_ble_multi_adv_vsc_cmpl_cback)) - == BTM_CMD_STARTED) - { + BTM_BLE_MULTI_ADV_ENB_LEN, + param, + btm_ble_multi_adv_vsc_cmpl_cback)) + == BTM_CMD_STARTED) { btm_ble_multi_adv_enq_op_q(BTM_BLE_MULTI_ADV_ENB, inst_id, cb_evt); } return rt; @@ -234,8 +225,9 @@ tBTM_STATUS btm_ble_enable_multi_adv (BOOLEAN enable, UINT8 inst_id, UINT8 cb_ev int btm_ble_tx_power[BTM_BLE_ADV_TX_POWER_MAX + 1] = BTM_BLE_ADV_TX_POWER; char btm_ble_map_adv_tx_power(int tx_power_index) { - if(0 <= tx_power_index && tx_power_index < BTM_BLE_ADV_TX_POWER_MAX) + if (0 <= tx_power_index && tx_power_index < BTM_BLE_ADV_TX_POWER_MAX) { return (char)btm_ble_tx_power[tx_power_index]; + } return 0; } /******************************************************************************* @@ -250,12 +242,12 @@ char btm_ble_map_adv_tx_power(int tx_power_index) ** *******************************************************************************/ tBTM_STATUS btm_ble_multi_adv_set_params (tBTM_BLE_MULTI_ADV_INST *p_inst, - tBTM_BLE_ADV_PARAMS *p_params, - UINT8 cb_evt) + tBTM_BLE_ADV_PARAMS *p_params, + UINT8 cb_evt) { UINT8 param[BTM_BLE_MULTI_ADV_SET_PARAM_LEN], *pp; tBTM_STATUS rt; - BD_ADDR dummy ={0,0,0,0,0,0}; + BD_ADDR dummy = {0, 0, 0, 0, 0, 0}; pp = param; memset(param, 0, BTM_BLE_MULTI_ADV_SET_PARAM_LEN); @@ -267,12 +259,10 @@ tBTM_STATUS btm_ble_multi_adv_set_params (tBTM_BLE_MULTI_ADV_INST *p_inst, UINT8_TO_STREAM (pp, p_params->adv_type); #if (defined BLE_PRIVACY_SPT && BLE_PRIVACY_SPT == TRUE) - if (btm_cb.ble_ctr_cb.privacy_mode != BTM_PRIVACY_NONE) - { + if (btm_cb.ble_ctr_cb.privacy_mode != BTM_PRIVACY_NONE) { UINT8_TO_STREAM (pp, BLE_ADDR_RANDOM); BDADDR_TO_STREAM (pp, p_inst->rpa); - } - else + } else #endif { UINT8_TO_STREAM (pp, BLE_ADDR_PUBLIC); @@ -280,43 +270,44 @@ tBTM_STATUS btm_ble_multi_adv_set_params (tBTM_BLE_MULTI_ADV_INST *p_inst, } BTM_TRACE_EVENT (" btm_ble_multi_adv_set_params,Min %d, Max %d,adv_type %d", - p_params->adv_int_min,p_params->adv_int_max,p_params->adv_type); + p_params->adv_int_min, p_params->adv_int_max, p_params->adv_type); UINT8_TO_STREAM (pp, 0); BDADDR_TO_STREAM (pp, dummy); - if (p_params->channel_map == 0 || p_params->channel_map > BTM_BLE_DEFAULT_ADV_CHNL_MAP) + if (p_params->channel_map == 0 || p_params->channel_map > BTM_BLE_DEFAULT_ADV_CHNL_MAP) { p_params->channel_map = BTM_BLE_DEFAULT_ADV_CHNL_MAP; + } UINT8_TO_STREAM (pp, p_params->channel_map); - if (p_params->adv_filter_policy >= AP_SCAN_CONN_POLICY_MAX) + if (p_params->adv_filter_policy >= AP_SCAN_CONN_POLICY_MAX) { p_params->adv_filter_policy = AP_SCAN_CONN_ALL; + } UINT8_TO_STREAM (pp, p_params->adv_filter_policy); UINT8_TO_STREAM (pp, p_inst->inst_id); - if (p_params->tx_power > BTM_BLE_ADV_TX_POWER_MAX) + if (p_params->tx_power > BTM_BLE_ADV_TX_POWER_MAX) { p_params->tx_power = BTM_BLE_ADV_TX_POWER_MAX; + } UINT8_TO_STREAM (pp, btm_ble_map_adv_tx_power(p_params->tx_power)); BTM_TRACE_EVENT("set_params:Chnl Map %d,adv_fltr policy %d,ID:%d, TX Power%d", - p_params->channel_map,p_params->adv_filter_policy,p_inst->inst_id,p_params->tx_power); + p_params->channel_map, p_params->adv_filter_policy, p_inst->inst_id, p_params->tx_power); if ((rt = BTM_VendorSpecificCommand (HCI_BLE_MULTI_ADV_OCF, - BTM_BLE_MULTI_ADV_SET_PARAM_LEN, - param, - btm_ble_multi_adv_vsc_cmpl_cback)) - == BTM_CMD_STARTED) - { + BTM_BLE_MULTI_ADV_SET_PARAM_LEN, + param, + btm_ble_multi_adv_vsc_cmpl_cback)) + == BTM_CMD_STARTED) { p_inst->adv_evt = p_params->adv_type; #if (defined BLE_PRIVACY_SPT && BLE_PRIVACY_SPT == TRUE) - if (btm_cb.ble_ctr_cb.privacy_mode != BTM_PRIVACY_NONE) - { + if (btm_cb.ble_ctr_cb.privacy_mode != BTM_PRIVACY_NONE) { /* start timer */ p_inst->raddr_timer_ent.param = (TIMER_PARAM_TYPE) p_inst; btu_start_timer_oneshot(&p_inst->raddr_timer_ent, BTU_TTYPE_BLE_RANDOM_ADDR, - BTM_BLE_PRIVATE_ADDR_INT); + BTM_BLE_PRIVATE_ADDR_INT); } #endif btm_ble_multi_adv_enq_op_q(BTM_BLE_MULTI_ADV_SET_PARAM, p_inst->inst_id, cb_evt); @@ -342,8 +333,8 @@ tBTM_STATUS btm_ble_multi_adv_write_rpa (tBTM_BLE_MULTI_ADV_INST *p_inst, BD_ADD tBTM_STATUS rt; BTM_TRACE_EVENT ("%s-BD_ADDR:%02x-%02x-%02x-%02x-%02x-%02x,inst_id:%d", - __FUNCTION__, random_addr[5], random_addr[4], random_addr[3], random_addr[2], - random_addr[1], random_addr[0], p_inst->inst_id); + __FUNCTION__, random_addr[5], random_addr[4], random_addr[3], random_addr[2], + random_addr[1], random_addr[0], p_inst->inst_id); memset(param, 0, BTM_BLE_MULTI_ADV_SET_RANDOM_ADDR_LEN); @@ -352,15 +343,14 @@ tBTM_STATUS btm_ble_multi_adv_write_rpa (tBTM_BLE_MULTI_ADV_INST *p_inst, BD_ADD UINT8_TO_STREAM(pp, p_inst->inst_id); if ((rt = BTM_VendorSpecificCommand (HCI_BLE_MULTI_ADV_OCF, - BTM_BLE_MULTI_ADV_SET_RANDOM_ADDR_LEN, - param, - btm_ble_multi_adv_vsc_cmpl_cback)) == BTM_CMD_STARTED) - { + BTM_BLE_MULTI_ADV_SET_RANDOM_ADDR_LEN, + param, + btm_ble_multi_adv_vsc_cmpl_cback)) == BTM_CMD_STARTED) { /* start a periodical timer to refresh random addr */ btu_stop_timer_oneshot(&p_inst->raddr_timer_ent); p_inst->raddr_timer_ent.param = (TIMER_PARAM_TYPE) p_inst; btu_start_timer_oneshot(&p_inst->raddr_timer_ent, BTU_TTYPE_BLE_RANDOM_ADDR, - BTM_BLE_PRIVATE_ADDR_INT); + BTM_BLE_PRIVATE_ADDR_INT); btm_ble_multi_adv_enq_op_q(BTM_BLE_MULTI_ADV_SET_RANDOM_ADDR, p_inst->inst_id, 0); } @@ -384,22 +374,16 @@ void btm_ble_multi_adv_gen_rpa_cmpl(tBTM_RAND_ENC *p) UINT8 index = 0; tBTM_BLE_MULTI_ADV_INST *p_inst = NULL; - /* Retrieve the index of adv instance from stored Q */ - if (btm_multi_adv_idx_q.front == -1) - { + /* Retrieve the index of adv instance from stored Q */ + if (btm_multi_adv_idx_q.front == -1) { BTM_TRACE_ERROR(" %s can't locate advertise instance", __FUNCTION__); return; - } - else - { + } else { index = btm_multi_adv_idx_q.inst_index_queue[btm_multi_adv_idx_q.front]; - if (btm_multi_adv_idx_q.front == btm_multi_adv_idx_q.rear) - { + if (btm_multi_adv_idx_q.front == btm_multi_adv_idx_q.rear) { btm_multi_adv_idx_q.front = -1; btm_multi_adv_idx_q.rear = -1; - } - else - { + } else { btm_multi_adv_idx_q.front = (btm_multi_adv_idx_q.front + 1) % BTM_BLE_MULTI_ADV_MAX; } } @@ -407,8 +391,7 @@ void btm_ble_multi_adv_gen_rpa_cmpl(tBTM_RAND_ENC *p) p_inst = &(btm_multi_adv_cb.p_adv_inst[index]); BTM_TRACE_EVENT ("btm_ble_multi_adv_gen_rpa_cmpl inst_id = %d", p_inst->inst_id); - if (p) - { + if (p) { p->param_buf[2] &= (~BLE_RESOLVE_ADDR_MASK); p->param_buf[2] |= BLE_RESOLVE_ADDR_MSB; @@ -416,12 +399,9 @@ void btm_ble_multi_adv_gen_rpa_cmpl(tBTM_RAND_ENC *p) p_inst->rpa[1] = p->param_buf[1]; p_inst->rpa[0] = p->param_buf[2]; - if (!SMP_Encrypt(btm_cb.devcb.id_keys.irk, BT_OCTET16_LEN, p->param_buf, 3, &output)) - { + if (!SMP_Encrypt(btm_cb.devcb.id_keys.irk, BT_OCTET16_LEN, p->param_buf, 3, &output)) { BTM_TRACE_DEBUG("generate random address failed"); - } - else - { + } else { /* set hash to be LSB of rpAddress */ p_inst->rpa[5] = output.param_buf[0]; p_inst->rpa[4] = output.param_buf[1]; @@ -429,8 +409,7 @@ void btm_ble_multi_adv_gen_rpa_cmpl(tBTM_RAND_ENC *p) } if (p_inst->inst_id != BTM_BLE_MULTI_ADV_DEFAULT_STD && - p_inst->inst_id < BTM_BleMaxMultiAdvInstanceCount()) - { + p_inst->inst_id < BTM_BleMaxMultiAdvInstanceCount()) { /* set it to controller */ btm_ble_multi_adv_write_rpa(p_inst, p_inst->rpa); } @@ -451,20 +430,14 @@ void btm_ble_multi_adv_gen_rpa_cmpl(tBTM_RAND_ENC *p) *******************************************************************************/ void btm_ble_multi_adv_configure_rpa (tBTM_BLE_MULTI_ADV_INST *p_inst) { - if (btm_multi_adv_idx_q.front == (btm_multi_adv_idx_q.rear + 1) % BTM_BLE_MULTI_ADV_MAX) - { + if (btm_multi_adv_idx_q.front == (btm_multi_adv_idx_q.rear + 1) % BTM_BLE_MULTI_ADV_MAX) { BTM_TRACE_ERROR("outstanding rand generation exceeded max allowed "); return; - } - else - { - if (btm_multi_adv_idx_q.front == -1) - { + } else { + if (btm_multi_adv_idx_q.front == -1) { btm_multi_adv_idx_q.front = 0; btm_multi_adv_idx_q.rear = 0; - } - else - { + } else { btm_multi_adv_idx_q.rear = (btm_multi_adv_idx_q.rear + 1) % BTM_BLE_MULTI_ADV_MAX; } btm_multi_adv_idx_q.inst_index_queue[btm_multi_adv_idx_q.rear] = p_inst->index; @@ -487,17 +460,16 @@ void btm_ble_multi_adv_reenable(UINT8 inst_id) { tBTM_BLE_MULTI_ADV_INST *p_inst = &btm_multi_adv_cb.p_adv_inst[inst_id - 1]; - if (TRUE == p_inst->in_use) - { - if (p_inst->adv_evt != BTM_BLE_CONNECT_DIR_EVT) + if (TRUE == p_inst->in_use) { + if (p_inst->adv_evt != BTM_BLE_CONNECT_DIR_EVT) { btm_ble_enable_multi_adv (TRUE, p_inst->inst_id, 0); - else - /* mark directed adv as disabled if adv has been stopped */ + } else + /* mark directed adv as disabled if adv has been stopped */ { - (p_inst->p_cback)(BTM_BLE_MULTI_ADV_DISABLE_EVT,p_inst->inst_id,p_inst->p_ref,0); - p_inst->in_use = FALSE; + (p_inst->p_cback)(BTM_BLE_MULTI_ADV_DISABLE_EVT, p_inst->inst_id, p_inst->p_ref, 0); + p_inst->in_use = FALSE; } - } + } } /******************************************************************************* @@ -516,13 +488,13 @@ void btm_ble_multi_adv_enb_privacy(BOOLEAN enable) UINT8 i; tBTM_BLE_MULTI_ADV_INST *p_inst = &btm_multi_adv_cb.p_adv_inst[0]; - for (i = 0; i < BTM_BleMaxMultiAdvInstanceCount() - 1; i ++, p_inst++) - { + for (i = 0; i < BTM_BleMaxMultiAdvInstanceCount() - 1; i ++, p_inst++) { p_inst->in_use = FALSE; - if (enable) + if (enable) { btm_ble_multi_adv_configure_rpa (p_inst); - else + } else { btu_stop_timer_oneshot(&p_inst->raddr_timer_ent); + } } } @@ -542,7 +514,7 @@ void btm_ble_multi_adv_enb_privacy(BOOLEAN enable) ** *******************************************************************************/ tBTM_STATUS BTM_BleEnableAdvInstance (tBTM_BLE_ADV_PARAMS *p_params, - tBTM_BLE_MULTI_ADV_CBACK *p_cback,void *p_ref) + tBTM_BLE_MULTI_ADV_CBACK *p_cback, void *p_ref) { UINT8 i; tBTM_STATUS rt = BTM_NO_RESOURCES; @@ -550,45 +522,39 @@ tBTM_STATUS BTM_BleEnableAdvInstance (tBTM_BLE_ADV_PARAMS *p_params, BTM_TRACE_EVENT("BTM_BleEnableAdvInstance called"); - if (0 == btm_cb.cmn_ble_vsc_cb.adv_inst_max) - { + if (0 == btm_cb.cmn_ble_vsc_cb.adv_inst_max) { BTM_TRACE_ERROR("Controller does not support Multi ADV"); return BTM_ERR_PROCESSING; } - if (NULL == p_inst) - { + if (NULL == p_inst) { BTM_TRACE_ERROR("Invalid instance in BTM_BleEnableAdvInstance"); return BTM_ERR_PROCESSING; } - for (i = 0; i < BTM_BleMaxMultiAdvInstanceCount() - 1; i ++, p_inst++) - { - if (FALSE == p_inst->in_use) - { + for (i = 0; i < BTM_BleMaxMultiAdvInstanceCount() - 1; i ++, p_inst++) { + if (FALSE == p_inst->in_use) { p_inst->in_use = TRUE; /* configure adv parameter */ - if (p_params) + if (p_params) { rt = btm_ble_multi_adv_set_params(p_inst, p_params, 0); - else + } else { rt = BTM_CMD_STARTED; + } /* enable adv */ BTM_TRACE_EVENT("btm_ble_enable_multi_adv being called with inst_id:%d", - p_inst->inst_id); + p_inst->inst_id); - if (BTM_CMD_STARTED == rt) - { + if (BTM_CMD_STARTED == rt) { if ((rt = btm_ble_enable_multi_adv (TRUE, p_inst->inst_id, - BTM_BLE_MULTI_ADV_ENB_EVT)) == BTM_CMD_STARTED) - { + BTM_BLE_MULTI_ADV_ENB_EVT)) == BTM_CMD_STARTED) { p_inst->p_cback = p_cback; p_inst->p_ref = p_ref; } } - if (BTM_CMD_STARTED != rt) - { + if (BTM_CMD_STARTED != rt) { p_inst->in_use = FALSE; BTM_TRACE_ERROR("BTM_BleEnableAdvInstance failed"); } @@ -618,26 +584,24 @@ tBTM_STATUS BTM_BleUpdateAdvInstParam (UINT8 inst_id, tBTM_BLE_ADV_PARAMS *p_par BTM_TRACE_EVENT("BTM_BleUpdateAdvInstParam called with inst_id:%d", inst_id); - if (0 == btm_cb.cmn_ble_vsc_cb.adv_inst_max) - { + if (0 == btm_cb.cmn_ble_vsc_cb.adv_inst_max) { BTM_TRACE_ERROR("Controller does not support Multi ADV"); return BTM_ERR_PROCESSING; } if (inst_id < BTM_BleMaxMultiAdvInstanceCount() && - inst_id != BTM_BLE_MULTI_ADV_DEFAULT_STD && - p_params != NULL) - { - if (FALSE == p_inst->in_use) - { + inst_id != BTM_BLE_MULTI_ADV_DEFAULT_STD && + p_params != NULL) { + if (FALSE == p_inst->in_use) { BTM_TRACE_DEBUG("adv instance %d is not active", inst_id); return BTM_WRONG_MODE; - } - else + } else { btm_ble_enable_multi_adv(FALSE, inst_id, 0); + } - if (BTM_CMD_STARTED == btm_ble_multi_adv_set_params(p_inst, p_params, 0)) + if (BTM_CMD_STARTED == btm_ble_multi_adv_set_params(p_inst, p_params, 0)) { rt = btm_ble_enable_multi_adv(TRUE, inst_id, BTM_BLE_MULTI_ADV_PARAM_EVT); + } } return rt; } @@ -658,30 +622,30 @@ tBTM_STATUS BTM_BleUpdateAdvInstParam (UINT8 inst_id, tBTM_BLE_ADV_PARAMS *p_par ** *******************************************************************************/ tBTM_STATUS BTM_BleCfgAdvInstData (UINT8 inst_id, BOOLEAN is_scan_rsp, - tBTM_BLE_AD_MASK data_mask, - tBTM_BLE_ADV_DATA *p_data) + tBTM_BLE_AD_MASK data_mask, + tBTM_BLE_ADV_DATA *p_data) { UINT8 param[BTM_BLE_MULTI_ADV_WRITE_DATA_LEN], *pp = param; UINT8 sub_code = (is_scan_rsp) ? BTM_BLE_MULTI_ADV_WRITE_SCAN_RSP_DATA : BTM_BLE_MULTI_ADV_WRITE_ADV_DATA; UINT8 *p_len; tBTM_STATUS rt; - UINT8 *pp_temp = (UINT8*)(param + BTM_BLE_MULTI_ADV_WRITE_DATA_LEN -1); + UINT8 *pp_temp = (UINT8 *)(param + BTM_BLE_MULTI_ADV_WRITE_DATA_LEN - 1); tBTM_BLE_VSC_CB cmn_ble_vsc_cb; BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb); - if (0 == cmn_ble_vsc_cb.adv_inst_max) - { + if (0 == cmn_ble_vsc_cb.adv_inst_max) { BTM_TRACE_ERROR("Controller does not support Multi ADV"); return BTM_ERR_PROCESSING; } btm_ble_update_dmt_flag_bits(&p_data->flag, btm_cb.btm_inq_vars.connectable_mode, - btm_cb.btm_inq_vars.discoverable_mode); + btm_cb.btm_inq_vars.discoverable_mode); BTM_TRACE_EVENT("BTM_BleCfgAdvInstData called with inst_id:%d", inst_id); - if (inst_id > BTM_BLE_MULTI_ADV_MAX || inst_id == BTM_BLE_MULTI_ADV_DEFAULT_STD) + if (inst_id > BTM_BLE_MULTI_ADV_MAX || inst_id == BTM_BLE_MULTI_ADV_DEFAULT_STD) { return BTM_ILLEGAL_VALUE; + } memset(param, 0, BTM_BLE_MULTI_ADV_WRITE_DATA_LEN); @@ -692,11 +656,10 @@ tBTM_STATUS BTM_BleCfgAdvInstData (UINT8 inst_id, BOOLEAN is_scan_rsp, UINT8_TO_STREAM(pp_temp, inst_id); if ((rt = BTM_VendorSpecificCommand (HCI_BLE_MULTI_ADV_OCF, - (UINT8)BTM_BLE_MULTI_ADV_WRITE_DATA_LEN, - param, - btm_ble_multi_adv_vsc_cmpl_cback)) - == BTM_CMD_STARTED) - { + (UINT8)BTM_BLE_MULTI_ADV_WRITE_DATA_LEN, + param, + btm_ble_multi_adv_vsc_cmpl_cback)) + == BTM_CMD_STARTED) { btm_ble_multi_adv_enq_op_q(sub_code, inst_id, BTM_BLE_MULTI_ADV_DATA_EVT); } return rt; @@ -715,30 +678,27 @@ tBTM_STATUS BTM_BleCfgAdvInstData (UINT8 inst_id, BOOLEAN is_scan_rsp, *******************************************************************************/ tBTM_STATUS BTM_BleDisableAdvInstance (UINT8 inst_id) { - tBTM_STATUS rt = BTM_ILLEGAL_VALUE; - tBTM_BLE_VSC_CB cmn_ble_vsc_cb; + tBTM_STATUS rt = BTM_ILLEGAL_VALUE; + tBTM_BLE_VSC_CB cmn_ble_vsc_cb; - BTM_TRACE_EVENT("BTM_BleDisableAdvInstance with inst_id:%d", inst_id); + BTM_TRACE_EVENT("BTM_BleDisableAdvInstance with inst_id:%d", inst_id); - BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb); + BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb); - if (0 == cmn_ble_vsc_cb.adv_inst_max) - { - BTM_TRACE_ERROR("Controller does not support Multi ADV"); - return BTM_ERR_PROCESSING; - } + if (0 == cmn_ble_vsc_cb.adv_inst_max) { + BTM_TRACE_ERROR("Controller does not support Multi ADV"); + return BTM_ERR_PROCESSING; + } - if (inst_id < BTM_BleMaxMultiAdvInstanceCount() && - inst_id != BTM_BLE_MULTI_ADV_DEFAULT_STD) - { - if ((rt = btm_ble_enable_multi_adv(FALSE, inst_id, BTM_BLE_MULTI_ADV_DISABLE_EVT)) - == BTM_CMD_STARTED) - { - btm_ble_multi_adv_configure_rpa(&btm_multi_adv_cb.p_adv_inst[inst_id-1]); - btu_stop_timer_oneshot(&btm_multi_adv_cb.p_adv_inst[inst_id-1].raddr_timer_ent); - btm_multi_adv_cb.p_adv_inst[inst_id-1].in_use = FALSE; - } - } + if (inst_id < BTM_BleMaxMultiAdvInstanceCount() && + inst_id != BTM_BLE_MULTI_ADV_DEFAULT_STD) { + if ((rt = btm_ble_enable_multi_adv(FALSE, inst_id, BTM_BLE_MULTI_ADV_DISABLE_EVT)) + == BTM_CMD_STARTED) { + btm_ble_multi_adv_configure_rpa(&btm_multi_adv_cb.p_adv_inst[inst_id - 1]); + btu_stop_timer_oneshot(&btm_multi_adv_cb.p_adv_inst[inst_id - 1].raddr_timer_ent); + btm_multi_adv_cb.p_adv_inst[inst_id - 1].in_use = FALSE; + } + } return rt; } /******************************************************************************* @@ -761,35 +721,29 @@ void btm_ble_multi_adv_vse_cback(UINT8 len, UINT8 *p) len--; BTM_TRACE_EVENT("btm_ble_multi_adv_vse_cback called with event:%d", sub_event); - if ((sub_event == HCI_VSE_SUBCODE_BLE_MULTI_ADV_ST_CHG) && (len >= 4)) - { + if ((sub_event == HCI_VSE_SUBCODE_BLE_MULTI_ADV_ST_CHG) && (len >= 4)) { STREAM_TO_UINT8(adv_inst, p); ++p; STREAM_TO_UINT16(conn_handle, p); - if ((idx = btm_handle_to_acl_index(conn_handle)) != MAX_L2CAP_LINKS) - { + if ((idx = btm_handle_to_acl_index(conn_handle)) != MAX_L2CAP_LINKS) { #if (defined BLE_PRIVACY_SPT && BLE_PRIVACY_SPT == TRUE) if (btm_cb.ble_ctr_cb.privacy_mode != BTM_PRIVACY_NONE && - adv_inst <= BTM_BLE_MULTI_ADV_MAX && adv_inst != BTM_BLE_MULTI_ADV_DEFAULT_STD) - { + adv_inst <= BTM_BLE_MULTI_ADV_MAX && adv_inst != BTM_BLE_MULTI_ADV_DEFAULT_STD) { memcpy(btm_cb.acl_db[idx].conn_addr, btm_multi_adv_cb.p_adv_inst[adv_inst - 1].rpa, - BD_ADDR_LEN); + BD_ADDR_LEN); } #endif } if (adv_inst < BTM_BleMaxMultiAdvInstanceCount() && - adv_inst != BTM_BLE_MULTI_ADV_DEFAULT_STD) - { + adv_inst != BTM_BLE_MULTI_ADV_DEFAULT_STD) { BTM_TRACE_EVENT("btm_ble_multi_adv_reenable called"); btm_ble_multi_adv_reenable(adv_inst); } /* re-enable connectibility */ - else if (adv_inst == BTM_BLE_MULTI_ADV_DEFAULT_STD) - { - if (btm_cb.ble_ctr_cb.inq_var.connectable_mode == BTM_BLE_CONNECTABLE) - { + else if (adv_inst == BTM_BLE_MULTI_ADV_DEFAULT_STD) { + if (btm_cb.ble_ctr_cb.inq_var.connectable_mode == BTM_BLE_CONNECTABLE) { btm_ble_set_connectability ( btm_cb.ble_ctr_cb.inq_var.connectable_mode ); } } @@ -812,26 +766,25 @@ void btm_ble_multi_adv_init() { UINT8 i = 0; memset(&btm_multi_adv_cb, 0, sizeof(tBTM_BLE_MULTI_ADV_CB)); - memset (&btm_multi_adv_idx_q,0, sizeof (tBTM_BLE_MULTI_ADV_INST_IDX_Q)); + memset (&btm_multi_adv_idx_q, 0, sizeof (tBTM_BLE_MULTI_ADV_INST_IDX_Q)); btm_multi_adv_idx_q.front = -1; btm_multi_adv_idx_q.rear = -1; - if (btm_cb.cmn_ble_vsc_cb.adv_inst_max > 0) - { - btm_multi_adv_cb.p_adv_inst = GKI_getbuf( sizeof(tBTM_BLE_MULTI_ADV_INST)* - (btm_cb.cmn_ble_vsc_cb.adv_inst_max)); - memset(btm_multi_adv_cb.p_adv_inst, 0, sizeof(tBTM_BLE_MULTI_ADV_INST)* - (btm_cb.cmn_ble_vsc_cb.adv_inst_max)); + if (btm_cb.cmn_ble_vsc_cb.adv_inst_max > 0) { + btm_multi_adv_cb.p_adv_inst = GKI_getbuf( sizeof(tBTM_BLE_MULTI_ADV_INST) * + (btm_cb.cmn_ble_vsc_cb.adv_inst_max)); + memset(btm_multi_adv_cb.p_adv_inst, 0, sizeof(tBTM_BLE_MULTI_ADV_INST) * + (btm_cb.cmn_ble_vsc_cb.adv_inst_max)); btm_multi_adv_cb.op_q.p_sub_code = GKI_getbuf( sizeof(UINT8) * - (btm_cb.cmn_ble_vsc_cb.adv_inst_max)); + (btm_cb.cmn_ble_vsc_cb.adv_inst_max)); memset(btm_multi_adv_cb.op_q.p_sub_code, 0, - sizeof(UINT8)*(btm_cb.cmn_ble_vsc_cb.adv_inst_max)); + sizeof(UINT8) * (btm_cb.cmn_ble_vsc_cb.adv_inst_max)); btm_multi_adv_cb.op_q.p_inst_id = GKI_getbuf( sizeof(UINT8) * (btm_cb.cmn_ble_vsc_cb.adv_inst_max)); memset(btm_multi_adv_cb.op_q.p_inst_id, 0, - sizeof(UINT8)*(btm_cb.cmn_ble_vsc_cb.adv_inst_max)); + sizeof(UINT8) * (btm_cb.cmn_ble_vsc_cb.adv_inst_max)); } /* Initialize adv instance indices and IDs. */ @@ -855,14 +808,17 @@ void btm_ble_multi_adv_init() *******************************************************************************/ void btm_ble_multi_adv_cleanup(void) { - if (btm_multi_adv_cb.p_adv_inst) + if (btm_multi_adv_cb.p_adv_inst) { GKI_freebuf(btm_multi_adv_cb.p_adv_inst); + } - if (btm_multi_adv_cb.op_q.p_sub_code) - GKI_freebuf(btm_multi_adv_cb.op_q.p_sub_code); + if (btm_multi_adv_cb.op_q.p_sub_code) { + GKI_freebuf(btm_multi_adv_cb.op_q.p_sub_code); + } - if (btm_multi_adv_cb.op_q.p_inst_id) + if (btm_multi_adv_cb.op_q.p_inst_id) { GKI_freebuf(btm_multi_adv_cb.op_q.p_inst_id); + } } @@ -877,15 +833,15 @@ void btm_ble_multi_adv_cleanup(void) ** Returns void* ** *******************************************************************************/ -void* btm_ble_multi_adv_get_ref(UINT8 inst_id) +void *btm_ble_multi_adv_get_ref(UINT8 inst_id) { tBTM_BLE_MULTI_ADV_INST *p_inst = NULL; - if (inst_id < BTM_BleMaxMultiAdvInstanceCount()) - { + if (inst_id < BTM_BleMaxMultiAdvInstanceCount()) { p_inst = &btm_multi_adv_cb.p_adv_inst[inst_id - 1]; - if (NULL != p_inst) + if (NULL != p_inst) { return p_inst->p_ref; + } } return NULL; diff --git a/components/bt/bluedroid/stack/btm/btm_ble_privacy.c b/components/bt/bluedroid/stack/btm/btm_ble_privacy.c old mode 100755 new mode 100644 index e0bbcf89d3..08870d9e76 --- a/components/bt/bluedroid/stack/btm/btm_ble_privacy.c +++ b/components/bt/bluedroid/stack/btm/btm_ble_privacy.c @@ -91,11 +91,11 @@ BOOLEAN btm_ble_brcm_find_resolving_pending_entry(BD_ADDR pseudo_addr, UINT8 act { tBTM_BLE_RESOLVE_Q *p_q = &btm_cb.ble_ctr_cb.resolving_list_pend_q; - for (UINT8 i = p_q->q_pending; i != p_q->q_next;) - { + for (UINT8 i = p_q->q_pending; i != p_q->q_next;) { if (memcmp(p_q->resolve_q_random_pseudo[i], pseudo_addr, BD_ADDR_LEN) == 0 && - action == p_q->resolve_q_action[i]) + action == p_q->resolve_q_action[i]) { return TRUE; + } i ++; i %= controller_get_interface()->get_ble_resolving_list_max_size(); @@ -118,8 +118,7 @@ BOOLEAN btm_ble_deq_resolving_pending(BD_ADDR pseudo_addr) { tBTM_BLE_RESOLVE_Q *p_q = &btm_cb.ble_ctr_cb.resolving_list_pend_q; - if (p_q->q_next != p_q->q_pending) - { + if (p_q->q_next != p_q->q_pending) { memcpy(pseudo_addr, p_q->resolve_q_random_pseudo[p_q->q_pending], BD_ADDR_LEN); memset(p_q->resolve_q_random_pseudo[p_q->q_pending], 0, BD_ADDR_LEN); p_q->q_pending ++; @@ -144,11 +143,10 @@ void btm_ble_clear_irk_index(UINT8 index) UINT8 byte; UINT8 bit; - if (index < controller_get_interface()->get_ble_resolving_list_max_size()) - { - byte = index / 8; - bit = index % 8; - btm_cb.ble_ctr_cb.irk_list_mask[byte] &= (~(1 << bit)); + if (index < controller_get_interface()->get_ble_resolving_list_max_size()) { + byte = index / 8; + bit = index % 8; + btm_cb.ble_ctr_cb.irk_list_mask[byte] &= (~(1 << bit)); } } @@ -167,13 +165,11 @@ UINT8 btm_ble_find_irk_index(void) UINT8 byte; UINT8 bit; - while (i < controller_get_interface()->get_ble_resolving_list_max_size()) - { + while (i < controller_get_interface()->get_ble_resolving_list_max_size()) { byte = i / 8; bit = i % 8; - if ((btm_cb.ble_ctr_cb.irk_list_mask[byte] & (1 << bit)) == 0) - { + if ((btm_cb.ble_ctr_cb.irk_list_mask[byte] & (1 << bit)) == 0) { btm_cb.ble_ctr_cb.irk_list_mask[byte] |= (1 << bit); return i; } @@ -196,23 +192,21 @@ UINT8 btm_ble_find_irk_index(void) void btm_ble_update_resolving_list(BD_ADDR pseudo_bda, BOOLEAN add) { tBTM_SEC_DEV_REC *p_dev_rec = btm_find_dev(pseudo_bda); - if (p_dev_rec == NULL) + if (p_dev_rec == NULL) { return; - - if (add) - { - p_dev_rec->ble.in_controller_list |= BTM_RESOLVING_LIST_BIT; - if (!controller_get_interface()->supports_ble_privacy()) - p_dev_rec->ble.resolving_list_index = btm_ble_find_irk_index(); } - else - { + + if (add) { + p_dev_rec->ble.in_controller_list |= BTM_RESOLVING_LIST_BIT; + if (!controller_get_interface()->supports_ble_privacy()) { + p_dev_rec->ble.resolving_list_index = btm_ble_find_irk_index(); + } + } else { p_dev_rec->ble.in_controller_list &= ~BTM_RESOLVING_LIST_BIT; - if (!controller_get_interface()->supports_ble_privacy()) - { - /* clear IRK list index mask */ - btm_ble_clear_irk_index(p_dev_rec->ble.resolving_list_index); - p_dev_rec->ble.resolving_list_index = 0; + if (!controller_get_interface()->supports_ble_privacy()) { + /* clear IRK list index mask */ + btm_ble_clear_irk_index(p_dev_rec->ble.resolving_list_index); + p_dev_rec->ble.resolving_list_index = 0; } } } @@ -234,10 +228,8 @@ void btm_ble_clear_resolving_list_complete(UINT8 *p, UINT16 evt_len) BTM_TRACE_DEBUG("%s status=%d", __func__, status); - if (status == HCI_SUCCESS) - { - if (evt_len >= 3) - { + if (status == HCI_SUCCESS) { + if (evt_len >= 3) { /* VSC complete has one extra byte for op code and list size, skip it here */ p ++; @@ -245,11 +237,12 @@ void btm_ble_clear_resolving_list_complete(UINT8 *p, UINT16 evt_len) uint8_t irk_list_sz_max = 0; STREAM_TO_UINT8(irk_list_sz_max, p); - if (controller_get_interface()->get_ble_resolving_list_max_size() == 0) + if (controller_get_interface()->get_ble_resolving_list_max_size() == 0) { btm_ble_resolving_list_init(irk_list_sz_max); + } uint8_t irk_mask_size = (irk_list_sz_max % 8) ? - (irk_list_sz_max / 8 + 1) : (irk_list_sz_max / 8); + (irk_list_sz_max / 8 + 1) : (irk_list_sz_max / 8); memset(btm_cb.ble_ctr_cb.irk_list_mask, 0, irk_mask_size); } @@ -259,8 +252,9 @@ void btm_ble_clear_resolving_list_complete(UINT8 *p, UINT16 evt_len) BTM_TRACE_DEBUG("%s resolving_list_avail_size=%d", __func__, btm_cb.ble_ctr_cb.resolving_list_avail_size); - for (UINT8 i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; ++i) + for (UINT8 i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; ++i) { btm_cb.sec_dev_rec[i].ble.in_controller_list &= ~BTM_RESOLVING_LIST_BIT; + } } } @@ -282,26 +276,21 @@ void btm_ble_add_resolving_list_entry_complete(UINT8 *p, UINT16 evt_len) BTM_TRACE_DEBUG("%s status = %d", __func__, status); BD_ADDR pseudo_bda; - if (!btm_ble_deq_resolving_pending(pseudo_bda)) - { + if (!btm_ble_deq_resolving_pending(pseudo_bda)) { BTM_TRACE_DEBUG("no pending resolving list operation"); return; } - if (status == HCI_SUCCESS) - { + if (status == HCI_SUCCESS) { /* privacy 1.2 command complete does not have these extra byte */ - if (evt_len > 2) - { + if (evt_len > 2) { /* VSC complete has one extra byte for op code, skip it here */ p ++; STREAM_TO_UINT8(btm_cb.ble_ctr_cb.resolving_list_avail_size, p); - } - else + } else { btm_cb.ble_ctr_cb.resolving_list_avail_size --; - } - else if (status == HCI_ERR_MEMORY_FULL) /* BT_ERROR_CODE_MEMORY_CAPACITY_EXCEEDED */ - { + } + } else if (status == HCI_ERR_MEMORY_FULL) { /* BT_ERROR_CODE_MEMORY_CAPACITY_EXCEEDED */ btm_cb.ble_ctr_cb.resolving_list_avail_size = 0; BTM_TRACE_DEBUG("%s Resolving list Full ", __func__); } @@ -326,22 +315,19 @@ void btm_ble_remove_resolving_list_entry_complete(UINT8 *p, UINT16 evt_len) BTM_TRACE_DEBUG("%s status = %d", __func__, status); - if (!btm_ble_deq_resolving_pending(pseudo_bda)) - { + if (!btm_ble_deq_resolving_pending(pseudo_bda)) { BTM_TRACE_ERROR("%s no pending resolving list operation", __func__); return; } - if (status == HCI_SUCCESS) - { + if (status == HCI_SUCCESS) { /* proprietary: spec does not have these extra bytes */ - if (evt_len > 2) - { + if (evt_len > 2) { p ++; /* skip opcode */ STREAM_TO_UINT8(btm_cb.ble_ctr_cb.resolving_list_avail_size, p); - } - else + } else { btm_cb.ble_ctr_cb.resolving_list_avail_size++; + } } } @@ -364,29 +350,24 @@ void btm_ble_read_resolving_list_entry_complete(UINT8 *p, UINT16 evt_len) BTM_TRACE_DEBUG("%s status = %d", __func__, status); - if (!btm_ble_deq_resolving_pending(pseudo_bda)) - { + if (!btm_ble_deq_resolving_pending(pseudo_bda)) { BTM_TRACE_ERROR("no pending resolving list operation"); return; } - if (status == HCI_SUCCESS) - { + if (status == HCI_SUCCESS) { /* proprietary spec has extra bytes */ - if (evt_len > 8) - { + if (evt_len > 8) { p += (2 + 16 + 1 + 6); /* skip subcode, index, IRK value, address type, identity addr type */ STREAM_TO_BDADDR(rra, p); BTM_TRACE_ERROR("%s peer_addr: %02x:%02x:%02x:%02x:%02x:%02x", __func__, rra[0], rra[1], rra[2], rra[3], rra[4], rra[5]); - } - else - { - STREAM_TO_BDADDR(rra, p); + } else { + STREAM_TO_BDADDR(rra, p); } btm_ble_refresh_peer_resolvable_private_addr(pseudo_bda, rra, rra_type); - } + } } /******************************************************************************* VSC that implement controller based privacy @@ -411,24 +392,15 @@ void btm_ble_resolving_list_vsc_op_cmpl (tBTM_VSC_CMPL *p_params) BTM_TRACE_DEBUG("%s op_subcode = %d", __func__, op_subcode); - if (op_subcode == BTM_BLE_META_CLEAR_IRK_LIST) - { + if (op_subcode == BTM_BLE_META_CLEAR_IRK_LIST) { btm_ble_clear_resolving_list_complete(p, evt_len); - } - else if (op_subcode == BTM_BLE_META_ADD_IRK_ENTRY) - { - btm_ble_add_resolving_list_entry_complete(p, evt_len); - } - else if (op_subcode == BTM_BLE_META_REMOVE_IRK_ENTRY) - { + } else if (op_subcode == BTM_BLE_META_ADD_IRK_ENTRY) { + btm_ble_add_resolving_list_entry_complete(p, evt_len); + } else if (op_subcode == BTM_BLE_META_REMOVE_IRK_ENTRY) { btm_ble_remove_resolving_list_entry_complete(p, evt_len); - } - else if (op_subcode == BTM_BLE_META_READ_IRK_ENTRY) - { - btm_ble_read_resolving_list_entry_complete(p, evt_len); - } - else if (op_subcode == BTM_BLE_META_IRK_ENABLE) - { + } else if (op_subcode == BTM_BLE_META_READ_IRK_ENTRY) { + btm_ble_read_resolving_list_entry_complete(p, evt_len); + } else if (op_subcode == BTM_BLE_META_IRK_ENABLE) { /* RPA offloading enable/disabled */ } } @@ -448,19 +420,18 @@ void btm_ble_resolving_list_vsc_op_cmpl (tBTM_VSC_CMPL *p_params) tBTM_STATUS btm_ble_remove_resolving_list_entry(tBTM_SEC_DEV_REC *p_dev_rec) { /* if controller does not support RPA offloading or privacy 1.2, skip */ - if (controller_get_interface()->get_ble_resolving_list_max_size() == 0) + if (controller_get_interface()->get_ble_resolving_list_max_size() == 0) { return BTM_WRONG_MODE; + } tBTM_STATUS st = BTM_NO_RESOURCES; - if (controller_get_interface()->supports_ble_privacy()) - { + if (controller_get_interface()->supports_ble_privacy()) { if (btsnd_hcic_ble_rm_device_resolving_list(p_dev_rec->ble.static_addr_type, - p_dev_rec->ble.static_addr)) + p_dev_rec->ble.static_addr)) { st = BTM_CMD_STARTED; - } - else - { - UINT8 param[20]= {0}; + } + } else { + UINT8 param[20] = {0}; UINT8 *p = param; UINT8_TO_STREAM(p, BTM_BLE_META_REMOVE_IRK_ENTRY); @@ -473,8 +444,9 @@ tBTM_STATUS btm_ble_remove_resolving_list_entry(tBTM_SEC_DEV_REC *p_dev_rec) btm_ble_resolving_list_vsc_op_cmpl); } - if (st == BTM_CMD_STARTED) + if (st == BTM_CMD_STARTED) { btm_ble_enq_resolving_list_pending( p_dev_rec->bd_addr, BTM_BLE_META_REMOVE_IRK_ENTRY); + } return st; } @@ -494,13 +466,11 @@ tBTM_STATUS btm_ble_clear_resolving_list(void) { tBTM_STATUS st = BTM_NO_RESOURCES; - if (controller_get_interface()->supports_ble_privacy()) - { - if (btsnd_hcic_ble_clear_resolving_list()) + if (controller_get_interface()->supports_ble_privacy()) { + if (btsnd_hcic_ble_clear_resolving_list()) { st = BTM_SUCCESS; - } - else - { + } + } else { UINT8 param[20] = {0}; UINT8 *p = param; @@ -529,17 +499,16 @@ tBTM_STATUS btm_ble_read_resolving_list_entry(tBTM_SEC_DEV_REC *p_dev_rec) { tBTM_STATUS st = BTM_NO_RESOURCES; - if (!(p_dev_rec->ble.in_controller_list & BTM_RESOLVING_LIST_BIT)) + if (!(p_dev_rec->ble.in_controller_list & BTM_RESOLVING_LIST_BIT)) { return BTM_WRONG_MODE; - - if (controller_get_interface()->supports_ble_privacy()) - { - if (btsnd_hcic_ble_read_resolvable_addr_peer(p_dev_rec->ble.static_addr_type, - p_dev_rec->ble.static_addr)) - st = BTM_CMD_STARTED; } - else - { + + if (controller_get_interface()->supports_ble_privacy()) { + if (btsnd_hcic_ble_read_resolvable_addr_peer(p_dev_rec->ble.static_addr_type, + p_dev_rec->ble.static_addr)) { + st = BTM_CMD_STARTED; + } + } else { UINT8 param[20] = {0}; UINT8 *p = param; @@ -580,32 +549,31 @@ BOOLEAN btm_ble_suspend_resolving_list_activity(void) /* if resolving list is not enabled, do not need to terminate any activity */ /* if asking for stop all activity */ /* if already suspended */ - if (p_ble_cb->suspended_rl_state != BTM_BLE_RL_IDLE) + if (p_ble_cb->suspended_rl_state != BTM_BLE_RL_IDLE) { return TRUE; + } /* direct connection active, wait until it completed */ - if (btm_ble_get_conn_st() == BLE_DIR_CONN) - { + if (btm_ble_get_conn_st() == BLE_DIR_CONN) { BTM_TRACE_ERROR("resolving list can not be edited, EnQ now"); return FALSE; } p_ble_cb->suspended_rl_state = BTM_BLE_RL_IDLE; - if (p_ble_cb->inq_var.adv_mode == BTM_BLE_ADV_ENABLE) - { + if (p_ble_cb->inq_var.adv_mode == BTM_BLE_ADV_ENABLE) { btm_ble_stop_adv(); p_ble_cb->suspended_rl_state |= BTM_BLE_RL_ADV; } - if (BTM_BLE_IS_SCAN_ACTIVE(p_ble_cb->scan_activity)) - { + if (BTM_BLE_IS_SCAN_ACTIVE(p_ble_cb->scan_activity)) { btm_ble_stop_scan(); p_ble_cb->suspended_rl_state |= BTM_BLE_RL_SCAN; } - if (btm_ble_suspend_bg_conn()) + if (btm_ble_suspend_bg_conn()) { p_ble_cb->suspended_rl_state |= BTM_BLE_RL_INIT; + } return TRUE; } @@ -625,14 +593,17 @@ void btm_ble_resume_resolving_list_activity(void) { tBTM_BLE_CB *p_ble_cb = &btm_cb.ble_ctr_cb; - if (p_ble_cb->suspended_rl_state & BTM_BLE_RL_ADV) + if (p_ble_cb->suspended_rl_state & BTM_BLE_RL_ADV) { btm_ble_start_adv(); + } - if (p_ble_cb->suspended_rl_state & BTM_BLE_RL_SCAN) + if (p_ble_cb->suspended_rl_state & BTM_BLE_RL_SCAN) { btm_ble_start_scan(); + } - if (p_ble_cb->suspended_rl_state & BTM_BLE_RL_INIT) + if (p_ble_cb->suspended_rl_state & BTM_BLE_RL_INIT) { btm_ble_resume_bg_conn(); + } p_ble_cb->suspended_rl_state = BTM_BLE_RL_IDLE; } @@ -678,13 +649,15 @@ tBTM_STATUS btm_ble_vendor_enable_irk_feature(BOOLEAN enable) *******************************************************************************/ BOOLEAN btm_ble_exe_disable_resolving_list(void) { - if (!btm_ble_suspend_resolving_list_activity()) + if (!btm_ble_suspend_resolving_list_activity()) { return FALSE; + } - if (!controller_get_interface()->supports_ble_privacy()) + if (!controller_get_interface()->supports_ble_privacy()) { btm_ble_vendor_enable_irk_feature(FALSE); - else + } else { btsnd_hcic_ble_set_addr_resolution_enable(FALSE); + } return TRUE; } @@ -700,13 +673,15 @@ BOOLEAN btm_ble_exe_disable_resolving_list(void) *******************************************************************************/ void btm_ble_exe_enable_resolving_list(void) { - if (!btm_ble_suspend_resolving_list_activity()) + if (!btm_ble_suspend_resolving_list_activity()) { return; + } - if (!controller_get_interface()->supports_ble_privacy()) + if (!controller_get_interface()->supports_ble_privacy()) { btm_ble_vendor_enable_irk_feature(TRUE); - else + } else { btsnd_hcic_ble_set_addr_resolution_enable(TRUE); + } } /******************************************************************************* @@ -723,22 +698,22 @@ BOOLEAN btm_ble_disable_resolving_list(UINT8 rl_mask, BOOLEAN to_resume ) UINT8 rl_state = btm_cb.ble_ctr_cb.rl_state; /* if controller does not support RPA offloading or privacy 1.2, skip */ - if (controller_get_interface()->get_ble_resolving_list_max_size()== 0) + if (controller_get_interface()->get_ble_resolving_list_max_size() == 0) { return FALSE; + } btm_cb.ble_ctr_cb.rl_state &= ~rl_mask; - if (rl_state != BTM_BLE_RL_IDLE && btm_cb.ble_ctr_cb.rl_state == BTM_BLE_RL_IDLE) - { - if (btm_ble_exe_disable_resolving_list()) - { - if (to_resume) + if (rl_state != BTM_BLE_RL_IDLE && btm_cb.ble_ctr_cb.rl_state == BTM_BLE_RL_IDLE) { + if (btm_ble_exe_disable_resolving_list()) { + if (to_resume) { btm_ble_resume_resolving_list_activity(); + } return TRUE; - } - else + } else { return FALSE; + } } return TRUE; @@ -761,42 +736,38 @@ BOOLEAN btm_ble_resolving_list_load_dev(tBTM_SEC_DEV_REC *p_dev_rec) UINT8 rl_mask = btm_cb.ble_ctr_cb.rl_state; BTM_TRACE_DEBUG("%s btm_cb.ble_ctr_cb.privacy_mode = %d\n", __func__, - btm_cb.ble_ctr_cb.privacy_mode); + btm_cb.ble_ctr_cb.privacy_mode); /* if controller does not support RPA offloading or privacy 1.2, skip */ - if (controller_get_interface()->get_ble_resolving_list_max_size() == 0) + if (controller_get_interface()->get_ble_resolving_list_max_size() == 0) { return FALSE; + } BTM_TRACE_DEBUG("%s btm_cb.ble_ctr_cb.privacy_mode = %d\n", __func__, btm_cb.ble_ctr_cb.privacy_mode); /* only add RPA enabled device into resolving list */ if (p_dev_rec != NULL && /* RPA is being used and PID is known */ - (p_dev_rec->sec_flags & BTM_SEC_IN_USE) != 0 && - ((p_dev_rec->ble.key_type & BTM_LE_KEY_PID) != 0 || - (p_dev_rec->ble.key_type & BTM_LE_KEY_LID) != 0)) - { + (p_dev_rec->sec_flags & BTM_SEC_IN_USE) != 0 && + ((p_dev_rec->ble.key_type & BTM_LE_KEY_PID) != 0 || + (p_dev_rec->ble.key_type & BTM_LE_KEY_LID) != 0)) { if (!(p_dev_rec->ble.in_controller_list & BTM_RESOLVING_LIST_BIT) && - btm_ble_brcm_find_resolving_pending_entry(p_dev_rec->bd_addr, - BTM_BLE_META_ADD_IRK_ENTRY) == FALSE) - { - if (btm_cb.ble_ctr_cb.resolving_list_avail_size > 0) - { - if (rl_mask) - { - if (!btm_ble_disable_resolving_list (rl_mask, FALSE)) + btm_ble_brcm_find_resolving_pending_entry(p_dev_rec->bd_addr, + BTM_BLE_META_ADD_IRK_ENTRY) == FALSE) { + if (btm_cb.ble_ctr_cb.resolving_list_avail_size > 0) { + if (rl_mask) { + if (!btm_ble_disable_resolving_list (rl_mask, FALSE)) { return FALSE; + } } btm_ble_update_resolving_list(p_dev_rec->bd_addr, TRUE); - if (controller_get_interface()->supports_ble_privacy()) - { + if (controller_get_interface()->supports_ble_privacy()) { BD_ADDR dummy_bda = {0}; UINT8 *peer_irk = p_dev_rec->ble.keys.irk; UINT8 *local_irk = btm_cb.devcb.id_keys.irk; - if (memcmp(p_dev_rec->ble.static_addr, dummy_bda, BD_ADDR_LEN) == 0) - { + if (memcmp(p_dev_rec->ble.static_addr, dummy_bda, BD_ADDR_LEN) == 0) { memcpy(p_dev_rec->ble.static_addr, p_dev_rec->bd_addr, BD_ADDR_LEN); p_dev_rec->ble.static_addr_type = p_dev_rec->ble.ble_addr_type; } @@ -804,45 +775,41 @@ BOOLEAN btm_ble_resolving_list_load_dev(tBTM_SEC_DEV_REC *p_dev_rec) BTM_TRACE_DEBUG("%s:adding device to controller resolving list\n", __func__); // use identical IRK for now rt = btsnd_hcic_ble_add_device_resolving_list(p_dev_rec->ble.static_addr_type, - p_dev_rec->ble.static_addr, peer_irk, local_irk); - } - else - { + p_dev_rec->ble.static_addr, peer_irk, local_irk); + } else { UINT8 param[40] = {0}; UINT8 *p = param; UINT8_TO_STREAM(p, BTM_BLE_META_ADD_IRK_ENTRY); ARRAY_TO_STREAM(p, p_dev_rec->ble.keys.irk, BT_OCTET16_LEN); UINT8_TO_STREAM(p, p_dev_rec->ble.static_addr_type); - BDADDR_TO_STREAM(p,p_dev_rec->ble.static_addr); + BDADDR_TO_STREAM(p, p_dev_rec->ble.static_addr); if (BTM_VendorSpecificCommand (HCI_VENDOR_BLE_RPA_VSC, BTM_BLE_META_ADD_IRK_LEN, param, btm_ble_resolving_list_vsc_op_cmpl) - == BTM_CMD_STARTED) + == BTM_CMD_STARTED) { rt = TRUE; + } } - if (rt) - btm_ble_enq_resolving_list_pending(p_dev_rec->bd_addr, - BTM_BLE_META_ADD_IRK_ENTRY); + if (rt) + btm_ble_enq_resolving_list_pending(p_dev_rec->bd_addr, + BTM_BLE_META_ADD_IRK_ENTRY); /* if resolving list has been turned on, re-enable it */ - if (rl_mask) + if (rl_mask) { btm_ble_enable_resolving_list(rl_mask); - else + } else { btm_ble_enable_resolving_list(BTM_BLE_RL_INIT); + } } - } - else - { + } else { BTM_TRACE_ERROR("Device already in Resolving list\n"); rt = TRUE; } - } - else - { + } else { BTM_TRACE_DEBUG("Device not a RPA enabled device\n"); } return rt; @@ -864,27 +831,25 @@ void btm_ble_resolving_list_remove_dev(tBTM_SEC_DEV_REC *p_dev_rec) UINT8 rl_mask = btm_cb.ble_ctr_cb.rl_state; BTM_TRACE_EVENT ("%s\n", __func__); - if (rl_mask) - { - if (!btm_ble_disable_resolving_list (rl_mask, FALSE)) - return; + if (rl_mask) { + if (!btm_ble_disable_resolving_list (rl_mask, FALSE)) { + return; + } } if ((p_dev_rec->ble.in_controller_list & BTM_RESOLVING_LIST_BIT) && - btm_ble_brcm_find_resolving_pending_entry(p_dev_rec->bd_addr, - BTM_BLE_META_REMOVE_IRK_ENTRY) == FALSE) - { + btm_ble_brcm_find_resolving_pending_entry(p_dev_rec->bd_addr, + BTM_BLE_META_REMOVE_IRK_ENTRY) == FALSE) { btm_ble_update_resolving_list( p_dev_rec->bd_addr, FALSE); btm_ble_remove_resolving_list_entry(p_dev_rec); - } - else - { + } else { BTM_TRACE_DEBUG("Device not in resolving list\n"); } /* if resolving list has been turned on, re-enable it */ - if (rl_mask) + if (rl_mask) { btm_ble_enable_resolving_list(rl_mask); + } } /******************************************************************************* @@ -902,9 +867,8 @@ void btm_ble_enable_resolving_list(UINT8 rl_mask) btm_cb.ble_ctr_cb.rl_state |= rl_mask; if (rl_state == BTM_BLE_RL_IDLE && - btm_cb.ble_ctr_cb.rl_state != BTM_BLE_RL_IDLE && - controller_get_interface()->get_ble_resolving_list_max_size() != 0) - { + btm_cb.ble_ctr_cb.rl_state != BTM_BLE_RL_IDLE && + controller_get_interface()->get_ble_resolving_list_max_size() != 0) { btm_ble_exe_enable_resolving_list(); btm_ble_resume_resolving_list_activity(); } @@ -939,25 +903,24 @@ BOOLEAN btm_ble_resolving_list_empty(void) void btm_ble_enable_resolving_list_for_platform (UINT8 rl_mask) { /* if controller does not support, skip */ - if (controller_get_interface()->get_ble_resolving_list_max_size() == 0) + if (controller_get_interface()->get_ble_resolving_list_max_size() == 0) { return; + } - if (btm_cb.ble_ctr_cb.wl_state == BTM_BLE_WL_IDLE) - { + if (btm_cb.ble_ctr_cb.wl_state == BTM_BLE_WL_IDLE) { if (controller_get_interface()->get_ble_resolving_list_max_size() > - btm_cb.ble_ctr_cb.resolving_list_avail_size) + btm_cb.ble_ctr_cb.resolving_list_avail_size) { btm_ble_enable_resolving_list(rl_mask); - else + } else { btm_ble_disable_resolving_list(rl_mask, TRUE); + } return; } tBTM_SEC_DEV_REC *p_dev = &btm_cb.sec_dev_rec[0]; - for (UINT8 i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i ++, p_dev ++) - { + for (UINT8 i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i ++, p_dev ++) { if ((p_dev->ble.in_controller_list & BTM_RESOLVING_LIST_BIT) && - (p_dev->ble.in_controller_list & BTM_WHITE_LIST_BIT)) - { + (p_dev->ble.in_controller_list & BTM_WHITE_LIST_BIT)) { btm_ble_enable_resolving_list(rl_mask); return; } @@ -980,16 +943,16 @@ void btm_ble_resolving_list_init(UINT8 max_irk_list_sz) { tBTM_BLE_RESOLVE_Q *p_q = &btm_cb.ble_ctr_cb.resolving_list_pend_q; UINT8 irk_mask_size = (max_irk_list_sz % 8) ? - (max_irk_list_sz/8 + 1) : (max_irk_list_sz/8); + (max_irk_list_sz / 8 + 1) : (max_irk_list_sz / 8); - if (max_irk_list_sz > 0) - { + if (max_irk_list_sz > 0) { p_q->resolve_q_random_pseudo = (BD_ADDR *)GKI_getbuf(sizeof(BD_ADDR) * max_irk_list_sz); p_q->resolve_q_action = (UINT8 *)GKI_getbuf(max_irk_list_sz); /* RPA offloading feature */ - if (btm_cb.ble_ctr_cb.irk_list_mask == NULL) + if (btm_cb.ble_ctr_cb.irk_list_mask == NULL) { btm_cb.ble_ctr_cb.irk_list_mask = (UINT8 *)GKI_getbuf(irk_mask_size); + } BTM_TRACE_DEBUG ("%s max_irk_list_sz = %d", __func__, max_irk_list_sz); } @@ -1014,15 +977,18 @@ void btm_ble_resolving_list_cleanup(void) { tBTM_BLE_RESOLVE_Q *p_q = &btm_cb.ble_ctr_cb.resolving_list_pend_q; - if (p_q->resolve_q_random_pseudo) + if (p_q->resolve_q_random_pseudo) { GKI_freebuf(p_q->resolve_q_random_pseudo); + } - if (p_q->resolve_q_action) - GKI_freebuf(p_q->resolve_q_action); + if (p_q->resolve_q_action) { + GKI_freebuf(p_q->resolve_q_action); + } controller_get_interface()->set_ble_resolving_list_max_size(0); - if (btm_cb.ble_ctr_cb.irk_list_mask) - GKI_freebuf(btm_cb.ble_ctr_cb.irk_list_mask); + if (btm_cb.ble_ctr_cb.irk_list_mask) { + GKI_freebuf(btm_cb.ble_ctr_cb.irk_list_mask); + } btm_cb.ble_ctr_cb.irk_list_mask = NULL; } diff --git a/components/bt/bluedroid/stack/btm/btm_dev.c b/components/bt/bluedroid/stack/btm/btm_dev.c old mode 100755 new mode 100644 index 8ca65741ae..72a1739025 --- a/components/bt/bluedroid/stack/btm/btm_dev.c +++ b/components/bt/bluedroid/stack/btm/btm_dev.c @@ -67,16 +67,13 @@ BOOLEAN BTM_SecAddDevice (BD_ADDR bd_addr, DEV_CLASS dev_class, BD_NAME bd_name, int i, j; BOOLEAN found = FALSE; - BTM_TRACE_API("%s, link key type:%x\n", __FUNCTION__,key_type); + BTM_TRACE_API("%s, link key type:%x\n", __FUNCTION__, key_type); p_dev_rec = btm_find_dev (bd_addr); - if (!p_dev_rec) - { + if (!p_dev_rec) { /* There is no device record, allocate one. * If we can not find an empty spot for this one, let it fail. */ - for (i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i++) - { - if (!(btm_cb.sec_dev_rec[i].sec_flags & BTM_SEC_IN_USE)) - { + for (i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i++) { + if (!(btm_cb.sec_dev_rec[i].sec_flags & BTM_SEC_IN_USE)) { p_dev_rec = &btm_cb.sec_dev_rec[i]; /* Mark this record as in use and initialize */ @@ -94,64 +91,59 @@ BOOLEAN BTM_SecAddDevice (BD_ADDR bd_addr, DEV_CLASS dev_class, BD_NAME bd_name, } } - if (!p_dev_rec) - return(FALSE); + if (!p_dev_rec) { + return (FALSE); + } } p_dev_rec->bond_type = BOND_TYPE_UNKNOWN; /* Default value */ p_dev_rec->timestamp = btm_cb.dev_rec_count++; - if (dev_class) + if (dev_class) { memcpy (p_dev_rec->dev_class, dev_class, DEV_CLASS_LEN); + } memset(p_dev_rec->sec_bd_name, 0, sizeof(tBTM_BD_NAME)); - if (bd_name && bd_name[0]) - { + if (bd_name && bd_name[0]) { p_dev_rec->sec_flags |= BTM_SEC_NAME_KNOWN; BCM_STRNCPY_S ((char *)p_dev_rec->sec_bd_name, sizeof (p_dev_rec->sec_bd_name), - (char *)bd_name, BTM_MAX_REM_BD_NAME_LEN); + (char *)bd_name, BTM_MAX_REM_BD_NAME_LEN); } p_dev_rec->num_read_pages = 0; - if (features) - { + if (features) { memcpy (p_dev_rec->features, features, sizeof (p_dev_rec->features)); - for (i = HCI_EXT_FEATURES_PAGE_MAX; i >= 0; i--) - { - for (j = 0; j < HCI_FEATURE_BYTES_PER_PAGE; j++) - { - if (p_dev_rec->features[i][j] != 0) - { + for (i = HCI_EXT_FEATURES_PAGE_MAX; i >= 0; i--) { + for (j = 0; j < HCI_FEATURE_BYTES_PER_PAGE; j++) { + if (p_dev_rec->features[i][j] != 0) { found = TRUE; break; } } - if (found) - { + if (found) { p_dev_rec->num_read_pages = i + 1; break; } } - } - else + } else { memset (p_dev_rec->features, 0, sizeof (p_dev_rec->features)); + } BTM_SEC_COPY_TRUSTED_DEVICE(trusted_mask, p_dev_rec->trusted_mask); - if (link_key) - { + if (link_key) { BTM_TRACE_EVENT ("BTM_SecAddDevice() BDA: %02x:%02x:%02x:%02x:%02x:%02x\n", - bd_addr[0], bd_addr[1], bd_addr[2], - bd_addr[3], bd_addr[4], bd_addr[5]); + bd_addr[0], bd_addr[1], bd_addr[2], + bd_addr[3], bd_addr[4], bd_addr[5]); p_dev_rec->sec_flags |= BTM_SEC_LINK_KEY_KNOWN; memcpy (p_dev_rec->link_key, link_key, LINK_KEY_LEN); p_dev_rec->link_key_type = key_type; p_dev_rec->pin_code_length = pin_length; if (pin_length >= 16 || - key_type == BTM_LKEY_TYPE_AUTH_COMB || - key_type == BTM_LKEY_TYPE_AUTH_COMB_P_256) { + key_type == BTM_LKEY_TYPE_AUTH_COMB || + key_type == BTM_LKEY_TYPE_AUTH_COMB_P_256) { // Set the fiag if the link key was made by using either a 16 digit // pin or MITM. p_dev_rec->sec_flags |= BTM_SEC_16_DIGIT_PIN_AUTHED; @@ -159,16 +151,17 @@ BOOLEAN BTM_SecAddDevice (BD_ADDR bd_addr, DEV_CLASS dev_class, BD_NAME bd_name, } #if defined(BTIF_MIXED_MODE_INCLUDED) && (BTIF_MIXED_MODE_INCLUDED == TRUE) - if (key_type < BTM_MAX_PRE_SM4_LKEY_TYPE) + if (key_type < BTM_MAX_PRE_SM4_LKEY_TYPE) { p_dev_rec->sm4 = BTM_SM4_KNOWN; - else + } else { p_dev_rec->sm4 = BTM_SM4_TRUE; + } #endif p_dev_rec->rmt_io_caps = io_cap; p_dev_rec->device_type |= BT_DEVICE_TYPE_BREDR; - return(TRUE); + return (TRUE); } @@ -188,14 +181,12 @@ BOOLEAN BTM_SecDeleteDevice (BD_ADDR bd_addr) tBTM_SEC_DEV_REC *p_dev_rec; if (BTM_IsAclConnectionUp(bd_addr, BT_TRANSPORT_LE) || - BTM_IsAclConnectionUp(bd_addr, BT_TRANSPORT_BR_EDR)) - { + BTM_IsAclConnectionUp(bd_addr, BT_TRANSPORT_BR_EDR)) { BTM_TRACE_WARNING("%s FAILED: Cannot Delete when connection is active\n", __func__); return FALSE; } - if ((p_dev_rec = btm_find_dev(bd_addr)) != NULL) - { + if ((p_dev_rec = btm_find_dev(bd_addr)) != NULL) { btm_sec_free_dev(p_dev_rec); /* Tell controller to get rid of the link key, if it has one stored */ BTM_DeleteStoredLinkKey (p_dev_rec->bd_addr, NULL); @@ -219,10 +210,11 @@ char *BTM_SecReadDevName (BD_ADDR bd_addr) char *p_name = NULL; tBTM_SEC_DEV_REC *p_srec; - if ((p_srec = btm_find_dev(bd_addr)) != NULL) + if ((p_srec = btm_find_dev(bd_addr)) != NULL) { p_name = (char *)p_srec->sec_bd_name; + } - return(p_name); + return (p_name); } /******************************************************************************* @@ -245,22 +237,18 @@ tBTM_SEC_DEV_REC *btm_sec_alloc_dev (BD_ADDR bd_addr) int i_old_entry = BTM_SEC_MAX_DEVICE_RECORDS; BTM_TRACE_EVENT ("btm_sec_alloc_dev\n"); - for (i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i++) - { + for (i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i++) { /* look for old entry where device details are present */ if (!(btm_cb.sec_dev_rec[i].sec_flags & BTM_SEC_IN_USE) && - (!memcmp (btm_cb.sec_dev_rec[i].bd_addr, bd_addr, BD_ADDR_LEN))) - { + (!memcmp (btm_cb.sec_dev_rec[i].bd_addr, bd_addr, BD_ADDR_LEN))) { i_old_entry = i; BTM_TRACE_EVENT ("btm_sec_alloc_dev old device found\n"); break; } } - for (i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i++) - { - if (!(btm_cb.sec_dev_rec[i].sec_flags & BTM_SEC_IN_USE)) - { + for (i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i++) { + if (!(btm_cb.sec_dev_rec[i].sec_flags & BTM_SEC_IN_USE)) { i_new_entry = i; break; } @@ -268,14 +256,12 @@ tBTM_SEC_DEV_REC *btm_sec_alloc_dev (BD_ADDR bd_addr) if (i_new_entry == BTM_SEC_MAX_DEVICE_RECORDS) { p_dev_rec = btm_find_oldest_dev(); - } - else { + } else { /* if the old device entry not present go with new entry */ - if(i_old_entry == BTM_SEC_MAX_DEVICE_RECORDS) { + if (i_old_entry == BTM_SEC_MAX_DEVICE_RECORDS) { p_dev_rec = &btm_cb.sec_dev_rec[i_new_entry]; - } - else { + } else { p_dev_rec = &btm_cb.sec_dev_rec[i_old_entry]; memcpy (old_cod, p_dev_rec->dev_class, DEV_CLASS_LEN); } @@ -283,7 +269,7 @@ tBTM_SEC_DEV_REC *btm_sec_alloc_dev (BD_ADDR bd_addr) memset (p_dev_rec, 0, sizeof (tBTM_SEC_DEV_REC)); /* Retain the old COD for device */ - if(i_old_entry != BTM_SEC_MAX_DEVICE_RECORDS) { + if (i_old_entry != BTM_SEC_MAX_DEVICE_RECORDS) { BTM_TRACE_EVENT ("btm_sec_alloc_dev restoring cod \n"); memcpy (p_dev_rec->dev_class, old_cod, DEV_CLASS_LEN); @@ -294,8 +280,7 @@ tBTM_SEC_DEV_REC *btm_sec_alloc_dev (BD_ADDR bd_addr) /* Check with the BT manager if details about remote device are known */ /* outgoing connection */ - if ((p_inq_info = BTM_InqDbRead(bd_addr)) != NULL) - { + if ((p_inq_info = BTM_InqDbRead(bd_addr)) != NULL) { memcpy (p_dev_rec->dev_class, p_inq_info->results.dev_class, DEV_CLASS_LEN); #if BLE_INCLUDED == TRUE @@ -305,16 +290,15 @@ tBTM_SEC_DEV_REC *btm_sec_alloc_dev (BD_ADDR bd_addr) /* update conn params, use default value for background connection params */ memset(&p_dev_rec->conn_params, 0xff, sizeof(tBTM_LE_CONN_PRAMS)); #endif - } - else - { + } else { #if BLE_INCLUDED == TRUE /* update conn params, use default value for background connection params */ memset(&p_dev_rec->conn_params, 0xff, sizeof(tBTM_LE_CONN_PRAMS)); #endif - if (!memcmp (bd_addr, btm_cb.connecting_bda, BD_ADDR_LEN)) + if (!memcmp (bd_addr, btm_cb.connecting_bda, BD_ADDR_LEN)) { memcpy (p_dev_rec->dev_class, btm_cb.connecting_dc, DEV_CLASS_LEN); + } } memcpy (p_dev_rec->bd_addr, bd_addr, BD_ADDR_LEN); @@ -325,7 +309,7 @@ tBTM_SEC_DEV_REC *btm_sec_alloc_dev (BD_ADDR bd_addr) p_dev_rec->hci_handle = BTM_GetHCIConnHandle (bd_addr, BT_TRANSPORT_BR_EDR); p_dev_rec->timestamp = btm_cb.dev_rec_count++; - return(p_dev_rec); + return (p_dev_rec); } @@ -369,38 +353,34 @@ BOOLEAN btm_dev_support_switch (BD_ADDR bd_addr) #if BTM_SCO_INCLUDED == TRUE /* Role switch is not allowed if a SCO is up */ - if (btm_is_sco_active_by_bdaddr(bd_addr)) - return(FALSE); + if (btm_is_sco_active_by_bdaddr(bd_addr)) { + return (FALSE); + } #endif p_dev_rec = btm_find_dev (bd_addr); - if (p_dev_rec && controller_get_interface()->supports_master_slave_role_switch()) - { - if (HCI_SWITCH_SUPPORTED(p_dev_rec->features[HCI_EXT_FEATURES_PAGE_0])) - { + if (p_dev_rec && controller_get_interface()->supports_master_slave_role_switch()) { + if (HCI_SWITCH_SUPPORTED(p_dev_rec->features[HCI_EXT_FEATURES_PAGE_0])) { BTM_TRACE_DEBUG("btm_dev_support_switch return TRUE (feature found)\n"); return (TRUE); } /* If the feature field is all zero, we never received them */ - for (xx = 0 ; xx < BD_FEATURES_LEN ; xx++) - { - if (p_dev_rec->features[HCI_EXT_FEATURES_PAGE_0][xx] != 0x00) - { + for (xx = 0 ; xx < BD_FEATURES_LEN ; xx++) { + if (p_dev_rec->features[HCI_EXT_FEATURES_PAGE_0][xx] != 0x00) { feature_empty = FALSE; /* at least one is != 0 */ break; } } /* If we don't know peer's capabilities, assume it supports Role-switch */ - if (feature_empty) - { + if (feature_empty) { BTM_TRACE_DEBUG("btm_dev_support_switch return TRUE (feature empty)\n"); return (TRUE); } } BTM_TRACE_DEBUG("btm_dev_support_switch return FALSE\n"); - return(FALSE); + return (FALSE); } /******************************************************************************* @@ -418,17 +398,17 @@ tBTM_SEC_DEV_REC *btm_find_dev_by_handle (UINT16 handle) tBTM_SEC_DEV_REC *p_dev_rec = &btm_cb.sec_dev_rec[0]; int i; - for (i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i++, p_dev_rec++) - { + for (i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i++, p_dev_rec++) { if ((p_dev_rec->sec_flags & BTM_SEC_IN_USE) - && ((p_dev_rec->hci_handle == handle) + && ((p_dev_rec->hci_handle == handle) #if BLE_INCLUDED == TRUE - ||(p_dev_rec->ble_hci_handle == handle) + || (p_dev_rec->ble_hci_handle == handle) #endif - )) - return(p_dev_rec); + )) { + return (p_dev_rec); + } } - return(NULL); + return (NULL); } /******************************************************************************* @@ -445,27 +425,27 @@ tBTM_SEC_DEV_REC *btm_find_dev(BD_ADDR bd_addr) { tBTM_SEC_DEV_REC *p_dev_rec = &btm_cb.sec_dev_rec[0]; - if (bd_addr) - { - for (uint8_t i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i++, p_dev_rec++) - { - if (p_dev_rec->sec_flags & BTM_SEC_IN_USE) - { - if (!memcmp (p_dev_rec->bd_addr, bd_addr, BD_ADDR_LEN)) - return(p_dev_rec); + if (bd_addr) { + for (uint8_t i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i++, p_dev_rec++) { + if (p_dev_rec->sec_flags & BTM_SEC_IN_USE) { + if (!memcmp (p_dev_rec->bd_addr, bd_addr, BD_ADDR_LEN)) { + return (p_dev_rec); + } #if BLE_INCLUDED == TRUE // If a LE random address is looking for device record - if (!memcmp(p_dev_rec->ble.pseudo_addr, bd_addr, BD_ADDR_LEN)) + if (!memcmp(p_dev_rec->ble.pseudo_addr, bd_addr, BD_ADDR_LEN)) { return (p_dev_rec); + } - if (btm_ble_addr_resolvable(bd_addr, p_dev_rec)) - return(p_dev_rec); + if (btm_ble_addr_resolvable(bd_addr, p_dev_rec)) { + return (p_dev_rec); + } #endif } } } - return(NULL); + return (NULL); } /******************************************************************************* @@ -486,12 +466,9 @@ void btm_consolidate_dev(tBTM_SEC_DEV_REC *p_target_rec) BTM_TRACE_DEBUG("%s\n", __func__); - for (uint8_t i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i++, p_dev_rec++) - { - if (p_target_rec!= p_dev_rec && p_dev_rec->sec_flags & BTM_SEC_IN_USE) - { - if (!memcmp (p_dev_rec->bd_addr, p_target_rec->bd_addr, BD_ADDR_LEN)) - { + for (uint8_t i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i++, p_dev_rec++) { + if (p_target_rec != p_dev_rec && p_dev_rec->sec_flags & BTM_SEC_IN_USE) { + if (!memcmp (p_dev_rec->bd_addr, p_target_rec->bd_addr, BD_ADDR_LEN)) { memcpy(p_target_rec, p_dev_rec, sizeof(tBTM_SEC_DEV_REC)); p_target_rec->ble = temp_rec.ble; p_target_rec->ble_hci_handle = temp_rec.ble_hci_handle; @@ -510,10 +487,8 @@ void btm_consolidate_dev(tBTM_SEC_DEV_REC *p_target_rec) } /* an RPA device entry is a duplicate of the target record */ - if (btm_ble_addr_resolvable(p_dev_rec->bd_addr, p_target_rec)) - { - if (memcmp(p_target_rec->ble.pseudo_addr, p_dev_rec->bd_addr, BD_ADDR_LEN) == 0) - { + if (btm_ble_addr_resolvable(p_dev_rec->bd_addr, p_target_rec)) { + if (memcmp(p_target_rec->ble.pseudo_addr, p_dev_rec->bd_addr, BD_ADDR_LEN) == 0) { p_target_rec->ble.ble_addr_type = p_dev_rec->ble.ble_addr_type; p_target_rec->device_type |= p_dev_rec->device_type; p_dev_rec->sec_flags &= ~BTM_SEC_IN_USE; @@ -540,13 +515,12 @@ tBTM_SEC_DEV_REC *btm_find_or_alloc_dev (BD_ADDR bd_addr) { tBTM_SEC_DEV_REC *p_dev_rec; BTM_TRACE_EVENT ("btm_find_or_alloc_dev\n"); - if ((p_dev_rec = btm_find_dev (bd_addr)) == NULL) - { + if ((p_dev_rec = btm_find_dev (bd_addr)) == NULL) { /* Allocate a new device record or reuse the oldest one */ p_dev_rec = btm_sec_alloc_dev (bd_addr); } - return(p_dev_rec); + return (p_dev_rec); } /******************************************************************************* @@ -568,36 +542,35 @@ tBTM_SEC_DEV_REC *btm_find_oldest_dev (void) int i; /* First look for the non-paired devices for the oldest entry */ - for (i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i++, p_dev_rec++) - { + for (i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i++, p_dev_rec++) { if (((p_dev_rec->sec_flags & BTM_SEC_IN_USE) == 0) - || ((p_dev_rec->sec_flags & (BTM_SEC_LINK_KEY_KNOWN |BTM_SEC_LE_LINK_KEY_KNOWN)) != 0)) - continue; /* Device is paired so skip it */ + || ((p_dev_rec->sec_flags & (BTM_SEC_LINK_KEY_KNOWN | BTM_SEC_LE_LINK_KEY_KNOWN)) != 0)) { + continue; /* Device is paired so skip it */ + } - if (p_dev_rec->timestamp < ot) - { + if (p_dev_rec->timestamp < ot) { p_oldest = p_dev_rec; ot = p_dev_rec->timestamp; } } - if (ot != 0xFFFFFFFF) - return(p_oldest); + if (ot != 0xFFFFFFFF) { + return (p_oldest); + } /* All devices are paired; find the oldest */ p_dev_rec = &btm_cb.sec_dev_rec[0]; - for (i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i++, p_dev_rec++) - { - if ((p_dev_rec->sec_flags & BTM_SEC_IN_USE) == 0) + for (i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i++, p_dev_rec++) { + if ((p_dev_rec->sec_flags & BTM_SEC_IN_USE) == 0) { continue; + } - if (p_dev_rec->timestamp < ot) - { + if (p_dev_rec->timestamp < ot) { p_oldest = p_dev_rec; ot = p_dev_rec->timestamp; } } - return(p_oldest); + return (p_oldest); } /******************************************************************************* @@ -614,8 +587,9 @@ tBTM_BOND_TYPE btm_get_bond_type_dev(BD_ADDR bd_addr) { tBTM_SEC_DEV_REC *p_dev_rec = btm_find_dev(bd_addr); - if (p_dev_rec == NULL) + if (p_dev_rec == NULL) { return BOND_TYPE_UNKNOWN; + } return p_dev_rec->bond_type; } @@ -634,8 +608,9 @@ BOOLEAN btm_set_bond_type_dev(BD_ADDR bd_addr, tBTM_BOND_TYPE bond_type) { tBTM_SEC_DEV_REC *p_dev_rec = btm_find_dev(bd_addr); - if (p_dev_rec == NULL) + if (p_dev_rec == NULL) { return FALSE; + } p_dev_rec->bond_type = bond_type; return TRUE; diff --git a/components/bt/bluedroid/stack/btm/btm_devctl.c b/components/bt/bluedroid/stack/btm/btm_devctl.c old mode 100755 new mode 100644 index 9773ffd6ec..91851decc2 --- a/components/bt/bluedroid/stack/btm/btm_devctl.c +++ b/components/bt/bluedroid/stack/btm/btm_devctl.c @@ -54,7 +54,7 @@ #endif #define BTM_DEV_REPLY_TIMEOUT 2 /* 1 second expiration time is not good. Timer may start between 0 and 1 second. */ - /* if it starts at the very end of the 0 second, timer will expire really easily. */ +/* if it starts at the very end of the 0 second, timer will expire really easily. */ #define BTM_INFO_TIMEOUT 5 /* 5 seconds for info response */ @@ -118,96 +118,98 @@ static void btm_db_reset (void) btm_inq_db_reset(); - if (btm_cb.devcb.p_rln_cmpl_cb) - { + if (btm_cb.devcb.p_rln_cmpl_cb) { p_cb = btm_cb.devcb.p_rln_cmpl_cb; btm_cb.devcb.p_rln_cmpl_cb = NULL; - if (p_cb) + if (p_cb) { (*p_cb)((void *) NULL); + } } - if (btm_cb.devcb.p_rssi_cmpl_cb) - { + if (btm_cb.devcb.p_rssi_cmpl_cb) { p_cb = btm_cb.devcb.p_rssi_cmpl_cb; btm_cb.devcb.p_rssi_cmpl_cb = NULL; - if (p_cb) + if (p_cb) { (*p_cb)((tBTM_RSSI_RESULTS *) &status); + } } } -static void reset_complete(void) { - const controller_t *controller = controller_get_interface(); +static void reset_complete(void) +{ + const controller_t *controller = controller_get_interface(); - /* Tell L2CAP that all connections are gone */ - l2cu_device_reset (); + /* Tell L2CAP that all connections are gone */ + l2cu_device_reset (); - /* Clear current security state */ - for (int devinx = 0; devinx < BTM_SEC_MAX_DEVICE_RECORDS; devinx++) { - btm_cb.sec_dev_rec[devinx].sec_state = BTM_SEC_STATE_IDLE; - } + /* Clear current security state */ + for (int devinx = 0; devinx < BTM_SEC_MAX_DEVICE_RECORDS; devinx++) { + btm_cb.sec_dev_rec[devinx].sec_state = BTM_SEC_STATE_IDLE; + } - /* After the reset controller should restore all parameters to defaults. */ - btm_cb.btm_inq_vars.inq_counter = 1; - btm_cb.btm_inq_vars.inq_scan_window = HCI_DEF_INQUIRYSCAN_WINDOW; - btm_cb.btm_inq_vars.inq_scan_period = HCI_DEF_INQUIRYSCAN_INTERVAL; - btm_cb.btm_inq_vars.inq_scan_type = HCI_DEF_SCAN_TYPE; + /* After the reset controller should restore all parameters to defaults. */ + btm_cb.btm_inq_vars.inq_counter = 1; + btm_cb.btm_inq_vars.inq_scan_window = HCI_DEF_INQUIRYSCAN_WINDOW; + btm_cb.btm_inq_vars.inq_scan_period = HCI_DEF_INQUIRYSCAN_INTERVAL; + btm_cb.btm_inq_vars.inq_scan_type = HCI_DEF_SCAN_TYPE; - btm_cb.btm_inq_vars.page_scan_window = HCI_DEF_PAGESCAN_WINDOW; - btm_cb.btm_inq_vars.page_scan_period = HCI_DEF_PAGESCAN_INTERVAL; - btm_cb.btm_inq_vars.page_scan_type = HCI_DEF_SCAN_TYPE; + btm_cb.btm_inq_vars.page_scan_window = HCI_DEF_PAGESCAN_WINDOW; + btm_cb.btm_inq_vars.page_scan_period = HCI_DEF_PAGESCAN_INTERVAL; + btm_cb.btm_inq_vars.page_scan_type = HCI_DEF_SCAN_TYPE; #if (BLE_INCLUDED == TRUE) - btm_cb.ble_ctr_cb.conn_state = BLE_CONN_IDLE; - btm_cb.ble_ctr_cb.bg_conn_type = BTM_BLE_CONN_NONE; - btm_cb.ble_ctr_cb.p_select_cback = NULL; - gatt_reset_bgdev_list(); - btm_ble_multi_adv_init(); + btm_cb.ble_ctr_cb.conn_state = BLE_CONN_IDLE; + btm_cb.ble_ctr_cb.bg_conn_type = BTM_BLE_CONN_NONE; + btm_cb.ble_ctr_cb.p_select_cback = NULL; + gatt_reset_bgdev_list(); + btm_ble_multi_adv_init(); #endif - btm_pm_reset(); + btm_pm_reset(); - l2c_link_processs_num_bufs(controller->get_acl_buffer_count_classic()); + l2c_link_processs_num_bufs(controller->get_acl_buffer_count_classic()); #if (BLE_INCLUDED == TRUE) #if (defined BLE_PRIVACY_SPT && BLE_PRIVACY_SPT == TRUE) - /* Set up the BLE privacy settings */ - if (controller->supports_ble() && controller->supports_ble_privacy() && - controller->get_ble_resolving_list_max_size() > 0) { - btm_ble_resolving_list_init(controller->get_ble_resolving_list_max_size()); - /* set the default random private address timeout */ - btsnd_hcic_ble_set_rand_priv_addr_timeout(BTM_BLE_PRIVATE_ADDR_INT); - } + /* Set up the BLE privacy settings */ + if (controller->supports_ble() && controller->supports_ble_privacy() && + controller->get_ble_resolving_list_max_size() > 0) { + btm_ble_resolving_list_init(controller->get_ble_resolving_list_max_size()); + /* set the default random private address timeout */ + btsnd_hcic_ble_set_rand_priv_addr_timeout(BTM_BLE_PRIVATE_ADDR_INT); + } #endif - if (controller->supports_ble()) { - btm_ble_white_list_init(controller->get_ble_white_list_size()); - l2c_link_processs_ble_num_bufs(controller->get_acl_buffer_count_ble()); - } + if (controller->supports_ble()) { + btm_ble_white_list_init(controller->get_ble_white_list_size()); + l2c_link_processs_ble_num_bufs(controller->get_acl_buffer_count_ble()); + } #endif - BTM_SetPinType (btm_cb.cfg.pin_type, btm_cb.cfg.pin_code, btm_cb.cfg.pin_code_len); + BTM_SetPinType (btm_cb.cfg.pin_type, btm_cb.cfg.pin_code, btm_cb.cfg.pin_code_len); - for (int i = 0; i <= controller->get_last_features_classic_index(); i++) { - btm_decode_ext_features_page(i, controller->get_features_classic(i)->as_array); - } + for (int i = 0; i <= controller->get_last_features_classic_index(); i++) { + btm_decode_ext_features_page(i, controller->get_features_classic(i)->as_array); + } - btm_report_device_status(BTM_DEV_STATUS_UP); + btm_report_device_status(BTM_DEV_STATUS_UP); } // TODO(zachoverflow): remove this function -void BTM_DeviceReset (UNUSED_ATTR tBTM_CMPL_CB *p_cb) { - /* Flush all ACL connections */ - btm_acl_device_down(); +void BTM_DeviceReset (UNUSED_ATTR tBTM_CMPL_CB *p_cb) +{ + /* Flush all ACL connections */ + btm_acl_device_down(); - /* Clear the callback, so application would not hang on reset */ - btm_db_reset(); + /* Clear the callback, so application would not hang on reset */ + btm_db_reset(); - /* todo: review the below logic; start_up executes under another task context - * reset_complete runs in btu task */ - controller_get_interface()->start_up(); - reset_complete(); + /* todo: review the below logic; start_up executes under another task context + * reset_complete runs in btu task */ + controller_get_interface()->start_up(); + reset_complete(); } /******************************************************************************* @@ -237,14 +239,14 @@ void btm_dev_timeout (TIMER_LIST_ENT *p_tle) { TIMER_PARAM_TYPE timer_type = (TIMER_PARAM_TYPE)p_tle->param; - if (timer_type == (TIMER_PARAM_TYPE)TT_DEV_RLN) - { + if (timer_type == (TIMER_PARAM_TYPE)TT_DEV_RLN) { tBTM_CMPL_CB *p_cb = btm_cb.devcb.p_rln_cmpl_cb; btm_cb.devcb.p_rln_cmpl_cb = NULL; - if (p_cb) + if (p_cb) { (*p_cb)((void *) NULL); + } } } @@ -263,8 +265,7 @@ static void btm_decode_ext_features_page (UINT8 page_number, const UINT8 *p_feat UINT8 first; BTM_TRACE_DEBUG ("btm_decode_ext_features_page page: %d", page_number); - switch (page_number) - { + switch (page_number) { /* Extended (Legacy) Page 0 */ case HCI_EXT_FEATURES_PAGE_0: @@ -281,15 +282,13 @@ static void btm_decode_ext_features_page (UINT8 page_number, const UINT8 *p_feat BTM_ACL_PKT_TYPES_MASK_DM5); /* Add in EDR related ACL types */ - if (!HCI_EDR_ACL_2MPS_SUPPORTED(p_features)) - { + if (!HCI_EDR_ACL_2MPS_SUPPORTED(p_features)) { btm_cb.btm_acl_pkt_types_supported |= (BTM_ACL_PKT_TYPES_MASK_NO_2_DH1 + BTM_ACL_PKT_TYPES_MASK_NO_2_DH3 + BTM_ACL_PKT_TYPES_MASK_NO_2_DH5); } - if (!HCI_EDR_ACL_3MPS_SUPPORTED(p_features)) - { + if (!HCI_EDR_ACL_3MPS_SUPPORTED(p_features)) { btm_cb.btm_acl_pkt_types_supported |= (BTM_ACL_PKT_TYPES_MASK_NO_3_DH1 + BTM_ACL_PKT_TYPES_MASK_NO_3_DH3 + BTM_ACL_PKT_TYPES_MASK_NO_3_DH5); @@ -297,8 +296,7 @@ static void btm_decode_ext_features_page (UINT8 page_number, const UINT8 *p_feat /* Check to see if 3 and 5 slot packets are available */ if (HCI_EDR_ACL_2MPS_SUPPORTED(p_features) || - HCI_EDR_ACL_3MPS_SUPPORTED(p_features)) - { + HCI_EDR_ACL_3MPS_SUPPORTED(p_features)) { if (!HCI_3_SLOT_EDR_ACL_SUPPORTED(p_features)) btm_cb.btm_acl_pkt_types_supported |= (BTM_ACL_PKT_TYPES_MASK_NO_2_DH3 + BTM_ACL_PKT_TYPES_MASK_NO_3_DH3); @@ -309,56 +307,55 @@ static void btm_decode_ext_features_page (UINT8 page_number, const UINT8 *p_feat } BTM_TRACE_DEBUG("Local supported ACL packet types: 0x%04x", - btm_cb.btm_acl_pkt_types_supported); + btm_cb.btm_acl_pkt_types_supported); /* Create (e)SCO supported packet types mask */ btm_cb.btm_sco_pkt_types_supported = 0; #if BTM_SCO_INCLUDED == TRUE btm_cb.sco_cb.esco_supported = FALSE; #endif - if (HCI_SCO_LINK_SUPPORTED(p_features)) - { + if (HCI_SCO_LINK_SUPPORTED(p_features)) { btm_cb.btm_sco_pkt_types_supported = BTM_SCO_PKT_TYPES_MASK_HV1; - if (HCI_HV2_PACKETS_SUPPORTED(p_features)) + if (HCI_HV2_PACKETS_SUPPORTED(p_features)) { btm_cb.btm_sco_pkt_types_supported |= BTM_SCO_PKT_TYPES_MASK_HV2; + } - if (HCI_HV3_PACKETS_SUPPORTED(p_features)) + if (HCI_HV3_PACKETS_SUPPORTED(p_features)) { btm_cb.btm_sco_pkt_types_supported |= BTM_SCO_PKT_TYPES_MASK_HV3; + } } - if (HCI_ESCO_EV3_SUPPORTED(p_features)) + if (HCI_ESCO_EV3_SUPPORTED(p_features)) { btm_cb.btm_sco_pkt_types_supported |= BTM_SCO_PKT_TYPES_MASK_EV3; + } - if (HCI_ESCO_EV4_SUPPORTED(p_features)) + if (HCI_ESCO_EV4_SUPPORTED(p_features)) { btm_cb.btm_sco_pkt_types_supported |= BTM_SCO_PKT_TYPES_MASK_EV4; + } - if (HCI_ESCO_EV5_SUPPORTED(p_features)) + if (HCI_ESCO_EV5_SUPPORTED(p_features)) { btm_cb.btm_sco_pkt_types_supported |= BTM_SCO_PKT_TYPES_MASK_EV5; + } #if BTM_SCO_INCLUDED == TRUE - if (btm_cb.btm_sco_pkt_types_supported & BTM_ESCO_LINK_ONLY_MASK) - { + if (btm_cb.btm_sco_pkt_types_supported & BTM_ESCO_LINK_ONLY_MASK) { btm_cb.sco_cb.esco_supported = TRUE; /* Add in EDR related eSCO types */ - if (HCI_EDR_ESCO_2MPS_SUPPORTED(p_features)) - { - if (!HCI_3_SLOT_EDR_ESCO_SUPPORTED(p_features)) + if (HCI_EDR_ESCO_2MPS_SUPPORTED(p_features)) { + if (!HCI_3_SLOT_EDR_ESCO_SUPPORTED(p_features)) { btm_cb.btm_sco_pkt_types_supported |= BTM_SCO_PKT_TYPES_MASK_NO_2_EV5; - } - else - { + } + } else { btm_cb.btm_sco_pkt_types_supported |= (BTM_SCO_PKT_TYPES_MASK_NO_2_EV3 + BTM_SCO_PKT_TYPES_MASK_NO_2_EV5); } - if (HCI_EDR_ESCO_3MPS_SUPPORTED(p_features)) - { - if (!HCI_3_SLOT_EDR_ESCO_SUPPORTED(p_features)) + if (HCI_EDR_ESCO_3MPS_SUPPORTED(p_features)) { + if (!HCI_3_SLOT_EDR_ESCO_SUPPORTED(p_features)) { btm_cb.btm_sco_pkt_types_supported |= BTM_SCO_PKT_TYPES_MASK_NO_3_EV5; - } - else - { + } + } else { btm_cb.btm_sco_pkt_types_supported |= (BTM_SCO_PKT_TYPES_MASK_NO_3_EV3 + BTM_SCO_PKT_TYPES_MASK_NO_3_EV5); } @@ -366,44 +363,49 @@ static void btm_decode_ext_features_page (UINT8 page_number, const UINT8 *p_feat #endif BTM_TRACE_DEBUG("Local supported SCO packet types: 0x%04x", - btm_cb.btm_sco_pkt_types_supported); + btm_cb.btm_sco_pkt_types_supported); /* Create Default Policy Settings */ - if (HCI_SWITCH_SUPPORTED(p_features)) + if (HCI_SWITCH_SUPPORTED(p_features)) { btm_cb.btm_def_link_policy |= HCI_ENABLE_MASTER_SLAVE_SWITCH; - else + } else { btm_cb.btm_def_link_policy &= ~HCI_ENABLE_MASTER_SLAVE_SWITCH; + } - if (HCI_HOLD_MODE_SUPPORTED(p_features)) + if (HCI_HOLD_MODE_SUPPORTED(p_features)) { btm_cb.btm_def_link_policy |= HCI_ENABLE_HOLD_MODE; - else + } else { btm_cb.btm_def_link_policy &= ~HCI_ENABLE_HOLD_MODE; + } - if (HCI_SNIFF_MODE_SUPPORTED(p_features)) + if (HCI_SNIFF_MODE_SUPPORTED(p_features)) { btm_cb.btm_def_link_policy |= HCI_ENABLE_SNIFF_MODE; - else + } else { btm_cb.btm_def_link_policy &= ~HCI_ENABLE_SNIFF_MODE; + } - if (HCI_PARK_MODE_SUPPORTED(p_features)) + if (HCI_PARK_MODE_SUPPORTED(p_features)) { btm_cb.btm_def_link_policy |= HCI_ENABLE_PARK_MODE; - else + } else { btm_cb.btm_def_link_policy &= ~HCI_ENABLE_PARK_MODE; + } btm_sec_dev_reset (); - if (HCI_LMP_INQ_RSSI_SUPPORTED(p_features)) - { - if (HCI_EXT_INQ_RSP_SUPPORTED(p_features)) + if (HCI_LMP_INQ_RSSI_SUPPORTED(p_features)) { + if (HCI_EXT_INQ_RSP_SUPPORTED(p_features)) { BTM_SetInquiryMode (BTM_INQ_RESULT_EXTENDED); - else + } else { BTM_SetInquiryMode (BTM_INQ_RESULT_WITH_RSSI); + } } #if L2CAP_NON_FLUSHABLE_PB_INCLUDED == TRUE - if( HCI_NON_FLUSHABLE_PB_SUPPORTED(p_features)) + if ( HCI_NON_FLUSHABLE_PB_SUPPORTED(p_features)) { l2cu_set_non_flushable_pbf(TRUE); - else + } else { l2cu_set_non_flushable_pbf(FALSE); + } #endif BTM_SetPageScanType (BTM_DEFAULT_SCAN_TYPE); BTM_SetInquiryScanType (BTM_DEFAULT_SCAN_TYPE); @@ -439,17 +441,18 @@ tBTM_STATUS BTM_SetLocalDeviceName (char *p_name) { UINT8 *p; - if (!p_name || !p_name[0] || (strlen ((char *)p_name) > BD_NAME_LEN)) + if (!p_name || !p_name[0] || (strlen ((char *)p_name) > BD_NAME_LEN)) { return (BTM_ILLEGAL_VALUE); + } - if (!controller_get_interface()->get_is_ready()) + if (!controller_get_interface()->get_is_ready()) { return (BTM_DEV_RESET); + } #if BTM_MAX_LOC_BD_NAME_LEN > 0 /* Save the device name if local storage is enabled */ p = (UINT8 *)btm_cb.cfg.bd_name; - if (p != (UINT8 *)p_name) - { + if (p != (UINT8 *)p_name) { BCM_STRNCPY_S(btm_cb.cfg.bd_name, sizeof(btm_cb.cfg.bd_name), p_name, BTM_MAX_LOC_BD_NAME_LEN); btm_cb.cfg.bd_name[BTM_MAX_LOC_BD_NAME_LEN] = '\0'; } @@ -457,10 +460,11 @@ tBTM_STATUS BTM_SetLocalDeviceName (char *p_name) p = (UINT8 *)p_name; #endif - if (btsnd_hcic_change_name(p)) + if (btsnd_hcic_change_name(p)) { return (BTM_CMD_STARTED); - else + } else { return (BTM_NO_RESOURCES); + } } @@ -482,10 +486,10 @@ tBTM_STATUS BTM_ReadLocalDeviceName (char **p_name) { #if BTM_MAX_LOC_BD_NAME_LEN > 0 *p_name = btm_cb.cfg.bd_name; - return(BTM_SUCCESS); + return (BTM_SUCCESS); #else *p_name = NULL; - return(BTM_NO_RESOURCES); + return (BTM_NO_RESOURCES); #endif } @@ -503,8 +507,9 @@ tBTM_STATUS BTM_ReadLocalDeviceName (char **p_name) tBTM_STATUS BTM_ReadLocalDeviceNameFromController (tBTM_CMPL_CB *p_rln_cmpl_cback) { /* Check if rln already in progress */ - if (btm_cb.devcb.p_rln_cmpl_cb) - return(BTM_NO_RESOURCES); + if (btm_cb.devcb.p_rln_cmpl_cb) { + return (BTM_NO_RESOURCES); + } /* Save callback */ btm_cb.devcb.p_rln_cmpl_cb = p_rln_cmpl_cback; @@ -536,14 +541,14 @@ void btm_read_local_name_complete (UINT8 *p, UINT16 evt_len) /* If there was a callback address for read local name, call it */ btm_cb.devcb.p_rln_cmpl_cb = NULL; - if (p_cb) - { + if (p_cb) { STREAM_TO_UINT8 (status, p); - if (status == HCI_SUCCESS) + if (status == HCI_SUCCESS) { (*p_cb)(p); - else + } else { (*p_cb)(NULL); + } } } @@ -558,16 +563,19 @@ void btm_read_local_name_complete (UINT8 *p, UINT16 evt_len) *******************************************************************************/ tBTM_STATUS BTM_SetDeviceClass (DEV_CLASS dev_class) { - if(!memcmp (btm_cb.devcb.dev_class, dev_class, DEV_CLASS_LEN)) - return(BTM_SUCCESS); + if (!memcmp (btm_cb.devcb.dev_class, dev_class, DEV_CLASS_LEN)) { + return (BTM_SUCCESS); + } memcpy (btm_cb.devcb.dev_class, dev_class, DEV_CLASS_LEN); - if (!controller_get_interface()->get_is_ready()) + if (!controller_get_interface()->get_is_ready()) { return (BTM_DEV_RESET); + } - if (!btsnd_hcic_write_dev_class (dev_class)) + if (!btsnd_hcic_write_dev_class (dev_class)) { return (BTM_NO_RESOURCES); + } return (BTM_SUCCESS); } @@ -647,23 +655,23 @@ tBTM_STATUS BTM_VendorSpecificCommand(UINT16 opcode, UINT8 param_len, void *p_buf; BTM_TRACE_EVENT ("BTM: BTM_VendorSpecificCommand: Opcode: 0x%04X, ParamLen: %i.", - opcode, param_len); + opcode, param_len); /* Allocate a buffer to hold HCI command plus the callback function */ if ((p_buf = GKI_getbuf((UINT16)(sizeof(BT_HDR) + sizeof (tBTM_CMPL_CB *) + - param_len + HCIC_PREAMBLE_SIZE))) != NULL) - { + param_len + HCIC_PREAMBLE_SIZE))) != NULL) { /* Send the HCI command (opcode will be OR'd with HCI_GRP_VENDOR_SPECIFIC) */ btsnd_hcic_vendor_spec_cmd (p_buf, opcode, param_len, p_param_buf, (void *)p_cb); /* Return value */ - if (p_cb != NULL) + if (p_cb != NULL) { return (BTM_CMD_STARTED); - else + } else { return (BTM_SUCCESS); - } - else + } + } else { return (BTM_NO_RESOURCES); + } } @@ -684,8 +692,7 @@ void btm_vsc_complete (UINT8 *p, UINT16 opcode, UINT16 evt_len, tBTM_VSC_CMPL vcs_cplt_params; /* If there was a callback address for vcs complete, call it */ - if (p_vsc_cplt_cback) - { + if (p_vsc_cplt_cback) { /* Pass paramters to the callback function */ vcs_cplt_params.opcode = opcode; /* Number of bytes in return info */ vcs_cplt_params.param_len = evt_len; /* Number of bytes in return info */ @@ -715,18 +722,13 @@ tBTM_STATUS BTM_RegisterForVSEvents (tBTM_VS_EVT_CB *p_cb, BOOLEAN is_register) UINT8 i, free_idx = BTM_MAX_VSE_CALLBACKS; /* See if callback is already registered */ - for (i=0; itransmit_command( - hci_packet_factory_get_interface()->make_set_event_mask((const bt_event_mask_t *)("\x00\x00\x00\x00\x00\x00\x00\x00")), - NULL, - NULL, - NULL); + hci_packet_factory_get_interface()->make_set_event_mask((const bt_event_mask_t *)("\x00\x00\x00\x00\x00\x00\x00\x00")), + NULL, + NULL, + NULL); /* Send the HCI command */ - if (btsnd_hcic_enable_test_mode ()) + if (btsnd_hcic_enable_test_mode ()) { return (BTM_SUCCESS); - else + } else { return (BTM_NO_RESOURCES); + } } /******************************************************************************* @@ -905,11 +903,11 @@ tBTM_STATUS BTM_DeleteStoredLinkKey(BD_ADDR bd_addr, tBTM_CMPL_CB *p_cb) BOOLEAN delete_all_flag = FALSE; /* Check if the previous command is completed */ - if (btm_cb.devcb.p_stored_link_key_cmpl_cb) + if (btm_cb.devcb.p_stored_link_key_cmpl_cb) { return (BTM_BUSY); + } - if (!bd_addr) - { + if (!bd_addr) { /* This is to delete all link keys */ delete_all_flag = TRUE; @@ -918,16 +916,15 @@ tBTM_STATUS BTM_DeleteStoredLinkKey(BD_ADDR bd_addr, tBTM_CMPL_CB *p_cb) } BTM_TRACE_EVENT ("BTM: BTM_DeleteStoredLinkKey: delete_all_flag: %s", - delete_all_flag ? "TRUE" : "FALSE"); + delete_all_flag ? "TRUE" : "FALSE"); /* Send the HCI command */ btm_cb.devcb.p_stored_link_key_cmpl_cb = p_cb; - if (!btsnd_hcic_delete_stored_key (bd_addr, delete_all_flag)) - { + if (!btsnd_hcic_delete_stored_key (bd_addr, delete_all_flag)) { return (BTM_NO_RESOURCES); - } - else + } else { return (BTM_SUCCESS); + } } /******************************************************************************* @@ -948,8 +945,7 @@ void btm_delete_stored_link_key_complete (UINT8 *p) /* If there was a callback registered for read stored link key, call it */ btm_cb.devcb.p_stored_link_key_cmpl_cb = NULL; - if (p_cb) - { + if (p_cb) { /* Set the call back event to indicate command complete */ result.event = BTM_CB_EVT_DELETE_STORED_LINK_KEYS; @@ -978,8 +974,9 @@ void btm_report_device_status (tBTM_DEV_STATUS status) tBTM_DEV_STATUS_CB *p_cb = btm_cb.devcb.p_dev_status_cb; /* Call the call back to pass the device status to application */ - if (p_cb) + if (p_cb) { (*p_cb)(status); + } } diff --git a/components/bt/bluedroid/stack/btm/btm_inq.c b/components/bt/bluedroid/stack/btm/btm_inq.c old mode 100755 new mode 100644 index 6a9eea526b..6492cd42b4 --- a/components/bt/bluedroid/stack/btm/btm_inq.c +++ b/components/bt/bluedroid/stack/btm/btm_inq.c @@ -50,15 +50,14 @@ /********************************************************************************/ /* L O C A L D A T A D E F I N I T I O N S */ /********************************************************************************/ -static const LAP general_inq_lap = {0x9e,0x8b,0x33}; -static const LAP limited_inq_lap = {0x9e,0x8b,0x00}; +static const LAP general_inq_lap = {0x9e, 0x8b, 0x33}; +static const LAP limited_inq_lap = {0x9e, 0x8b, 0x00}; #if (defined(SDP_INCLUDED) && SDP_INCLUDED == TRUE) -static const UINT16 BTM_EIR_UUID_LKUP_TBL[BTM_EIR_MAX_SERVICES] = -{ +static const UINT16 BTM_EIR_UUID_LKUP_TBL[BTM_EIR_MAX_SERVICES] = { UUID_SERVCLASS_SERVICE_DISCOVERY_SERVER, -/* UUID_SERVCLASS_BROWSE_GROUP_DESCRIPTOR, */ -/* UUID_SERVCLASS_PUBLIC_BROWSE_GROUP, */ + /* UUID_SERVCLASS_BROWSE_GROUP_DESCRIPTOR, */ + /* UUID_SERVCLASS_PUBLIC_BROWSE_GROUP, */ UUID_SERVCLASS_SERIAL_PORT, UUID_SERVCLASS_LAN_ACCESS_USING_PPP, UUID_SERVCLASS_DIALUP_NETWORKING, @@ -71,19 +70,19 @@ static const UINT16 BTM_EIR_UUID_LKUP_TBL[BTM_EIR_MAX_SERVICES] = UUID_SERVCLASS_AUDIO_SOURCE, UUID_SERVCLASS_AUDIO_SINK, UUID_SERVCLASS_AV_REM_CTRL_TARGET, -/* UUID_SERVCLASS_ADV_AUDIO_DISTRIBUTION, */ + /* UUID_SERVCLASS_ADV_AUDIO_DISTRIBUTION, */ UUID_SERVCLASS_AV_REMOTE_CONTROL, -/* UUID_SERVCLASS_VIDEO_CONFERENCING, */ + /* UUID_SERVCLASS_VIDEO_CONFERENCING, */ UUID_SERVCLASS_INTERCOM, UUID_SERVCLASS_FAX, UUID_SERVCLASS_HEADSET_AUDIO_GATEWAY, -/* UUID_SERVCLASS_WAP, */ -/* UUID_SERVCLASS_WAP_CLIENT, */ + /* UUID_SERVCLASS_WAP, */ + /* UUID_SERVCLASS_WAP_CLIENT, */ UUID_SERVCLASS_PANU, UUID_SERVCLASS_NAP, UUID_SERVCLASS_GN, UUID_SERVCLASS_DIRECT_PRINTING, -/* UUID_SERVCLASS_REFERENCE_PRINTING, */ + /* UUID_SERVCLASS_REFERENCE_PRINTING, */ UUID_SERVCLASS_IMAGING, UUID_SERVCLASS_IMAGING_RESPONDER, UUID_SERVCLASS_IMAGING_AUTO_ARCHIVE, @@ -91,36 +90,36 @@ static const UINT16 BTM_EIR_UUID_LKUP_TBL[BTM_EIR_MAX_SERVICES] = UUID_SERVCLASS_HF_HANDSFREE, UUID_SERVCLASS_AG_HANDSFREE, UUID_SERVCLASS_DIR_PRT_REF_OBJ_SERVICE, -/* UUID_SERVCLASS_REFLECTED_UI, */ + /* UUID_SERVCLASS_REFLECTED_UI, */ UUID_SERVCLASS_BASIC_PRINTING, UUID_SERVCLASS_PRINTING_STATUS, UUID_SERVCLASS_HUMAN_INTERFACE, UUID_SERVCLASS_CABLE_REPLACEMENT, UUID_SERVCLASS_HCRP_PRINT, UUID_SERVCLASS_HCRP_SCAN, -/* UUID_SERVCLASS_COMMON_ISDN_ACCESS, */ -/* UUID_SERVCLASS_VIDEO_CONFERENCING_GW, */ -/* UUID_SERVCLASS_UDI_MT, */ -/* UUID_SERVCLASS_UDI_TA, */ -/* UUID_SERVCLASS_VCP, */ + /* UUID_SERVCLASS_COMMON_ISDN_ACCESS, */ + /* UUID_SERVCLASS_VIDEO_CONFERENCING_GW, */ + /* UUID_SERVCLASS_UDI_MT, */ + /* UUID_SERVCLASS_UDI_TA, */ + /* UUID_SERVCLASS_VCP, */ UUID_SERVCLASS_SAP, UUID_SERVCLASS_PBAP_PCE, UUID_SERVCLASS_PBAP_PSE, UUID_SERVCLASS_PHONE_ACCESS, UUID_SERVCLASS_HEADSET_HS, UUID_SERVCLASS_PNP_INFORMATION, -/* UUID_SERVCLASS_GENERIC_NETWORKING, */ -/* UUID_SERVCLASS_GENERIC_FILETRANSFER, */ -/* UUID_SERVCLASS_GENERIC_AUDIO, */ -/* UUID_SERVCLASS_GENERIC_TELEPHONY, */ -/* UUID_SERVCLASS_UPNP_SERVICE, */ -/* UUID_SERVCLASS_UPNP_IP_SERVICE, */ -/* UUID_SERVCLASS_ESDP_UPNP_IP_PAN, */ -/* UUID_SERVCLASS_ESDP_UPNP_IP_LAP, */ -/* UUID_SERVCLASS_ESDP_UPNP_IP_L2CAP, */ + /* UUID_SERVCLASS_GENERIC_NETWORKING, */ + /* UUID_SERVCLASS_GENERIC_FILETRANSFER, */ + /* UUID_SERVCLASS_GENERIC_AUDIO, */ + /* UUID_SERVCLASS_GENERIC_TELEPHONY, */ + /* UUID_SERVCLASS_UPNP_SERVICE, */ + /* UUID_SERVCLASS_UPNP_IP_SERVICE, */ + /* UUID_SERVCLASS_ESDP_UPNP_IP_PAN, */ + /* UUID_SERVCLASS_ESDP_UPNP_IP_LAP, */ + /* UUID_SERVCLASS_ESDP_UPNP_IP_L2CAP, */ UUID_SERVCLASS_VIDEO_SOURCE, UUID_SERVCLASS_VIDEO_SINK, -/* UUID_SERVCLASS_VIDEO_DISTRIBUTION */ + /* UUID_SERVCLASS_VIDEO_DISTRIBUTION */ UUID_SERVCLASS_MESSAGE_ACCESS, UUID_SERVCLASS_MESSAGE_NOTIFICATION, UUID_SERVCLASS_HDP_SOURCE, @@ -140,7 +139,7 @@ static void btm_clr_inq_result_flt (void); static UINT8 btm_convert_uuid_to_eir_service( UINT16 uuid16 ); static void btm_set_eir_uuid( UINT8 *p_eir, tBTM_INQ_RESULTS *p_results ); static UINT8 *btm_eir_get_uuid_list( UINT8 *p_eir, UINT8 uuid_size, - UINT8 *p_num_uuid, UINT8 *p_uuid_list_type ); + UINT8 *p_num_uuid, UINT8 *p_uuid_list_type ); static UINT16 btm_convert_uuid_to_uuid16( UINT8 *p_uuid, UINT8 uuid_size ); /******************************************************************************* @@ -172,11 +171,9 @@ tBTM_STATUS BTM_SetDiscoverability (UINT16 inq_mode, UINT16 window, UINT16 inter BTM_TRACE_API ("BTM_SetDiscoverability\n"); #if (BLE_INCLUDED == TRUE && BLE_INCLUDED == TRUE) - if (controller_get_interface()->supports_ble()) - { + if (controller_get_interface()->supports_ble()) { if (btm_ble_set_discoverability((UINT16)(inq_mode)) - == BTM_SUCCESS) - { + == BTM_SUCCESS) { btm_cb.btm_inq_vars.discoverable_mode &= (~BTM_BLE_DISCOVERABLE_MASK); btm_cb.btm_inq_vars.discoverable_mode |= (inq_mode & BTM_BLE_DISCOVERABLE_MASK); } @@ -185,54 +182,54 @@ tBTM_STATUS BTM_SetDiscoverability (UINT16 inq_mode, UINT16 window, UINT16 inter #endif /*** Check mode parameter ***/ - if (inq_mode > BTM_MAX_DISCOVERABLE) + if (inq_mode > BTM_MAX_DISCOVERABLE) { return (BTM_ILLEGAL_VALUE); + } /* Make sure the controller is active */ - if (!controller_get_interface()->get_is_ready()) + if (!controller_get_interface()->get_is_ready()) { return (BTM_DEV_RESET); + } /* If the window and/or interval is '0', set to default values */ - if (!window) + if (!window) { window = BTM_DEFAULT_DISC_WINDOW; + } - if (!interval) + if (!interval) { interval = BTM_DEFAULT_DISC_INTERVAL; + } BTM_TRACE_API ("BTM_SetDiscoverability: mode %d [NonDisc-0, Lim-1, Gen-2], window 0x%04x, interval 0x%04x\n", - inq_mode, window, interval); + inq_mode, window, interval); /*** Check for valid window and interval parameters ***/ /*** Only check window and duration if mode is connectable ***/ - if (inq_mode != BTM_NON_DISCOVERABLE) - { + if (inq_mode != BTM_NON_DISCOVERABLE) { /* window must be less than or equal to interval */ if (window < HCI_MIN_INQUIRYSCAN_WINDOW || - window > HCI_MAX_INQUIRYSCAN_WINDOW || - interval < HCI_MIN_INQUIRYSCAN_INTERVAL || - interval > HCI_MAX_INQUIRYSCAN_INTERVAL || - window > interval) - { + window > HCI_MAX_INQUIRYSCAN_WINDOW || + interval < HCI_MIN_INQUIRYSCAN_INTERVAL || + interval > HCI_MAX_INQUIRYSCAN_INTERVAL || + window > interval) { return (BTM_ILLEGAL_VALUE); } } /* Set the IAC if needed */ - if (inq_mode != BTM_NON_DISCOVERABLE) - { - if (inq_mode & BTM_LIMITED_DISCOVERABLE) - { + if (inq_mode != BTM_NON_DISCOVERABLE) { + if (inq_mode & BTM_LIMITED_DISCOVERABLE) { /* Use the GIAC and LIAC codes for limited discoverable mode */ memcpy (temp_lap[0], limited_inq_lap, LAP_LEN); memcpy (temp_lap[1], general_inq_lap, LAP_LEN); - if (!btsnd_hcic_write_cur_iac_lap (2, (LAP * const) temp_lap)) - return (BTM_NO_RESOURCES); /* Cannot continue */ - } - else - { - if (!btsnd_hcic_write_cur_iac_lap (1, (LAP * const) &general_inq_lap)) - return (BTM_NO_RESOURCES); /* Cannot continue */ + if (!btsnd_hcic_write_cur_iac_lap (2, (LAP * const) temp_lap)) { + return (BTM_NO_RESOURCES); /* Cannot continue */ + } + } else { + if (!btsnd_hcic_write_cur_iac_lap (1, (LAP * const) &general_inq_lap)) { + return (BTM_NO_RESOURCES); /* Cannot continue */ + } } scan_mode |= HCI_INQUIRY_SCAN_ENABLED; @@ -240,41 +237,39 @@ tBTM_STATUS BTM_SetDiscoverability (UINT16 inq_mode, UINT16 window, UINT16 inter /* Send down the inquiry scan window and period if changed */ if ((window != btm_cb.btm_inq_vars.inq_scan_window) || - (interval != btm_cb.btm_inq_vars.inq_scan_period)) - { - if (btsnd_hcic_write_inqscan_cfg (interval, window)) - { + (interval != btm_cb.btm_inq_vars.inq_scan_period)) { + if (btsnd_hcic_write_inqscan_cfg (interval, window)) { btm_cb.btm_inq_vars.inq_scan_window = window; btm_cb.btm_inq_vars.inq_scan_period = interval; - } - else + } else { return (BTM_NO_RESOURCES); + } } - if (btm_cb.btm_inq_vars.connectable_mode & BTM_CONNECTABLE_MASK) + if (btm_cb.btm_inq_vars.connectable_mode & BTM_CONNECTABLE_MASK) { scan_mode |= HCI_PAGE_SCAN_ENABLED; + } - if (btsnd_hcic_write_scan_enable (scan_mode)) - { + if (btsnd_hcic_write_scan_enable (scan_mode)) { btm_cb.btm_inq_vars.discoverable_mode &= (~BTM_DISCOVERABLE_MASK); btm_cb.btm_inq_vars.discoverable_mode |= inq_mode; - } - else + } else { return (BTM_NO_RESOURCES); + } /* Change the service class bit if mode has changed */ p_cod = BTM_ReadDeviceClass(); BTM_COD_SERVICE_CLASS(service_class, p_cod); is_limited = (inq_mode & BTM_LIMITED_DISCOVERABLE) ? TRUE : FALSE; cod_limited = (service_class & BTM_COD_SERVICE_LMTD_DISCOVER) ? TRUE : FALSE; - if (is_limited ^ cod_limited) - { + if (is_limited ^ cod_limited) { BTM_COD_MINOR_CLASS(minor, p_cod ); BTM_COD_MAJOR_CLASS(major, p_cod ); - if (is_limited) + if (is_limited) { service_class |= BTM_COD_SERVICE_LMTD_DISCOVER; - else + } else { service_class &= ~BTM_COD_SERVICE_LMTD_DISCOVER; + } FIELDS_TO_COD(cod, minor, major, service_class); (void) BTM_SetDeviceClass (cod); @@ -299,24 +294,26 @@ tBTM_STATUS BTM_SetInquiryScanType (UINT16 scan_type) { BTM_TRACE_API ("BTM_SetInquiryScanType\n"); - if (scan_type != BTM_SCAN_TYPE_STANDARD && scan_type != BTM_SCAN_TYPE_INTERLACED) + if (scan_type != BTM_SCAN_TYPE_STANDARD && scan_type != BTM_SCAN_TYPE_INTERLACED) { return (BTM_ILLEGAL_VALUE); + } /* whatever app wants if device is not 1.2 scan type should be STANDARD */ - if (!controller_get_interface()->supports_interlaced_inquiry_scan()) - return (BTM_MODE_UNSUPPORTED); + if (!controller_get_interface()->supports_interlaced_inquiry_scan()) { + return (BTM_MODE_UNSUPPORTED); + } /* Check for scan type if configuration has been changed */ - if (scan_type != btm_cb.btm_inq_vars.inq_scan_type) - { - if (BTM_IsDeviceUp()) - { - if (btsnd_hcic_write_inqscan_type ((UINT8)scan_type)) + if (scan_type != btm_cb.btm_inq_vars.inq_scan_type) { + if (BTM_IsDeviceUp()) { + if (btsnd_hcic_write_inqscan_type ((UINT8)scan_type)) { btm_cb.btm_inq_vars.inq_scan_type = scan_type; - else + } else { return (BTM_NO_RESOURCES); + } + } else { + return (BTM_WRONG_MODE); } - else return (BTM_WRONG_MODE); } return (BTM_SUCCESS); } @@ -336,24 +333,26 @@ tBTM_STATUS BTM_SetInquiryScanType (UINT16 scan_type) tBTM_STATUS BTM_SetPageScanType (UINT16 scan_type) { BTM_TRACE_API ("BTM_SetPageScanType\n"); - if (scan_type != BTM_SCAN_TYPE_STANDARD && scan_type != BTM_SCAN_TYPE_INTERLACED) + if (scan_type != BTM_SCAN_TYPE_STANDARD && scan_type != BTM_SCAN_TYPE_INTERLACED) { return (BTM_ILLEGAL_VALUE); + } /* whatever app wants if device is not 1.2 scan type should be STANDARD */ - if (!controller_get_interface()->supports_interlaced_inquiry_scan()) - return (BTM_MODE_UNSUPPORTED); + if (!controller_get_interface()->supports_interlaced_inquiry_scan()) { + return (BTM_MODE_UNSUPPORTED); + } /* Check for scan type if configuration has been changed */ - if (scan_type != btm_cb.btm_inq_vars.page_scan_type) - { - if (BTM_IsDeviceUp()) - { - if (btsnd_hcic_write_pagescan_type ((UINT8)scan_type)) + if (scan_type != btm_cb.btm_inq_vars.page_scan_type) { + if (BTM_IsDeviceUp()) { + if (btsnd_hcic_write_pagescan_type ((UINT8)scan_type)) { btm_cb.btm_inq_vars.page_scan_type = scan_type; - else + } else { return (BTM_NO_RESOURCES); + } + } else { + return (BTM_WRONG_MODE); } - else return (BTM_WRONG_MODE); } return (BTM_SUCCESS); } @@ -378,28 +377,27 @@ tBTM_STATUS BTM_SetInquiryMode (UINT8 mode) { const controller_t *controller = controller_get_interface(); BTM_TRACE_API ("BTM_SetInquiryMode\n"); - if (mode == BTM_INQ_RESULT_STANDARD) - { + if (mode == BTM_INQ_RESULT_STANDARD) { /* mandatory mode */ - } - else if (mode == BTM_INQ_RESULT_WITH_RSSI) - { - if (!controller->supports_rssi_with_inquiry_results()) + } else if (mode == BTM_INQ_RESULT_WITH_RSSI) { + if (!controller->supports_rssi_with_inquiry_results()) { return (BTM_MODE_UNSUPPORTED); - } - else if (mode == BTM_INQ_RESULT_EXTENDED) - { - if (!controller->supports_extended_inquiry_response()) + } + } else if (mode == BTM_INQ_RESULT_EXTENDED) { + if (!controller->supports_extended_inquiry_response()) { return (BTM_MODE_UNSUPPORTED); - } - else + } + } else { return (BTM_ILLEGAL_VALUE); + } - if (!BTM_IsDeviceUp()) + if (!BTM_IsDeviceUp()) { return (BTM_WRONG_MODE); + } - if (!btsnd_hcic_write_inquiry_mode (mode)) + if (!btsnd_hcic_write_inquiry_mode (mode)) { return (BTM_NO_RESOURCES); + } return (BTM_SUCCESS); } @@ -421,11 +419,13 @@ tBTM_STATUS BTM_SetInquiryMode (UINT8 mode) UINT16 BTM_ReadDiscoverability (UINT16 *p_window, UINT16 *p_interval) { BTM_TRACE_API ("BTM_ReadDiscoverability\n"); - if (p_window) + if (p_window) { *p_window = btm_cb.btm_inq_vars.inq_scan_window; + } - if (p_interval) + if (p_interval) { *p_interval = btm_cb.btm_inq_vars.inq_scan_period; + } return (btm_cb.btm_inq_vars.discoverable_mode); } @@ -467,33 +467,36 @@ tBTM_STATUS BTM_SetPeriodicInquiryMode (tBTM_INQ_PARMS *p_inqparms, UINT16 max_d tBTM_INQUIRY_VAR_ST *p_inq = &btm_cb.btm_inq_vars; BTM_TRACE_API ("BTM_SetPeriodicInquiryMode: mode: %d, dur: %d, rsps: %d, flt: %d, min: %d, max: %d\n", - p_inqparms->mode, p_inqparms->duration, p_inqparms->max_resps, - p_inqparms->filter_cond_type, min_delay, max_delay); + p_inqparms->mode, p_inqparms->duration, p_inqparms->max_resps, + p_inqparms->filter_cond_type, min_delay, max_delay); /*** Make sure the device is ready ***/ - if (!BTM_IsDeviceUp()) + if (!BTM_IsDeviceUp()) { return (BTM_WRONG_MODE); + } /* Only one active inquiry is allowed in this implementation. Also do not allow an inquiry if the inquiry filter is being updated */ - if (p_inq->inq_active || p_inq->inqfilt_active) + if (p_inq->inq_active || p_inq->inqfilt_active) { return (BTM_BUSY); + } /* If illegal parameters return FALSE */ if (p_inqparms->mode != BTM_GENERAL_INQUIRY && - p_inqparms->mode != BTM_LIMITED_INQUIRY) + p_inqparms->mode != BTM_LIMITED_INQUIRY) { return (BTM_ILLEGAL_VALUE); + } /* Verify the parameters for this command */ if (p_inqparms->duration < BTM_MIN_INQUIRY_LEN || - p_inqparms->duration > BTM_MAX_INQUIRY_LENGTH || - min_delay <= p_inqparms->duration || - min_delay < BTM_PER_INQ_MIN_MIN_PERIOD || - min_delay > BTM_PER_INQ_MAX_MIN_PERIOD || - max_delay <= min_delay || - max_delay < BTM_PER_INQ_MIN_MAX_PERIOD) - /* max_delay > BTM_PER_INQ_MAX_MAX_PERIOD)*/ - /* BTM_PER_INQ_MAX_MAX_PERIOD set to 1's in all bits. Condition resulting in false always*/ + p_inqparms->duration > BTM_MAX_INQUIRY_LENGTH || + min_delay <= p_inqparms->duration || + min_delay < BTM_PER_INQ_MIN_MIN_PERIOD || + min_delay > BTM_PER_INQ_MAX_MIN_PERIOD || + max_delay <= min_delay || + max_delay < BTM_PER_INQ_MIN_MAX_PERIOD) + /* max_delay > BTM_PER_INQ_MAX_MAX_PERIOD)*/ + /* BTM_PER_INQ_MAX_MAX_PERIOD set to 1's in all bits. Condition resulting in false always*/ { return (BTM_ILLEGAL_VALUE); } @@ -506,24 +509,22 @@ tBTM_STATUS BTM_SetPeriodicInquiryMode (tBTM_INQ_PARMS *p_inqparms, UINT16 max_d p_inq->p_inq_results_cb = p_results_cb; p_inq->inq_active = (UINT8)((p_inqparms->mode == BTM_LIMITED_INQUIRY) ? - (BTM_LIMITED_INQUIRY_ACTIVE | BTM_PERIODIC_INQUIRY_ACTIVE) : - (BTM_GENERAL_INQUIRY_ACTIVE | BTM_PERIODIC_INQUIRY_ACTIVE)); + (BTM_LIMITED_INQUIRY_ACTIVE | BTM_PERIODIC_INQUIRY_ACTIVE) : + (BTM_GENERAL_INQUIRY_ACTIVE | BTM_PERIODIC_INQUIRY_ACTIVE)); /* If a filter is specified, then save it for later and clear the current filter. The setting of the filter is done upon completion of clearing of the previous filter. */ - if (p_inqparms->filter_cond_type != BTM_CLR_INQUIRY_FILTER) - { + if (p_inqparms->filter_cond_type != BTM_CLR_INQUIRY_FILTER) { p_inq->state = BTM_INQ_CLR_FILT_STATE; p_inqparms->filter_cond_type = BTM_CLR_INQUIRY_FILTER; - } - else /* The filter is not being used so simply clear it; the inquiry can start after this operation */ + } else { /* The filter is not being used so simply clear it; the inquiry can start after this operation */ p_inq->state = BTM_INQ_SET_FILT_STATE; + } /* Before beginning the inquiry the current filter must be cleared, so initiate the command */ - if ((status = btm_set_inq_event_filter (p_inqparms->filter_cond_type, &p_inqparms->filter_cond)) != BTM_CMD_STARTED) - { + if ((status = btm_set_inq_event_filter (p_inqparms->filter_cond_type, &p_inqparms->filter_cond)) != BTM_CMD_STARTED) { /* If set filter command is not succesful reset the state */ p_inq->p_inq_results_cb = NULL; p_inq->state = BTM_INQ_INACTIVE_STATE; @@ -553,22 +554,24 @@ tBTM_STATUS BTM_CancelPeriodicInquiry(void) BTM_TRACE_API ("BTM_CancelPeriodicInquiry called\n"); /*** Make sure the device is ready ***/ - if (!BTM_IsDeviceUp()) + if (!BTM_IsDeviceUp()) { return (BTM_WRONG_MODE); + } /* Only cancel if one is active */ - if (btm_cb.btm_inq_vars.inq_active & BTM_PERIODIC_INQUIRY_ACTIVE) - { + if (btm_cb.btm_inq_vars.inq_active & BTM_PERIODIC_INQUIRY_ACTIVE) { btm_cb.btm_inq_vars.inq_active = BTM_INQUIRY_INACTIVE; btm_cb.btm_inq_vars.p_inq_results_cb = (tBTM_INQ_RESULTS_CB *) NULL; - if (!btsnd_hcic_exit_per_inq ()) + if (!btsnd_hcic_exit_per_inq ()) { status = BTM_NO_RESOURCES; + } /* If the event filter is in progress, mark it so that the processing of the return event will be ignored */ - if(p_inq->inqfilt_active) + if (p_inq->inqfilt_active) { p_inq->pending_filt_complete_event++; + } p_inq->inqfilt_active = FALSE; p_inq->inq_counter++; @@ -599,10 +602,8 @@ tBTM_STATUS BTM_SetConnectability (UINT16 page_mode, UINT16 window, UINT16 inter BTM_TRACE_API ("BTM_SetConnectability\n"); #if (BLE_INCLUDED == TRUE && BLE_INCLUDED == TRUE) - if (controller_get_interface()->supports_ble()) - { - if (btm_ble_set_connectability(page_mode) != BTM_SUCCESS) - { + if (controller_get_interface()->supports_ble()) { + if (btm_ble_set_connectability(page_mode) != BTM_SUCCESS) { return BTM_NO_RESOURCES; } p_inq->connectable_mode &= (~BTM_BLE_CONNECTABLE_MASK); @@ -612,34 +613,36 @@ tBTM_STATUS BTM_SetConnectability (UINT16 page_mode, UINT16 window, UINT16 inter #endif /*** Check mode parameter ***/ - if (page_mode != BTM_NON_CONNECTABLE && page_mode != BTM_CONNECTABLE) + if (page_mode != BTM_NON_CONNECTABLE && page_mode != BTM_CONNECTABLE) { return (BTM_ILLEGAL_VALUE); + } /* Make sure the controller is active */ - if (!controller_get_interface()->get_is_ready()) + if (!controller_get_interface()->get_is_ready()) { return (BTM_DEV_RESET); + } /* If the window and/or interval is '0', set to default values */ - if (!window) + if (!window) { window = BTM_DEFAULT_CONN_WINDOW; + } - if (!interval) + if (!interval) { interval = BTM_DEFAULT_CONN_INTERVAL; + } BTM_TRACE_API ("BTM_SetConnectability: mode %d [NonConn-0, Conn-1], window 0x%04x, interval 0x%04x\n", - page_mode, window, interval); + page_mode, window, interval); /*** Check for valid window and interval parameters ***/ /*** Only check window and duration if mode is connectable ***/ - if (page_mode == BTM_CONNECTABLE) - { + if (page_mode == BTM_CONNECTABLE) { /* window must be less than or equal to interval */ if (window < HCI_MIN_PAGESCAN_WINDOW || - window > HCI_MAX_PAGESCAN_WINDOW || - interval < HCI_MIN_PAGESCAN_INTERVAL || - interval > HCI_MAX_PAGESCAN_INTERVAL || - window > interval) - { + window > HCI_MAX_PAGESCAN_WINDOW || + interval < HCI_MIN_PAGESCAN_INTERVAL || + interval > HCI_MAX_PAGESCAN_INTERVAL || + window > interval) { return (BTM_ILLEGAL_VALUE); } @@ -647,20 +650,20 @@ tBTM_STATUS BTM_SetConnectability (UINT16 page_mode, UINT16 window, UINT16 inter } if ((window != p_inq->page_scan_window) || - (interval != p_inq->page_scan_period)) - { + (interval != p_inq->page_scan_period)) { p_inq->page_scan_window = window; p_inq->page_scan_period = interval; - if (!btsnd_hcic_write_pagescan_cfg (interval, window)) + if (!btsnd_hcic_write_pagescan_cfg (interval, window)) { return (BTM_NO_RESOURCES); + } } /* Keep the inquiry scan as previouosly set */ - if (p_inq->discoverable_mode & BTM_DISCOVERABLE_MASK) + if (p_inq->discoverable_mode & BTM_DISCOVERABLE_MASK) { scan_mode |= HCI_INQUIRY_SCAN_ENABLED; + } - if (btsnd_hcic_write_scan_enable (scan_mode)) - { + if (btsnd_hcic_write_scan_enable (scan_mode)) { p_inq->connectable_mode &= (~BTM_CONNECTABLE_MASK); p_inq->connectable_mode |= page_mode; @@ -686,11 +689,13 @@ tBTM_STATUS BTM_SetConnectability (UINT16 page_mode, UINT16 window, UINT16 inter UINT16 BTM_ReadConnectability (UINT16 *p_window, UINT16 *p_interval) { BTM_TRACE_API ("BTM_ReadConnectability\n"); - if (p_window) + if (p_window) { *p_window = btm_cb.btm_inq_vars.page_scan_window; + } - if (p_interval) + if (p_interval) { *p_interval = btm_cb.btm_inq_vars.page_scan_period; + } return (btm_cb.btm_inq_vars.connectable_mode); } @@ -713,7 +718,7 @@ UINT16 BTM_IsInquiryActive (void) { BTM_TRACE_API ("BTM_IsInquiryActive\n"); - return(btm_cb.btm_inq_vars.inq_active); + return (btm_cb.btm_inq_vars.inq_active); } @@ -734,18 +739,18 @@ tBTM_STATUS BTM_CancelInquiry(void) tBTM_STATUS status = BTM_SUCCESS; tBTM_INQUIRY_VAR_ST *p_inq = &btm_cb.btm_inq_vars; #if (defined(BTA_HOST_INTERLEAVE_SEARCH) && BTA_HOST_INTERLEAVE_SEARCH == TRUE) - UINT8 active_mode=p_inq->inq_active; + UINT8 active_mode = p_inq->inq_active; #endif BTM_TRACE_API ("BTM_CancelInquiry called\n"); /*** Make sure the device is ready ***/ - if (!BTM_IsDeviceUp()) + if (!BTM_IsDeviceUp()) { return (BTM_WRONG_MODE); + } /* Only cancel if not in periodic mode, otherwise the caller should call BTM_CancelPeriodicMode */ - if ((p_inq->inq_active &BTM_INQUIRY_ACTIVE_MASK) != 0 && - (!(p_inq->inq_active & BTM_PERIODIC_INQUIRY_ACTIVE))) - { + if ((p_inq->inq_active & BTM_INQUIRY_ACTIVE_MASK) != 0 && + (!(p_inq->inq_active & BTM_PERIODIC_INQUIRY_ACTIVE))) { p_inq->inq_active = BTM_INQUIRY_INACTIVE; p_inq->state = BTM_INQ_INACTIVE_STATE; p_inq->p_inq_results_cb = (tBTM_INQ_RESULTS_CB *) NULL; /* Do not notify caller anymore */ @@ -753,30 +758,29 @@ tBTM_STATUS BTM_CancelInquiry(void) /* If the event filter is in progress, mark it so that the processing of the return event will be ignored */ - if (p_inq->inqfilt_active) - { + if (p_inq->inqfilt_active) { p_inq->inqfilt_active = FALSE; p_inq->pending_filt_complete_event++; } - /* Initiate the cancel inquiry */ - else - { + /* Initiate the cancel inquiry */ + else { if (((p_inq->inqparms.mode & BTM_BR_INQUIRY_MASK) != 0) #if (defined(BTA_HOST_INTERLEAVE_SEARCH) && BTA_HOST_INTERLEAVE_SEARCH == TRUE) - &&(active_mode & BTM_BR_INQUIRY_MASK) + && (active_mode & BTM_BR_INQUIRY_MASK) #endif - ) - { - if (!btsnd_hcic_inq_cancel()) + ) { + if (!btsnd_hcic_inq_cancel()) { status = BTM_NO_RESOURCES; + } } #if BLE_INCLUDED == TRUE if (((p_inq->inqparms.mode & BTM_BLE_INQUIRY_MASK) != 0) #if (defined(BTA_HOST_INTERLEAVE_SEARCH) && BTA_HOST_INTERLEAVE_SEARCH == TRUE) - &&(active_mode & BTM_BLE_INQ_ACTIVE_MASK) + && (active_mode & BTM_BLE_INQ_ACTIVE_MASK) #endif - ) + ) { btm_ble_stop_inquiry(); + } #endif } @@ -785,8 +789,8 @@ tBTM_STATUS BTM_CancelInquiry(void) * btm_acl_update_busy_level (BTM_BLI_INQ_DONE_EVT); */ - p_inq->inq_counter++; - btm_clr_inq_result_flt(); + p_inq->inq_counter++; + btm_clr_inq_result_flt(); } return (status); @@ -829,49 +833,49 @@ tBTM_STATUS BTM_StartInquiry (tBTM_INQ_PARMS *p_inqparms, tBTM_INQ_RESULTS_CB *p tBTM_INQUIRY_VAR_ST *p_inq = &btm_cb.btm_inq_vars; BTM_TRACE_API ("BTM_StartInquiry: mode: %d, dur: %d, rsps: %d, flt: %d\n", - p_inqparms->mode, p_inqparms->duration, p_inqparms->max_resps, - p_inqparms->filter_cond_type); + p_inqparms->mode, p_inqparms->duration, p_inqparms->max_resps, + p_inqparms->filter_cond_type); /* Only one active inquiry is allowed in this implementation. Also do not allow an inquiry if the inquiry filter is being updated */ - if (p_inq->inq_active || p_inq->inqfilt_active) - { + if (p_inq->inq_active || p_inq->inqfilt_active) { #if (defined BLE_INCLUDED && BLE_INCLUDED == TRUE) /*check if LE observe is already running*/ - if(p_inq->scan_type==INQ_LE_OBSERVE && p_inq->p_inq_ble_results_cb!=NULL) - { + if (p_inq->scan_type == INQ_LE_OBSERVE && p_inq->p_inq_ble_results_cb != NULL) { BTM_TRACE_API("BTM_StartInquiry: LE observe in progress"); p_inq->scan_type = INQ_GENERAL; p_inq->inq_active = BTM_INQUIRY_INACTIVE; btm_cb.ble_ctr_cb.inq_var.scan_type = BTM_BLE_SCAN_MODE_NONE; btsnd_hcic_ble_set_scan_enable (BTM_BLE_SCAN_DISABLE, BTM_BLE_DUPLICATE_ENABLE); - } - else + } else #endif { return (BTM_BUSY); BTM_TRACE_API("BTM_StartInquiry: return BUSY\n"); } - } - else + } else { p_inq->scan_type = INQ_GENERAL; + } - /*** Make sure the device is ready ***/ - if (!BTM_IsDeviceUp()) + /*** Make sure the device is ready ***/ + if (!BTM_IsDeviceUp()) { return (BTM_WRONG_MODE); + } - if ((p_inqparms->mode & BTM_BR_INQUIRY_MASK)!= BTM_GENERAL_INQUIRY && - (p_inqparms->mode & BTM_BR_INQUIRY_MASK)!= BTM_LIMITED_INQUIRY + if ((p_inqparms->mode & BTM_BR_INQUIRY_MASK) != BTM_GENERAL_INQUIRY && + (p_inqparms->mode & BTM_BR_INQUIRY_MASK) != BTM_LIMITED_INQUIRY #if (BLE_INCLUDED == TRUE) - && (p_inqparms->mode & BTM_BLE_INQUIRY_MASK)!= BTM_BLE_GENERAL_INQUIRY - && (p_inqparms->mode & BTM_BLE_INQUIRY_MASK)!= BTM_BLE_LIMITED_INQUIRY + && (p_inqparms->mode & BTM_BLE_INQUIRY_MASK) != BTM_BLE_GENERAL_INQUIRY + && (p_inqparms->mode & BTM_BLE_INQUIRY_MASK) != BTM_BLE_LIMITED_INQUIRY #endif - ) + ) { return (BTM_ILLEGAL_VALUE); + } #if (defined(BTA_HOST_INTERLEAVE_SEARCH) && BTA_HOST_INTERLEAVE_SEARCH == TRUE) - if(p_inq->next_state==BTM_FINISH) - return BTM_ILLEGAL_VALUE; + if (p_inq->next_state == BTM_FINISH) { + return BTM_ILLEGAL_VALUE; + } #endif @@ -887,49 +891,44 @@ tBTM_STATUS BTM_StartInquiry (tBTM_INQ_PARMS *p_inqparms, tBTM_INQ_RESULTS_CB *p BTM_TRACE_DEBUG("BTM_StartInquiry: p_inq->inq_active = 0x%02x\n", p_inq->inq_active); -/* interleave scan minimal conditions */ + /* interleave scan minimal conditions */ #if (BLE_INCLUDED==TRUE && (defined(BTA_HOST_INTERLEAVE_SEARCH) && BTA_HOST_INTERLEAVE_SEARCH == TRUE)) /* check if both modes are present */ - if((p_inqparms->mode & BTM_BLE_INQUIRY_MASK) && (p_inqparms->mode & BTM_BR_INQUIRY_MASK)) - { + if ((p_inqparms->mode & BTM_BLE_INQUIRY_MASK) && (p_inqparms->mode & BTM_BR_INQUIRY_MASK)) { BTM_TRACE_API("BTM:Interleave Inquiry Mode Set\n"); - p_inqparms->duration=p_inqparms->intl_duration[p_inq->next_state]; - p_inq->inqparms.duration=p_inqparms->duration; - } - else - { + p_inqparms->duration = p_inqparms->intl_duration[p_inq->next_state]; + p_inq->inqparms.duration = p_inqparms->duration; + } else { BTM_TRACE_API("BTM:Single Mode: No interleaving, Mode:0x%02x\n", p_inqparms->mode); - p_inq->next_state=BTM_NO_INTERLEAVING; + p_inq->next_state = BTM_NO_INTERLEAVING; } #endif -/* start LE inquiry here if requested */ + /* start LE inquiry here if requested */ #if BLE_INCLUDED == TRUE if ((p_inqparms->mode & BTM_BLE_INQUIRY_MASK) #if (defined(BTA_HOST_INTERLEAVE_SEARCH) && BTA_HOST_INTERLEAVE_SEARCH == TRUE) - &&(p_inq->next_state==BTM_BLE_ONE || p_inq->next_state==BTM_BLE_TWO || - p_inq->next_state==BTM_NO_INTERLEAVING) + && (p_inq->next_state == BTM_BLE_ONE || p_inq->next_state == BTM_BLE_TWO || + p_inq->next_state == BTM_NO_INTERLEAVING) #endif - ) + ) { #if (defined(BTA_HOST_INTERLEAVE_SEARCH) && BTA_HOST_INTERLEAVE_SEARCH == TRUE) p_inq->inq_active = (p_inqparms->mode & BTM_BLE_INQUIRY_MASK); BTM_TRACE_API("BTM:Starting LE Scan with duration %d and activeMode:0x%02x\n", - p_inqparms->duration, (p_inqparms->mode & BTM_BLE_INQUIRY_MASK)); + p_inqparms->duration, (p_inqparms->mode & BTM_BLE_INQUIRY_MASK)); #endif - if (!controller_get_interface()->supports_ble()) - { + if (!controller_get_interface()->supports_ble()) { p_inq->inqparms.mode &= ~ BTM_BLE_INQUIRY_MASK; status = BTM_ILLEGAL_VALUE; } /* BLE for now does not support filter condition for inquiry */ else if ((status = btm_ble_start_inquiry((UINT8)(p_inqparms->mode & BTM_BLE_INQUIRY_MASK), - p_inqparms->duration)) != BTM_CMD_STARTED) - { + p_inqparms->duration)) != BTM_CMD_STARTED) { BTM_TRACE_ERROR("Err Starting LE Inquiry.\n"); p_inq->inqparms.mode &= ~ BTM_BLE_INQUIRY_MASK; } @@ -938,19 +937,17 @@ tBTM_STATUS BTM_StartInquiry (tBTM_INQ_PARMS *p_inqparms, tBTM_INQ_RESULTS_CB *p #endif #if (defined(BTA_HOST_INTERLEAVE_SEARCH) && BTA_HOST_INTERLEAVE_SEARCH == TRUE) - if(p_inq->next_state==BTM_NO_INTERLEAVING) - { - p_inq->next_state=BTM_FINISH; - } - else - { + if (p_inq->next_state == BTM_NO_INTERLEAVING) { + p_inq->next_state = BTM_FINISH; + } else { BTM_TRACE_API("BTM:Interleaving: started LE scan, Advancing to next state: %d\n", - p_inq->next_state+1); - p_inq->next_state+=1; + p_inq->next_state + 1); + p_inq->next_state += 1; } /* reset next_state if status <> BTM_Started */ - if(status!=BTM_CMD_STARTED) - p_inq->next_state=BTM_BR_ONE; + if (status != BTM_CMD_STARTED) { + p_inq->next_state = BTM_BR_ONE; + } /* if interleave scan..return here */ return status; @@ -962,62 +959,60 @@ tBTM_STATUS BTM_StartInquiry (tBTM_INQ_PARMS *p_inqparms, tBTM_INQ_RESULTS_CB *p #endif /* end of BLE_INCLUDED */ /* we're done with this routine if BR/EDR inquiry is not desired. */ - if ((p_inqparms->mode & BTM_BR_INQUIRY_MASK) == BTM_INQUIRY_NONE) + if ((p_inqparms->mode & BTM_BR_INQUIRY_MASK) == BTM_INQUIRY_NONE) { return status; + } /* BR/EDR inquiry portion */ #if (defined(BTA_HOST_INTERLEAVE_SEARCH) && BTA_HOST_INTERLEAVE_SEARCH == TRUE) - if((p_inq->next_state==BTM_BR_ONE || p_inq->next_state==BTM_BR_TWO || - p_inq->next_state==BTM_NO_INTERLEAVING )) - { + if ((p_inq->next_state == BTM_BR_ONE || p_inq->next_state == BTM_BR_TWO || + p_inq->next_state == BTM_NO_INTERLEAVING )) { p_inq->inq_active = (p_inqparms->mode & BTM_BR_INQUIRY_MASK); #endif - /* If a filter is specified, then save it for later and clear the current filter. - The setting of the filter is done upon completion of clearing of the previous - filter. - */ - switch (p_inqparms->filter_cond_type) - { - case BTM_CLR_INQUIRY_FILTER: - p_inq->state = BTM_INQ_SET_FILT_STATE; - break; + /* If a filter is specified, then save it for later and clear the current filter. + The setting of the filter is done upon completion of clearing of the previous + filter. + */ + switch (p_inqparms->filter_cond_type) { + case BTM_CLR_INQUIRY_FILTER: + p_inq->state = BTM_INQ_SET_FILT_STATE; + break; - case BTM_FILTER_COND_DEVICE_CLASS: - case BTM_FILTER_COND_BD_ADDR: - /* The filter is not being used so simply clear it; - the inquiry can start after this operation */ - p_inq->state = BTM_INQ_CLR_FILT_STATE; - p_inqparms->filter_cond_type = BTM_CLR_INQUIRY_FILTER; - /* =============>>>> adding LE filtering here ????? */ - break; + case BTM_FILTER_COND_DEVICE_CLASS: + case BTM_FILTER_COND_BD_ADDR: + /* The filter is not being used so simply clear it; + the inquiry can start after this operation */ + p_inq->state = BTM_INQ_CLR_FILT_STATE; + p_inqparms->filter_cond_type = BTM_CLR_INQUIRY_FILTER; + /* =============>>>> adding LE filtering here ????? */ + break; - default: - return (BTM_ILLEGAL_VALUE); - } + default: + return (BTM_ILLEGAL_VALUE); + } - /* Before beginning the inquiry the current filter must be cleared, so initiate the command */ - if ((status = btm_set_inq_event_filter (p_inqparms->filter_cond_type, - &p_inqparms->filter_cond)) != BTM_CMD_STARTED) - p_inq->state = BTM_INQ_INACTIVE_STATE; + /* Before beginning the inquiry the current filter must be cleared, so initiate the command */ + if ((status = btm_set_inq_event_filter (p_inqparms->filter_cond_type, + &p_inqparms->filter_cond)) != BTM_CMD_STARTED) { + p_inq->state = BTM_INQ_INACTIVE_STATE; + } #if (defined(BTA_HOST_INTERLEAVE_SEARCH) && BTA_HOST_INTERLEAVE_SEARCH == TRUE) - if (p_inq->next_state==BTM_NO_INTERLEAVING) - p_inq->next_state=BTM_FINISH; - else - { + if (p_inq->next_state == BTM_NO_INTERLEAVING) { + p_inq->next_state = BTM_FINISH; + } else { BTM_TRACE_API("BTM:Interleaving: Started BTM inq, Advancing to next state: %d\n", - p_inq->next_state+1); - p_inq->next_state+=1; + p_inq->next_state + 1); + p_inq->next_state += 1; } - } - if (status!=BTM_CMD_STARTED) - { - /* Some error beginning the scan process. - Reset the next_state parameter.. Do we need to reset the inq_active also? - */ + } + if (status != BTM_CMD_STARTED) { + /* Some error beginning the scan process. + Reset the next_state parameter.. Do we need to reset the inq_active also? + */ BTM_TRACE_API("BTM:Interleaving: Error in Starting inquiry, status: 0x%02x\n", status); - p_inq->next_state=BTM_BR_ONE; - } + p_inq->next_state = BTM_BR_ONE; + } #endif @@ -1048,32 +1043,29 @@ tBTM_STATUS BTM_StartInquiry (tBTM_INQ_PARMS *p_inqparms, tBTM_INQ_RESULTS_CB *p ** *******************************************************************************/ tBTM_STATUS BTM_ReadRemoteDeviceName (BD_ADDR remote_bda, tBTM_CMPL_CB *p_cb - ,tBT_TRANSPORT transport) + , tBT_TRANSPORT transport) { tBTM_INQ_INFO *p_cur = NULL; tINQ_DB_ENT *p_i; BTM_TRACE_API ("BTM_ReadRemoteDeviceName: bd addr [%02x%02x%02x%02x%02x%02x]\n", - remote_bda[0], remote_bda[1], remote_bda[2], - remote_bda[3], remote_bda[4], remote_bda[5]); + remote_bda[0], remote_bda[1], remote_bda[2], + remote_bda[3], remote_bda[4], remote_bda[5]); /* Use the remote device's clock offset if it is in the local inquiry database */ - if ((p_i = btm_inq_db_find (remote_bda)) != NULL) - { + if ((p_i = btm_inq_db_find (remote_bda)) != NULL) { p_cur = &p_i->inq_info; } BTM_TRACE_API ("no device found in inquiry db\n"); #if (BLE_INCLUDED == TRUE) - if (transport == BT_TRANSPORT_LE) - { + if (transport == BT_TRANSPORT_LE) { return btm_ble_read_remote_name(remote_bda, p_cur, p_cb); - } - else + } else #endif - return (btm_initiate_rem_name (remote_bda, p_cur, BTM_RMT_NAME_EXT, - BTM_EXT_RMT_NAME_TIMEOUT, p_cb)); + return (btm_initiate_rem_name (remote_bda, p_cur, BTM_RMT_NAME_EXT, + BTM_EXT_RMT_NAME_TIMEOUT, p_cb)); } /******************************************************************************* @@ -1099,25 +1091,24 @@ tBTM_STATUS BTM_CancelRemoteDeviceName (void) BTM_TRACE_API ("BTM_CancelRemoteDeviceName()\n"); /* Make sure there is not already one in progress */ - if (p_inq->remname_active) - { + if (p_inq->remname_active) { #if BLE_INCLUDED == TRUE - if (BTM_UseLeLink(p_inq->remname_bda)) - { - if (btm_ble_cancel_remote_name(p_inq->remname_bda)) + if (BTM_UseLeLink(p_inq->remname_bda)) { + if (btm_ble_cancel_remote_name(p_inq->remname_bda)) { return (BTM_CMD_STARTED); - else + } else { return (BTM_UNKNOWN_ADDR); - } - else + } + } else #endif - if (btsnd_hcic_rmt_name_req_cancel (p_inq->remname_bda)) - return (BTM_CMD_STARTED); - else - return (BTM_NO_RESOURCES); - } - else + if (btsnd_hcic_rmt_name_req_cancel (p_inq->remname_bda)) { + return (BTM_CMD_STARTED); + } else { + return (BTM_NO_RESOURCES); + } + } else { return (BTM_WRONG_MODE); + } } /******************************************************************************* @@ -1134,11 +1125,12 @@ tBTM_STATUS BTM_CancelRemoteDeviceName (void) tBTM_INQ_INFO *BTM_InqDbRead (BD_ADDR p_bda) { BTM_TRACE_API ("BTM_InqDbRead: bd addr [%02x%02x%02x%02x%02x%02x]\n", - p_bda[0], p_bda[1], p_bda[2], p_bda[3], p_bda[4], p_bda[5]); + p_bda[0], p_bda[1], p_bda[2], p_bda[3], p_bda[4], p_bda[5]); tINQ_DB_ENT *p_ent = btm_inq_db_find(p_bda); - if (!p_ent) - return NULL; + if (!p_ent) { + return NULL; + } return &p_ent->inq_info; } @@ -1161,10 +1153,10 @@ tBTM_INQ_INFO *BTM_InqDbFirst (void) UINT16 xx; tINQ_DB_ENT *p_ent = btm_cb.btm_inq_vars.inq_db; - for (xx = 0; xx < BTM_INQ_DB_SIZE; xx++, p_ent++) - { - if (p_ent->in_use) + for (xx = 0; xx < BTM_INQ_DB_SIZE; xx++, p_ent++) { + if (p_ent->in_use) { return (&p_ent->inq_info); + } } /* If here, no used entry found */ @@ -1188,22 +1180,21 @@ tBTM_INQ_INFO *BTM_InqDbNext (tBTM_INQ_INFO *p_cur) tINQ_DB_ENT *p_ent; UINT16 inx; - if (p_cur) - { + if (p_cur) { p_ent = (tINQ_DB_ENT *) ((UINT8 *)p_cur - offsetof (tINQ_DB_ENT, inq_info)); inx = (UINT16)((p_ent - btm_cb.btm_inq_vars.inq_db) + 1); - for (p_ent = &btm_cb.btm_inq_vars.inq_db[inx]; inx < BTM_INQ_DB_SIZE; inx++, p_ent++) - { - if (p_ent->in_use) + for (p_ent = &btm_cb.btm_inq_vars.inq_db[inx]; inx < BTM_INQ_DB_SIZE; inx++, p_ent++) { + if (p_ent->in_use) { return (&p_ent->inq_info); + } } /* If here, more entries found */ return ((tBTM_INQ_INFO *)NULL); - } - else + } else { return (BTM_InqDbFirst()); + } } @@ -1227,8 +1218,9 @@ tBTM_STATUS BTM_ClearInqDb (BD_ADDR p_bda) /* If an inquiry or remote name is in progress return busy */ if (p_inq->inq_active != BTM_INQUIRY_INACTIVE || - p_inq->inqfilt_active) + p_inq->inqfilt_active) { return (BTM_BUSY); + } btm_clr_inq_db(p_bda); @@ -1248,22 +1240,22 @@ tBTM_STATUS BTM_ClearInqDb (BD_ADDR p_bda) *******************************************************************************/ tBTM_STATUS BTM_ReadInquiryRspTxPower (tBTM_CMPL_CB *p_cb) { - if (btm_cb.devcb.p_txpwer_cmpl_cb) + if (btm_cb.devcb.p_txpwer_cmpl_cb) { return (BTM_BUSY); + } - btu_start_timer (&btm_cb.devcb.txpwer_timer, BTU_TTYPE_BTM_ACL, BTM_INQ_REPLY_TIMEOUT ); + btu_start_timer (&btm_cb.devcb.txpwer_timer, BTU_TTYPE_BTM_ACL, BTM_INQ_REPLY_TIMEOUT ); btm_cb.devcb.p_txpwer_cmpl_cb = p_cb; - if (!btsnd_hcic_read_inq_tx_power ()) - { + if (!btsnd_hcic_read_inq_tx_power ()) { btm_cb.devcb.p_txpwer_cmpl_cb = NULL; btu_stop_timer (&btm_cb.devcb.txpwer_timer); return (BTM_NO_RESOURCES); - } - else + } else { return (BTM_CMD_STARTED); + } } /********************************************************************************* @@ -1294,18 +1286,15 @@ void btm_inq_db_reset (void) btu_stop_timer (&p_inq->inq_timer_ent); /* If an inquiry or periodic inquiry is active, reset the mode to inactive */ - if (p_inq->inq_active != BTM_INQUIRY_INACTIVE) - { + if (p_inq->inq_active != BTM_INQUIRY_INACTIVE) { temp_inq_active = p_inq->inq_active; /* Save so state can change BEFORE callback is called */ p_inq->inq_active = BTM_INQUIRY_INACTIVE; /* If not a periodic inquiry, the complete callback must be called to notify caller */ if (temp_inq_active == BTM_LIMITED_INQUIRY_ACTIVE || - temp_inq_active == BTM_GENERAL_INQUIRY_ACTIVE) - { - if (p_inq->p_inq_cmpl_cb) - { + temp_inq_active == BTM_GENERAL_INQUIRY_ACTIVE) { + if (p_inq->p_inq_cmpl_cb) { num_responses = 0; (*p_inq->p_inq_cmpl_cb)(&num_responses); } @@ -1313,14 +1302,12 @@ void btm_inq_db_reset (void) } /* Cancel a remote name request if active, and notify the caller (if waiting) */ - if (p_inq->remname_active ) - { + if (p_inq->remname_active ) { btu_stop_timer (&p_inq->rmt_name_timer_ent); p_inq->remname_active = FALSE; memset(p_inq->remname_bda, 0, BD_ADDR_LEN); - if (p_inq->p_remname_cmpl_cb) - { + if (p_inq->p_remname_cmpl_cb) { rem_name.status = BTM_DEV_RESET; (*p_inq->p_remname_cmpl_cb)(&rem_name); @@ -1329,12 +1316,10 @@ void btm_inq_db_reset (void) } /* Cancel an inquiry filter request if active, and notify the caller (if waiting) */ - if (p_inq->inqfilt_active) - { + if (p_inq->inqfilt_active) { p_inq->inqfilt_active = FALSE; - if (p_inq->p_inqfilter_cmpl_cb) - { + if (p_inq->p_inqfilter_cmpl_cb) { status = BTM_DEV_RESET; (*p_inq->p_inqfilter_cmpl_cb)(&status); } @@ -1388,22 +1373,17 @@ void btm_inq_db_init (void) *******************************************************************************/ void btm_inq_stop_on_ssp(void) { - UINT8 normal_active = (BTM_GENERAL_INQUIRY_ACTIVE|BTM_LIMITED_INQUIRY_ACTIVE); + UINT8 normal_active = (BTM_GENERAL_INQUIRY_ACTIVE | BTM_LIMITED_INQUIRY_ACTIVE); #if (BTM_INQ_DEBUG == TRUE) BTM_TRACE_DEBUG ("btm_inq_stop_on_ssp: no_inc_ssp=%d inq_active:0x%x state:%d inqfilt_active:%d\n", - btm_cb.btm_inq_vars.no_inc_ssp, btm_cb.btm_inq_vars.inq_active, btm_cb.btm_inq_vars.state, btm_cb.btm_inq_vars.inqfilt_active); + btm_cb.btm_inq_vars.no_inc_ssp, btm_cb.btm_inq_vars.inq_active, btm_cb.btm_inq_vars.state, btm_cb.btm_inq_vars.inqfilt_active); #endif - if (btm_cb.btm_inq_vars.no_inc_ssp) - { - if (btm_cb.btm_inq_vars.state == BTM_INQ_ACTIVE_STATE) - { - if (btm_cb.btm_inq_vars.inq_active & BTM_PERIODIC_INQUIRY_ACTIVE) - { + if (btm_cb.btm_inq_vars.no_inc_ssp) { + if (btm_cb.btm_inq_vars.state == BTM_INQ_ACTIVE_STATE) { + if (btm_cb.btm_inq_vars.inq_active & BTM_PERIODIC_INQUIRY_ACTIVE) { BTM_CancelPeriodicInquiry(); - } - else if (btm_cb.btm_inq_vars.inq_active & normal_active) - { + } else if (btm_cb.btm_inq_vars.inq_active & normal_active) { /* can not call BTM_CancelInquiry() here. We need to report inquiry complete evt */ btsnd_hcic_inq_cancel(); } @@ -1448,23 +1428,20 @@ void btm_clr_inq_db (BD_ADDR p_bda) #if (BTM_INQ_DEBUG == TRUE) BTM_TRACE_DEBUG ("btm_clr_inq_db: inq_active:0x%x state:%d\n", - btm_cb.btm_inq_vars.inq_active, btm_cb.btm_inq_vars.state); + btm_cb.btm_inq_vars.inq_active, btm_cb.btm_inq_vars.state); #endif - for (xx = 0; xx < BTM_INQ_DB_SIZE; xx++, p_ent++) - { - if (p_ent->in_use) - { + for (xx = 0; xx < BTM_INQ_DB_SIZE; xx++, p_ent++) { + if (p_ent->in_use) { /* If this is the specified BD_ADDR or clearing all devices */ if (p_bda == NULL || - (!memcmp (p_ent->inq_info.results.remote_bd_addr, p_bda, BD_ADDR_LEN))) - { + (!memcmp (p_ent->inq_info.results.remote_bd_addr, p_bda, BD_ADDR_LEN))) { p_ent->in_use = FALSE; } } } #if (BTM_INQ_DEBUG == TRUE) BTM_TRACE_DEBUG ("inq_active:0x%x state:%d\n", - btm_cb.btm_inq_vars.inq_active, btm_cb.btm_inq_vars.state); + btm_cb.btm_inq_vars.inq_active, btm_cb.btm_inq_vars.state); #endif } @@ -1483,8 +1460,7 @@ static void btm_clr_inq_result_flt (void) { tBTM_INQUIRY_VAR_ST *p_inq = &btm_cb.btm_inq_vars; - if (p_inq->p_bd_db) - { + if (p_inq->p_bd_db) { GKI_freebuf(p_inq->p_bd_db); p_inq->p_bd_db = NULL; } @@ -1509,18 +1485,18 @@ BOOLEAN btm_inq_find_bdaddr (BD_ADDR p_bda) UINT16 xx; /* Don't bother searching, database doesn't exist or periodic mode */ - if ((p_inq->inq_active & BTM_PERIODIC_INQUIRY_ACTIVE) || !p_db) + if ((p_inq->inq_active & BTM_PERIODIC_INQUIRY_ACTIVE) || !p_db) { return (FALSE); - - for (xx = 0; xx < p_inq->num_bd_entries; xx++, p_db++) - { - if (!memcmp(p_db->bd_addr, p_bda, BD_ADDR_LEN) - && p_db->inq_count == p_inq->inq_counter) - return (TRUE); } - if (xx < p_inq->max_bd_entries) - { + for (xx = 0; xx < p_inq->num_bd_entries; xx++, p_db++) { + if (!memcmp(p_db->bd_addr, p_bda, BD_ADDR_LEN) + && p_db->inq_count == p_inq->inq_counter) { + return (TRUE); + } + } + + if (xx < p_inq->max_bd_entries) { p_db->inq_count = p_inq->inq_counter; memcpy(p_db->bd_addr, p_bda, BD_ADDR_LEN); p_inq->num_bd_entries++; @@ -1545,10 +1521,10 @@ tINQ_DB_ENT *btm_inq_db_find (BD_ADDR p_bda) UINT16 xx; tINQ_DB_ENT *p_ent = btm_cb.btm_inq_vars.inq_db; - for (xx = 0; xx < BTM_INQ_DB_SIZE; xx++, p_ent++) - { - if ((p_ent->in_use) && (!memcmp (p_ent->inq_info.results.remote_bd_addr, p_bda, BD_ADDR_LEN))) + for (xx = 0; xx < BTM_INQ_DB_SIZE; xx++, p_ent++) { + if ((p_ent->in_use) && (!memcmp (p_ent->inq_info.results.remote_bd_addr, p_bda, BD_ADDR_LEN))) { return (p_ent); + } } /* If here, not found */ @@ -1573,10 +1549,8 @@ tINQ_DB_ENT *btm_inq_db_new (BD_ADDR p_bda) tINQ_DB_ENT *p_old = btm_cb.btm_inq_vars.inq_db; UINT32 ot = 0xFFFFFFFF; - for (xx = 0; xx < BTM_INQ_DB_SIZE; xx++, p_ent++) - { - if (!p_ent->in_use) - { + for (xx = 0; xx < BTM_INQ_DB_SIZE; xx++, p_ent++) { + if (!p_ent->in_use) { memset (p_ent, 0, sizeof (tINQ_DB_ENT)); memcpy (p_ent->inq_info.results.remote_bd_addr, p_bda, BD_ADDR_LEN); p_ent->in_use = TRUE; @@ -1584,8 +1558,7 @@ tINQ_DB_ENT *btm_inq_db_new (BD_ADDR p_bda) return (p_ent); } - if (p_ent->time_of_resp < ot) - { + if (p_ent->time_of_resp < ot) { p_old = p_ent; ot = p_ent->time_of_resp; } @@ -1625,7 +1598,7 @@ tINQ_DB_ENT *btm_inq_db_new (BD_ADDR p_bda) ** *******************************************************************************/ static tBTM_STATUS btm_set_inq_event_filter (UINT8 filter_cond_type, - tBTM_INQ_FILT_COND *p_filt_cond) + tBTM_INQ_FILT_COND *p_filt_cond) { UINT8 condition_length = DEV_CLASS_LEN * 2; UINT8 condition_buf[DEV_CLASS_LEN * 2]; @@ -1633,15 +1606,14 @@ static tBTM_STATUS btm_set_inq_event_filter (UINT8 filter_cond_type, #if (BTM_INQ_DEBUG == TRUE) BTM_TRACE_DEBUG ("btm_set_inq_event_filter: filter type %d [Clear-0, COD-1, BDADDR-2]\n", - filter_cond_type); + filter_cond_type); BTM_TRACE_DEBUG (" condition [%02x%02x%02x %02x%02x%02x]\n", - p_filt_cond->bdaddr_cond[0], p_filt_cond->bdaddr_cond[1], p_filt_cond->bdaddr_cond[2], - p_filt_cond->bdaddr_cond[3], p_filt_cond->bdaddr_cond[4], p_filt_cond->bdaddr_cond[5]); + p_filt_cond->bdaddr_cond[0], p_filt_cond->bdaddr_cond[1], p_filt_cond->bdaddr_cond[2], + p_filt_cond->bdaddr_cond[3], p_filt_cond->bdaddr_cond[4], p_filt_cond->bdaddr_cond[5]); #endif /* Load the correct filter condition to pass to the lower layer */ - switch (filter_cond_type) - { + switch (filter_cond_type) { case BTM_FILTER_COND_DEVICE_CLASS: /* copy the device class and device class fields into contiguous memory to send to HCI */ memcpy (condition_buf, p_filt_cond->cod_cond.dev_class, DEV_CLASS_LEN); @@ -1671,9 +1643,11 @@ static tBTM_STATUS btm_set_inq_event_filter (UINT8 filter_cond_type, if (btsnd_hcic_set_event_filter(HCI_FILTER_INQUIRY_RESULT, filter_cond_type, p_cond, condition_length)) + { return (BTM_CMD_STARTED); - else + } else { return (BTM_NO_RESOURCES); + } } @@ -1697,43 +1671,38 @@ void btm_event_filter_complete (UINT8 *p) #if (BTM_INQ_DEBUG == TRUE) BTM_TRACE_DEBUG ("btm_event_filter_complete: inq_active:0x%x state:%d inqfilt_active:%d\n", - btm_cb.btm_inq_vars.inq_active, btm_cb.btm_inq_vars.state, btm_cb.btm_inq_vars.inqfilt_active); + btm_cb.btm_inq_vars.inq_active, btm_cb.btm_inq_vars.state, btm_cb.btm_inq_vars.inqfilt_active); #endif /* If the filter complete event is from an old or cancelled request, ignore it */ - if(p_inq->pending_filt_complete_event) - { + if (p_inq->pending_filt_complete_event) { p_inq->pending_filt_complete_event--; return; } /* Only process the inquiry filter; Ignore the connection filter until it is used by the upper layers */ - if (p_inq->inqfilt_active == TRUE ) - { + if (p_inq->inqfilt_active == TRUE ) { /* Extract the returned status from the buffer */ STREAM_TO_UINT8 (hci_status, p); - if (hci_status != HCI_SUCCESS) - { + if (hci_status != HCI_SUCCESS) { /* If standalone operation, return the error status; if embedded in the inquiry, continue the inquiry */ BTM_TRACE_WARNING ("BTM Warning: Set Event Filter Failed (HCI returned 0x%x)\n", hci_status); status = BTM_ERR_PROCESSING; - } - else + } else { status = BTM_SUCCESS; + } /* If the set filter was initiated externally (via BTM_SetInqEventFilter), call the callback function to notify the initiator that it has completed */ - if (p_inq->state == BTM_INQ_INACTIVE_STATE) - { + if (p_inq->state == BTM_INQ_INACTIVE_STATE) { p_inq->inqfilt_active = FALSE; - if (p_cb) + if (p_cb) { (*p_cb) (&status); - } - else /* An inquiry is active (the set filter command was internally generated), + } + } else /* An inquiry is active (the set filter command was internally generated), process the next state of the process (Set a new filter or start the inquiry). */ { - if(status != BTM_SUCCESS) - { + if (status != BTM_SUCCESS) { /* Process the inquiry complete (Error Status) */ btm_process_inq_complete (BTM_ERR_PROCESSING, (UINT8)(p_inq->inqparms.mode & BTM_BR_INQUIRY_MASK)); @@ -1746,22 +1715,16 @@ void btm_event_filter_complete (UINT8 *p) } /* Check to see if a new filter needs to be set up */ - if (p_inq->state == BTM_INQ_CLR_FILT_STATE) - { - if ((status = btm_set_inq_event_filter (p_inq->inqparms.filter_cond_type, &p_inq->inqparms.filter_cond)) == BTM_CMD_STARTED) - { + if (p_inq->state == BTM_INQ_CLR_FILT_STATE) { + if ((status = btm_set_inq_event_filter (p_inq->inqparms.filter_cond_type, &p_inq->inqparms.filter_cond)) == BTM_CMD_STARTED) { p_inq->state = BTM_INQ_SET_FILT_STATE; - } - else /* Error setting the filter: Call the initiator's callback function to indicate a failure */ - { + } else { /* Error setting the filter: Call the initiator's callback function to indicate a failure */ p_inq->inqfilt_active = FALSE; /* Process the inquiry complete (Error Status) */ btm_process_inq_complete (BTM_ERR_PROCESSING, (UINT8)(p_inq->inqparms.mode & BTM_BR_INQUIRY_MASK)); } - } - else /* Initiate the Inquiry or Periodic Inquiry */ - { + } else { /* Initiate the Inquiry or Periodic Inquiry */ p_inq->state = BTM_INQ_ACTIVE_STATE; p_inq->inqfilt_active = FALSE; btm_initiate_inquiry (p_inq); @@ -1796,12 +1759,11 @@ static void btm_initiate_inquiry (tBTM_INQUIRY_VAR_ST *p_inq) #if (BTM_INQ_DEBUG == TRUE) BTM_TRACE_DEBUG ("btm_initiate_inquiry: inq_active:0x%x state:%d inqfilt_active:%d\n", - btm_cb.btm_inq_vars.inq_active, btm_cb.btm_inq_vars.state, btm_cb.btm_inq_vars.inqfilt_active); + btm_cb.btm_inq_vars.inq_active, btm_cb.btm_inq_vars.state, btm_cb.btm_inq_vars.inqfilt_active); #endif btm_acl_update_busy_level (BTM_BLI_INQ_EVT); - if (p_inq->inq_active & BTM_SSP_INQUIRY_ACTIVE) - { + if (p_inq->inq_active & BTM_SSP_INQUIRY_ACTIVE) { btm_process_inq_complete (BTM_NO_RESOURCES, (UINT8)(p_inqparms->mode & BTM_BR_INQUIRY_MASK)); return; } @@ -1811,29 +1773,27 @@ static void btm_initiate_inquiry (tBTM_INQUIRY_VAR_ST *p_inq) lap = (p_inq->inq_active & BTM_LIMITED_INQUIRY_ACTIVE) ? &limited_inq_lap : &general_inq_lap; - if (p_inq->inq_active & BTM_PERIODIC_INQUIRY_ACTIVE) - { + if (p_inq->inq_active & BTM_PERIODIC_INQUIRY_ACTIVE) { if (!btsnd_hcic_per_inq_mode (p_inq->per_max_delay, p_inq->per_min_delay, *lap, p_inqparms->duration, - p_inqparms->max_resps)) + p_inqparms->max_resps)) { btm_process_inq_complete (BTM_NO_RESOURCES, (UINT8)(p_inqparms->mode & BTM_BR_INQUIRY_MASK)); - } - else - { + } + } else { btm_clr_inq_result_flt(); /* Allocate memory to hold bd_addrs responding */ - if ((p_inq->p_bd_db = (tINQ_BDADDR *)GKI_getbuf(GKI_MAX_BUF_SIZE)) != NULL) - { + if ((p_inq->p_bd_db = (tINQ_BDADDR *)GKI_getbuf(GKI_MAX_BUF_SIZE)) != NULL) { p_inq->max_bd_entries = (UINT16)(GKI_MAX_BUF_SIZE / sizeof(tINQ_BDADDR)); memset(p_inq->p_bd_db, 0, GKI_MAX_BUF_SIZE); -/* BTM_TRACE_DEBUG("btm_initiate_inquiry: memory allocated for %d bdaddrs", - p_inq->max_bd_entries); */ + /* BTM_TRACE_DEBUG("btm_initiate_inquiry: memory allocated for %d bdaddrs", + p_inq->max_bd_entries); */ } - if (!btsnd_hcic_inquiry(*lap, p_inqparms->duration, 0)) + if (!btsnd_hcic_inquiry(*lap, p_inqparms->duration, 0)) { btm_process_inq_complete (BTM_NO_RESOURCES, (UINT8)(p_inqparms->mode & BTM_BR_INQUIRY_MASK)); + } } } @@ -1857,7 +1817,7 @@ void btm_process_inq_results (UINT8 *p, UINT8 inq_res_mode) UINT8 num_resp, xx; BD_ADDR bda; tINQ_DB_ENT *p_i; - tBTM_INQ_RESULTS *p_cur=NULL; + tBTM_INQ_RESULTS *p_cur = NULL; BOOLEAN is_new = TRUE; BOOLEAN update = FALSE; INT8 i_rssi; @@ -1873,31 +1833,29 @@ void btm_process_inq_results (UINT8 *p, UINT8 inq_res_mode) #if (BTM_INQ_DEBUG == TRUE) BTM_TRACE_DEBUG ("btm_process_inq_results inq_active:0x%x state:%d inqfilt_active:%d inq_res_mode=%d\n", - btm_cb.btm_inq_vars.inq_active, btm_cb.btm_inq_vars.state, btm_cb.btm_inq_vars.inqfilt_active, inq_res_mode); + btm_cb.btm_inq_vars.inq_active, btm_cb.btm_inq_vars.state, btm_cb.btm_inq_vars.inqfilt_active, inq_res_mode); #endif /* Only process the results if the BR inquiry is still active */ - if (!(p_inq->inq_active & BTM_BR_INQ_ACTIVE_MASK)) + if (!(p_inq->inq_active & BTM_BR_INQ_ACTIVE_MASK)) { return; + } STREAM_TO_UINT8 (num_resp, p); - for (xx = 0; xx < num_resp; xx++) - { + for (xx = 0; xx < num_resp; xx++) { update = FALSE; /* Extract inquiry results */ STREAM_TO_BDADDR (bda, p); STREAM_TO_UINT8 (page_scan_rep_mode, p); STREAM_TO_UINT8 (page_scan_per_mode, p); - if (inq_res_mode == BTM_INQ_RESULT_STANDARD) - { + if (inq_res_mode == BTM_INQ_RESULT_STANDARD) { STREAM_TO_UINT8(page_scan_mode, p); } STREAM_TO_DEVCLASS (dc, p); STREAM_TO_UINT16 (clock_offset, p); - if (inq_res_mode != BTM_INQ_RESULT_STANDARD) - { + if (inq_res_mode != BTM_INQ_RESULT_STANDARD) { STREAM_TO_UINT8(rssi, p); } @@ -1909,38 +1867,35 @@ void btm_process_inq_results (UINT8 *p, UINT8 inq_res_mode) responses could be processed which can confuse some apps */ if (p_inq->inqparms.max_resps && - p_inq->inq_cmpl_info.num_resp >= p_inq->inqparms.max_resps + p_inq->inq_cmpl_info.num_resp >= p_inq->inqparms.max_resps #if BLE_INCLUDED == TRUE - /* new device response */ - && ( p_i == NULL || - /* exisiting device with BR/EDR info */ - (p_i && (p_i->inq_info.results.device_type & BT_DEVICE_TYPE_BREDR) != 0) - ) + /* new device response */ + && ( p_i == NULL || + /* exisiting device with BR/EDR info */ + (p_i && (p_i->inq_info.results.device_type & BT_DEVICE_TYPE_BREDR) != 0) + ) #endif - ) - { + ) { BTM_TRACE_WARNING("INQ RES: Extra Response Received...ignoring\n"); return; } /* Check if this address has already been processed for this inquiry */ - if (btm_inq_find_bdaddr(bda)) - { - BTM_TRACE_DEBUG("BDA seen before [%02x%02x %02x%02x %02x%02x]\n", - bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]); - /* By default suppose no update needed */ + if (btm_inq_find_bdaddr(bda)) { + BTM_TRACE_DEBUG("BDA seen before [%02x%02x %02x%02x %02x%02x]\n", + bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]); + /* By default suppose no update needed */ i_rssi = (INT8)rssi; /* If this new RSSI is higher than the last one */ - if(p_inq->inqparms.report_dup && (rssi != 0) && - p_i && (i_rssi > p_i->inq_info.results.rssi || p_i->inq_info.results.rssi == 0 + if (p_inq->inqparms.report_dup && (rssi != 0) && + p_i && (i_rssi > p_i->inq_info.results.rssi || p_i->inq_info.results.rssi == 0 #if BLE_INCLUDED == TRUE - /* BR/EDR inquiry information update */ - || (p_i->inq_info.results.device_type & BT_DEVICE_TYPE_BREDR) != 0 + /* BR/EDR inquiry information update */ + || (p_i->inq_info.results.device_type & BT_DEVICE_TYPE_BREDR) != 0 #endif - )) - { + )) { p_cur = &p_i->inq_info.results; BTM_TRACE_DEBUG("update RSSI new:%d, old:%d\n", i_rssi, p_cur->rssi); p_cur->rssi = i_rssi; @@ -1948,19 +1903,18 @@ void btm_process_inq_results (UINT8 *p, UINT8 inq_res_mode) } /* If we received a second Extended Inq Event for an already */ /* discovered device, this is because for the first one EIR was not received */ - else if ((inq_res_mode == BTM_INQ_RESULT_EXTENDED) && (p_i)) - { + else if ((inq_res_mode == BTM_INQ_RESULT_EXTENDED) && (p_i)) { p_cur = &p_i->inq_info.results; update = TRUE; } /* If no update needed continue with next response (if any) */ - else + else { continue; + } } /* If existing entry, use that, else get a new one (possibly reusing the oldest) */ - if (p_i == NULL) - { + if (p_i == NULL) { p_i = btm_inq_db_new (bda); is_new = TRUE; } @@ -1971,19 +1925,20 @@ void btm_process_inq_results (UINT8 *p, UINT8 inq_res_mode) */ else if (p_i->inq_count == p_inq->inq_counter #if (BLE_INCLUDED == TRUE ) - && (p_i->inq_info.results.device_type == BT_DEVICE_TYPE_BREDR) + && (p_i->inq_info.results.device_type == BT_DEVICE_TYPE_BREDR) #endif - ) + ) { is_new = FALSE; + } /* keep updating RSSI to have latest value */ - if( inq_res_mode != BTM_INQ_RESULT_STANDARD ) + if ( inq_res_mode != BTM_INQ_RESULT_STANDARD ) { p_i->inq_info.results.rssi = (INT8)rssi; - else + } else { p_i->inq_info.results.rssi = BTM_INQ_RES_IGNORE_RSSI; + } - if (is_new == TRUE) - { + if (is_new == TRUE) { /* Save the info */ p_cur = &p_i->inq_info.results; p_cur->page_scan_rep_mode = page_scan_rep_mode; @@ -1996,39 +1951,39 @@ void btm_process_inq_results (UINT8 *p, UINT8 inq_res_mode) p_i->time_of_resp = GKI_get_os_tick_count(); - if (p_i->inq_count != p_inq->inq_counter) - p_inq->inq_cmpl_info.num_resp++; /* A new response was found */ + if (p_i->inq_count != p_inq->inq_counter) { + p_inq->inq_cmpl_info.num_resp++; /* A new response was found */ + } #if (defined BLE_INCLUDED && BLE_INCLUDED == TRUE) p_cur->inq_result_type = BTM_INQ_RESULT_BR; - if (p_i->inq_count != p_inq->inq_counter) - { + if (p_i->inq_count != p_inq->inq_counter) { p_cur->device_type = BT_DEVICE_TYPE_BREDR; p_i->scan_rsp = FALSE; - } - else + } else { p_cur->device_type |= BT_DEVICE_TYPE_BREDR; + } #endif - p_i->inq_count = p_inq->inq_counter; /* Mark entry for current inquiry */ + p_i->inq_count = p_inq->inq_counter; /* Mark entry for current inquiry */ /* If the number of responses found and not unlimited, issue a cancel inquiry */ if (!(p_inq->inq_active & BTM_PERIODIC_INQUIRY_ACTIVE) && - p_inq->inqparms.max_resps && - p_inq->inq_cmpl_info.num_resp == p_inq->inqparms.max_resps + p_inq->inqparms.max_resps && + p_inq->inq_cmpl_info.num_resp == p_inq->inqparms.max_resps #if BLE_INCLUDED == TRUE - /* BLE scanning is active and received adv */ - && ((((p_inq->inqparms.mode & BTM_BLE_INQUIRY_MASK) != 0) && - p_cur->device_type == BT_DEVICE_TYPE_DUMO && p_i->scan_rsp) || - (p_inq->inqparms.mode & BTM_BLE_INQUIRY_MASK) == 0) + /* BLE scanning is active and received adv */ + && ((((p_inq->inqparms.mode & BTM_BLE_INQUIRY_MASK) != 0) && + p_cur->device_type == BT_DEVICE_TYPE_DUMO && p_i->scan_rsp) || + (p_inq->inqparms.mode & BTM_BLE_INQUIRY_MASK) == 0) #endif - ) - { -/* BTM_TRACE_DEBUG("BTMINQ: Found devices, cancelling inquiry..."); */ + ) { + /* BTM_TRACE_DEBUG("BTMINQ: Found devices, cancelling inquiry..."); */ btsnd_hcic_inq_cancel(); #if BLE_INCLUDED == TRUE - if ((p_inq->inqparms.mode & BTM_BLE_INQUIRY_MASK) != 0) + if ((p_inq->inqparms.mode & BTM_BLE_INQUIRY_MASK) != 0) { btm_ble_stop_inquiry(); + } #endif btm_acl_update_busy_level (BTM_BLI_INQ_DONE_EVT); } @@ -2036,22 +1991,21 @@ void btm_process_inq_results (UINT8 *p, UINT8 inq_res_mode) p_i->inq_info.appl_knows_rem_name = FALSE; } - if (is_new || update) - { - if( inq_res_mode == BTM_INQ_RESULT_EXTENDED ) - { + if (is_new || update) { + if ( inq_res_mode == BTM_INQ_RESULT_EXTENDED ) { memset( p_cur->eir_uuid, 0, - BTM_EIR_SERVICE_ARRAY_SIZE * (BTM_EIR_ARRAY_BITS/8)); + BTM_EIR_SERVICE_ARRAY_SIZE * (BTM_EIR_ARRAY_BITS / 8)); /* set bit map of UUID list from received EIR */ btm_set_eir_uuid( p, p_cur ); p_eir_data = p; - } - else + } else { p_eir_data = NULL; + } /* If a callback is registered, call it with the results */ - if (p_inq_results_cb) + if (p_inq_results_cb) { (p_inq_results_cb)((tBTM_INQ_RESULTS *) p_cur, p_eir_data); + } } } } @@ -2071,21 +2025,17 @@ void btm_sort_inq_result(void) UINT8 xx, yy, num_resp; tINQ_DB_ENT *p_tmp = NULL; tINQ_DB_ENT *p_ent = btm_cb.btm_inq_vars.inq_db; - tINQ_DB_ENT *p_next = btm_cb.btm_inq_vars.inq_db+1; + tINQ_DB_ENT *p_next = btm_cb.btm_inq_vars.inq_db + 1; int size; - num_resp = (btm_cb.btm_inq_vars.inq_cmpl_info.num_respinq_info.results.rssi < p_next->inq_info.results.rssi) - { + for (xx = 0; xx < num_resp - 1; xx++, p_ent++) { + for (yy = xx + 1, p_next = p_ent + 1; yy < num_resp; yy++, p_next++) { + if (p_ent->inq_info.results.rssi < p_next->inq_info.results.rssi) { memcpy (p_tmp, p_next, size); memcpy (p_next, p_ent, size); memcpy (p_ent, p_tmp, size); @@ -2119,10 +2069,9 @@ void btm_process_inq_complete (UINT8 status, UINT8 mode) /* inquiry inactive case happens when inquiry is cancelled. Make mode 0 for no further inquiries from the current inquiry process */ - if(status!=HCI_SUCCESS || p_inq->next_state==BTM_FINISH || !p_inq->inq_active) - { + if (status != HCI_SUCCESS || p_inq->next_state == BTM_FINISH || !p_inq->inq_active) { /* re-initialize for next inquiry request */ - p_inq->next_state=BTM_BR_ONE; + p_inq->next_state = BTM_BR_ONE; /* make the mode 0 here */ p_inq->inqparms.mode &= ~(p_inq->inqparms.mode); @@ -2133,28 +2082,25 @@ void btm_process_inq_complete (UINT8 status, UINT8 mode) p_inq->inqparms.mode &= ~(mode); #endif - if(p_inq->scan_type == INQ_LE_OBSERVE && !p_inq->inq_active) - { + if (p_inq->scan_type == INQ_LE_OBSERVE && !p_inq->inq_active) { /*end of LE observe*/ p_inq->p_inq_ble_results_cb = (tBTM_INQ_RESULTS_CB *) NULL; p_inq->p_inq_ble_cmpl_cb = (tBTM_CMPL_CB *) NULL; - p_inq->scan_type=INQ_NONE; + p_inq->scan_type = INQ_NONE; } #if (BTM_INQ_DEBUG == TRUE) BTM_TRACE_DEBUG ("btm_process_inq_complete inq_active:0x%x state:%d inqfilt_active:%d\n", - btm_cb.btm_inq_vars.inq_active, btm_cb.btm_inq_vars.state, btm_cb.btm_inq_vars.inqfilt_active); + btm_cb.btm_inq_vars.inq_active, btm_cb.btm_inq_vars.state, btm_cb.btm_inq_vars.inqfilt_active); #endif btm_acl_update_busy_level (BTM_BLI_INQ_DONE_EVT); /* Ignore any stray or late complete messages if the inquiry is not active */ - if (p_inq->inq_active) - { + if (p_inq->inq_active) { p_inq->inq_cmpl_info.status = (tBTM_STATUS)((status == HCI_SUCCESS) ? BTM_SUCCESS : BTM_ERR_PROCESSING); /* Notify caller that the inquiry has completed; (periodic inquiries do not send completion events */ - if (!(p_inq->inq_active & BTM_PERIODIC_INQUIRY_ACTIVE) && p_inq->inqparms.mode == 0) - { + if (!(p_inq->inq_active & BTM_PERIODIC_INQUIRY_ACTIVE) && p_inq->inqparms.mode == 0) { #if BLE_INCLUDED == TRUE btm_clear_all_pending_le_entry(); #endif @@ -2165,9 +2111,8 @@ void btm_process_inq_complete (UINT8 status, UINT8 mode) btm_clr_inq_result_flt(); - if((p_inq->inq_cmpl_info.status == BTM_SUCCESS) && - controller_get_interface()->supports_rssi_with_inquiry_results()) - { + if ((p_inq->inq_cmpl_info.status == BTM_SUCCESS) && + controller_get_interface()->supports_rssi_with_inquiry_results()) { btm_sort_inq_result(); } @@ -2178,36 +2123,34 @@ void btm_process_inq_complete (UINT8 status, UINT8 mode) /* If we have a callback registered for inquiry complete, call it */ BTM_TRACE_DEBUG ("BTM Inq Compl Callback: status 0x%02x, num results %d\n", - p_inq->inq_cmpl_info.status, p_inq->inq_cmpl_info.num_resp); + p_inq->inq_cmpl_info.status, p_inq->inq_cmpl_info.num_resp); - if (p_inq_cb) + if (p_inq_cb) { (p_inq_cb)((tBTM_INQUIRY_CMPL *) &p_inq->inq_cmpl_info); + } } #if (defined(BTA_HOST_INTERLEAVE_SEARCH) && BTA_HOST_INTERLEAVE_SEARCH == TRUE) - if(p_inq->inqparms.mode != 0 && !(p_inq->inq_active & BTM_PERIODIC_INQUIRY_ACTIVE)) - { + if (p_inq->inqparms.mode != 0 && !(p_inq->inq_active & BTM_PERIODIC_INQUIRY_ACTIVE)) { /* make inquiry inactive for next iteration */ p_inq->inq_active = BTM_INQUIRY_INACTIVE; /* call the inquiry again */ - BTM_StartInquiry(&p_inq->inqparms,p_inq->p_inq_results_cb,p_inq->p_inq_cmpl_cb); + BTM_StartInquiry(&p_inq->inqparms, p_inq->p_inq_results_cb, p_inq->p_inq_cmpl_cb); } #endif } - if(p_inq->inqparms.mode == 0 && p_inq->scan_type == INQ_GENERAL)//this inquiry is complete - { + if (p_inq->inqparms.mode == 0 && p_inq->scan_type == INQ_GENERAL) { //this inquiry is complete p_inq->scan_type = INQ_NONE; #if (defined BLE_INCLUDED && BLE_INCLUDED == TRUE) /* check if the LE observe is pending */ - if(p_inq->p_inq_ble_results_cb != NULL) - { + if (p_inq->p_inq_ble_results_cb != NULL) { BTM_TRACE_DEBUG("BTM Inq Compl: resuming a pending LE scan"); - BTM_BleObserve(1,0, p_inq->p_inq_ble_results_cb, p_inq->p_inq_ble_cmpl_cb); + BTM_BleObserve(1, 0, p_inq->p_inq_ble_results_cb, p_inq->p_inq_ble_cmpl_cb); } #endif } #if (BTM_INQ_DEBUG == TRUE) BTM_TRACE_DEBUG ("inq_active:0x%x state:%d inqfilt_active:%d\n", - btm_cb.btm_inq_vars.inq_active, btm_cb.btm_inq_vars.state, btm_cb.btm_inq_vars.inqfilt_active); + btm_cb.btm_inq_vars.inq_active, btm_cb.btm_inq_vars.state, btm_cb.btm_inq_vars.inqfilt_active); #endif } @@ -2225,8 +2168,8 @@ void btm_process_inq_complete (UINT8 status, UINT8 mode) *******************************************************************************/ void btm_process_cancel_complete(UINT8 status, UINT8 mode) { - btm_acl_update_busy_level (BTM_BLI_INQ_CANCEL_EVT); - btm_process_inq_complete(status, mode); + btm_acl_update_busy_level (BTM_BLI_INQ_CANCEL_EVT); + btm_process_inq_complete(status, mode); } /******************************************************************************* ** @@ -2256,28 +2199,25 @@ tBTM_STATUS btm_initiate_rem_name (BD_ADDR remote_bda, tBTM_INQ_INFO *p_cur, /*** Make sure the device is ready ***/ - if (!BTM_IsDeviceUp()) + if (!BTM_IsDeviceUp()) { return (BTM_WRONG_MODE); + } - if (origin == BTM_RMT_NAME_SEC) - { + if (origin == BTM_RMT_NAME_SEC) { cmd_ok = btsnd_hcic_rmt_name_req (remote_bda, HCI_PAGE_SCAN_REP_MODE_R1, - HCI_MANDATARY_PAGE_SCAN_MODE, 0); - if (cmd_ok) + HCI_MANDATARY_PAGE_SCAN_MODE, 0); + if (cmd_ok) { return BTM_CMD_STARTED; - else + } else { return BTM_NO_RESOURCES; + } } /* Make sure there are no two remote name requests from external API in progress */ - else if (origin == BTM_RMT_NAME_EXT) - { - if (p_inq->remname_active) - { + else if (origin == BTM_RMT_NAME_EXT) { + if (p_inq->remname_active) { return (BTM_BUSY); - } - else - { + } else { /* If there is no remote name request running,call the callback function and start timer */ p_inq->p_remname_cmpl_cb = p_cb; memcpy(p_inq->remname_bda, remote_bda, BD_ADDR_LEN); @@ -2286,30 +2226,24 @@ tBTM_STATUS btm_initiate_rem_name (BD_ADDR remote_bda, tBTM_INQ_INFO *p_cur, timeout); /* If the database entry exists for the device, use its clock offset */ - if (p_cur) - { + if (p_cur) { cmd_ok = btsnd_hcic_rmt_name_req (remote_bda, - p_cur->results.page_scan_rep_mode, - p_cur->results.page_scan_mode, - (UINT16)(p_cur->results.clock_offset | - BTM_CLOCK_OFFSET_VALID)); - } - else /* Otherwise use defaults and mark the clock offset as invalid */ - { + p_cur->results.page_scan_rep_mode, + p_cur->results.page_scan_mode, + (UINT16)(p_cur->results.clock_offset | + BTM_CLOCK_OFFSET_VALID)); + } else { /* Otherwise use defaults and mark the clock offset as invalid */ cmd_ok = btsnd_hcic_rmt_name_req (remote_bda, HCI_PAGE_SCAN_REP_MODE_R1, - HCI_MANDATARY_PAGE_SCAN_MODE, 0); + HCI_MANDATARY_PAGE_SCAN_MODE, 0); } - if (cmd_ok) - { + if (cmd_ok) { p_inq->remname_active = TRUE; return BTM_CMD_STARTED; - } - else + } else { return BTM_NO_RESOURCES; + } } - } - else - { + } else { return BTM_ILLEGAL_VALUE; } } @@ -2334,40 +2268,38 @@ void btm_process_remote_name (BD_ADDR bda, BD_NAME bdn, UINT16 evt_len, UINT8 hc UINT16 temp_evt_len; - if (bda != NULL) - { - BTM_TRACE_EVENT("BDA %02x:%02x:%02x:%02x:%02x:%02x\n",bda[0], bda[1], - bda[2], bda[3], - bda[4], bda[5]); + if (bda != NULL) { + BTM_TRACE_EVENT("BDA %02x:%02x:%02x:%02x:%02x:%02x\n", bda[0], bda[1], + bda[2], bda[3], + bda[4], bda[5]); } - BTM_TRACE_EVENT("Inquire BDA %02x:%02x:%02x:%02x:%02x:%02x\n",p_inq->remname_bda[0], p_inq->remname_bda[1], - p_inq->remname_bda[2], p_inq->remname_bda[3], - p_inq->remname_bda[4], p_inq->remname_bda[5]); + BTM_TRACE_EVENT("Inquire BDA %02x:%02x:%02x:%02x:%02x:%02x\n", p_inq->remname_bda[0], p_inq->remname_bda[1], + p_inq->remname_bda[2], p_inq->remname_bda[3], + p_inq->remname_bda[4], p_inq->remname_bda[5]); /* If the inquire BDA and remote DBA are the same, then stop the timer and set the active to false */ - if ((p_inq->remname_active ==TRUE)&& - (((bda != NULL) && - (memcmp(bda, p_inq->remname_bda,BD_ADDR_LEN)==0)) || bda == NULL)) + if ((p_inq->remname_active == TRUE) && + (((bda != NULL) && + (memcmp(bda, p_inq->remname_bda, BD_ADDR_LEN) == 0)) || bda == NULL)) { #if BLE_INCLUDED == TRUE - if (BTM_UseLeLink(p_inq->remname_bda)) - { - if (hci_status == HCI_ERR_UNSPECIFIED) + if (BTM_UseLeLink(p_inq->remname_bda)) { + if (hci_status == HCI_ERR_UNSPECIFIED) { btm_ble_cancel_remote_name(p_inq->remname_bda); + } } #endif btu_stop_timer (&p_inq->rmt_name_timer_ent); p_inq->remname_active = FALSE; - /* Clean up and return the status if the command was not successful */ - /* Note: If part of the inquiry, the name is not stored, and the */ - /* inquiry complete callback is called. */ + /* Clean up and return the status if the command was not successful */ + /* Note: If part of the inquiry, the name is not stored, and the */ + /* inquiry complete callback is called. */ - if (hci_status == HCI_SUCCESS) - { + if (hci_status == HCI_SUCCESS) { /* Copy the name from the data stream into the return structure */ /* Note that even if it is not being returned, it is used as a */ /* temporary buffer. */ @@ -2377,8 +2309,7 @@ void btm_process_remote_name (BD_ADDR bda, BD_NAME bdn, UINT16 evt_len, UINT8 hc rem_name.status = BTM_SUCCESS; temp_evt_len = rem_name.length; - while (temp_evt_len > 0) - { + while (temp_evt_len > 0) { *p_n1++ = *bdn++; temp_evt_len--; } @@ -2387,8 +2318,7 @@ void btm_process_remote_name (BD_ADDR bda, BD_NAME bdn, UINT16 evt_len, UINT8 hc /* If processing a stand alone remote name then report the error in the callback */ - else - { + else { rem_name.status = BTM_BAD_VALUE_RET; rem_name.length = 0; rem_name.remote_bd_name[0] = 0; @@ -2397,8 +2327,9 @@ void btm_process_remote_name (BD_ADDR bda, BD_NAME bdn, UINT16 evt_len, UINT8 hc memset(p_inq->remname_bda, 0, BD_ADDR_LEN); p_inq->p_remname_cmpl_cb = NULL; - if (p_cb) + if (p_cb) { (p_cb)((tBTM_REMOTE_DEV_NAME *)&rem_name); + } } } @@ -2417,10 +2348,11 @@ void btm_inq_rmt_name_failed (void) { BTM_TRACE_ERROR ("btm_inq_rmt_name_failed() remname_active=%d\n", btm_cb.btm_inq_vars.remname_active); - if (btm_cb.btm_inq_vars.remname_active) + if (btm_cb.btm_inq_vars.remname_active) { btm_process_remote_name (btm_cb.btm_inq_vars.remname_bda, NULL, 0, HCI_ERR_UNSPECIFIED); - else + } else { btm_process_remote_name (NULL, NULL, 0, HCI_ERR_UNSPECIFIED); + } btm_sec_rmt_name_request_complete (NULL, NULL, HCI_ERR_UNSPECIFIED); } @@ -2442,20 +2374,18 @@ void btm_read_linq_tx_power_complete(UINT8 *p) /* If there was a callback registered for read inq tx power, call it */ btm_cb.devcb.p_txpwer_cmpl_cb = NULL; - if (p_cb) - { + if (p_cb) { STREAM_TO_UINT8 (results.hci_status, p); - if (results.hci_status == HCI_SUCCESS) - { + if (results.hci_status == HCI_SUCCESS) { results.status = BTM_SUCCESS; STREAM_TO_UINT8 (results.tx_power, p); BTM_TRACE_EVENT ("BTM INQ TX POWER Complete: tx_power %d, hci status 0x%02x\n", - results.tx_power, results.hci_status); - } - else + results.tx_power, results.hci_status); + } else { results.status = BTM_ERR_PROCESSING; + } (*p_cb)(&results); } @@ -2476,14 +2406,11 @@ void btm_read_linq_tx_power_complete(UINT8 *p) *******************************************************************************/ tBTM_STATUS BTM_WriteEIR( BT_HDR *p_buff ) { - if (controller_get_interface()->supports_extended_inquiry_response()) - { + if (controller_get_interface()->supports_extended_inquiry_response()) { BTM_TRACE_API("Write Extended Inquiry Response to controller\n"); btsnd_hcic_write_ext_inquiry_response (p_buff, BTM_EIR_DEFAULT_FEC_REQUIRED); return BTM_SUCCESS; - } - else - { + } else { GKI_freebuf(p_buff); return BTM_MODE_UNSUPPORTED; } @@ -2510,11 +2437,9 @@ UINT8 *BTM_CheckEirData( UINT8 *p_eir, UINT8 type, UINT8 *p_length ) BTM_TRACE_API("BTM_CheckEirData type=0x%02X\n", type); STREAM_TO_UINT8(length, p); - while( length && (p - p_eir <= HCI_EXT_INQ_RESPONSE_LEN)) - { + while ( length && (p - p_eir <= HCI_EXT_INQ_RESPONSE_LEN)) { STREAM_TO_UINT8(eir_type, p); - if( eir_type == type ) - { + if ( eir_type == type ) { /* length doesn't include itself */ *p_length = length - 1; /* minus the length of type */ return p; @@ -2543,10 +2468,8 @@ static UINT8 btm_convert_uuid_to_eir_service( UINT16 uuid16 ) { UINT8 xx; - for( xx = 0; xx < BTM_EIR_MAX_SERVICES; xx++ ) - { - if( uuid16 == BTM_EIR_UUID_LKUP_TBL[xx]) - { + for ( xx = 0; xx < BTM_EIR_MAX_SERVICES; xx++ ) { + if ( uuid16 == BTM_EIR_UUID_LKUP_TBL[xx]) { return xx; } } @@ -2571,10 +2494,11 @@ BOOLEAN BTM_HasEirService( UINT32 *p_eir_uuid, UINT16 uuid16 ) UINT8 service_id; service_id = btm_convert_uuid_to_eir_service(uuid16); - if( service_id < BTM_EIR_MAX_SERVICES ) - return( BTM_EIR_HAS_SERVICE( p_eir_uuid, service_id )); - else - return( FALSE ); + if ( service_id < BTM_EIR_MAX_SERVICES ) { + return ( BTM_EIR_HAS_SERVICE( p_eir_uuid, service_id )); + } else { + return ( FALSE ); + } } /******************************************************************************* @@ -2593,16 +2517,13 @@ BOOLEAN BTM_HasEirService( UINT32 *p_eir_uuid, UINT16 uuid16 ) *******************************************************************************/ tBTM_EIR_SEARCH_RESULT BTM_HasInquiryEirService( tBTM_INQ_RESULTS *p_results, UINT16 uuid16 ) { - if( BTM_HasEirService( p_results->eir_uuid, uuid16 )) - { + if ( BTM_HasEirService( p_results->eir_uuid, uuid16 )) { return BTM_EIR_FOUND; - } - else if( p_results->eir_complete_list ) - { + } else if ( p_results->eir_complete_list ) { return BTM_EIR_NOT_FOUND; - } - else + } else { return BTM_EIR_UNKNOWN; + } } /******************************************************************************* @@ -2622,8 +2543,9 @@ void BTM_AddEirService( UINT32 *p_eir_uuid, UINT16 uuid16 ) UINT8 service_id; service_id = btm_convert_uuid_to_eir_service(uuid16); - if( service_id < BTM_EIR_MAX_SERVICES ) + if ( service_id < BTM_EIR_MAX_SERVICES ) { BTM_EIR_SET_SERVICE( p_eir_uuid, service_id ); + } } /******************************************************************************* @@ -2643,8 +2565,9 @@ void BTM_RemoveEirService( UINT32 *p_eir_uuid, UINT16 uuid16 ) UINT8 service_id; service_id = btm_convert_uuid_to_eir_service(uuid16); - if( service_id < BTM_EIR_MAX_SERVICES ) + if ( service_id < BTM_EIR_MAX_SERVICES ) { BTM_EIR_CLR_SERVICE( p_eir_uuid, service_id ); + } } /******************************************************************************* @@ -2669,18 +2592,14 @@ UINT8 BTM_GetEirSupportedServices( UINT32 *p_eir_uuid, UINT8 **p, *p_num_uuid16 = 0; - for(service_index = 0; service_index < BTM_EIR_MAX_SERVICES; service_index++) - { - if( BTM_EIR_HAS_SERVICE( p_eir_uuid, service_index )) - { - if( *p_num_uuid16 < max_num_uuid16 ) - { + for (service_index = 0; service_index < BTM_EIR_MAX_SERVICES; service_index++) { + if ( BTM_EIR_HAS_SERVICE( p_eir_uuid, service_index )) { + if ( *p_num_uuid16 < max_num_uuid16 ) { UINT16_TO_STREAM(*p, BTM_EIR_UUID_LKUP_TBL[service_index]); (*p_num_uuid16)++; } /* if max number of UUIDs are stored and found one more */ - else - { + else { return BTM_EIR_MORE_16BITS_UUID_TYPE; } } @@ -2710,7 +2629,7 @@ UINT8 BTM_GetEirSupportedServices( UINT32 *p_eir_uuid, UINT8 **p, ** *******************************************************************************/ UINT8 BTM_GetEirUuidList( UINT8 *p_eir, UINT8 uuid_size, UINT8 *p_num_uuid, - UINT8 *p_uuid_list, UINT8 max_num_uuid) + UINT8 *p_uuid_list, UINT8 max_num_uuid) { UINT8 *p_uuid_data; UINT8 type; @@ -2720,43 +2639,34 @@ UINT8 BTM_GetEirUuidList( UINT8 *p_eir, UINT8 uuid_size, UINT8 *p_num_uuid, char buff[LEN_UUID_128 * 2 + 1]; p_uuid_data = btm_eir_get_uuid_list( p_eir, uuid_size, p_num_uuid, &type ); - if( p_uuid_data == NULL ) - { + if ( p_uuid_data == NULL ) { return 0x00; } - if( *p_num_uuid > max_num_uuid ) - { + if ( *p_num_uuid > max_num_uuid ) { BTM_TRACE_WARNING("BTM_GetEirUuidList number of uuid in EIR = %d, size of uuid list = %d\n", - *p_num_uuid, max_num_uuid ); + *p_num_uuid, max_num_uuid ); *p_num_uuid = max_num_uuid; } BTM_TRACE_DEBUG("BTM_GetEirUuidList type = %02X, number of uuid = %d\n", type, *p_num_uuid ); - if( uuid_size == LEN_UUID_16 ) - { - for( yy = 0; yy < *p_num_uuid; yy++ ) - { + if ( uuid_size == LEN_UUID_16 ) { + for ( yy = 0; yy < *p_num_uuid; yy++ ) { STREAM_TO_UINT16(*(p_uuid16 + yy), p_uuid_data); BTM_TRACE_DEBUG(" 0x%04X\n", *(p_uuid16 + yy)); } - } - else if( uuid_size == LEN_UUID_32 ) - { - for( yy = 0; yy < *p_num_uuid; yy++ ) - { + } else if ( uuid_size == LEN_UUID_32 ) { + for ( yy = 0; yy < *p_num_uuid; yy++ ) { STREAM_TO_UINT32(*(p_uuid32 + yy), p_uuid_data); BTM_TRACE_DEBUG(" 0x%08X\n", *(p_uuid32 + yy)); } - } - else if( uuid_size == LEN_UUID_128 ) - { - for( yy = 0; yy < *p_num_uuid; yy++ ) - { + } else if ( uuid_size == LEN_UUID_128 ) { + for ( yy = 0; yy < *p_num_uuid; yy++ ) { STREAM_TO_ARRAY16(p_uuid_list + yy * LEN_UUID_128, p_uuid_data); - for( xx = 0; xx < LEN_UUID_128; xx++ ) - sprintf(buff + xx*2, "%02X", *(p_uuid_list + yy * LEN_UUID_128 + xx)); + for ( xx = 0; xx < LEN_UUID_128; xx++ ) { + sprintf(buff + xx * 2, "%02X", *(p_uuid_list + yy * LEN_UUID_128 + xx)); + } BTM_TRACE_DEBUG(" 0x%s\n", buff); } } @@ -2787,8 +2697,7 @@ static UINT8 *btm_eir_get_uuid_list( UINT8 *p_eir, UINT8 uuid_size, UINT8 complete_type, more_type; UINT8 uuid_len; - switch( uuid_size ) - { + switch ( uuid_size ) { case LEN_UUID_16: complete_type = BTM_EIR_COMPLETE_16BITS_UUID_TYPE; more_type = BTM_EIR_MORE_16BITS_UUID_TYPE; @@ -2808,13 +2717,10 @@ static UINT8 *btm_eir_get_uuid_list( UINT8 *p_eir, UINT8 uuid_size, } p_uuid_data = BTM_CheckEirData( p_eir, complete_type, &uuid_len ); - if(p_uuid_data == NULL) - { + if (p_uuid_data == NULL) { p_uuid_data = BTM_CheckEirData( p_eir, more_type, &uuid_len ); *p_uuid_list_type = more_type; - } - else - { + } else { *p_uuid_list_type = complete_type; } @@ -2838,37 +2744,34 @@ static UINT8 *btm_eir_get_uuid_list( UINT8 *p_eir, UINT8 uuid_size, static UINT16 btm_convert_uuid_to_uuid16( UINT8 *p_uuid, UINT8 uuid_size ) { static const UINT8 base_uuid[LEN_UUID_128] = {0xFB, 0x34, 0x9B, 0x5F, 0x80, 0x00, 0x00, 0x80, - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; UINT16 uuid16 = 0; UINT32 uuid32; BOOLEAN is_base_uuid; UINT8 xx; - switch (uuid_size) - { + switch (uuid_size) { case LEN_UUID_16: STREAM_TO_UINT16 (uuid16, p_uuid); break; case LEN_UUID_32: STREAM_TO_UINT32 (uuid32, p_uuid); - if (uuid32 < 0x10000) + if (uuid32 < 0x10000) { uuid16 = (UINT16) uuid32; + } break; case LEN_UUID_128: /* See if we can compress his UUID down to 16 or 32bit UUIDs */ is_base_uuid = TRUE; - for (xx = 0; xx < LEN_UUID_128 - 4; xx++) - { - if (p_uuid[xx] != base_uuid[xx]) - { + for (xx = 0; xx < LEN_UUID_128 - 4; xx++) { + if (p_uuid[xx] != base_uuid[xx]) { is_base_uuid = FALSE; break; } } - if (is_base_uuid) - { - if ((p_uuid[LEN_UUID_128 - 1] == 0) && (p_uuid[LEN_UUID_128 - 2] == 0)) - { + if (is_base_uuid) { + if ((p_uuid[LEN_UUID_128 - 1] == 0) && (p_uuid[LEN_UUID_128 - 2] == 0)) { p_uuid += (LEN_UUID_128 - 4); STREAM_TO_UINT16(uuid16, p_uuid); } @@ -2879,7 +2782,7 @@ static UINT16 btm_convert_uuid_to_uuid16( UINT8 *p_uuid, UINT8 uuid_size ) break; } - return( uuid16); + return ( uuid16); } /******************************************************************************* @@ -2904,47 +2807,40 @@ void btm_set_eir_uuid( UINT8 *p_eir, tBTM_INQ_RESULTS *p_results ) p_uuid_data = btm_eir_get_uuid_list( p_eir, LEN_UUID_16, &num_uuid, &type ); - if(type == BTM_EIR_COMPLETE_16BITS_UUID_TYPE) - { + if (type == BTM_EIR_COMPLETE_16BITS_UUID_TYPE) { p_results->eir_complete_list = TRUE; - } - else - { + } else { p_results->eir_complete_list = FALSE; } BTM_TRACE_API("btm_set_eir_uuid eir_complete_list=0x%02X\n", p_results->eir_complete_list); - if( p_uuid_data ) - { - for( yy = 0; yy < num_uuid; yy++ ) - { + if ( p_uuid_data ) { + for ( yy = 0; yy < num_uuid; yy++ ) { STREAM_TO_UINT16(uuid16, p_uuid_data); BTM_AddEirService( p_results->eir_uuid, uuid16 ); } } p_uuid_data = btm_eir_get_uuid_list( p_eir, LEN_UUID_32, &num_uuid, &type ); - if( p_uuid_data ) - { - for( yy = 0; yy < num_uuid; yy++ ) - { + if ( p_uuid_data ) { + for ( yy = 0; yy < num_uuid; yy++ ) { uuid16 = btm_convert_uuid_to_uuid16( p_uuid_data, LEN_UUID_32 ); p_uuid_data += LEN_UUID_32; - if( uuid16 ) + if ( uuid16 ) { BTM_AddEirService( p_results->eir_uuid, uuid16 ); + } } } p_uuid_data = btm_eir_get_uuid_list( p_eir, LEN_UUID_128, &num_uuid, &type ); - if( p_uuid_data ) - { - for( yy = 0; yy < num_uuid; yy++ ) - { + if ( p_uuid_data ) { + for ( yy = 0; yy < num_uuid; yy++ ) { uuid16 = btm_convert_uuid_to_uuid16( p_uuid_data, LEN_UUID_128 ); p_uuid_data += LEN_UUID_128; - if( uuid16 ) + if ( uuid16 ) { BTM_AddEirService( p_results->eir_uuid, uuid16 ); + } } } } diff --git a/components/bt/bluedroid/stack/btm/btm_pm.c b/components/bt/bluedroid/stack/btm/btm_pm.c old mode 100755 new mode 100644 index c49cba4e68..a0aaa06102 --- a/components/bt/bluedroid/stack/btm/btm_pm.c +++ b/components/bt/bluedroid/stack/btm/btm_pm.c @@ -62,8 +62,7 @@ const UINT8 btm_pm_mode_msk[BTM_PM_NUM_SET_MODES] = {0x40, 0x80, 0x01}; #define BTM_PM_GET_MD2 2 #define BTM_PM_GET_COMP 3 -const UINT8 btm_pm_md_comp_matrix[BTM_PM_NUM_SET_MODES*BTM_PM_NUM_SET_MODES] = -{ +const UINT8 btm_pm_md_comp_matrix[BTM_PM_NUM_SET_MODES * BTM_PM_NUM_SET_MODES] = { BTM_PM_GET_COMP, BTM_PM_GET_MD2, BTM_PM_GET_MD2, @@ -90,8 +89,7 @@ static const char *mode_to_string(tBTM_PM_MODE mode); */ #if BTM_PM_DEBUG == TRUE -const char * btm_pm_state_str[] = -{ +const char *btm_pm_state_str[] = { "pm_active_state", "pm_hold_state", "pm_sniff_state", @@ -99,16 +97,14 @@ const char * btm_pm_state_str[] = "pm_pend_state" }; -const char * btm_pm_event_str[] = -{ +const char *btm_pm_event_str[] = { "pm_set_mode_event", "pm_hci_sts_event", "pm_mod_chg_event", "pm_update_event" }; -const char * btm_pm_action_str[] = -{ +const char *btm_pm_action_str[] = { "pm_set_mode_action", "pm_update_db_action", "pm_mod_chg_action", @@ -136,24 +132,22 @@ tBTM_STATUS BTM_PmRegister (UINT8 mask, UINT8 *p_pm_id, tBTM_PM_STATUS_CBACK *p_ int xx; /* de-register */ - if(mask & BTM_PM_DEREG) - { - if(*p_pm_id >= BTM_MAX_PM_RECORDS) + if (mask & BTM_PM_DEREG) { + if (*p_pm_id >= BTM_MAX_PM_RECORDS) { return BTM_ILLEGAL_VALUE; + } btm_cb.pm_reg_db[*p_pm_id].mask = BTM_PM_REC_NOT_USED; return BTM_SUCCESS; } - for(xx=0; xx= BTM_MAX_PM_RECORDS) + if (pm_id >= BTM_MAX_PM_RECORDS) { pm_id = BTM_PM_SET_ONLY_ID; + } - if(p_mode == NULL) + if (p_mode == NULL) { return BTM_ILLEGAL_VALUE; + } BTM_TRACE_API( "BTM_SetPowerMode: pm_id %d BDA: %08x mode:0x%x", pm_id, - (remote_bda[2]<<24)+(remote_bda[3]<<16)+(remote_bda[4]<<8)+remote_bda[5], p_mode->mode); + (remote_bda[2] << 24) + (remote_bda[3] << 16) + (remote_bda[4] << 8) + remote_bda[5], p_mode->mode); /* take out the force bit */ mode = p_mode->mode & ~BTM_PM_MD_FORCE; acl_ind = btm_pm_find_acl_ind(remote_bda); - if(acl_ind == MAX_L2CAP_LINKS) + if (acl_ind == MAX_L2CAP_LINKS) { return (BTM_UNKNOWN_ADDR); + } p_cb = &(btm_cb.pm_mode_db[acl_ind]); - if(mode != BTM_PM_MD_ACTIVE) - { + if (mode != BTM_PM_MD_ACTIVE) { /* check if the requested mode is supported */ ind = mode - BTM_PM_MD_HOLD; /* make it base 0 */ p_features = BTM_ReadLocalFeatures(); - if( !(p_features[ btm_pm_mode_off[ind] ] & btm_pm_mode_msk[ind] ) ) + if ( !(p_features[ btm_pm_mode_off[ind] ] & btm_pm_mode_msk[ind] ) ) { return BTM_MODE_UNSUPPORTED; + } } - if(mode == p_cb->state) /* the requested mode is current mode */ - { + if (mode == p_cb->state) { /* the requested mode is current mode */ /* already in the requested mode and the current interval has less latency than the max */ - if( (mode == BTM_PM_MD_ACTIVE) || - ((p_mode->mode & BTM_PM_MD_FORCE) && (p_mode->max >= p_cb->interval) && (p_mode->min <= p_cb->interval)) || - ((p_mode->mode & BTM_PM_MD_FORCE)==0 && (p_mode->max >= p_cb->interval)) ) - { + if ( (mode == BTM_PM_MD_ACTIVE) || + ((p_mode->mode & BTM_PM_MD_FORCE) && (p_mode->max >= p_cb->interval) && (p_mode->min <= p_cb->interval)) || + ((p_mode->mode & BTM_PM_MD_FORCE) == 0 && (p_mode->max >= p_cb->interval)) ) { BTM_TRACE_DEBUG( "BTM_SetPowerMode: mode:0x%x interval %d max:%d, min:%d", p_mode->mode, p_cb->interval, p_mode->max, p_mode->min); return BTM_SUCCESS; } } temp_pm_id = pm_id; - if(pm_id == BTM_PM_SET_ONLY_ID) + if (pm_id == BTM_PM_SET_ONLY_ID) { temp_pm_id = BTM_MAX_PM_RECORDS; + } /* update mode database */ - if( ((pm_id != BTM_PM_SET_ONLY_ID) && - (btm_cb.pm_reg_db[pm_id].mask & BTM_PM_REG_SET)) - || ((pm_id == BTM_PM_SET_ONLY_ID) && (btm_cb.pm_pend_link != MAX_L2CAP_LINKS)) ) - { + if ( ((pm_id != BTM_PM_SET_ONLY_ID) && + (btm_cb.pm_reg_db[pm_id].mask & BTM_PM_REG_SET)) + || ((pm_id == BTM_PM_SET_ONLY_ID) && (btm_cb.pm_pend_link != MAX_L2CAP_LINKS)) ) { #if BTM_PM_DEBUG == TRUE - BTM_TRACE_DEBUG( "BTM_SetPowerMode: Saving cmd acl_ind %d temp_pm_id %d", acl_ind,temp_pm_id); + BTM_TRACE_DEBUG( "BTM_SetPowerMode: Saving cmd acl_ind %d temp_pm_id %d", acl_ind, temp_pm_id); #endif // BTM_PM_DEBUG /* Make sure mask is set to BTM_PM_REG_SET */ btm_cb.pm_reg_db[temp_pm_id].mask |= BTM_PM_REG_SET; @@ -246,15 +241,13 @@ tBTM_STATUS BTM_SetPowerMode (UINT8 pm_id, BD_ADDR remote_bda, tBTM_PM_PWR_MD *p BTM_TRACE_DEBUG( "btm_pm state:0x%x, pm_pend_link: %d", p_cb->state, btm_cb.pm_pend_link); #endif // BTM_PM_DEBUG /* if mode == hold or pending, return */ - if( (p_cb->state == BTM_PM_STS_HOLD) || - (p_cb->state == BTM_PM_STS_PENDING) || - (btm_cb.pm_pend_link != MAX_L2CAP_LINKS) ) /* command pending */ - { - if(acl_ind != btm_cb.pm_pend_link) - { + if ( (p_cb->state == BTM_PM_STS_HOLD) || + (p_cb->state == BTM_PM_STS_PENDING) || + (btm_cb.pm_pend_link != MAX_L2CAP_LINKS) ) { /* command pending */ + if (acl_ind != btm_cb.pm_pend_link) { /* set the stored mask */ p_cb->state |= BTM_PM_STORED_MASK; - BTM_TRACE_DEBUG( "btm_pm state stored:%d",acl_ind); + BTM_TRACE_DEBUG( "btm_pm state stored:%d", acl_ind); } return BTM_CMD_STORED; } @@ -288,8 +281,9 @@ tBTM_STATUS BTM_ReadPowerMode (BD_ADDR remote_bda, tBTM_PM_MODE *p_mode) { int acl_ind; - if( (acl_ind = btm_pm_find_acl_ind(remote_bda)) == MAX_L2CAP_LINKS) + if ( (acl_ind = btm_pm_find_acl_ind(remote_bda)) == MAX_L2CAP_LINKS) { return (BTM_UNKNOWN_ADDR); + } *p_mode = btm_cb.pm_mode_db[acl_ind].state; return BTM_SUCCESS; @@ -320,17 +314,18 @@ tBTM_STATUS BTM_SetSsrParams (BD_ADDR remote_bda, UINT16 max_lat, int acl_ind; tBTM_PM_MCB *p_cb; - if( (acl_ind = btm_pm_find_acl_ind(remote_bda)) == MAX_L2CAP_LINKS) + if ( (acl_ind = btm_pm_find_acl_ind(remote_bda)) == MAX_L2CAP_LINKS) { return (BTM_UNKNOWN_ADDR); + } - if(BTM_PM_STS_ACTIVE == btm_cb.pm_mode_db[acl_ind].state || - BTM_PM_STS_SNIFF == btm_cb.pm_mode_db[acl_ind].state) - { + if (BTM_PM_STS_ACTIVE == btm_cb.pm_mode_db[acl_ind].state || + BTM_PM_STS_SNIFF == btm_cb.pm_mode_db[acl_ind].state) { if (btsnd_hcic_sniff_sub_rate(btm_cb.acl_db[acl_ind].hci_handle, max_lat, - min_rmt_to, min_loc_to)) + min_rmt_to, min_loc_to)) { return BTM_SUCCESS; - else + } else { return BTM_NO_RESOURCES; + } } p_cb = &btm_cb.pm_mode_db[acl_ind]; p_cb->max_lat = max_lat; @@ -357,21 +352,20 @@ void btm_pm_reset(void) tBTM_PM_STATUS_CBACK *cb = NULL; /* clear the pending request for application */ - if( (btm_cb.pm_pend_id != BTM_PM_SET_ONLY_ID) && - (btm_cb.pm_reg_db[btm_cb.pm_pend_id].mask & BTM_PM_REG_NOTIF) ) - { + if ( (btm_cb.pm_pend_id != BTM_PM_SET_ONLY_ID) && + (btm_cb.pm_reg_db[btm_cb.pm_pend_id].mask & BTM_PM_REG_NOTIF) ) { cb = btm_cb.pm_reg_db[btm_cb.pm_pend_id].cback; } /* clear the register record */ - for(xx=0; xxin_use) && (!memcmp (p->remote_addr, remote_bda, BD_ADDR_LEN)) #if (BLE_INCLUDED == TRUE) - && p->transport == BT_TRANSPORT_BR_EDR + && p->transport == BT_TRANSPORT_BR_EDR #endif // BLE_INCLUDED - ) - { + ) { #if BTM_PM_DEBUG == TRUE BTM_TRACE_DEBUG( "btm_pm_find_acl_ind ind:%d, st:%d", xx, btm_cb.pm_mode_db[xx].state); #endif // BTM_PM_DEBUG @@ -436,33 +428,29 @@ static int btm_pm_find_acl_ind(BD_ADDR remote_bda) ** Returns void ** *******************************************************************************/ -static tBTM_PM_PWR_MD * btm_pm_compare_modes(tBTM_PM_PWR_MD *p_md1, tBTM_PM_PWR_MD *p_md2, tBTM_PM_PWR_MD *p_res) +static tBTM_PM_PWR_MD *btm_pm_compare_modes(tBTM_PM_PWR_MD *p_md1, tBTM_PM_PWR_MD *p_md2, tBTM_PM_PWR_MD *p_res) { UINT8 res; - if(p_md1 == NULL) - { + if (p_md1 == NULL) { *p_res = *p_md2; p_res->mode &= ~BTM_PM_MD_FORCE; return p_md2; } - if(p_md2->mode == BTM_PM_MD_ACTIVE || p_md1->mode == BTM_PM_MD_ACTIVE) - { + if (p_md2->mode == BTM_PM_MD_ACTIVE || p_md1->mode == BTM_PM_MD_ACTIVE) { return NULL; } /* check if force bit is involved */ - if(p_md1->mode & BTM_PM_MD_FORCE) - { + if (p_md1->mode & BTM_PM_MD_FORCE) { *p_res = *p_md1; p_res->mode &= ~BTM_PM_MD_FORCE; return p_res; } - if(p_md2->mode & BTM_PM_MD_FORCE) - { + if (p_md2->mode & BTM_PM_MD_FORCE) { *p_res = *p_md2; p_res->mode &= ~BTM_PM_MD_FORCE; return p_res; @@ -470,8 +458,7 @@ static tBTM_PM_PWR_MD * btm_pm_compare_modes(tBTM_PM_PWR_MD *p_md1, tBTM_PM_PWR_ res = (p_md1->mode - 1) * BTM_PM_NUM_SET_MODES + (p_md2->mode - 1); res = btm_pm_md_comp_matrix[res]; - switch(res) - { + switch (res) { case BTM_PM_GET_MD1: *p_res = *p_md1; return p_md1; @@ -483,19 +470,19 @@ static tBTM_PM_PWR_MD * btm_pm_compare_modes(tBTM_PM_PWR_MD *p_md1, tBTM_PM_PWR_ case BTM_PM_GET_COMP: p_res->mode = p_md1->mode; /* min of the two */ - p_res->max = (p_md1->max < p_md2->max)? (p_md1->max) : (p_md2->max); + p_res->max = (p_md1->max < p_md2->max) ? (p_md1->max) : (p_md2->max); /* max of the two */ - p_res->min = (p_md1->min > p_md2->min)? (p_md1->min) : (p_md2->min); + p_res->min = (p_md1->min > p_md2->min) ? (p_md1->min) : (p_md2->min); /* the intersection is NULL */ - if( p_res->max < p_res->min) + if ( p_res->max < p_res->min) { return NULL; + } - if(p_res->mode == BTM_PM_MD_SNIFF) - { + if (p_res->mode == BTM_PM_MD_SNIFF) { /* max of the two */ - p_res->attempt = (p_md1->attempt > p_md2->attempt)? (p_md1->attempt) : (p_md2->attempt); - p_res->timeout = (p_md1->timeout > p_md2->timeout)? (p_md1->timeout) : (p_md2->timeout); + p_res->attempt = (p_md1->attempt > p_md2->attempt) ? (p_md1->attempt) : (p_md2->attempt); + p_res->timeout = (p_md1->timeout > p_md2->timeout) ? (p_md1->timeout) : (p_md2->timeout); } return p_res; } @@ -515,53 +502,48 @@ static tBTM_PM_MODE btm_pm_get_set_mode(UINT8 pm_id, tBTM_PM_MCB *p_cb, tBTM_PM_ int xx, loop_max; tBTM_PM_PWR_MD *p_md = NULL; - if(p_mode != NULL && p_mode->mode & BTM_PM_MD_FORCE) - { + if (p_mode != NULL && p_mode->mode & BTM_PM_MD_FORCE) { *p_res = *p_mode; p_res->mode &= ~BTM_PM_MD_FORCE; return p_res->mode; } - if(!p_mode) - loop_max = BTM_MAX_PM_RECORDS+1; - else + if (!p_mode) { + loop_max = BTM_MAX_PM_RECORDS + 1; + } else { loop_max = BTM_MAX_PM_RECORDS; + } - for( xx=0; xxreq_mode[xx].mode == BTM_PM_MD_ACTIVE) - { + if (btm_cb.pm_reg_db[xx].mask & BTM_PM_REG_SET) { + if (p_cb->req_mode[xx].mode == BTM_PM_MD_ACTIVE) { /* if at least one registered (SET) party says ACTIVE, stay active */ return BTM_PM_MD_ACTIVE; - } - else - { + } else { /* if registered parties give conflicting information, stay active */ - if( (btm_pm_compare_modes(p_md, &p_cb->req_mode[xx], p_res)) == NULL) + if ( (btm_pm_compare_modes(p_md, &p_cb->req_mode[xx], p_res)) == NULL) { return BTM_PM_MD_ACTIVE; + } p_md = p_res; } } } /* if the resulting mode is NULL(nobody registers SET), use the requested mode */ - if(p_md == NULL) - { - if(p_mode) + if (p_md == NULL) { + if (p_mode) { *p_res = *((tBTM_PM_PWR_MD *)p_mode); - else /* p_mode is NULL when btm_pm_snd_md_req is called from btm_pm_proc_mode_change */ + } else { /* p_mode is NULL when btm_pm_snd_md_req is called from btm_pm_proc_mode_change */ return BTM_PM_MD_ACTIVE; - } - else - { + } + } else { /* if the command is from unregistered party, compare the resulting mode from registered party*/ - if( (pm_id == BTM_PM_SET_ONLY_ID) && - ((btm_pm_compare_modes(p_mode, p_md, p_res)) == NULL) ) + if ( (pm_id == BTM_PM_SET_ONLY_ID) && + ((btm_pm_compare_modes(p_mode, p_md, p_res)) == NULL) ) { return BTM_PM_MD_ACTIVE; + } } return p_res->mode; @@ -586,29 +568,30 @@ static tBTM_STATUS btm_pm_snd_md_req(UINT8 pm_id, int link_ind, tBTM_PM_PWR_MD * #if BTM_PM_DEBUG == TRUE BTM_TRACE_DEBUG( "btm_pm_snd_md_req link_ind:%d, mode: %d", - link_ind, mode); + link_ind, mode); #endif // BTM_PM_DEBUG - if( p_cb->state == mode) - { + if ( p_cb->state == mode) { /* already in the resulting mode */ - if( (mode == BTM_PM_MD_ACTIVE) || - ((md_res.max >= p_cb->interval) && (md_res.min <= p_cb->interval)) ) + if ( (mode == BTM_PM_MD_ACTIVE) || + ((md_res.max >= p_cb->interval) && (md_res.min <= p_cb->interval)) ) { return BTM_CMD_STORED; + } /* Otherwise, needs to wake, then sleep */ chg_ind = TRUE; } p_cb->chg_ind = chg_ind; - /* cannot go directly from current mode to resulting mode. */ - if( mode != BTM_PM_MD_ACTIVE && p_cb->state != BTM_PM_MD_ACTIVE) - p_cb->chg_ind = TRUE; /* needs to wake, then sleep */ + /* cannot go directly from current mode to resulting mode. */ + if ( mode != BTM_PM_MD_ACTIVE && p_cb->state != BTM_PM_MD_ACTIVE) { + p_cb->chg_ind = TRUE; /* needs to wake, then sleep */ + } - if(p_cb->chg_ind == TRUE) /* needs to wake first */ + if (p_cb->chg_ind == TRUE) { /* needs to wake first */ md_res.mode = BTM_PM_MD_ACTIVE; + } #if (BTM_SSR_INCLUDED == TRUE) - else if(BTM_PM_MD_SNIFF == md_res.mode && p_cb->max_lat) - { + else if (BTM_PM_MD_SNIFF == md_res.mode && p_cb->max_lat) { btsnd_hcic_sniff_sub_rate(btm_cb.acl_db[link_ind].hci_handle, p_cb->max_lat, p_cb->min_rmt_to, p_cb->min_loc_to); p_cb->max_lat = 0; @@ -625,20 +608,16 @@ static tBTM_STATUS btm_pm_snd_md_req(UINT8 pm_id, int link_ind, tBTM_PM_PWR_MD * #endif // BTM_PM_DEBUG LOG_DEBUG("%s switching from %s to %s.", __func__, mode_to_string(p_cb->state), mode_to_string(md_res.mode)); - switch(md_res.mode) - { + switch (md_res.mode) { case BTM_PM_MD_ACTIVE: - switch(p_cb->state) - { + switch (p_cb->state) { case BTM_PM_MD_SNIFF: - if (btsnd_hcic_exit_sniff_mode(btm_cb.acl_db[link_ind].hci_handle)) - { + if (btsnd_hcic_exit_sniff_mode(btm_cb.acl_db[link_ind].hci_handle)) { btm_cb.pm_pend_link = link_ind; } break; case BTM_PM_MD_PARK: - if (btsnd_hcic_exit_park_mode(btm_cb.acl_db[link_ind].hci_handle)) - { + if (btsnd_hcic_exit_park_mode(btm_cb.acl_db[link_ind].hci_handle)) { btm_cb.pm_pend_link = link_ind; } break; @@ -650,8 +629,7 @@ static tBTM_STATUS btm_pm_snd_md_req(UINT8 pm_id, int link_ind, tBTM_PM_PWR_MD * case BTM_PM_MD_HOLD: if (btsnd_hcic_hold_mode (btm_cb.acl_db[link_ind].hci_handle, - md_res.max, md_res.min)) - { + md_res.max, md_res.min)) { btm_cb.pm_pend_link = link_ind; } break; @@ -659,16 +637,14 @@ static tBTM_STATUS btm_pm_snd_md_req(UINT8 pm_id, int link_ind, tBTM_PM_PWR_MD * case BTM_PM_MD_SNIFF: if (btsnd_hcic_sniff_mode (btm_cb.acl_db[link_ind].hci_handle, md_res.max, md_res.min, md_res.attempt, - md_res.timeout)) - { + md_res.timeout)) { btm_cb.pm_pend_link = link_ind; } break; case BTM_PM_MD_PARK: if (btsnd_hcic_park_mode (btm_cb.acl_db[link_ind].hci_handle, - md_res.max, md_res.min)) - { + md_res.max, md_res.min)) { btm_cb.pm_pend_link = link_ind; } break; @@ -677,11 +653,10 @@ static tBTM_STATUS btm_pm_snd_md_req(UINT8 pm_id, int link_ind, tBTM_PM_PWR_MD * break; } - if(btm_cb.pm_pend_link == MAX_L2CAP_LINKS) - { + if (btm_cb.pm_pend_link == MAX_L2CAP_LINKS) { /* the command was not sent */ #if BTM_PM_DEBUG == TRUE - BTM_TRACE_DEBUG( "pm_pend_link: %d",btm_cb.pm_pend_link); + BTM_TRACE_DEBUG( "pm_pend_link: %d", btm_cb.pm_pend_link); #endif // BTM_PM_DEBUG return (BTM_NO_RESOURCES); } @@ -703,10 +678,8 @@ static tBTM_STATUS btm_pm_snd_md_req(UINT8 pm_id, int link_ind, tBTM_PM_PWR_MD * static void btm_pm_check_stored(void) { int xx; - for(xx=0; xx= MAX_L2CAP_LINKS) + if (btm_cb.pm_pend_link >= MAX_L2CAP_LINKS) { return; + } p_cb = &btm_cb.pm_mode_db[btm_cb.pm_pend_link]; - if(status == HCI_SUCCESS) - { + if (status == HCI_SUCCESS) { p_cb->state = BTM_PM_ST_PENDING; pm_status = BTM_PM_STS_PENDING; #if BTM_PM_DEBUG == TRUE BTM_TRACE_DEBUG( "btm_pm_proc_cmd_status new state:0x%x", p_cb->state); #endif // BTM_PM_DEBUG - } - else /* the command was not successfull. Stay in the same state */ - { + } else { /* the command was not successfull. Stay in the same state */ pm_status = BTM_PM_STS_ERROR; } /* notify the caller is appropriate */ - if( (btm_cb.pm_pend_id != BTM_PM_SET_ONLY_ID) && - (btm_cb.pm_reg_db[btm_cb.pm_pend_id].mask & BTM_PM_REG_NOTIF) ) - { + if ( (btm_cb.pm_pend_id != BTM_PM_SET_ONLY_ID) && + (btm_cb.pm_reg_db[btm_cb.pm_pend_id].mask & BTM_PM_REG_NOTIF) ) { (*btm_cb.pm_reg_db[btm_cb.pm_pend_id].cback)(btm_cb.acl_db[btm_cb.pm_pend_link].remote_addr, pm_status, 0, status); } /* no pending cmd now */ #if BTM_PM_DEBUG == TRUE BTM_TRACE_DEBUG( "btm_pm_proc_cmd_status state:0x%x, pm_pend_link: %d(new: %d)", - p_cb->state, btm_cb.pm_pend_link, MAX_L2CAP_LINKS); + p_cb->state, btm_cb.pm_pend_link, MAX_L2CAP_LINKS); #endif // BTM_PM_DEBUG btm_cb.pm_pend_link = MAX_L2CAP_LINKS; @@ -791,8 +761,9 @@ void btm_pm_proc_mode_change (UINT8 hci_status, UINT16 hci_handle, UINT8 mode, U tL2C_LCB *p_lcb; /* get the index to acl_db */ - if ((xx = btm_handle_to_acl_index(hci_handle)) >= MAX_L2CAP_LINKS) + if ((xx = btm_handle_to_acl_index(hci_handle)) >= MAX_L2CAP_LINKS) { return; + } p = &btm_cb.acl_db[xx]; @@ -804,10 +775,8 @@ void btm_pm_proc_mode_change (UINT8 hci_status, UINT16 hci_handle, UINT8 mode, U LOG_DEBUG("%s switched from %s to %s.", __func__, mode_to_string(old_state), mode_to_string(p_cb->state)); - if ((p_lcb = l2cu_find_lcb_by_bd_addr(p->remote_addr, BT_TRANSPORT_BR_EDR)) != NULL) - { - if ((p_cb->state == BTM_PM_ST_ACTIVE) || (p_cb->state == BTM_PM_ST_SNIFF)) - { + if ((p_lcb = l2cu_find_lcb_by_bd_addr(p->remote_addr, BT_TRANSPORT_BR_EDR)) != NULL) { + if ((p_cb->state == BTM_PM_ST_ACTIVE) || (p_cb->state == BTM_PM_ST_SNIFF)) { /* There might be any pending packets due to SNIFF or PENDING state */ /* Trigger L2C to start transmission of the pending packets. */ BTM_TRACE_DEBUG("btm mode change to active; check l2c_link for outgoing packets"); @@ -816,27 +785,22 @@ void btm_pm_proc_mode_change (UINT8 hci_status, UINT16 hci_handle, UINT8 mode, U } /* notify registered parties */ - for(yy=0; yy<=BTM_MAX_PM_RECORDS; yy++) - { + for (yy = 0; yy <= BTM_MAX_PM_RECORDS; yy++) { /* set req_mode HOLD mode->ACTIVE */ - if( (mode == BTM_PM_MD_ACTIVE) && (p_cb->req_mode[yy].mode == BTM_PM_MD_HOLD) ) + if ( (mode == BTM_PM_MD_ACTIVE) && (p_cb->req_mode[yy].mode == BTM_PM_MD_HOLD) ) { p_cb->req_mode[yy].mode = BTM_PM_MD_ACTIVE; + } } /* new request has been made. - post a message to BTU task */ - if(old_state & BTM_PM_STORED_MASK) - { + if (old_state & BTM_PM_STORED_MASK) { #if BTM_PM_DEBUG == TRUE BTM_TRACE_DEBUG( "btm_pm_proc_mode_change: Sending stored req:%d", xx); #endif // BTM_PM_DEBUG btm_pm_snd_md_req(BTM_PM_SET_ONLY_ID, xx, NULL); - } - else - { - for(zz=0; zzremote_addr, mode, interval, hci_status); } } @@ -877,7 +839,7 @@ void btm_pm_proc_ssr_evt (UINT8 *p, UINT16 evt_len) UINT16 max_rx_lat; int xx, yy; tBTM_PM_MCB *p_cb; - tACL_CONN *p_acl=NULL; + tACL_CONN *p_acl = NULL; UINT16 use_ssr = TRUE; UNUSED(evt_len); @@ -885,27 +847,24 @@ void btm_pm_proc_ssr_evt (UINT8 *p, UINT16 evt_len) STREAM_TO_UINT16 (handle, p); /* get the index to acl_db */ - if ((xx = btm_handle_to_acl_index(handle)) >= MAX_L2CAP_LINKS) + if ((xx = btm_handle_to_acl_index(handle)) >= MAX_L2CAP_LINKS) { return; + } p += 2; STREAM_TO_UINT16 (max_rx_lat, p); p_cb = &(btm_cb.pm_mode_db[xx]); p_acl = &btm_cb.acl_db[xx]; - if(p_cb->interval == max_rx_lat) - { + if (p_cb->interval == max_rx_lat) { /* using legacy sniff */ use_ssr = FALSE; } /* notify registered parties */ - for(yy=0; yyremote_addr, BTM_PM_STS_SSR, use_ssr, status); } } @@ -927,16 +886,14 @@ BOOLEAN btm_pm_device_in_active_or_sniff_mode(void) /* The active state is the highest state-includes connected device and sniff mode*/ /* Covers active and sniff modes */ - if (BTM_GetNumAclLinks() > 0) - { + if (BTM_GetNumAclLinks() > 0) { BTM_TRACE_DEBUG("%s - ACL links: %d", __func__, BTM_GetNumAclLinks()); return TRUE; } #if ((defined BLE_INCLUDED) && (BLE_INCLUDED == TRUE)) /* Check BLE states */ - if (btm_ble_get_conn_st() != BLE_CONN_IDLE) - { + if (btm_ble_get_conn_st() != BLE_CONN_IDLE) { BTM_TRACE_DEBUG("%s - BLE state: %x", __func__, btm_ble_get_conn_st()); return TRUE; } @@ -960,15 +917,13 @@ BOOLEAN btm_pm_device_in_scan_state(void) /* Check for paging */ if (btm_cb.is_paging || GKI_queue_length(&btm_cb.page_queue) > 0 || - BTM_BL_PAGING_STARTED == btm_cb.busy_level) - { - BTM_TRACE_DEBUG("btm_pm_device_in_scan_state- paging"); - return TRUE; + BTM_BL_PAGING_STARTED == btm_cb.busy_level) { + BTM_TRACE_DEBUG("btm_pm_device_in_scan_state- paging"); + return TRUE; } /* Check for inquiry */ - if ((btm_cb.btm_inq_vars.inq_active & (BTM_BR_INQ_ACTIVE_MASK | BTM_BLE_INQ_ACTIVE_MASK)) != 0) - { + if ((btm_cb.btm_inq_vars.inq_active & (BTM_BR_INQ_ACTIVE_MASK | BTM_BLE_INQ_ACTIVE_MASK)) != 0) { BTM_TRACE_DEBUG("btm_pm_device_in_scan_state- Inq active"); return TRUE; } @@ -987,21 +942,22 @@ BOOLEAN btm_pm_device_in_scan_state(void) *******************************************************************************/ tBTM_CONTRL_STATE BTM_PM_ReadControllerState(void) { - if (TRUE == btm_pm_device_in_active_or_sniff_mode()) - return BTM_CONTRL_ACTIVE; - else - if (TRUE == btm_pm_device_in_scan_state()) - return BTM_CONTRL_SCAN; - else - return BTM_CONTRL_IDLE; + if (TRUE == btm_pm_device_in_active_or_sniff_mode()) { + return BTM_CONTRL_ACTIVE; + } else if (TRUE == btm_pm_device_in_scan_state()) { + return BTM_CONTRL_SCAN; + } else { + return BTM_CONTRL_IDLE; + } } -static const char *mode_to_string(tBTM_PM_MODE mode) { - switch (mode) { +static const char *mode_to_string(tBTM_PM_MODE mode) +{ + switch (mode) { case BTM_PM_MD_ACTIVE: return "ACTIVE"; case BTM_PM_MD_SNIFF: return "SNIFF"; case BTM_PM_MD_PARK: return "PARK"; case BTM_PM_MD_HOLD: return "HOLD"; default: return "UNKNOWN"; - } + } } diff --git a/components/bt/bluedroid/stack/btm/btm_sco.c b/components/bt/bluedroid/stack/btm/btm_sco.c old mode 100755 new mode 100644 index 12ec4fe554..076bb655df --- a/components/bt/bluedroid/stack/btm/btm_sco.c +++ b/components/bt/bluedroid/stack/btm/btm_sco.c @@ -54,19 +54,18 @@ /* L O C A L F U N C T I O N P R O T O T Y P E S */ /********************************************************************************/ -static const tBTM_ESCO_PARAMS btm_esco_defaults = -{ +static const tBTM_ESCO_PARAMS btm_esco_defaults = { BTM_64KBITS_RATE, /* TX Bandwidth (64 kbits/sec) */ BTM_64KBITS_RATE, /* RX Bandwidth (64 kbits/sec) */ 0x000a, /* 10 ms (HS/HF can use EV3, 2-EV3, 3-EV3) */ 0x0060, /* Inp Linear, Air CVSD, 2s Comp, 16bit */ (BTM_SCO_PKT_TYPES_MASK_HV1 + /* Packet Types */ - BTM_SCO_PKT_TYPES_MASK_HV2 + - BTM_SCO_PKT_TYPES_MASK_HV3 + - BTM_SCO_PKT_TYPES_MASK_EV3 + - BTM_SCO_PKT_TYPES_MASK_EV4 + - BTM_SCO_PKT_TYPES_MASK_EV5), - BTM_ESCO_RETRANS_POWER /* Retransmission Effort (Power) */ + BTM_SCO_PKT_TYPES_MASK_HV2 + + BTM_SCO_PKT_TYPES_MASK_HV3 + + BTM_SCO_PKT_TYPES_MASK_EV3 + + BTM_SCO_PKT_TYPES_MASK_EV4 + + BTM_SCO_PKT_TYPES_MASK_EV5), + BTM_ESCO_RETRANS_POWER /* Retransmission Effort (Power) */ }; /******************************************************************************* @@ -85,13 +84,12 @@ void btm_sco_flush_sco_data(UINT16 sco_inx) tSCO_CONN *p ; BT_HDR *p_buf; - if (sco_inx < BTM_MAX_SCO_LINKS) - { + if (sco_inx < BTM_MAX_SCO_LINKS) { p = &btm_cb.sco_cb.sco_db[sco_inx]; - while (p->xmit_data_q.p_first) - { - if ((p_buf = (BT_HDR *)GKI_dequeue (&p->xmit_data_q)) != NULL) + while (p->xmit_data_q.p_first) { + if ((p_buf = (BT_HDR *)GKI_dequeue (&p->xmit_data_q)) != NULL) { GKI_freebuf (p_buf); + } } } #else @@ -146,42 +144,33 @@ static void btm_esco_conn_rsp (UINT16 sco_inx, UINT8 hci_status, BD_ADDR bda, tBTM_ESCO_PARAMS *p_setup; UINT16 temp_pkt_types; - if (sco_inx < BTM_MAX_SCO_LINKS) + if (sco_inx < BTM_MAX_SCO_LINKS) { p_sco = &btm_cb.sco_cb.sco_db[sco_inx]; + } /* Reject the connect request if refused by caller or wrong state */ - if (hci_status != HCI_SUCCESS || p_sco == NULL) - { - if (p_sco) - { + if (hci_status != HCI_SUCCESS || p_sco == NULL) { + if (p_sco) { p_sco->state = (p_sco->state == SCO_ST_W4_CONN_RSP) ? SCO_ST_LISTENING - : SCO_ST_UNUSED; + : SCO_ST_UNUSED; } - if (!btm_cb.sco_cb.esco_supported) - { - if (!btsnd_hcic_reject_conn (bda, hci_status)) - { + if (!btm_cb.sco_cb.esco_supported) { + if (!btsnd_hcic_reject_conn (bda, hci_status)) { + BTM_TRACE_ERROR("Could not reject (e)SCO conn: No Buffer!!!"); + } + } else { + if (!btsnd_hcic_reject_esco_conn (bda, hci_status)) { BTM_TRACE_ERROR("Could not reject (e)SCO conn: No Buffer!!!"); } } - else - { - if (!btsnd_hcic_reject_esco_conn (bda, hci_status)) - { - BTM_TRACE_ERROR("Could not reject (e)SCO conn: No Buffer!!!"); - } - } - } - else /* Connection is being accepted */ - { + } else { /* Connection is being accepted */ p_sco->state = SCO_ST_CONNECTING; p_setup = &p_sco->esco.setup; /* If parameters not specified use the default */ - if (p_parms) + if (p_parms) { *p_setup = *p_parms; - else /* Use the last setup passed thru BTM_SetEscoMode (or defaults) */ - { + } else { /* Use the last setup passed thru BTM_SetEscoMode (or defaults) */ *p_setup = btm_cb.sco_cb.def_esco_parms; } @@ -199,26 +188,20 @@ static void btm_esco_conn_rsp (UINT16 sco_inx, UINT8 hci_status, BD_ADDR bda, } */ /* If SCO request, remove eSCO packet types (conformance) */ - if (p_sco->esco.data.link_type == BTM_LINK_TYPE_SCO) - { + if (p_sco->esco.data.link_type == BTM_LINK_TYPE_SCO) { temp_pkt_types &= BTM_SCO_LINK_ONLY_MASK; temp_pkt_types |= BTM_SCO_EXCEPTION_PKTS_MASK; - } - else - { + } else { /* OR in any exception packet types */ temp_pkt_types |= ((p_setup->packet_types & BTM_SCO_EXCEPTION_PKTS_MASK) | - (btm_cb.btm_sco_pkt_types_supported & BTM_SCO_EXCEPTION_PKTS_MASK)); + (btm_cb.btm_sco_pkt_types_supported & BTM_SCO_EXCEPTION_PKTS_MASK)); } if (btsnd_hcic_accept_esco_conn (bda, p_setup->tx_bw, p_setup->rx_bw, - p_setup->max_latency, p_setup->voice_contfmt, - p_setup->retrans_effort, temp_pkt_types)) - { + p_setup->max_latency, p_setup->voice_contfmt, + p_setup->retrans_effort, temp_pkt_types)) { p_setup->packet_types = temp_pkt_types; - } - else - { + } else { BTM_TRACE_ERROR("Could not accept SCO conn: No Buffer!!!"); } } @@ -244,8 +227,7 @@ void btm_sco_check_send_pkts (UINT16 sco_inx) tSCO_CONN *p_ccb = &p_cb->sco_db[sco_inx]; /* If there is data to send, send it now */ - while (p_ccb->xmit_data_q.p_first != NULL) - { + while (p_ccb->xmit_data_q.p_first != NULL) { p_buf = NULL; #if BTM_SCO_HCI_DEBUG @@ -282,19 +264,16 @@ void btm_route_sco_data(BT_HDR *p_msg) STREAM_TO_UINT8 (pkt_size, p); - if ((sco_inx = btm_find_scb_by_handle(handle)) != BTM_MAX_SCO_LINKS ) - { + if ((sco_inx = btm_find_scb_by_handle(handle)) != BTM_MAX_SCO_LINKS ) { /* send data callback */ if (!btm_cb.sco_cb.p_data_cb ) /* if no data callback registered, just free the buffer */ - GKI_freebuf (p_msg); - else { + GKI_freebuf (p_msg); + } else { (*btm_cb.sco_cb.p_data_cb)(sco_inx, p_msg, (tBTM_SCO_DATA_FLAG) pkt_status); } - } - else /* no mapping handle SCO connection is active, free the buffer */ - { + } else { /* no mapping handle SCO connection is active, free the buffer */ GKI_freebuf (p_msg); } #else @@ -331,17 +310,13 @@ tBTM_STATUS BTM_WriteScoData (UINT16 sco_inx, BT_HDR *p_buf) tBTM_STATUS status = BTM_SUCCESS; if (sco_inx < BTM_MAX_SCO_LINKS && btm_cb.sco_cb.p_data_cb && - p_ccb->state == SCO_ST_CONNECTED) - { + p_ccb->state == SCO_ST_CONNECTED) { /* Ensure we have enough space in the buffer for the SCO and HCI headers */ - if (p_buf->offset < HCI_SCO_PREAMBLE_SIZE) - { + if (p_buf->offset < HCI_SCO_PREAMBLE_SIZE) { BTM_TRACE_ERROR ("BTM SCO - cannot send buffer, offset: %d", p_buf->offset); GKI_freebuf (p_buf); status = BTM_ILLEGAL_VALUE; - } - else /* write HCI header */ - { + } else { /* write HCI header */ /* Step back 3 bytes to add the headers */ p_buf->offset -= HCI_SCO_PREAMBLE_SIZE; /* Set the pointer to the beginning of the data */ @@ -350,8 +325,7 @@ tBTM_STATUS BTM_WriteScoData (UINT16 sco_inx, BT_HDR *p_buf) UINT16_TO_STREAM (p, p_ccb->hci_handle); /* only sent the first BTM_SCO_DATA_SIZE_MAX bytes data if more than max, and set warning status */ - if (p_buf->len > BTM_SCO_DATA_SIZE_MAX) - { + if (p_buf->len > BTM_SCO_DATA_SIZE_MAX) { p_buf->len = BTM_SCO_DATA_SIZE_MAX; status = BTM_SCO_BAD_LENGTH; } @@ -363,13 +337,11 @@ tBTM_STATUS BTM_WriteScoData (UINT16 sco_inx, BT_HDR *p_buf) btm_sco_check_send_pkts (sco_inx); } - } - else - { + } else { GKI_freebuf(p_buf); BTM_TRACE_WARNING ("BTM_WriteScoData, invalid sco index: %d at state [%d]", - sco_inx, btm_cb.sco_cb.sco_db[sco_inx].state); + sco_inx, btm_cb.sco_cb.sco_db[sco_inx].state); status = BTM_UNKNOWN_ADDR; } @@ -393,67 +365,58 @@ tBTM_STATUS BTM_WriteScoData (UINT16 sco_inx, BT_HDR *p_buf) ** *******************************************************************************/ static tBTM_STATUS btm_send_connect_request(UINT16 acl_handle, - tBTM_ESCO_PARAMS *p_setup) + tBTM_ESCO_PARAMS *p_setup) { UINT16 temp_pkt_types; UINT8 xx; tACL_CONN *p_acl; /* Send connect request depending on version of spec */ - if (!btm_cb.sco_cb.esco_supported) - { - if (!btsnd_hcic_add_SCO_conn (acl_handle, BTM_ESCO_2_SCO(p_setup->packet_types))) + if (!btm_cb.sco_cb.esco_supported) { + if (!btsnd_hcic_add_SCO_conn (acl_handle, BTM_ESCO_2_SCO(p_setup->packet_types))) { return (BTM_NO_RESOURCES); - } - else - { + } + } else { temp_pkt_types = (p_setup->packet_types & BTM_SCO_SUPPORTED_PKTS_MASK & - btm_cb.btm_sco_pkt_types_supported); + btm_cb.btm_sco_pkt_types_supported); /* OR in any exception packet types */ temp_pkt_types |= ((p_setup->packet_types & BTM_SCO_EXCEPTION_PKTS_MASK) | - (btm_cb.btm_sco_pkt_types_supported & BTM_SCO_EXCEPTION_PKTS_MASK)); + (btm_cb.btm_sco_pkt_types_supported & BTM_SCO_EXCEPTION_PKTS_MASK)); /* Finally, remove EDR eSCO if the remote device doesn't support it */ /* UPF25: Only SCO was brought up in this case */ btm_handle_to_acl_index(acl_handle); - if ((xx = btm_handle_to_acl_index(acl_handle)) < MAX_L2CAP_LINKS) - { + if ((xx = btm_handle_to_acl_index(acl_handle)) < MAX_L2CAP_LINKS) { p_acl = &btm_cb.acl_db[xx]; - if (!HCI_EDR_ESCO_2MPS_SUPPORTED(p_acl->peer_lmp_features[HCI_EXT_FEATURES_PAGE_0])) - { + if (!HCI_EDR_ESCO_2MPS_SUPPORTED(p_acl->peer_lmp_features[HCI_EXT_FEATURES_PAGE_0])) { BTM_TRACE_WARNING("BTM Remote does not support 2-EDR eSCO"); temp_pkt_types |= (HCI_ESCO_PKT_TYPES_MASK_NO_2_EV3 | HCI_ESCO_PKT_TYPES_MASK_NO_2_EV5); } - if (!HCI_EDR_ESCO_3MPS_SUPPORTED(p_acl->peer_lmp_features[HCI_EXT_FEATURES_PAGE_0])) - { + if (!HCI_EDR_ESCO_3MPS_SUPPORTED(p_acl->peer_lmp_features[HCI_EXT_FEATURES_PAGE_0])) { BTM_TRACE_WARNING("BTM Remote does not support 3-EDR eSCO"); temp_pkt_types |= (HCI_ESCO_PKT_TYPES_MASK_NO_3_EV3 | HCI_ESCO_PKT_TYPES_MASK_NO_3_EV5); } - /* Check to see if BR/EDR Secure Connections is being used - ** If so, we cannot use SCO-only packet types (HFP 1.7) - */ - if (BTM_BothEndsSupportSecureConnections(p_acl->remote_addr)) - { + /* Check to see if BR/EDR Secure Connections is being used + ** If so, we cannot use SCO-only packet types (HFP 1.7) + */ + if (BTM_BothEndsSupportSecureConnections(p_acl->remote_addr)) { temp_pkt_types &= ~(BTM_SCO_PKT_TYPE_MASK); BTM_TRACE_DEBUG("%s: SCO Conn: pkt_types after removing SCO (0x%04x)", __FUNCTION__, - temp_pkt_types); + temp_pkt_types); /* Return error if no packet types left */ - if (temp_pkt_types == 0) - { + if (temp_pkt_types == 0) { BTM_TRACE_ERROR("%s: SCO Conn (BR/EDR SC): No packet types available", __FUNCTION__); return (BTM_WRONG_MODE); } - } - else - { + } else { BTM_TRACE_DEBUG("%s: SCO Conn(BR/EDR SC):local or peer does not support BR/EDR SC", __FUNCTION__); } @@ -461,9 +424,9 @@ static tBTM_STATUS btm_send_connect_request(UINT16 acl_handle, BTM_TRACE_API(" txbw 0x%x, rxbw 0x%x, lat 0x%x, voice 0x%x, retrans 0x%02x, pkt 0x%04x", - p_setup->tx_bw, p_setup->rx_bw, - p_setup->max_latency, p_setup->voice_contfmt, - p_setup->retrans_effort, temp_pkt_types); + p_setup->tx_bw, p_setup->rx_bw, + p_setup->max_latency, p_setup->voice_contfmt, + p_setup->retrans_effort, temp_pkt_types); if (!btsnd_hcic_setup_esco_conn(acl_handle, p_setup->tx_bw, @@ -471,10 +434,11 @@ static tBTM_STATUS btm_send_connect_request(UINT16 acl_handle, p_setup->max_latency, p_setup->voice_contfmt, p_setup->retrans_effort, - temp_pkt_types)) + temp_pkt_types)) { return (BTM_NO_RESOURCES); - else + } else { p_setup->packet_types = temp_pkt_types; + } } return (BTM_CMD_STARTED); @@ -512,8 +476,7 @@ void btm_accept_sco_link(UINT16 sco_inx, tBTM_ESCO_PARAMS *p_setup, #if (BTM_MAX_SCO_LINKS>0) tSCO_CONN *p_sco; - if (sco_inx >= BTM_MAX_SCO_LINKS) - { + if (sco_inx >= BTM_MAX_SCO_LINKS) { BTM_TRACE_ERROR("btm_accept_sco_link: Invalid sco_inx(%d)", sco_inx); return; } @@ -589,87 +552,75 @@ tBTM_STATUS BTM_CreateSco (BD_ADDR remote_bda, BOOLEAN is_orig, UINT16 pkt_types *p_sco_inx = BTM_INVALID_SCO_INDEX; /* If originating, ensure that there is an ACL connection to the BD Address */ - if (is_orig) - { - if ((!remote_bda) || ((acl_handle = BTM_GetHCIConnHandle (remote_bda, BT_TRANSPORT_BR_EDR)) == 0xFFFF)) + if (is_orig) { + if ((!remote_bda) || ((acl_handle = BTM_GetHCIConnHandle (remote_bda, BT_TRANSPORT_BR_EDR)) == 0xFFFF)) { return (BTM_UNKNOWN_ADDR); + } } - if (remote_bda) - { + if (remote_bda) { /* If any SCO is being established to the remote BD address, refuse this */ - for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) - { + for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) { if (((p->state == SCO_ST_CONNECTING) || (p->state == SCO_ST_LISTENING) - || (p->state == SCO_ST_PEND_UNPARK)) - && (!memcmp (p->esco.data.bd_addr, remote_bda, BD_ADDR_LEN))) - { + || (p->state == SCO_ST_PEND_UNPARK)) + && (!memcmp (p->esco.data.bd_addr, remote_bda, BD_ADDR_LEN))) { + return (BTM_BUSY); + } + } + } else { + /* Support only 1 wildcard BD address at a time */ + for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) { + if ((p->state == SCO_ST_LISTENING) && (!p->rem_bd_known)) { return (BTM_BUSY); } } } - else - { - /* Support only 1 wildcard BD address at a time */ - for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) - { - if ((p->state == SCO_ST_LISTENING) && (!p->rem_bd_known)) - return (BTM_BUSY); - } - } /* Now, try to find an unused control block, and kick off the SCO establishment */ - for (xx = 0, p = &btm_cb.sco_cb.sco_db[0]; xx < BTM_MAX_SCO_LINKS; xx++, p++) - { - if (p->state == SCO_ST_UNUSED) - { - if (remote_bda) - { - if (is_orig) - { + for (xx = 0, p = &btm_cb.sco_cb.sco_db[0]; xx < BTM_MAX_SCO_LINKS; xx++, p++) { + if (p->state == SCO_ST_UNUSED) { + if (remote_bda) { + if (is_orig) { /* can not create SCO link if in park mode */ #if BTM_SCO_WAKE_PARKED_LINK == TRUE - if(BTM_ReadPowerMode(remote_bda, &md) == BTM_SUCCESS) - { - if (md == BTM_PM_MD_PARK || md == BTM_PM_MD_SNIFF) - { - memset( (void*)&pm, 0, sizeof(pm)); + if (BTM_ReadPowerMode(remote_bda, &md) == BTM_SUCCESS) { + if (md == BTM_PM_MD_PARK || md == BTM_PM_MD_SNIFF) { + memset( (void *)&pm, 0, sizeof(pm)); pm.mode = BTM_PM_MD_ACTIVE; BTM_SetPowerMode(BTM_PM_SET_ONLY_ID, remote_bda, &pm); p->state = SCO_ST_PEND_UNPARK; } } #else // BTM_SCO_WAKE_PARKED_LINK - if( (BTM_ReadPowerMode(remote_bda, &mode) == BTM_SUCCESS) && (mode == BTM_PM_MD_PARK) ) + if ( (BTM_ReadPowerMode(remote_bda, &mode) == BTM_SUCCESS) && (mode == BTM_PM_MD_PARK) ) { return (BTM_WRONG_MODE); + } #endif // BTM_SCO_WAKE_PARKED_LINK } memcpy (p->esco.data.bd_addr, remote_bda, BD_ADDR_LEN); p->rem_bd_known = TRUE; - } - else + } else { p->rem_bd_known = FALSE; + } /* Link role is ignored in for this message */ - if (pkt_types == BTM_IGNORE_SCO_PKT_TYPE) + if (pkt_types == BTM_IGNORE_SCO_PKT_TYPE) { pkt_types = btm_cb.sco_cb.def_esco_parms.packet_types; + } p_setup = &p->esco.setup; *p_setup = btm_cb.sco_cb.def_esco_parms; p_setup->packet_types = (btm_cb.sco_cb.desired_sco_mode == BTM_LINK_TYPE_SCO) - ? (pkt_types & BTM_SCO_LINK_ONLY_MASK) : pkt_types; + ? (pkt_types & BTM_SCO_LINK_ONLY_MASK) : pkt_types; temp_pkt_types = (p_setup->packet_types & BTM_SCO_SUPPORTED_PKTS_MASK & - btm_cb.btm_sco_pkt_types_supported); + btm_cb.btm_sco_pkt_types_supported); /* OR in any exception packet types */ - if (btm_cb.sco_cb.desired_sco_mode == HCI_LINK_TYPE_ESCO) - { + if (btm_cb.sco_cb.desired_sco_mode == HCI_LINK_TYPE_ESCO) { temp_pkt_types |= ((p_setup->packet_types & BTM_SCO_EXCEPTION_PKTS_MASK) | - (btm_cb.btm_sco_pkt_types_supported & BTM_SCO_EXCEPTION_PKTS_MASK)); - } - else /* Only using SCO packet types; turn off EDR also */ - { + (btm_cb.btm_sco_pkt_types_supported & BTM_SCO_EXCEPTION_PKTS_MASK)); + } else { /* Only using SCO packet types; turn off EDR also */ temp_pkt_types |= BTM_SCO_EXCEPTION_PKTS_MASK; } @@ -679,36 +630,32 @@ tBTM_STATUS BTM_CreateSco (BD_ADDR remote_bda, BOOLEAN is_orig, UINT16 pkt_types p->hci_handle = BTM_INVALID_HCI_HANDLE; p->is_orig = is_orig; - if( p->state != SCO_ST_PEND_UNPARK ) - { - if (is_orig) - { + if ( p->state != SCO_ST_PEND_UNPARK ) { + if (is_orig) { /* If role change is in progress, do not proceed with SCO setup * Wait till role change is complete */ p_acl = btm_bda_to_acl(remote_bda, BT_TRANSPORT_BR_EDR); - if (p_acl && p_acl->switch_role_state != BTM_ACL_SWKEY_STATE_IDLE) - { - BTM_TRACE_API("Role Change is in progress for ACL handle 0x%04x",acl_handle); + if (p_acl && p_acl->switch_role_state != BTM_ACL_SWKEY_STATE_IDLE) { + BTM_TRACE_API("Role Change is in progress for ACL handle 0x%04x", acl_handle); p->state = SCO_ST_PEND_ROLECHANGE; } } } - if( p->state != SCO_ST_PEND_UNPARK && p->state != SCO_ST_PEND_ROLECHANGE ) - { - if (is_orig) - { + if ( p->state != SCO_ST_PEND_UNPARK && p->state != SCO_ST_PEND_ROLECHANGE ) { + if (is_orig) { BTM_TRACE_API("BTM_CreateSco -> (e)SCO Link for ACL handle 0x%04x, Desired Type %d", - acl_handle, btm_cb.sco_cb.desired_sco_mode); + acl_handle, btm_cb.sco_cb.desired_sco_mode); - if ((btm_send_connect_request(acl_handle, p_setup)) != BTM_CMD_STARTED) + if ((btm_send_connect_request(acl_handle, p_setup)) != BTM_CMD_STARTED) { return (BTM_NO_RESOURCES); + } p->state = SCO_ST_CONNECTING; - } - else + } else { p->state = SCO_ST_LISTENING; + } } *p_sco_inx = xx; @@ -740,17 +687,17 @@ void btm_sco_chk_pend_unpark (UINT8 hci_status, UINT16 hci_handle) UINT16 acl_handle; tSCO_CONN *p = &btm_cb.sco_cb.sco_db[0]; - for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) - { + for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) { if ((p->state == SCO_ST_PEND_UNPARK) && - ((acl_handle = BTM_GetHCIConnHandle (p->esco.data.bd_addr, BT_TRANSPORT_BR_EDR)) == hci_handle)) + ((acl_handle = BTM_GetHCIConnHandle (p->esco.data.bd_addr, BT_TRANSPORT_BR_EDR)) == hci_handle)) { BTM_TRACE_API("btm_sco_chk_pend_unpark -> (e)SCO Link for ACL handle 0x%04x, Desired Type %d, hci_status 0x%02x", - acl_handle, btm_cb.sco_cb.desired_sco_mode, hci_status); + acl_handle, btm_cb.sco_cb.desired_sco_mode, hci_status); - if ((btm_send_connect_request(acl_handle, &p->esco.setup)) == BTM_CMD_STARTED) + if ((btm_send_connect_request(acl_handle, &p->esco.setup)) == BTM_CMD_STARTED) { p->state = SCO_ST_CONNECTING; + } } } #endif // BTM_MAX_SCO_LINKS @@ -774,16 +721,16 @@ void btm_sco_chk_pend_rolechange (UINT16 hci_handle) UINT16 acl_handle; tSCO_CONN *p = &btm_cb.sco_cb.sco_db[0]; - for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) - { + for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) { if ((p->state == SCO_ST_PEND_ROLECHANGE) && - ((acl_handle = BTM_GetHCIConnHandle (p->esco.data.bd_addr, BT_TRANSPORT_BR_EDR)) == hci_handle)) + ((acl_handle = BTM_GetHCIConnHandle (p->esco.data.bd_addr, BT_TRANSPORT_BR_EDR)) == hci_handle)) { BTM_TRACE_API("btm_sco_chk_pend_rolechange -> (e)SCO Link for ACL handle 0x%04x", acl_handle); - if ((btm_send_connect_request(acl_handle, &p->esco.setup)) == BTM_CMD_STARTED) + if ((btm_send_connect_request(acl_handle, &p->esco.setup)) == BTM_CMD_STARTED) { p->state = SCO_ST_CONNECTING; + } } } #endif @@ -807,17 +754,15 @@ void btm_sco_conn_req (BD_ADDR bda, DEV_CLASS dev_class, UINT8 link_type) UINT16 xx; tBTM_ESCO_CONN_REQ_EVT_DATA evt_data; - for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) - { + for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) { /* * If the sco state is in the SCO_ST_CONNECTING state, we still need * to return accept sco to avoid race conditon for sco creation */ int rem_bd_matches = p->rem_bd_known && - !memcmp (p->esco.data.bd_addr, bda, BD_ADDR_LEN); + !memcmp (p->esco.data.bd_addr, bda, BD_ADDR_LEN); if (((p->state == SCO_ST_CONNECTING) && rem_bd_matches) || - ((p->state == SCO_ST_LISTENING) && (rem_bd_matches || !p->rem_bd_known))) - { + ((p->state == SCO_ST_LISTENING) && (rem_bd_matches || !p->rem_bd_known))) { /* If this guy was a wildcard, he is not one any more */ p->rem_bd_known = TRUE; p->esco.data.link_type = link_type; @@ -825,27 +770,21 @@ void btm_sco_conn_req (BD_ADDR bda, DEV_CLASS dev_class, UINT8 link_type) memcpy (p->esco.data.bd_addr, bda, BD_ADDR_LEN); /* If no callback, auto-accept the connection if packet types match */ - if (!p->esco.p_esco_cback) - { + if (!p->esco.p_esco_cback) { /* If requesting eSCO reject if default parameters are SCO only */ if ((link_type == BTM_LINK_TYPE_ESCO - && !(p_sco->def_esco_parms.packet_types & BTM_ESCO_LINK_ONLY_MASK) - && ((p_sco->def_esco_parms.packet_types & BTM_SCO_EXCEPTION_PKTS_MASK) - == BTM_SCO_EXCEPTION_PKTS_MASK)) + && !(p_sco->def_esco_parms.packet_types & BTM_ESCO_LINK_ONLY_MASK) + && ((p_sco->def_esco_parms.packet_types & BTM_SCO_EXCEPTION_PKTS_MASK) + == BTM_SCO_EXCEPTION_PKTS_MASK)) - /* Reject request if SCO is desired but no SCO packets delected */ - || (link_type == BTM_LINK_TYPE_SCO - && !(p_sco->def_esco_parms.packet_types & BTM_SCO_LINK_ONLY_MASK))) - { + /* Reject request if SCO is desired but no SCO packets delected */ + || (link_type == BTM_LINK_TYPE_SCO + && !(p_sco->def_esco_parms.packet_types & BTM_SCO_LINK_ONLY_MASK))) { btm_esco_conn_rsp(xx, HCI_ERR_HOST_REJECT_RESOURCES, bda, NULL); - } - else /* Accept the request */ - { + } else { /* Accept the request */ btm_esco_conn_rsp(xx, HCI_SUCCESS, bda, NULL); } - } - else /* Notify upper layer of connect indication */ - { + } else { /* Notify upper layer of connect indication */ memcpy(evt_data.bd_addr, bda, BD_ADDR_LEN); memcpy(evt_data.dev_class, dev_class, DEV_CLASS_LEN); evt_data.link_type = link_type; @@ -858,13 +797,10 @@ void btm_sco_conn_req (BD_ADDR bda, DEV_CLASS dev_class, UINT8 link_type) } /* TCS usage */ - if (btm_cb.sco_cb.app_sco_ind_cb) - { + if (btm_cb.sco_cb.app_sco_ind_cb) { /* Now, try to find an unused control block */ - for (xx = 0, p = &btm_cb.sco_cb.sco_db[0]; xx < BTM_MAX_SCO_LINKS; xx++, p++) - { - if (p->state == SCO_ST_UNUSED) - { + for (xx = 0, p = &btm_cb.sco_cb.sco_db[0]; xx < BTM_MAX_SCO_LINKS; xx++, p++) { + if (p->state == SCO_ST_UNUSED) { p->is_orig = FALSE; p->state = SCO_ST_LISTENING; @@ -874,8 +810,7 @@ void btm_sco_conn_req (BD_ADDR bda, DEV_CLASS dev_class, UINT8 link_type) break; } } - if( xx < BTM_MAX_SCO_LINKS) - { + if ( xx < BTM_MAX_SCO_LINKS) { btm_cb.sco_cb.app_sco_ind_cb(xx); return; } @@ -910,58 +845,48 @@ void btm_sco_connected (UINT8 hci_status, BD_ADDR bda, UINT16 hci_handle, btm_cb.sco_cb.sco_disc_reason = hci_status; #if (BTM_MAX_SCO_LINKS>0) - for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) - { + for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) { if (((p->state == SCO_ST_CONNECTING) || - (p->state == SCO_ST_LISTENING) || - (p->state == SCO_ST_W4_CONN_RSP)) - && (p->rem_bd_known) - && (!bda || !memcmp (p->esco.data.bd_addr, bda, BD_ADDR_LEN))) - { - if (hci_status != HCI_SUCCESS) - { + (p->state == SCO_ST_LISTENING) || + (p->state == SCO_ST_W4_CONN_RSP)) + && (p->rem_bd_known) + && (!bda || !memcmp (p->esco.data.bd_addr, bda, BD_ADDR_LEN))) { + if (hci_status != HCI_SUCCESS) { /* Report the error if originator, otherwise remain in Listen mode */ - if (p->is_orig) - { + if (p->is_orig) { /* If role switch is pending, we need try again after role switch is complete */ - if(hci_status == HCI_ERR_ROLE_SWITCH_PENDING) - { - BTM_TRACE_API("Role Change pending for HCI handle 0x%04x",hci_handle); + if (hci_status == HCI_ERR_ROLE_SWITCH_PENDING) { + BTM_TRACE_API("Role Change pending for HCI handle 0x%04x", hci_handle); p->state = SCO_ST_PEND_ROLECHANGE; } /* avoid calling disconnect callback because of sco creation race */ - else if (hci_status != HCI_ERR_LMP_ERR_TRANS_COLLISION) - { + else if (hci_status != HCI_ERR_LMP_ERR_TRANS_COLLISION) { p->state = SCO_ST_UNUSED; (*p->p_disc_cb)(xx); } - } - else - { + } else { /* Notify the upper layer that incoming sco connection has failed. */ - if (p->state == SCO_ST_CONNECTING) - { + if (p->state == SCO_ST_CONNECTING) { p->state = SCO_ST_UNUSED; (*p->p_disc_cb)(xx); - } - else + } else { p->state = SCO_ST_LISTENING; + } } return; } - if (p->state == SCO_ST_LISTENING) + if (p->state == SCO_ST_LISTENING) { spt = TRUE; + } p->state = SCO_ST_CONNECTED; p->hci_handle = hci_handle; - if (!btm_cb.sco_cb.esco_supported) - { + if (!btm_cb.sco_cb.esco_supported) { p->esco.data.link_type = BTM_LINK_TYPE_SCO; - if (spt) - { + if (spt) { parms.packet_types = p->esco.setup.packet_types; /* Keep the other parameters the same for SCO */ parms.max_latency = p->esco.setup.max_latency; @@ -969,11 +894,10 @@ void btm_sco_connected (UINT8 hci_status, BD_ADDR bda, UINT16 hci_handle, BTM_ChangeEScoLinkParms(xx, &parms); } - } - else - { - if (p_esco_data) + } else { + if (p_esco_data) { p->esco.data = *p_esco_data; + } } (*p->p_conn_cb)(xx); @@ -1001,10 +925,8 @@ UINT16 btm_find_scb_by_handle (UINT16 handle) int xx; tSCO_CONN *p = &btm_cb.sco_cb.sco_db[0]; - for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) - { - if ((p->state == SCO_ST_CONNECTED) && (p->hci_handle == handle)) - { + for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) { + if ((p->state == SCO_ST_CONNECTED) && (p->hci_handle == handle)) { return (xx); } } @@ -1029,12 +951,12 @@ tBTM_STATUS BTM_RemoveSco (UINT16 sco_inx) UINT16 tempstate; /* Validity check */ - if ((sco_inx >= BTM_MAX_SCO_LINKS) || (p->state == SCO_ST_UNUSED)) + if ((sco_inx >= BTM_MAX_SCO_LINKS) || (p->state == SCO_ST_UNUSED)) { return (BTM_UNKNOWN_ADDR); + } /* If no HCI handle, simply drop the connection and return */ - if (p->hci_handle == BTM_INVALID_HCI_HANDLE || p->state == SCO_ST_PEND_UNPARK) - { + if (p->hci_handle == BTM_INVALID_HCI_HANDLE || p->state == SCO_ST_PEND_UNPARK) { p->hci_handle = BTM_INVALID_HCI_HANDLE; p->state = SCO_ST_UNUSED; p->esco.p_esco_cback = NULL; /* Deregister the eSCO event callback */ @@ -1044,8 +966,7 @@ tBTM_STATUS BTM_RemoveSco (UINT16 sco_inx) tempstate = p->state; p->state = SCO_ST_DISCONNECTING; - if (!btsnd_hcic_disconnect (p->hci_handle, HCI_ERR_PEER_USER)) - { + if (!btsnd_hcic_disconnect (p->hci_handle, HCI_ERR_PEER_USER)) { p->state = tempstate; return (BTM_NO_RESOURCES); } @@ -1071,10 +992,8 @@ void btm_remove_sco_links (BD_ADDR bda) tSCO_CONN *p = &btm_cb.sco_cb.sco_db[0]; UINT16 xx; - for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) - { - if (p->rem_bd_known && (!memcmp (p->esco.data.bd_addr, bda, BD_ADDR_LEN))) - { + for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) { + if (p->rem_bd_known && (!memcmp (p->esco.data.bd_addr, bda, BD_ADDR_LEN))) { BTM_RemoveSco(xx); } } @@ -1102,10 +1021,8 @@ void btm_sco_removed (UINT16 hci_handle, UINT8 reason) #if (BTM_MAX_SCO_LINKS>0) p = &btm_cb.sco_cb.sco_db[0]; - for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) - { - if ((p->state != SCO_ST_UNUSED) && (p->state != SCO_ST_LISTENING) && (p->hci_handle == hci_handle)) - { + for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) { + if ((p->state != SCO_ST_UNUSED) && (p->state != SCO_ST_LISTENING) && (p->hci_handle == hci_handle)) { btm_sco_flush_sco_data(xx); p->state = SCO_ST_UNUSED; @@ -1140,12 +1057,9 @@ void btm_sco_acl_removed (BD_ADDR bda) tSCO_CONN *p = &btm_cb.sco_cb.sco_db[0]; UINT16 xx; - for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) - { - if (p->state != SCO_ST_UNUSED) - { - if ((!bda) || (!memcmp (p->esco.data.bd_addr, bda, BD_ADDR_LEN) && p->rem_bd_known)) - { + for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) { + if (p->state != SCO_ST_UNUSED) { + if ((!bda) || (!memcmp (p->esco.data.bd_addr, bda, BD_ADDR_LEN) && p->rem_bd_known)) { btm_sco_flush_sco_data(xx); p->state = SCO_ST_UNUSED; @@ -1189,8 +1103,9 @@ tBTM_STATUS BTM_SetScoPacketTypes (UINT16 sco_inx, UINT16 pkt_types) tSCO_CONN *p; /* Validity check */ - if (sco_inx >= BTM_MAX_SCO_LINKS) + if (sco_inx >= BTM_MAX_SCO_LINKS) { return (BTM_UNKNOWN_ADDR); + } p = &btm_cb.sco_cb.sco_db[sco_inx]; parms.packet_types = pkt_types; @@ -1233,10 +1148,11 @@ UINT16 BTM_ReadScoPacketTypes (UINT16 sco_inx) tSCO_CONN *p = &btm_cb.sco_cb.sco_db[sco_inx]; /* Validity check */ - if ((sco_inx < BTM_MAX_SCO_LINKS) && (p->state == SCO_ST_CONNECTED)) + if ((sco_inx < BTM_MAX_SCO_LINKS) && (p->state == SCO_ST_CONNECTED)) { return (p->esco.setup.packet_types); - else + } else { return (0); + } #else return (0); #endif @@ -1302,10 +1218,11 @@ UINT16 BTM_ReadScoHandle (UINT16 sco_inx) tSCO_CONN *p = &btm_cb.sco_cb.sco_db[sco_inx]; /* Validity check */ - if ((sco_inx < BTM_MAX_SCO_LINKS) && (p->state == SCO_ST_CONNECTED)) + if ((sco_inx < BTM_MAX_SCO_LINKS) && (p->state == SCO_ST_CONNECTED)) { return (p->hci_handle); - else + } else { return (BTM_INVALID_HCI_HANDLE); + } #else return (BTM_INVALID_HCI_HANDLE); #endif @@ -1327,10 +1244,11 @@ UINT8 *BTM_ReadScoBdAddr (UINT16 sco_inx) tSCO_CONN *p = &btm_cb.sco_cb.sco_db[sco_inx]; /* Validity check */ - if ((sco_inx < BTM_MAX_SCO_LINKS) && (p->rem_bd_known)) + if ((sco_inx < BTM_MAX_SCO_LINKS) && (p->rem_bd_known)) { return (p->esco.data.bd_addr); - else + } else { return (NULL); + } #else return (NULL); #endif @@ -1356,14 +1274,11 @@ tBTM_STATUS BTM_SetEScoMode (tBTM_SCO_TYPE sco_mode, tBTM_ESCO_PARAMS *p_parms) tSCO_CB *p_esco = &btm_cb.sco_cb; tBTM_ESCO_PARAMS *p_def = &p_esco->def_esco_parms; - if (p_esco->esco_supported) - { - if (p_parms) - { - if (sco_mode == BTM_LINK_TYPE_ESCO) - *p_def = *p_parms; /* Save as the default parameters */ - else /* Load only the SCO packet types */ - { + if (p_esco->esco_supported) { + if (p_parms) { + if (sco_mode == BTM_LINK_TYPE_ESCO) { + *p_def = *p_parms; /* Save as the default parameters */ + } else { /* Load only the SCO packet types */ p_def->packet_types = p_parms->packet_types; p_def->tx_bw = BTM_64KBITS_RATE; p_def->rx_bw = BTM_64KBITS_RATE; @@ -1377,9 +1292,7 @@ tBTM_STATUS BTM_SetEScoMode (tBTM_SCO_TYPE sco_mode, tBTM_ESCO_PARAMS *p_parms) } p_esco->desired_sco_mode = sco_mode; BTM_TRACE_API("BTM_SetEScoMode -> mode %d", sco_mode); - } - else - { + } else { p_esco->desired_sco_mode = BTM_LINK_TYPE_SCO; p_def->packet_types &= BTM_SCO_LINK_ONLY_MASK; p_def->retrans_effort = 0; @@ -1387,9 +1300,9 @@ tBTM_STATUS BTM_SetEScoMode (tBTM_SCO_TYPE sco_mode, tBTM_ESCO_PARAMS *p_parms) } BTM_TRACE_DEBUG(" txbw 0x%08x, rxbw 0x%08x, max_lat 0x%04x, voice 0x%04x, pkt 0x%04x, rtx effort 0x%02x", - p_def->tx_bw, p_def->rx_bw, p_def->max_latency, - p_def->voice_contfmt, p_def->packet_types, - p_def->retrans_effort); + p_def->tx_bw, p_def->rx_bw, p_def->max_latency, + p_def->voice_contfmt, p_def->packet_types, + p_def->retrans_effort); return (BTM_SUCCESS); } @@ -1414,15 +1327,13 @@ tBTM_STATUS BTM_SetEScoMode (tBTM_SCO_TYPE sco_mode, tBTM_ESCO_PARAMS *p_parms) tBTM_STATUS BTM_RegForEScoEvts (UINT16 sco_inx, tBTM_ESCO_CBACK *p_esco_cback) { #if (BTM_MAX_SCO_LINKS>0) - if (!btm_cb.sco_cb.esco_supported) - { + if (!btm_cb.sco_cb.esco_supported) { btm_cb.sco_cb.sco_db[sco_inx].esco.p_esco_cback = NULL; return (BTM_MODE_UNSUPPORTED); } if (sco_inx < BTM_MAX_SCO_LINKS && - btm_cb.sco_cb.sco_db[sco_inx].state != SCO_ST_UNUSED) - { + btm_cb.sco_cb.sco_db[sco_inx].state != SCO_ST_UNUSED) { btm_cb.sco_cb.sco_db[sco_inx].esco.p_esco_cback = p_esco_cback; return (BTM_SUCCESS); } @@ -1456,19 +1367,15 @@ tBTM_STATUS BTM_ReadEScoLinkParms (UINT16 sco_inx, tBTM_ESCO_DATA *p_parms) BTM_TRACE_API("BTM_ReadEScoLinkParms -> sco_inx 0x%04x", sco_inx); if (sco_inx < BTM_MAX_SCO_LINKS && - btm_cb.sco_cb.sco_db[sco_inx].state >= SCO_ST_CONNECTED) - { + btm_cb.sco_cb.sco_db[sco_inx].state >= SCO_ST_CONNECTED) { *p_parms = btm_cb.sco_cb.sco_db[sco_inx].esco.data; return (BTM_SUCCESS); } - if (sco_inx == BTM_FIRST_ACTIVE_SCO_INDEX) - { - for (index = 0; index < BTM_MAX_SCO_LINKS; index++) - { - if (btm_cb.sco_cb.sco_db[index].state >= SCO_ST_CONNECTED) - { - BTM_TRACE_API("BTM_ReadEScoLinkParms the first active SCO index is %d",index); + if (sco_inx == BTM_FIRST_ACTIVE_SCO_INDEX) { + for (index = 0; index < BTM_MAX_SCO_LINKS; index++) { + if (btm_cb.sco_cb.sco_db[index].state >= SCO_ST_CONNECTED) { + BTM_TRACE_API("BTM_ReadEScoLinkParms the first active SCO index is %d", index); *p_parms = btm_cb.sco_cb.sco_db[index].esco.data; return (BTM_SUCCESS); } @@ -1510,50 +1417,50 @@ tBTM_STATUS BTM_ChangeEScoLinkParms (UINT16 sco_inx, tBTM_CHG_ESCO_PARAMS *p_par /* Make sure sco handle is valid and on an active link */ if (sco_inx >= BTM_MAX_SCO_LINKS || - btm_cb.sco_cb.sco_db[sco_inx].state != SCO_ST_CONNECTED) + btm_cb.sco_cb.sco_db[sco_inx].state != SCO_ST_CONNECTED) { return (BTM_WRONG_MODE); + } p_sco = &btm_cb.sco_cb.sco_db[sco_inx]; p_setup = &p_sco->esco.setup; /* If SCO connection OR eSCO not supported just send change packet types */ if (p_sco->esco.data.link_type == BTM_LINK_TYPE_SCO || - !btm_cb.sco_cb.esco_supported) - { + !btm_cb.sco_cb.esco_supported) { p_setup->packet_types = p_parms->packet_types & - (btm_cb.btm_sco_pkt_types_supported & BTM_SCO_LINK_ONLY_MASK); + (btm_cb.btm_sco_pkt_types_supported & BTM_SCO_LINK_ONLY_MASK); BTM_TRACE_API("BTM_ChangeEScoLinkParms -> SCO Link for handle 0x%04x, pkt 0x%04x", - p_sco->hci_handle, p_setup->packet_types); + p_sco->hci_handle, p_setup->packet_types); if (!btsnd_hcic_change_conn_type (p_sco->hci_handle, - BTM_ESCO_2_SCO(p_setup->packet_types))) + BTM_ESCO_2_SCO(p_setup->packet_types))) { return (BTM_NO_RESOURCES); - } - else - { + } + } else { temp_pkt_types = (p_parms->packet_types & BTM_SCO_SUPPORTED_PKTS_MASK & - btm_cb.btm_sco_pkt_types_supported); + btm_cb.btm_sco_pkt_types_supported); /* OR in any exception packet types */ temp_pkt_types |= ((p_parms->packet_types & BTM_SCO_EXCEPTION_PKTS_MASK) | - (btm_cb.btm_sco_pkt_types_supported & BTM_SCO_EXCEPTION_PKTS_MASK)); + (btm_cb.btm_sco_pkt_types_supported & BTM_SCO_EXCEPTION_PKTS_MASK)); BTM_TRACE_API("BTM_ChangeEScoLinkParms -> eSCO Link for handle 0x%04x", p_sco->hci_handle); BTM_TRACE_API(" txbw 0x%x, rxbw 0x%x, lat 0x%x, voice 0x%x, retrans 0x%02x, pkt 0x%04x", - p_setup->tx_bw, p_setup->rx_bw, p_parms->max_latency, - p_setup->voice_contfmt, p_parms->retrans_effort, temp_pkt_types); + p_setup->tx_bw, p_setup->rx_bw, p_parms->max_latency, + p_setup->voice_contfmt, p_parms->retrans_effort, temp_pkt_types); /* When changing an existing link, only change latency, retrans, and pkts */ if (!btsnd_hcic_setup_esco_conn(p_sco->hci_handle, p_setup->tx_bw, p_setup->rx_bw, p_parms->max_latency, p_setup->voice_contfmt, p_parms->retrans_effort, - temp_pkt_types)) + temp_pkt_types)) { return (BTM_NO_RESOURCES); - else + } else { p_parms->packet_types = temp_pkt_types; + } } return (BTM_CMD_STARTED); @@ -1584,8 +1491,7 @@ void BTM_EScoConnRsp (UINT16 sco_inx, UINT8 hci_status, tBTM_ESCO_PARAMS *p_parm { #if (BTM_MAX_SCO_LINKS>0) if (sco_inx < BTM_MAX_SCO_LINKS && - btm_cb.sco_cb.sco_db[sco_inx].state == SCO_ST_W4_CONN_RSP) - { + btm_cb.sco_cb.sco_db[sco_inx].state == SCO_ST_W4_CONN_RSP) { btm_esco_conn_rsp(sco_inx, hci_status, btm_cb.sco_cb.sco_db[sco_inx].esco.data.bd_addr, p_parms); @@ -1633,15 +1539,12 @@ void btm_esco_proc_conn_chg (UINT8 status, UINT16 handle, UINT8 tx_interval, UINT16 xx; BTM_TRACE_EVENT("btm_esco_proc_conn_chg -> handle 0x%04x, status 0x%02x", - handle, status); + handle, status); - for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) - { - if (p->state == SCO_ST_CONNECTED && handle == p->hci_handle) - { + for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) { + if (p->state == SCO_ST_CONNECTED && handle == p->hci_handle) { /* If upper layer wants notification */ - if (p->esco.p_esco_cback) - { + if (p->esco.p_esco_cback) { memcpy(data.bd_addr, p->esco.data.bd_addr, BD_ADDR_LEN); data.hci_status = status; data.sco_inx = xx; @@ -1675,10 +1578,10 @@ BOOLEAN btm_is_sco_active (UINT16 handle) UINT16 xx; tSCO_CONN *p = &btm_cb.sco_cb.sco_db[0]; - for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) - { - if (handle == p->hci_handle && p->state == SCO_ST_CONNECTED) + for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) { + if (handle == p->hci_handle && p->state == SCO_ST_CONNECTED) { return (TRUE); + } } #endif return (FALSE); @@ -1700,10 +1603,8 @@ UINT8 BTM_GetNumScoLinks (void) UINT16 xx; UINT8 num_scos = 0; - for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) - { - switch (p->state) - { + for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) { + switch (p->state) { case SCO_ST_W4_CONN_RSP: case SCO_ST_CONNECTING: case SCO_ST_CONNECTED: @@ -1735,10 +1636,8 @@ BOOLEAN btm_is_sco_active_by_bdaddr (BD_ADDR remote_bda) tSCO_CONN *p = &btm_cb.sco_cb.sco_db[0]; /* If any SCO is being established to the remote BD address, refuse this */ - for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) - { - if ((!memcmp (p->esco.data.bd_addr, remote_bda, BD_ADDR_LEN)) && (p->state == SCO_ST_CONNECTED)) - { + for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) { + if ((!memcmp (p->esco.data.bd_addr, remote_bda, BD_ADDR_LEN)) && (p->state == SCO_ST_CONNECTED)) { return (TRUE); } } @@ -1750,19 +1649,58 @@ BOOLEAN btm_is_sco_active_by_bdaddr (BD_ADDR remote_bda) tBTM_STATUS BTM_CreateSco (BD_ADDR remote_bda, BOOLEAN is_orig, UINT16 pkt_types, UINT16 *p_sco_inx, tBTM_SCO_CB *p_conn_cb, - tBTM_SCO_CB *p_disc_cb) {return (BTM_NO_RESOURCES);} -tBTM_STATUS BTM_RemoveSco (UINT16 sco_inx) {return (BTM_NO_RESOURCES);} -tBTM_STATUS BTM_SetScoPacketTypes (UINT16 sco_inx, UINT16 pkt_types) {return (BTM_NO_RESOURCES);} -UINT16 BTM_ReadScoPacketTypes (UINT16 sco_inx) {return (0);} -UINT16 BTM_ReadDeviceScoPacketTypes (void) {return (0);} -UINT16 BTM_ReadScoHandle (UINT16 sco_inx) {return (BTM_INVALID_HCI_HANDLE);} -UINT8 *BTM_ReadScoBdAddr(UINT16 sco_inx) {return((UINT8 *) NULL);} -UINT16 BTM_ReadScoDiscReason (void) {return (BTM_INVALID_SCO_DISC_REASON);} -tBTM_STATUS BTM_SetEScoMode (tBTM_SCO_TYPE sco_mode, tBTM_ESCO_PARAMS *p_parms) {return (BTM_MODE_UNSUPPORTED);} -tBTM_STATUS BTM_RegForEScoEvts (UINT16 sco_inx, tBTM_ESCO_CBACK *p_esco_cback) { return (BTM_ILLEGAL_VALUE);} -tBTM_STATUS BTM_ReadEScoLinkParms (UINT16 sco_inx, tBTM_ESCO_DATA *p_parms) { return (BTM_MODE_UNSUPPORTED);} -tBTM_STATUS BTM_ChangeEScoLinkParms (UINT16 sco_inx, tBTM_CHG_ESCO_PARAMS *p_parms) { return (BTM_MODE_UNSUPPORTED);} + tBTM_SCO_CB *p_disc_cb) +{ + return (BTM_NO_RESOURCES); +} +tBTM_STATUS BTM_RemoveSco (UINT16 sco_inx) +{ + return (BTM_NO_RESOURCES); +} +tBTM_STATUS BTM_SetScoPacketTypes (UINT16 sco_inx, UINT16 pkt_types) +{ + return (BTM_NO_RESOURCES); +} +UINT16 BTM_ReadScoPacketTypes (UINT16 sco_inx) +{ + return (0); +} +UINT16 BTM_ReadDeviceScoPacketTypes (void) +{ + return (0); +} +UINT16 BTM_ReadScoHandle (UINT16 sco_inx) +{ + return (BTM_INVALID_HCI_HANDLE); +} +UINT8 *BTM_ReadScoBdAddr(UINT16 sco_inx) +{ + return ((UINT8 *) NULL); +} +UINT16 BTM_ReadScoDiscReason (void) +{ + return (BTM_INVALID_SCO_DISC_REASON); +} +tBTM_STATUS BTM_SetEScoMode (tBTM_SCO_TYPE sco_mode, tBTM_ESCO_PARAMS *p_parms) +{ + return (BTM_MODE_UNSUPPORTED); +} +tBTM_STATUS BTM_RegForEScoEvts (UINT16 sco_inx, tBTM_ESCO_CBACK *p_esco_cback) +{ + return (BTM_ILLEGAL_VALUE); +} +tBTM_STATUS BTM_ReadEScoLinkParms (UINT16 sco_inx, tBTM_ESCO_DATA *p_parms) +{ + return (BTM_MODE_UNSUPPORTED); +} +tBTM_STATUS BTM_ChangeEScoLinkParms (UINT16 sco_inx, tBTM_CHG_ESCO_PARAMS *p_parms) +{ + return (BTM_MODE_UNSUPPORTED); +} void BTM_EScoConnRsp (UINT16 sco_inx, UINT8 hci_status, tBTM_ESCO_PARAMS *p_parms) {} -UINT8 BTM_GetNumScoLinks (void) {return (0);} +UINT8 BTM_GetNumScoLinks (void) +{ + return (0); +} #endif /* If SCO is being used */ diff --git a/components/bt/bluedroid/stack/btm/btm_sec.c b/components/bt/bluedroid/stack/btm/btm_sec.c old mode 100755 new mode 100644 index 5784a2705b..c0eee569d6 --- a/components/bt/bluedroid/stack/btm/btm_sec.c +++ b/components/bt/bluedroid/stack/btm/btm_sec.c @@ -42,7 +42,7 @@ #endif #if BLE_INCLUDED == TRUE - #include "gatt_int.h" +#include "gatt_int.h" #endif #define BTM_SEC_MAX_COLLISION_DELAY (5000) @@ -58,8 +58,8 @@ BOOLEAN (APPL_AUTH_WRITE_EXCEPTION)(BD_ADDR bd_addr); static tBTM_SEC_SERV_REC *btm_sec_find_first_serv (BOOLEAN is_originator, UINT16 psm); static tBTM_SEC_SERV_REC *btm_sec_find_next_serv (tBTM_SEC_SERV_REC *p_cur); static tBTM_SEC_SERV_REC *btm_sec_find_mx_serv (UINT8 is_originator, UINT16 psm, - UINT32 mx_proto_id, - UINT32 mx_chan_id); + UINT32 mx_proto_id, + UINT32 mx_chan_id); static tBTM_STATUS btm_sec_execute_procedure (tBTM_SEC_DEV_REC *p_dev_rec); static BOOLEAN btm_sec_start_get_name (tBTM_SEC_DEV_REC *p_dev_rec); @@ -77,8 +77,8 @@ static char *btm_pair_state_descr (tBTM_PAIRING_STATE state); static void btm_sec_check_pending_reqs(void); static BOOLEAN btm_sec_queue_mx_request (BD_ADDR bd_addr, UINT16 psm, BOOLEAN is_orig, - UINT32 mx_proto_id, UINT32 mx_chan_id, - tBTM_SEC_CALLBACK *p_callback, void *p_ref_data); + UINT32 mx_proto_id, UINT32 mx_chan_id, + tBTM_SEC_CALLBACK *p_callback, void *p_ref_data); static void btm_sec_bond_cancel_complete (void); static void btm_send_link_key_notif (tBTM_SEC_DEV_REC *p_dev_rec); static BOOLEAN btm_sec_check_prefetch_pin (tBTM_SEC_DEV_REC *p_dev_rec); @@ -91,8 +91,8 @@ UINT8 btm_sec_start_role_switch (tBTM_SEC_DEV_REC *p_dev_rec); tBTM_SEC_DEV_REC *btm_sec_find_dev_by_sec_state (UINT8 state); static BOOLEAN btm_sec_set_security_level ( CONNECTION_TYPE conn_type, char *p_name, UINT8 service_id, - UINT16 sec_level, UINT16 psm, UINT32 mx_proto_id, - UINT32 mx_chan_id); + UINT16 sec_level, UINT16 psm, UINT32 mx_proto_id, + UINT32 mx_chan_id); static BOOLEAN btm_dev_authenticated(tBTM_SEC_DEV_REC *p_dev_rec); static BOOLEAN btm_dev_encrypted(tBTM_SEC_DEV_REC *p_dev_rec); @@ -102,23 +102,22 @@ static BOOLEAN btm_sec_is_serv_level0 (UINT16 psm); static UINT16 btm_sec_set_serv_level4_flags (UINT16 cur_security, BOOLEAN is_originator); static BOOLEAN btm_sec_queue_encrypt_request (BD_ADDR bd_addr, tBT_TRANSPORT transport, - tBTM_SEC_CALLBACK *p_callback, void *p_ref_data); + tBTM_SEC_CALLBACK *p_callback, void *p_ref_data); static void btm_sec_clean_pending_req_queue (BD_ADDR remote_bda, tBT_TRANSPORT transport) ; static void btm_sec_check_pending_enc_req (tBTM_SEC_DEV_REC *p_dev_rec, tBT_TRANSPORT transport, - UINT8 encr_enable); + UINT8 encr_enable); static BOOLEAN btm_sec_acceptor_rejects_bonding (tBTM_SEC_DEV_REC *p_dev_rec); static BOOLEAN btm_sec_use_smp_br_chnl(tBTM_SEC_DEV_REC *p_dev_rec); static BOOLEAN btm_sec_is_master(tBTM_SEC_DEV_REC *p_dev_rec); /* TRUE - authenticated link key is possible */ -static const BOOLEAN btm_sec_io_map [BTM_IO_CAP_MAX][BTM_IO_CAP_MAX] = -{ +static const BOOLEAN btm_sec_io_map [BTM_IO_CAP_MAX][BTM_IO_CAP_MAX] = { /* OUT, IO, IN, NONE */ -/* OUT */ {FALSE, FALSE, TRUE, FALSE}, -/* IO */ {FALSE, TRUE, TRUE, FALSE}, -/* IN */ {TRUE, TRUE, TRUE, FALSE}, -/* NONE */ {FALSE, FALSE, FALSE, FALSE} + /* OUT */ {FALSE, FALSE, TRUE, FALSE}, + /* IO */ {FALSE, TRUE, TRUE, FALSE}, + /* IN */ {TRUE, TRUE, TRUE, FALSE}, + /* NONE */ {FALSE, FALSE, FALSE, FALSE} }; /* BTM_IO_CAP_OUT 0 DisplayOnly */ /* BTM_IO_CAP_IO 1 DisplayYesNo */ @@ -136,11 +135,10 @@ static const BOOLEAN btm_sec_io_map [BTM_IO_CAP_MAX][BTM_IO_CAP_MAX] = *******************************************************************************/ static BOOLEAN btm_dev_authenticated (tBTM_SEC_DEV_REC *p_dev_rec) { - if(p_dev_rec->sec_flags & BTM_SEC_AUTHENTICATED) - { - return(TRUE); + if (p_dev_rec->sec_flags & BTM_SEC_AUTHENTICATED) { + return (TRUE); } - return(FALSE); + return (FALSE); } /******************************************************************************* @@ -154,11 +152,10 @@ static BOOLEAN btm_dev_authenticated (tBTM_SEC_DEV_REC *p_dev_rec) *******************************************************************************/ static BOOLEAN btm_dev_encrypted (tBTM_SEC_DEV_REC *p_dev_rec) { - if(p_dev_rec->sec_flags & BTM_SEC_ENCRYPTED) - { - return(TRUE); + if (p_dev_rec->sec_flags & BTM_SEC_ENCRYPTED) { + return (TRUE); } - return(FALSE); + return (FALSE); } /******************************************************************************* @@ -172,11 +169,10 @@ static BOOLEAN btm_dev_encrypted (tBTM_SEC_DEV_REC *p_dev_rec) *******************************************************************************/ static BOOLEAN btm_dev_authorized (tBTM_SEC_DEV_REC *p_dev_rec) { - if(p_dev_rec->sec_flags & BTM_SEC_AUTHORIZED) - { - return(TRUE); + if (p_dev_rec->sec_flags & BTM_SEC_AUTHORIZED) { + return (TRUE); } - return(FALSE); + return (FALSE); } /******************************************************************************* @@ -191,11 +187,10 @@ static BOOLEAN btm_dev_authorized (tBTM_SEC_DEV_REC *p_dev_rec) static BOOLEAN btm_dev_16_digit_authenticated(tBTM_SEC_DEV_REC *p_dev_rec) { // BTM_SEC_16_DIGIT_PIN_AUTHED is set if MITM or 16 digit pin is used - if(p_dev_rec->sec_flags & BTM_SEC_16_DIGIT_PIN_AUTHED) - { - return(TRUE); + if (p_dev_rec->sec_flags & BTM_SEC_16_DIGIT_PIN_AUTHED) { + return (TRUE); } - return(FALSE); + return (FALSE); } /******************************************************************************* @@ -209,11 +204,10 @@ static BOOLEAN btm_dev_16_digit_authenticated(tBTM_SEC_DEV_REC *p_dev_rec) *******************************************************************************/ static BOOLEAN btm_serv_trusted(tBTM_SEC_DEV_REC *p_dev_rec, tBTM_SEC_SERV_REC *p_serv_rec) { - if(BTM_SEC_IS_SERVICE_TRUSTED(p_dev_rec->trusted_mask, p_serv_rec->service_id)) - { - return(TRUE); + if (BTM_SEC_IS_SERVICE_TRUSTED(p_dev_rec->trusted_mask, p_serv_rec->service_id)) { + return (TRUE); } - return(FALSE); + return (FALSE); } /******************************************************************************* @@ -237,30 +231,26 @@ BOOLEAN BTM_SecRegister(tBTM_APPL_INFO *p_cb_info) #if BLE_INCLUDED == TRUE && SMP_INCLUDED == TRUE LOG_DEBUG("%s p_cb_info->p_le_callback == 0x%p\n", __func__, p_cb_info->p_le_callback); - if (p_cb_info->p_le_callback) - { + if (p_cb_info->p_le_callback) { #if SMP_INCLUDED == TRUE - BTM_TRACE_EVENT("%s SMP_Register( btm_proc_smp_cback )\n", __func__); - SMP_Register(btm_proc_smp_cback); + BTM_TRACE_EVENT("%s SMP_Register( btm_proc_smp_cback )\n", __func__); + SMP_Register(btm_proc_smp_cback); #endif - /* if no IR is loaded, need to regenerate all the keys */ - if (memcmp(btm_cb.devcb.id_keys.ir, &temp_value, sizeof(BT_OCTET16)) == 0) - { - btm_ble_reset_id(); - } - } - else - { - LOG_WARN("%s p_cb_info->p_le_callback == NULL\n", __func__); + /* if no IR is loaded, need to regenerate all the keys */ + if (memcmp(btm_cb.devcb.id_keys.ir, &temp_value, sizeof(BT_OCTET16)) == 0) { + btm_ble_reset_id(); + } + } else { + LOG_WARN("%s p_cb_info->p_le_callback == NULL\n", __func__); } #endif btm_cb.api = *p_cb_info; #if BLE_INCLUDED == TRUE && SMP_INCLUDED == TRUE - LOG_DEBUG("%s btm_cb.api.p_le_callback = 0x%p\n", __func__, btm_cb.api.p_le_callback); + LOG_DEBUG("%s btm_cb.api.p_le_callback = 0x%p\n", __func__, btm_cb.api.p_le_callback); #endif BTM_TRACE_EVENT("%s application registered\n", __func__); - return(TRUE); + return (TRUE); } /******************************************************************************* @@ -294,16 +284,14 @@ BOOLEAN BTM_SecAddRmtNameNotifyCallback (tBTM_RMT_NAME_CALLBACK *p_callback) { int i; - for (i = 0; i < BTM_SEC_MAX_RMT_NAME_CALLBACKS; i++) - { - if (btm_cb.p_rmt_name_callback[i] == NULL) - { + for (i = 0; i < BTM_SEC_MAX_RMT_NAME_CALLBACKS; i++) { + if (btm_cb.p_rmt_name_callback[i] == NULL) { btm_cb.p_rmt_name_callback[i] = p_callback; - return(TRUE); + return (TRUE); } } - return(FALSE); + return (FALSE); } @@ -321,16 +309,14 @@ BOOLEAN BTM_SecDeleteRmtNameNotifyCallback (tBTM_RMT_NAME_CALLBACK *p_callback) { int i; - for (i = 0; i < BTM_SEC_MAX_RMT_NAME_CALLBACKS; i++) - { - if (btm_cb.p_rmt_name_callback[i] == p_callback) - { + for (i = 0; i < BTM_SEC_MAX_RMT_NAME_CALLBACKS; i++) { + if (btm_cb.p_rmt_name_callback[i] == p_callback) { btm_cb.p_rmt_name_callback[i] = NULL; - return(TRUE); + return (TRUE); } } - return(FALSE); + return (FALSE); } /******************************************************************************* @@ -342,17 +328,16 @@ BOOLEAN BTM_SecDeleteRmtNameNotifyCallback (tBTM_RMT_NAME_CALLBACK *p_callback) ** Returns BOOLEAN TRUE or FALSE is device found ** *******************************************************************************/ -BOOLEAN BTM_GetSecurityFlags (BD_ADDR bd_addr, UINT8 * p_sec_flags) +BOOLEAN BTM_GetSecurityFlags (BD_ADDR bd_addr, UINT8 *p_sec_flags) { tBTM_SEC_DEV_REC *p_dev_rec; - if ((p_dev_rec = btm_find_dev (bd_addr)) != NULL) - { + if ((p_dev_rec = btm_find_dev (bd_addr)) != NULL) { *p_sec_flags = (UINT8) p_dev_rec->sec_flags; - return(TRUE); + return (TRUE); } BTM_TRACE_ERROR ("BTM_GetSecurityFlags false"); - return(FALSE); + return (FALSE); } /******************************************************************************* @@ -364,22 +349,22 @@ BOOLEAN BTM_GetSecurityFlags (BD_ADDR bd_addr, UINT8 * p_sec_flags) ** Returns BOOLEAN TRUE or FALSE is device found ** *******************************************************************************/ -BOOLEAN BTM_GetSecurityFlagsByTransport (BD_ADDR bd_addr, UINT8 * p_sec_flags, - tBT_TRANSPORT transport) +BOOLEAN BTM_GetSecurityFlagsByTransport (BD_ADDR bd_addr, UINT8 *p_sec_flags, + tBT_TRANSPORT transport) { tBTM_SEC_DEV_REC *p_dev_rec; - if ((p_dev_rec = btm_find_dev (bd_addr)) != NULL) - { - if (transport == BT_TRANSPORT_BR_EDR) + if ((p_dev_rec = btm_find_dev (bd_addr)) != NULL) { + if (transport == BT_TRANSPORT_BR_EDR) { *p_sec_flags = (UINT8) p_dev_rec->sec_flags; - else + } else { *p_sec_flags = (UINT8) (p_dev_rec->sec_flags >> 8); + } - return(TRUE); + return (TRUE); } BTM_TRACE_ERROR ("BTM_GetSecurityFlags false\n"); - return(FALSE); + return (FALSE); } /******************************************************************************* @@ -394,12 +379,11 @@ BOOLEAN BTM_GetSecurityFlagsByTransport (BD_ADDR bd_addr, UINT8 * p_sec_flags, void BTM_SetPinType (UINT8 pin_type, PIN_CODE pin_code, UINT8 pin_code_len) { BTM_TRACE_API ("BTM_SetPinType: pin type %d [variable-0, fixed-1], code %s, length %d\n", - pin_type, (char *) pin_code, pin_code_len); + pin_type, (char *) pin_code, pin_code_len); /* If device is not up security mode will be set as a part of startup */ if ( (btm_cb.cfg.pin_type != pin_type) - && controller_get_interface()->get_is_ready() ) - { + && controller_get_interface()->get_is_ready() ) { btsnd_hcic_write_pin_type (pin_type); } @@ -448,7 +432,7 @@ void BTM_SetPairableMode (BOOLEAN allow_pairing, BOOLEAN connect_only_paired) void BTM_SetSecureConnectionsOnly (BOOLEAN secure_connections_only_mode) { BTM_TRACE_API("%s: Mode : %u\n", __FUNCTION__, - secure_connections_only_mode); + secure_connections_only_mode); btm_cb.devcb.secure_connections_only = secure_connections_only_mode; btm_cb.security_mode = BTM_SEC_MODE_SC; @@ -481,16 +465,17 @@ BOOLEAN BTM_SetSecurityLevel (BOOLEAN is_originator, char *p_name, UINT8 service #if (L2CAP_UCD_INCLUDED == TRUE) CONNECTION_TYPE conn_type; - if (is_originator) + if (is_originator) { conn_type = CONN_ORIENT_ORIG; - else + } else { conn_type = CONN_ORIENT_TERM; + } - return(btm_sec_set_security_level (conn_type, p_name, service_id, - sec_level, psm, mx_proto_id, mx_chan_id)); + return (btm_sec_set_security_level (conn_type, p_name, service_id, + sec_level, psm, mx_proto_id, mx_chan_id)); #else - return(btm_sec_set_security_level (is_originator, p_name, service_id, - sec_level, psm, mx_proto_id, mx_chan_id)); + return (btm_sec_set_security_level (is_originator, p_name, service_id, + sec_level, psm, mx_proto_id, mx_chan_id)); #endif } @@ -514,8 +499,8 @@ BOOLEAN BTM_SetSecurityLevel (BOOLEAN is_originator, char *p_name, UINT8 service ** *******************************************************************************/ static BOOLEAN btm_sec_set_security_level (CONNECTION_TYPE conn_type, char *p_name, UINT8 service_id, - UINT16 sec_level, UINT16 psm, UINT32 mx_proto_id, - UINT32 mx_chan_id) + UINT16 sec_level, UINT16 psm, UINT32 mx_proto_id, + UINT32 mx_chan_id) { tBTM_SEC_SERV_REC *p_srec; UINT16 index; @@ -525,17 +510,15 @@ static BOOLEAN btm_sec_set_security_level (CONNECTION_TYPE conn_type, char *p_na #if (L2CAP_UCD_INCLUDED == TRUE) BOOLEAN is_ucd; - if (conn_type & CONNECTION_TYPE_ORIG_MASK) + if (conn_type & CONNECTION_TYPE_ORIG_MASK) { is_originator = TRUE; - else + } else { is_originator = FALSE; - - if (conn_type & CONNECTION_TYPE_CONNLESS_MASK ) - { - is_ucd = TRUE; } - else - { + + if (conn_type & CONNECTION_TYPE_CONNLESS_MASK ) { + is_ucd = TRUE; + } else { is_ucd = FALSE; } #else @@ -550,23 +533,21 @@ static BOOLEAN btm_sec_set_security_level (CONNECTION_TYPE conn_type, char *p_na p_srec = &btm_cb.sec_serv_rec[0]; - for (index = 0; index < BTM_SEC_MAX_SERVICE_RECORDS; index++, p_srec++) - { + for (index = 0; index < BTM_SEC_MAX_SERVICE_RECORDS; index++, p_srec++) { /* Check if there is already a record for this service */ - if (p_srec->security_flags & BTM_SEC_IN_USE) - { + if (p_srec->security_flags & BTM_SEC_IN_USE) { #if BTM_SEC_SERVICE_NAME_LEN > 0 if (p_srec->psm == psm && - p_srec->mx_proto_id == mx_proto_id && - service_id == p_srec->service_id && - (!strncmp (p_name, (char *) p_srec->orig_service_name, - BTM_SEC_SERVICE_NAME_LEN) || - !strncmp (p_name, (char *) p_srec->term_service_name, - BTM_SEC_SERVICE_NAME_LEN))) + p_srec->mx_proto_id == mx_proto_id && + service_id == p_srec->service_id && + (!strncmp (p_name, (char *) p_srec->orig_service_name, + BTM_SEC_SERVICE_NAME_LEN) || + !strncmp (p_name, (char *) p_srec->term_service_name, + BTM_SEC_SERVICE_NAME_LEN))) #else if (p_srec->psm == psm && - p_srec->mx_proto_id == mx_proto_id && - service_id == p_srec->service_id) + p_srec->mx_proto_id == mx_proto_id && + service_id == p_srec->service_id) #endif { record_allocated = TRUE; @@ -574,24 +555,21 @@ static BOOLEAN btm_sec_set_security_level (CONNECTION_TYPE conn_type, char *p_na } } /* Mark the first available service record */ - else if (!record_allocated) - { + else if (!record_allocated) { memset (p_srec, 0, sizeof(tBTM_SEC_SERV_REC)); record_allocated = TRUE; first_unused_record = index; } } - if (!record_allocated) - { + if (!record_allocated) { BTM_TRACE_WARNING("BTM_SEC_REG: Out of Service Records (%d)\n", BTM_SEC_MAX_SERVICE_RECORDS); - return(record_allocated); + return (record_allocated); } /* Process the request if service record is valid */ /* If a duplicate service wasn't found, use the first available */ - if (index >= BTM_SEC_MAX_SERVICE_RECORDS) - { + if (index >= BTM_SEC_MAX_SERVICE_RECORDS) { index = first_unused_record; p_srec = &btm_cb.sec_serv_rec[index]; } @@ -600,43 +578,41 @@ static BOOLEAN btm_sec_set_security_level (CONNECTION_TYPE conn_type, char *p_na p_srec->service_id = service_id; p_srec->mx_proto_id = mx_proto_id; - if (is_originator) - { + if (is_originator) { p_srec->orig_mx_chan_id = mx_chan_id; #if BTM_SEC_SERVICE_NAME_LEN > 0 BCM_STRNCPY_S ((char *)p_srec->orig_service_name, sizeof(p_srec->orig_service_name), p_name, BTM_SEC_SERVICE_NAME_LEN); #endif /* clear out the old setting, just in case it exists */ #if (L2CAP_UCD_INCLUDED == TRUE) - if ( is_ucd ) - { + if ( is_ucd ) { p_srec->ucd_security_flags &= - ~(BTM_SEC_OUT_AUTHORIZE | BTM_SEC_OUT_ENCRYPT | BTM_SEC_OUT_AUTHENTICATE | BTM_SEC_OUT_MITM | - BTM_SEC_FORCE_MASTER | BTM_SEC_ATTEMPT_MASTER | BTM_SEC_FORCE_SLAVE | BTM_SEC_ATTEMPT_SLAVE); - } - else + ~(BTM_SEC_OUT_AUTHORIZE | BTM_SEC_OUT_ENCRYPT | BTM_SEC_OUT_AUTHENTICATE | BTM_SEC_OUT_MITM | + BTM_SEC_FORCE_MASTER | BTM_SEC_ATTEMPT_MASTER | BTM_SEC_FORCE_SLAVE | BTM_SEC_ATTEMPT_SLAVE); + } else #endif { p_srec->security_flags &= - ~(BTM_SEC_OUT_AUTHORIZE | BTM_SEC_OUT_ENCRYPT | BTM_SEC_OUT_AUTHENTICATE | BTM_SEC_OUT_MITM | - BTM_SEC_FORCE_MASTER | BTM_SEC_ATTEMPT_MASTER | BTM_SEC_FORCE_SLAVE | BTM_SEC_ATTEMPT_SLAVE); + ~(BTM_SEC_OUT_AUTHORIZE | BTM_SEC_OUT_ENCRYPT | BTM_SEC_OUT_AUTHENTICATE | BTM_SEC_OUT_MITM | + BTM_SEC_FORCE_MASTER | BTM_SEC_ATTEMPT_MASTER | BTM_SEC_FORCE_SLAVE | BTM_SEC_ATTEMPT_SLAVE); } /* Parameter validation. Originator should not set requirements for incoming connections */ sec_level &= ~(BTM_SEC_IN_AUTHORIZE | BTM_SEC_IN_ENCRYPT | BTM_SEC_IN_AUTHENTICATE - | BTM_SEC_IN_MITM | BTM_SEC_IN_MIN_16_DIGIT_PIN ); + | BTM_SEC_IN_MITM | BTM_SEC_IN_MIN_16_DIGIT_PIN ); if (btm_cb.security_mode == BTM_SEC_MODE_SP || - btm_cb.security_mode == BTM_SEC_MODE_SP_DEBUG || - btm_cb.security_mode == BTM_SEC_MODE_SC) - { - if (sec_level & BTM_SEC_OUT_AUTHENTICATE) + btm_cb.security_mode == BTM_SEC_MODE_SP_DEBUG || + btm_cb.security_mode == BTM_SEC_MODE_SC) { + if (sec_level & BTM_SEC_OUT_AUTHENTICATE) { sec_level |= BTM_SEC_OUT_MITM; + } } /* Make sure the authenticate bit is set, when encrypt bit is set */ - if (sec_level & BTM_SEC_OUT_ENCRYPT) + if (sec_level & BTM_SEC_OUT_ENCRYPT) { sec_level |= BTM_SEC_OUT_AUTHENTICATE; + } /* outgoing connections usually set the security level right before * the connection is initiated. @@ -647,82 +623,76 @@ static BOOLEAN btm_sec_set_security_level (CONNECTION_TYPE conn_type, char *p_na { btm_cb.p_out_serv = p_srec; } - } - else - { + } else { p_srec->term_mx_chan_id = mx_chan_id; #if BTM_SEC_SERVICE_NAME_LEN > 0 BCM_STRNCPY_S ((char *)p_srec->term_service_name, sizeof(p_srec->term_service_name), p_name, BTM_SEC_SERVICE_NAME_LEN); #endif /* clear out the old setting, just in case it exists */ #if (L2CAP_UCD_INCLUDED == TRUE) - if ( is_ucd ) - { + if ( is_ucd ) { p_srec->ucd_security_flags &= - ~(BTM_SEC_IN_AUTHORIZE | BTM_SEC_IN_ENCRYPT | BTM_SEC_IN_AUTHENTICATE | BTM_SEC_IN_MITM | - BTM_SEC_FORCE_MASTER | BTM_SEC_ATTEMPT_MASTER | BTM_SEC_FORCE_SLAVE | BTM_SEC_ATTEMPT_SLAVE - | BTM_SEC_IN_MIN_16_DIGIT_PIN); - } - else + ~(BTM_SEC_IN_AUTHORIZE | BTM_SEC_IN_ENCRYPT | BTM_SEC_IN_AUTHENTICATE | BTM_SEC_IN_MITM | + BTM_SEC_FORCE_MASTER | BTM_SEC_ATTEMPT_MASTER | BTM_SEC_FORCE_SLAVE | BTM_SEC_ATTEMPT_SLAVE + | BTM_SEC_IN_MIN_16_DIGIT_PIN); + } else #endif { p_srec->security_flags &= - ~(BTM_SEC_IN_AUTHORIZE | BTM_SEC_IN_ENCRYPT | BTM_SEC_IN_AUTHENTICATE | BTM_SEC_IN_MITM | - BTM_SEC_FORCE_MASTER | BTM_SEC_ATTEMPT_MASTER | BTM_SEC_FORCE_SLAVE | BTM_SEC_ATTEMPT_SLAVE - | BTM_SEC_IN_MIN_16_DIGIT_PIN); + ~(BTM_SEC_IN_AUTHORIZE | BTM_SEC_IN_ENCRYPT | BTM_SEC_IN_AUTHENTICATE | BTM_SEC_IN_MITM | + BTM_SEC_FORCE_MASTER | BTM_SEC_ATTEMPT_MASTER | BTM_SEC_FORCE_SLAVE | BTM_SEC_ATTEMPT_SLAVE + | BTM_SEC_IN_MIN_16_DIGIT_PIN); } /* Parameter validation. Acceptor should not set requirements for outgoing connections */ sec_level &= ~(BTM_SEC_OUT_AUTHORIZE | BTM_SEC_OUT_ENCRYPT | BTM_SEC_OUT_AUTHENTICATE | BTM_SEC_OUT_MITM); if (btm_cb.security_mode == BTM_SEC_MODE_SP || - btm_cb.security_mode == BTM_SEC_MODE_SP_DEBUG || - btm_cb.security_mode == BTM_SEC_MODE_SC) - { - if (sec_level & BTM_SEC_IN_AUTHENTICATE) + btm_cb.security_mode == BTM_SEC_MODE_SP_DEBUG || + btm_cb.security_mode == BTM_SEC_MODE_SC) { + if (sec_level & BTM_SEC_IN_AUTHENTICATE) { sec_level |= BTM_SEC_IN_MITM; + } } /* Make sure the authenticate bit is set, when encrypt bit is set */ - if (sec_level & BTM_SEC_IN_ENCRYPT) + if (sec_level & BTM_SEC_IN_ENCRYPT) { sec_level |= BTM_SEC_IN_AUTHENTICATE; + } } #if (L2CAP_UCD_INCLUDED == TRUE) - if ( is_ucd ) - { + if ( is_ucd ) { p_srec->security_flags |= (UINT16)(BTM_SEC_IN_USE); p_srec->ucd_security_flags |= (UINT16)(sec_level | BTM_SEC_IN_USE); - } - else - { + } else { p_srec->security_flags |= (UINT16)(sec_level | BTM_SEC_IN_USE); } BTM_TRACE_API("BTM_SEC_REG[%d]: id %d, conn_type 0x%x, psm 0x%04x, proto_id %d, chan_id %d\n", - index, service_id, conn_type, psm, mx_proto_id, mx_chan_id); + index, service_id, conn_type, psm, mx_proto_id, mx_chan_id); BTM_TRACE_API(" : security_flags: 0x%04x, ucd_security_flags: 0x%04x\n", - p_srec->security_flags, p_srec->ucd_security_flags); + p_srec->security_flags, p_srec->ucd_security_flags); #if BTM_SEC_SERVICE_NAME_LEN > 0 BTM_TRACE_API(" : service name [%s] (up to %d chars saved)\n", - p_name, BTM_SEC_SERVICE_NAME_LEN); + p_name, BTM_SEC_SERVICE_NAME_LEN); #endif #else p_srec->security_flags |= (UINT16)(sec_level | BTM_SEC_IN_USE); BTM_TRACE_API("BTM_SEC_REG[%d]: id %d, is_orig %d, psm 0x%04x, proto_id %d, chan_id %d\n", - index, service_id, is_originator, psm, mx_proto_id, mx_chan_id); + index, service_id, is_originator, psm, mx_proto_id, mx_chan_id); #if BTM_SEC_SERVICE_NAME_LEN > 0 BTM_TRACE_API(" : sec: 0x%x, service name [%s] (up to %d chars saved)\n", - p_srec->security_flags, p_name, BTM_SEC_SERVICE_NAME_LEN); + p_srec->security_flags, p_name, BTM_SEC_SERVICE_NAME_LEN); #endif #endif - return(record_allocated); + return (record_allocated); } /******************************************************************************* @@ -749,12 +719,10 @@ UINT8 BTM_SecClrService (UINT8 service_id) UINT8 num_freed = 0; int i; - for (i = 0; i < BTM_SEC_MAX_SERVICE_RECORDS; i++, p_srec++) - { + for (i = 0; i < BTM_SEC_MAX_SERVICE_RECORDS; i++, p_srec++) { /* Delete services with specified name (if in use and not SDP) */ if ((p_srec->security_flags & BTM_SEC_IN_USE) && (p_srec->psm != BT_PSM_SDP) && - (!service_id || (service_id == p_srec->service_id))) - { + (!service_id || (service_id == p_srec->service_id))) { BTM_TRACE_API("BTM_SEC_CLR[%d]: id %d\n", i, service_id); p_srec->security_flags = 0; #if (L2CAP_UCD_INCLUDED == TRUE) @@ -764,7 +732,7 @@ UINT8 BTM_SecClrService (UINT8 service_id) } } - return(num_freed); + return (num_freed); } /******************************************************************************* @@ -789,11 +757,9 @@ UINT8 btm_sec_clr_service_by_psm (UINT16 psm) UINT8 num_freed = 0; int i; - for (i = 0; i < BTM_SEC_MAX_SERVICE_RECORDS; i++, p_srec++) - { + for (i = 0; i < BTM_SEC_MAX_SERVICE_RECORDS; i++, p_srec++) { /* Delete services with specified name (if in use and not SDP) */ - if ((p_srec->security_flags & BTM_SEC_IN_USE) && (p_srec->psm == psm) ) - { + if ((p_srec->security_flags & BTM_SEC_IN_USE) && (p_srec->psm == psm) ) { BTM_TRACE_API("BTM_SEC_CLR[%d]: id %d\n", i, p_srec->service_id); p_srec->security_flags = 0; num_freed++; @@ -801,7 +767,7 @@ UINT8 btm_sec_clr_service_by_psm (UINT16 psm) } BTM_TRACE_API("btm_sec_clr_service_by_psm psm:0x%x num_freed:%d\n", psm, num_freed); - return(num_freed); + return (num_freed); } /******************************************************************************* @@ -820,17 +786,15 @@ void btm_sec_clr_temp_auth_service (BD_ADDR bda) { tBTM_SEC_DEV_REC *p_dev_rec; - if ((p_dev_rec = btm_find_dev (bda)) == NULL) - { + if ((p_dev_rec = btm_find_dev (bda)) == NULL) { BTM_TRACE_WARNING ("btm_sec_clr_temp_auth_service() - no dev CB\n"); return; } /* Reset the temporary authorized flag so that next time (untrusted) service is accessed autorization will take place */ - if (p_dev_rec->last_author_service_id != BTM_SEC_NO_LAST_SERVICE_ID && p_dev_rec->p_cur_service) - { + if (p_dev_rec->last_author_service_id != BTM_SEC_NO_LAST_SERVICE_ID && p_dev_rec->p_cur_service) { BTM_TRACE_DEBUG ("btm_sec_clr_auth_service_by_psm [clearing device: %02x:%02x:%02x:%02x:%02x:%02x]\n", - bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]); + bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]); p_dev_rec->last_author_service_id = BTM_SEC_NO_LAST_SERVICE_ID; } @@ -855,61 +819,55 @@ void BTM_PINCodeReply (BD_ADDR bd_addr, UINT8 res, UINT8 pin_len, UINT8 *p_pin, tBTM_SEC_DEV_REC *p_dev_rec; BTM_TRACE_API ("BTM_PINCodeReply(): PairState: %s PairFlags: 0x%02x PinLen:%d Result:%d\n", - btm_pair_state_descr(btm_cb.pairing_state), btm_cb.pairing_flags, pin_len, res); + btm_pair_state_descr(btm_cb.pairing_state), btm_cb.pairing_flags, pin_len, res); /* If timeout already expired or has been canceled, ignore the reply */ - if (btm_cb.pairing_state != BTM_PAIR_STATE_WAIT_LOCAL_PIN) - { + if (btm_cb.pairing_state != BTM_PAIR_STATE_WAIT_LOCAL_PIN) { BTM_TRACE_WARNING ("BTM_PINCodeReply() - Wrong State: %d\n", btm_cb.pairing_state); return; } - if (memcmp (bd_addr, btm_cb.pairing_bda, BD_ADDR_LEN) != 0) - { + if (memcmp (bd_addr, btm_cb.pairing_bda, BD_ADDR_LEN) != 0) { BTM_TRACE_ERROR ("BTM_PINCodeReply() - Wrong BD Addr\n"); return; } - if ((p_dev_rec = btm_find_dev (bd_addr)) == NULL) - { + if ((p_dev_rec = btm_find_dev (bd_addr)) == NULL) { BTM_TRACE_ERROR ("BTM_PINCodeReply() - no dev CB\n"); return; } - if ( (pin_len > PIN_CODE_LEN) || (pin_len == 0) || (p_pin == NULL) ) + if ( (pin_len > PIN_CODE_LEN) || (pin_len == 0) || (p_pin == NULL) ) { res = BTM_ILLEGAL_VALUE; + } - if (res != BTM_SUCCESS) - { + if (res != BTM_SUCCESS) { /* if peer started dd OR we started dd and pre-fetch pin was not used send negative reply */ if ((btm_cb.pairing_flags & BTM_PAIR_FLAGS_PEER_STARTED_DD) || - ((btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD) && - (btm_cb.pairing_flags & BTM_PAIR_FLAGS_DISC_WHEN_DONE)) ) - { + ((btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD) && + (btm_cb.pairing_flags & BTM_PAIR_FLAGS_DISC_WHEN_DONE)) ) { /* use BTM_PAIR_STATE_WAIT_AUTH_COMPLETE to report authentication failed event */ btm_sec_change_pairing_state (BTM_PAIR_STATE_WAIT_AUTH_COMPLETE); btm_cb.acl_disc_reason = HCI_ERR_HOST_REJECT_SECURITY; btsnd_hcic_pin_code_neg_reply (bd_addr); - } - else - { + } else { p_dev_rec->security_required = BTM_SEC_NONE; btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); } return; } - if (trusted_mask) + if (trusted_mask) { BTM_SEC_COPY_TRUSTED_DEVICE(trusted_mask, p_dev_rec->trusted_mask); + } p_dev_rec->sec_flags |= BTM_SEC_LINK_KEY_AUTHED; if (pin_len >= 16) { p_dev_rec->sec_flags |= BTM_SEC_16_DIGIT_PIN_AUTHED; } if ( (btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD) - && (p_dev_rec->hci_handle == BTM_SEC_INVALID_HANDLE) - && (btm_cb.security_mode_changed == FALSE) ) - { + && (p_dev_rec->hci_handle == BTM_SEC_INVALID_HANDLE) + && (btm_cb.security_mode_changed == FALSE) ) { /* This is start of the dedicated bonding if local device is 2.0 */ btm_cb.pin_code_len = pin_len; p_dev_rec->pin_code_length = pin_len; @@ -917,35 +875,31 @@ void BTM_PINCodeReply (BD_ADDR bd_addr, UINT8 res, UINT8 pin_len, UINT8 *p_pin, btm_cb.security_mode_changed = TRUE; #ifdef APPL_AUTH_WRITE_EXCEPTION - if(!(APPL_AUTH_WRITE_EXCEPTION)(p_dev_rec->bd_addr)) + if (!(APPL_AUTH_WRITE_EXCEPTION)(p_dev_rec->bd_addr)) #endif - btsnd_hcic_write_auth_enable (TRUE); + btsnd_hcic_write_auth_enable (TRUE); btm_cb.acl_disc_reason = 0xff ; /* if we rejected incoming connection request, we have to wait HCI_Connection_Complete event */ /* before originating */ - if (btm_cb.pairing_flags & BTM_PAIR_FLAGS_REJECTED_CONNECT) - { + if (btm_cb.pairing_flags & BTM_PAIR_FLAGS_REJECTED_CONNECT) { BTM_TRACE_WARNING ("BTM_PINCodeReply(): waiting HCI_Connection_Complete after rejected incoming connection\n"); /* we change state little bit early so btm_sec_connected() will originate connection */ /* when existing ACL link is down completely */ btm_sec_change_pairing_state (BTM_PAIR_STATE_WAIT_PIN_REQ); } /* if we already accepted incoming connection from pairing device */ - else if (p_dev_rec->sm4 & BTM_SM4_CONN_PEND) - { + else if (p_dev_rec->sm4 & BTM_SM4_CONN_PEND) { BTM_TRACE_WARNING ("BTM_PINCodeReply(): link is connecting so wait pin code request from peer\n"); btm_sec_change_pairing_state (BTM_PAIR_STATE_WAIT_PIN_REQ); - } - else if (btm_sec_dd_create_conn(p_dev_rec) != BTM_CMD_STARTED) - { + } else if (btm_sec_dd_create_conn(p_dev_rec) != BTM_CMD_STARTED) { btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); p_dev_rec->sec_flags &= ~BTM_SEC_LINK_KEY_AUTHED; if (btm_cb.api.p_auth_complete_callback) (*btm_cb.api.p_auth_complete_callback) (p_dev_rec->bd_addr, p_dev_rec->dev_class, - p_dev_rec->sec_bd_name, HCI_ERR_AUTH_FAILURE); + p_dev_rec->sec_bd_name, HCI_ERR_AUTH_FAILURE); } return; } @@ -956,8 +910,9 @@ void BTM_PINCodeReply (BD_ADDR bd_addr, UINT8 res, UINT8 pin_len, UINT8 *p_pin, #ifdef PORCHE_PAIRING_CONFLICT BTM_TRACE_EVENT("BTM_PINCodeReply(): Saving pin_len: %d btm_cb.pin_code_len: %d\n", pin_len, btm_cb.pin_code_len); /* if this was not pre-fetched, save the PIN */ - if (btm_cb.pin_code_len == 0) + if (btm_cb.pin_code_len == 0) { memcpy (btm_cb.pin_code, p_pin, pin_len); + } btm_cb.pin_code_len_saved = pin_len; #endif btsnd_hcic_pin_code_req_reply (bd_addr, pin_len, p_pin); @@ -983,48 +938,45 @@ tBTM_STATUS btm_sec_bond_by_transport (BD_ADDR bd_addr, tBT_TRANSPORT transport, tBTM_STATUS status; UINT8 *p_features; UINT8 ii; - tACL_CONN *p= btm_bda_to_acl(bd_addr, transport); + tACL_CONN *p = btm_bda_to_acl(bd_addr, transport); BTM_TRACE_API ("btm_sec_bond_by_transport BDA: %02x:%02x:%02x:%02x:%02x:%02x\n", - bd_addr[0], bd_addr[1], bd_addr[2], bd_addr[3], bd_addr[4], bd_addr[5]); + bd_addr[0], bd_addr[1], bd_addr[2], bd_addr[3], bd_addr[4], bd_addr[5]); BTM_TRACE_DEBUG("btm_sec_bond_by_transport: Transport used %d\n" , transport); /* Other security process is in progress */ - if (btm_cb.pairing_state != BTM_PAIR_STATE_IDLE) - { + if (btm_cb.pairing_state != BTM_PAIR_STATE_IDLE) { BTM_TRACE_ERROR ("BTM_SecBond: already busy in state: %s\n", btm_pair_state_descr(btm_cb.pairing_state)); - return(BTM_WRONG_MODE); + return (BTM_WRONG_MODE); } - if ((p_dev_rec = btm_find_or_alloc_dev (bd_addr)) == NULL) - { - return(BTM_NO_RESOURCES); + if ((p_dev_rec = btm_find_or_alloc_dev (bd_addr)) == NULL) { + return (BTM_NO_RESOURCES); } BTM_TRACE_DEBUG ("before update sec_flags=0x%x\n", p_dev_rec->sec_flags); /* Finished if connection is active and already paired */ if ( ((p_dev_rec->hci_handle != BTM_SEC_INVALID_HANDLE) && transport == BT_TRANSPORT_BR_EDR - && (p_dev_rec->sec_flags & BTM_SEC_AUTHENTICATED)) + && (p_dev_rec->sec_flags & BTM_SEC_AUTHENTICATED)) #if (BLE_INCLUDED == TRUE) - ||((p_dev_rec->ble_hci_handle != BTM_SEC_INVALID_HANDLE) && transport == BT_TRANSPORT_LE - && (p_dev_rec->sec_flags & BTM_SEC_LE_AUTHENTICATED)) + || ((p_dev_rec->ble_hci_handle != BTM_SEC_INVALID_HANDLE) && transport == BT_TRANSPORT_LE + && (p_dev_rec->sec_flags & BTM_SEC_LE_AUTHENTICATED)) #endif - ) - { + ) { BTM_TRACE_WARNING("BTM_SecBond -> Already Paired\n"); - return(BTM_SUCCESS); + return (BTM_SUCCESS); } /* Tell controller to get rid of the link key if it has one stored */ - if ((BTM_DeleteStoredLinkKey (bd_addr, NULL)) != BTM_SUCCESS) - return(BTM_NO_RESOURCES); + if ((BTM_DeleteStoredLinkKey (bd_addr, NULL)) != BTM_SUCCESS) { + return (BTM_NO_RESOURCES); + } /* Save the PIN code if we got a valid one */ - if (p_pin && (pin_len <= PIN_CODE_LEN) && (pin_len != 0)) - { + if (p_pin && (pin_len <= PIN_CODE_LEN) && (pin_len != 0)) { btm_cb.pin_code_len = pin_len; p_dev_rec->pin_code_length = pin_len; memcpy (btm_cb.pin_code, p_pin, PIN_CODE_LEN); @@ -1036,17 +988,16 @@ tBTM_STATUS btm_sec_bond_by_transport (BD_ADDR bd_addr, tBT_TRANSPORT transport, p_dev_rec->security_required = BTM_SEC_OUT_AUTHENTICATE; p_dev_rec->is_originator = TRUE; - if (trusted_mask) + if (trusted_mask) { BTM_SEC_COPY_TRUSTED_DEVICE(trusted_mask, p_dev_rec->trusted_mask); + } #if BLE_INCLUDED == TRUE && SMP_INCLUDED == TRUE - if (transport == BT_TRANSPORT_LE) - { + if (transport == BT_TRANSPORT_LE) { btm_ble_init_pseudo_addr (p_dev_rec, bd_addr); p_dev_rec->sec_flags &= ~ BTM_SEC_LE_MASK; - if (SMP_Pair(bd_addr) == SMP_STARTED) - { + if (SMP_Pair(bd_addr) == SMP_STARTED) { btm_cb.pairing_flags |= BTM_PAIR_FLAGS_LE_ACTIVE; p_dev_rec->sec_state = BTM_SEC_STATE_AUTHENTICATING; btm_sec_change_pairing_state (BTM_PAIR_STATE_WAIT_AUTH_COMPLETE); @@ -1054,36 +1005,33 @@ tBTM_STATUS btm_sec_bond_by_transport (BD_ADDR bd_addr, tBT_TRANSPORT transport, } btm_cb.pairing_flags = 0; - return(BTM_NO_RESOURCES); + return (BTM_NO_RESOURCES); } #endif p_dev_rec->sec_flags &= ~(BTM_SEC_LINK_KEY_KNOWN | BTM_SEC_AUTHENTICATED | BTM_SEC_ENCRYPTED - | BTM_SEC_ROLE_SWITCHED | BTM_SEC_LINK_KEY_AUTHED); + | BTM_SEC_ROLE_SWITCHED | BTM_SEC_LINK_KEY_AUTHED); BTM_TRACE_DEBUG ("after update sec_flags=0x%x\n", p_dev_rec->sec_flags); - if (!controller_get_interface()->supports_simple_pairing()) - { + if (!controller_get_interface()->supports_simple_pairing()) { /* The special case when we authenticate keyboard. Set pin type to fixed */ /* It would be probably better to do it from the application, but it is */ /* complicated */ if (((p_dev_rec->dev_class[1] & BTM_COD_MAJOR_CLASS_MASK) == BTM_COD_MAJOR_PERIPHERAL) - && (p_dev_rec->dev_class[2] & BTM_COD_MINOR_KEYBOARD) - && (btm_cb.cfg.pin_type != HCI_PIN_TYPE_FIXED)) - { + && (p_dev_rec->dev_class[2] & BTM_COD_MINOR_KEYBOARD) + && (btm_cb.cfg.pin_type != HCI_PIN_TYPE_FIXED)) { btm_cb.pin_type_changed = TRUE; btsnd_hcic_write_pin_type (HCI_PIN_TYPE_FIXED); } } - for (ii = 0; ii <= HCI_EXT_FEATURES_PAGE_MAX; ii++) - { + for (ii = 0; ii <= HCI_EXT_FEATURES_PAGE_MAX; ii++) { p_features = p_dev_rec->features[ii]; BTM_TRACE_EVENT(" remote_features page[%1d] = %02x-%02x-%02x-%02x\n", - ii, p_features[0], p_features[1], p_features[2], p_features[3]); + ii, p_features[0], p_features[1], p_features[2], p_features[3]); BTM_TRACE_EVENT(" %02x-%02x-%02x-%02x\n", - p_features[4], p_features[5], p_features[6], p_features[7]); + p_features[4], p_features[5], p_features[6], p_features[7]); } BTM_TRACE_EVENT ("BTM_SecBond: Remote sm4: 0x%x HCI Handle: 0x%04x\n", p_dev_rec->sm4, p_dev_rec->hci_handle); @@ -1093,54 +1041,49 @@ tBTM_STATUS btm_sec_bond_by_transport (BD_ADDR bd_addr, tBT_TRANSPORT transport, #endif /* If connection already exists... */ - if (p && p->hci_handle != BTM_SEC_INVALID_HANDLE) - { - if (!btm_sec_start_authentication (p_dev_rec)) - return(BTM_NO_RESOURCES); + if (p && p->hci_handle != BTM_SEC_INVALID_HANDLE) { + if (!btm_sec_start_authentication (p_dev_rec)) { + return (BTM_NO_RESOURCES); + } btm_sec_change_pairing_state (BTM_PAIR_STATE_WAIT_PIN_REQ); /* Mark lcb as bonding */ l2cu_update_lcb_4_bonding (bd_addr, TRUE); - return(BTM_CMD_STARTED); + return (BTM_CMD_STARTED); } BTM_TRACE_DEBUG ("sec mode: %d sm4:x%x\n", btm_cb.security_mode, p_dev_rec->sm4); if (!controller_get_interface()->supports_simple_pairing() - || (p_dev_rec->sm4 == BTM_SM4_KNOWN)) - { - if ( btm_sec_check_prefetch_pin (p_dev_rec) ) + || (p_dev_rec->sm4 == BTM_SM4_KNOWN)) { + if ( btm_sec_check_prefetch_pin (p_dev_rec) ) { return (BTM_CMD_STARTED); + } } if ((btm_cb.security_mode == BTM_SEC_MODE_SP || - btm_cb.security_mode == BTM_SEC_MODE_SP_DEBUG || - btm_cb.security_mode == BTM_SEC_MODE_SC) && - BTM_SEC_IS_SM4_UNKNOWN(p_dev_rec->sm4)) - { + btm_cb.security_mode == BTM_SEC_MODE_SP_DEBUG || + btm_cb.security_mode == BTM_SEC_MODE_SC) && + BTM_SEC_IS_SM4_UNKNOWN(p_dev_rec->sm4)) { /* local is 2.1 and peer is unknown */ - if ((p_dev_rec->sm4 & BTM_SM4_CONN_PEND) == 0) - { + if ((p_dev_rec->sm4 & BTM_SM4_CONN_PEND) == 0) { /* we are not accepting connection request from peer * -> RNR (to learn if peer is 2.1) * RNR when no ACL causes HCI_RMT_HOST_SUP_FEAT_NOTIFY_EVT */ btm_sec_change_pairing_state (BTM_PAIR_STATE_GET_REM_NAME); BTM_ReadRemoteDeviceName(bd_addr, NULL, BT_TRANSPORT_BR_EDR); - } - else - { + } else { /* We are accepting connection request from peer */ btm_sec_change_pairing_state (BTM_PAIR_STATE_WAIT_PIN_REQ); } BTM_TRACE_DEBUG ("State:%s sm4: 0x%x sec_state:%d\n", - btm_pair_state_descr (btm_cb.pairing_state), p_dev_rec->sm4, p_dev_rec->sec_state); + btm_pair_state_descr (btm_cb.pairing_state), p_dev_rec->sm4, p_dev_rec->sec_state); return BTM_CMD_STARTED; } /* both local and peer are 2.1 */ status = btm_sec_dd_create_conn(p_dev_rec); - if (status != BTM_CMD_STARTED) - { + if (status != BTM_CMD_STARTED) { btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); } @@ -1173,8 +1116,7 @@ tBTM_STATUS BTM_SecBondByTransport (BD_ADDR bd_addr, tBT_TRANSPORT transport, BTM_ReadDevInfo(bd_addr, &dev_type, &addr_type); /* LE device, do SMP pairing */ if ((transport == BT_TRANSPORT_LE && (dev_type & BT_DEVICE_TYPE_BLE) == 0) || - (transport == BT_TRANSPORT_BR_EDR && (dev_type & BT_DEVICE_TYPE_BREDR) == 0)) - { + (transport == BT_TRANSPORT_BR_EDR && (dev_type & BT_DEVICE_TYPE_BREDR) == 0)) { return BTM_ILLEGAL_ACTION; } #endif @@ -1200,8 +1142,9 @@ tBTM_STATUS BTM_SecBond (BD_ADDR bd_addr, UINT8 pin_len, UINT8 *p_pin, UINT32 tr { tBT_TRANSPORT transport = BT_TRANSPORT_BR_EDR; #if BLE_INCLUDED == TRUE - if (BTM_UseLeLink(bd_addr)) + if (BTM_UseLeLink(bd_addr)) { transport = BT_TRANSPORT_LE; + } #endif return btm_sec_bond_by_transport(bd_addr, transport, pin_len, p_pin, trusted_mask); } @@ -1221,20 +1164,18 @@ tBTM_STATUS BTM_SecBondCancel (BD_ADDR bd_addr) tBTM_SEC_DEV_REC *p_dev_rec; BTM_TRACE_API ("BTM_SecBondCancel() State: %s flags:0x%x\n", - btm_pair_state_descr (btm_cb.pairing_state), btm_cb.pairing_flags); + btm_pair_state_descr (btm_cb.pairing_state), btm_cb.pairing_flags); if (((p_dev_rec = btm_find_dev (bd_addr)) == NULL) - || (memcmp (btm_cb.pairing_bda, bd_addr, BD_ADDR_LEN) != 0) ) + || (memcmp (btm_cb.pairing_bda, bd_addr, BD_ADDR_LEN) != 0) ) { return BTM_UNKNOWN_ADDR; + } #if SMP_INCLUDED == TRUE - if (btm_cb.pairing_flags & BTM_PAIR_FLAGS_LE_ACTIVE) - { - if (p_dev_rec->sec_state == BTM_SEC_STATE_AUTHENTICATING) - { + if (btm_cb.pairing_flags & BTM_PAIR_FLAGS_LE_ACTIVE) { + if (p_dev_rec->sec_state == BTM_SEC_STATE_AUTHENTICATING) { BTM_TRACE_DEBUG ("Cancel LE pairing\n"); - if (SMP_PairCancel(bd_addr)) - { + if (SMP_PairCancel(bd_addr)) { return BTM_CMD_STARTED; } } @@ -1244,8 +1185,7 @@ tBTM_STATUS BTM_SecBondCancel (BD_ADDR bd_addr) #endif BTM_TRACE_DEBUG ("hci_handle:0x%x sec_state:%d\n", p_dev_rec->hci_handle, p_dev_rec->sec_state ); if (BTM_PAIR_STATE_WAIT_LOCAL_PIN == btm_cb.pairing_state && - BTM_PAIR_FLAGS_WE_STARTED_DD & btm_cb.pairing_flags) - { + BTM_PAIR_FLAGS_WE_STARTED_DD & btm_cb.pairing_flags) { /* pre-fetching pin for dedicated bonding */ btm_sec_bond_cancel_complete(); return BTM_SUCCESS; @@ -1253,36 +1193,33 @@ tBTM_STATUS BTM_SecBondCancel (BD_ADDR bd_addr) /* If this BDA is in a bonding procedure */ if ( (btm_cb.pairing_state != BTM_PAIR_STATE_IDLE) - && (btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD)) - { + && (btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD)) { /* If the HCI link is up */ - if (p_dev_rec->hci_handle != BTM_SEC_INVALID_HANDLE) - { + if (p_dev_rec->hci_handle != BTM_SEC_INVALID_HANDLE) { /* If some other thread disconnecting, we do not send second command */ if ((p_dev_rec->sec_state == BTM_SEC_STATE_DISCONNECTING) || - (p_dev_rec->sec_state == BTM_SEC_STATE_DISCONNECTING_BOTH)) - return(BTM_CMD_STARTED); + (p_dev_rec->sec_state == BTM_SEC_STATE_DISCONNECTING_BOTH)) { + return (BTM_CMD_STARTED); + } /* If the HCI link was set up by Bonding process */ - if (btm_cb.pairing_flags & BTM_PAIR_FLAGS_DISC_WHEN_DONE) + if (btm_cb.pairing_flags & BTM_PAIR_FLAGS_DISC_WHEN_DONE) { return btm_sec_send_hci_disconnect(p_dev_rec, HCI_ERR_PEER_USER, p_dev_rec->hci_handle); - else + } else { l2cu_update_lcb_4_bonding(bd_addr, FALSE); + } return BTM_NOT_AUTHORIZED; - } - else /*HCI link is not up */ - { + } else { /*HCI link is not up */ /* If the HCI link creation was started by Bonding process */ - if (btm_cb.pairing_flags & BTM_PAIR_FLAGS_DISC_WHEN_DONE) - { - if (btsnd_hcic_create_conn_cancel(bd_addr)) + if (btm_cb.pairing_flags & BTM_PAIR_FLAGS_DISC_WHEN_DONE) { + if (btsnd_hcic_create_conn_cancel(bd_addr)) { return BTM_CMD_STARTED; + } return BTM_NO_RESOURCES; } - if (btm_cb.pairing_state == BTM_PAIR_STATE_GET_REM_NAME) - { + if (btm_cb.pairing_state == BTM_PAIR_STATE_GET_REM_NAME) { BTM_CancelRemoteDeviceName(); btm_cb.pairing_flags |= BTM_PAIR_FLAGS_WE_CANCEL_DD; return BTM_CMD_STARTED; @@ -1312,12 +1249,11 @@ tBTM_STATUS BTM_SecGetDeviceLinkKey (BD_ADDR bd_addr, LINK_KEY link_key) tBTM_SEC_DEV_REC *p_dev_rec; if (((p_dev_rec = btm_find_dev (bd_addr)) != NULL) - && (p_dev_rec->sec_flags & BTM_SEC_LINK_KEY_KNOWN)) - { + && (p_dev_rec->sec_flags & BTM_SEC_LINK_KEY_KNOWN)) { memcpy (link_key, p_dev_rec->link_key, LINK_KEY_LEN); - return(BTM_SUCCESS); + return (BTM_SUCCESS); } - return(BTM_UNKNOWN_ADDR); + return (BTM_UNKNOWN_ADDR); } /******************************************************************************* @@ -1338,8 +1274,7 @@ tBTM_LINK_KEY_TYPE BTM_SecGetDeviceLinkKeyType (BD_ADDR bd_addr) { tBTM_SEC_DEV_REC *p_dev_rec = btm_find_dev (bd_addr); - if ((p_dev_rec != NULL) && (p_dev_rec->sec_flags & BTM_SEC_LINK_KEY_KNOWN)) - { + if ((p_dev_rec != NULL) && (p_dev_rec->sec_flags & BTM_SEC_LINK_KEY_KNOWN)) { return p_dev_rec->link_key_type; } return BTM_LKEY_TYPE_IGNORE; @@ -1379,50 +1314,47 @@ tBTM_STATUS BTM_SetEncryption (BD_ADDR bd_addr, tBT_TRANSPORT transport, tBTM_SE tBTM_SEC_DEV_REC *p_dev_rec = btm_find_dev (bd_addr); if (!p_dev_rec || - (transport == BT_TRANSPORT_BR_EDR && p_dev_rec->hci_handle == BTM_SEC_INVALID_HANDLE) + (transport == BT_TRANSPORT_BR_EDR && p_dev_rec->hci_handle == BTM_SEC_INVALID_HANDLE) #if BLE_INCLUDED == TRUE - || (transport == BT_TRANSPORT_LE && p_dev_rec->ble_hci_handle == BTM_SEC_INVALID_HANDLE) + || (transport == BT_TRANSPORT_LE && p_dev_rec->ble_hci_handle == BTM_SEC_INVALID_HANDLE) #endif - ) - { + ) { /* Connection should be up and runnning */ BTM_TRACE_WARNING ("Security Manager: BTM_SetEncryption not connected\n"); - if (p_callback) + if (p_callback) { (*p_callback) (bd_addr, transport, p_ref_data, BTM_WRONG_MODE); + } - return(BTM_WRONG_MODE); + return (BTM_WRONG_MODE); } if ((transport == BT_TRANSPORT_BR_EDR && - (p_dev_rec->sec_flags & BTM_SEC_ENCRYPTED)) + (p_dev_rec->sec_flags & BTM_SEC_ENCRYPTED)) #if BLE_INCLUDED == TRUE && SMP_INCLUDED == TRUE - || (transport == BT_TRANSPORT_LE && - (p_dev_rec->sec_flags & BTM_SEC_LE_ENCRYPTED)) + || (transport == BT_TRANSPORT_LE && + (p_dev_rec->sec_flags & BTM_SEC_LE_ENCRYPTED)) #endif - ) - { + ) { BTM_TRACE_EVENT ("Security Manager: BTM_SetEncryption already encrypted\n"); - if (p_callback) + if (p_callback) { (*p_callback) (bd_addr, transport, p_ref_data, BTM_SUCCESS); + } - return(BTM_SUCCESS); + return (BTM_SUCCESS); } /* enqueue security request if security is active */ - if (p_dev_rec->p_callback || (p_dev_rec->sec_state != BTM_SEC_STATE_IDLE)) - { + if (p_dev_rec->p_callback || (p_dev_rec->sec_state != BTM_SEC_STATE_IDLE)) { BTM_TRACE_WARNING ("Security Manager: BTM_SetEncryption busy, enqueue request\n"); - if (btm_sec_queue_encrypt_request(bd_addr, transport, p_callback, p_ref_data)) - { + if (btm_sec_queue_encrypt_request(bd_addr, transport, p_callback, p_ref_data)) { return BTM_CMD_STARTED; - } - else - { - if (p_callback) + } else { + if (p_callback) { (*p_callback) (bd_addr, transport, p_ref_data, BTM_NO_RESOURCES); + } return BTM_NO_RESOURCES; } } @@ -1433,37 +1365,30 @@ tBTM_STATUS BTM_SetEncryption (BD_ADDR bd_addr, tBT_TRANSPORT transport, tBTM_SE p_dev_rec->is_originator = FALSE; BTM_TRACE_API ("Security Manager: BTM_SetEncryption Handle:%d State:%d Flags:0x%x Required:0x%x\n", - p_dev_rec->hci_handle, p_dev_rec->sec_state, p_dev_rec->sec_flags, - p_dev_rec->security_required); + p_dev_rec->hci_handle, p_dev_rec->sec_state, p_dev_rec->sec_flags, + p_dev_rec->security_required); #if BLE_INCLUDED == TRUE && SMP_INCLUDED == TRUE - if (transport == BT_TRANSPORT_LE) - { + if (transport == BT_TRANSPORT_LE) { tACL_CONN *p = btm_bda_to_acl(bd_addr, transport); - if (p) - { - rc = btm_ble_set_encryption(bd_addr, p_ref_data, p->link_role); - } - else - { + if (p) { + rc = btm_ble_set_encryption(bd_addr, p_ref_data, p->link_role); + } else { rc = BTM_WRONG_MODE; BTM_TRACE_WARNING("%s: cannot call btm_ble_set_encryption, p is NULL\n", __FUNCTION__); } - } - else + } else #endif rc = btm_sec_execute_procedure (p_dev_rec); - if (rc != BTM_CMD_STARTED && rc != BTM_BUSY) - { - if (p_callback) - { + if (rc != BTM_CMD_STARTED && rc != BTM_BUSY) { + if (p_callback) { p_dev_rec->p_callback = NULL; (*p_callback) (bd_addr, transport, p_dev_rec->p_ref_data, rc); } } - return(rc); + return (rc); } /******************************************************************************* @@ -1475,50 +1400,49 @@ static tBTM_STATUS btm_sec_send_hci_disconnect (tBTM_SEC_DEV_REC *p_dev_rec, UIN tBTM_STATUS status = BTM_CMD_STARTED; BTM_TRACE_EVENT ("btm_sec_send_hci_disconnect: handle:0x%x, reason=0x%x\n", - conn_handle, reason); + conn_handle, reason); /* send HCI_Disconnect on a transport only once */ - switch (old_state) - { - case BTM_SEC_STATE_DISCONNECTING: - if (conn_handle == p_dev_rec->hci_handle) - return status; + switch (old_state) { + case BTM_SEC_STATE_DISCONNECTING: + if (conn_handle == p_dev_rec->hci_handle) { + return status; + } - p_dev_rec->sec_state = BTM_SEC_STATE_DISCONNECTING_BOTH; - break; + p_dev_rec->sec_state = BTM_SEC_STATE_DISCONNECTING_BOTH; + break; #if BLE_INCLUDED == TRUE && SMP_INCLUDED == TRUE - case BTM_SEC_STATE_DISCONNECTING_BLE: - if (conn_handle == p_dev_rec->ble_hci_handle) - return status; - - p_dev_rec->sec_state = BTM_SEC_STATE_DISCONNECTING_BOTH; - break; - - case BTM_SEC_STATE_DISCONNECTING_BOTH: + case BTM_SEC_STATE_DISCONNECTING_BLE: + if (conn_handle == p_dev_rec->ble_hci_handle) { return status; + } + + p_dev_rec->sec_state = BTM_SEC_STATE_DISCONNECTING_BOTH; + break; + + case BTM_SEC_STATE_DISCONNECTING_BOTH: + return status; #endif - default: - p_dev_rec->sec_state = (conn_handle == p_dev_rec->hci_handle) ? - BTM_SEC_STATE_DISCONNECTING : BTM_SEC_STATE_DISCONNECTING_BLE; + default: + p_dev_rec->sec_state = (conn_handle == p_dev_rec->hci_handle) ? + BTM_SEC_STATE_DISCONNECTING : BTM_SEC_STATE_DISCONNECTING_BLE; - break; + break; } /* If a role switch is in progress, delay the HCI Disconnect to avoid controller problem */ - if (p_dev_rec->rs_disc_pending == BTM_SEC_RS_PENDING && p_dev_rec->hci_handle == conn_handle) - { + if (p_dev_rec->rs_disc_pending == BTM_SEC_RS_PENDING && p_dev_rec->hci_handle == conn_handle) { BTM_TRACE_DEBUG("RS in progress - Set DISC Pending flag in btm_sec_send_hci_disconnect to delay disconnect\n"); - p_dev_rec->rs_disc_pending = BTM_SEC_DISC_PENDING; + p_dev_rec->rs_disc_pending = BTM_SEC_DISC_PENDING; status = BTM_SUCCESS; } /* Tear down the HCI link */ - else if (!btsnd_hcic_disconnect (conn_handle, reason)) - { - /* could not send disconnect. restore old state */ - p_dev_rec->sec_state = old_state; - status = BTM_NO_RESOURCES; + else if (!btsnd_hcic_disconnect (conn_handle, reason)) { + /* could not send disconnect. restore old state */ + p_dev_rec->sec_state = old_state; + status = BTM_NO_RESOURCES; } return status; @@ -1540,30 +1464,28 @@ void BTM_ConfirmReqReply(tBTM_STATUS res, BD_ADDR bd_addr) tBTM_SEC_DEV_REC *p_dev_rec; BTM_TRACE_EVENT ("BTM_ConfirmReqReply() State: %s Res: %u", - btm_pair_state_descr(btm_cb.pairing_state), res); + btm_pair_state_descr(btm_cb.pairing_state), res); /* If timeout already expired or has been canceled, ignore the reply */ if ( (btm_cb.pairing_state != BTM_PAIR_STATE_WAIT_NUMERIC_CONFIRM) - || (memcmp (btm_cb.pairing_bda, bd_addr, BD_ADDR_LEN) != 0) ) + || (memcmp (btm_cb.pairing_bda, bd_addr, BD_ADDR_LEN) != 0) ) { return; + } btm_sec_change_pairing_state (BTM_PAIR_STATE_WAIT_AUTH_COMPLETE); - if ( (res == BTM_SUCCESS) || (res == BTM_SUCCESS_NO_SECURITY) ) - { + if ( (res == BTM_SUCCESS) || (res == BTM_SUCCESS_NO_SECURITY) ) { btm_cb.acl_disc_reason = HCI_SUCCESS; - if (res == BTM_SUCCESS) - { - if ((p_dev_rec = btm_find_dev (bd_addr)) != NULL) + if (res == BTM_SUCCESS) { + if ((p_dev_rec = btm_find_dev (bd_addr)) != NULL) { p_dev_rec->sec_flags |= BTM_SEC_LINK_KEY_AUTHED; - p_dev_rec->sec_flags |= BTM_SEC_16_DIGIT_PIN_AUTHED; + } + p_dev_rec->sec_flags |= BTM_SEC_16_DIGIT_PIN_AUTHED; } btsnd_hcic_user_conf_reply (bd_addr, TRUE); - } - else - { + } else { /* Report authentication failed event from state BTM_PAIR_STATE_WAIT_AUTH_COMPLETE */ btm_cb.acl_disc_reason = HCI_ERR_HOST_REJECT_SECURITY; btsnd_hcic_user_conf_reply (bd_addr, FALSE); @@ -1587,43 +1509,41 @@ void BTM_ConfirmReqReply(tBTM_STATUS res, BD_ADDR bd_addr) void BTM_PasskeyReqReply(tBTM_STATUS res, BD_ADDR bd_addr, UINT32 passkey) { BTM_TRACE_API ("BTM_PasskeyReqReply: State: %s res:%d\n", - btm_pair_state_descr(btm_cb.pairing_state), res); + btm_pair_state_descr(btm_cb.pairing_state), res); if ( (btm_cb.pairing_state == BTM_PAIR_STATE_IDLE) - || (memcmp (btm_cb.pairing_bda, bd_addr, BD_ADDR_LEN) != 0) ) - { + || (memcmp (btm_cb.pairing_bda, bd_addr, BD_ADDR_LEN) != 0) ) { return; } /* If timeout already expired or has been canceled, ignore the reply */ - if ( (btm_cb.pairing_state == BTM_PAIR_STATE_WAIT_AUTH_COMPLETE) && (res != BTM_SUCCESS) ) - { + if ( (btm_cb.pairing_state == BTM_PAIR_STATE_WAIT_AUTH_COMPLETE) && (res != BTM_SUCCESS) ) { tBTM_SEC_DEV_REC *p_dev_rec = btm_find_dev (bd_addr); - if (p_dev_rec != NULL) - { + if (p_dev_rec != NULL) { btm_cb.acl_disc_reason = HCI_ERR_HOST_REJECT_SECURITY; - if (p_dev_rec->hci_handle != BTM_SEC_INVALID_HANDLE) + if (p_dev_rec->hci_handle != BTM_SEC_INVALID_HANDLE) { btm_sec_send_hci_disconnect (p_dev_rec, HCI_ERR_AUTH_FAILURE, p_dev_rec->hci_handle); - else + } else { BTM_SecBondCancel(bd_addr); + } p_dev_rec->sec_flags &= ~(BTM_SEC_LINK_KEY_AUTHED | BTM_SEC_LINK_KEY_KNOWN); btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); return; } - } - else if (btm_cb.pairing_state != BTM_PAIR_STATE_KEY_ENTRY) + } else if (btm_cb.pairing_state != BTM_PAIR_STATE_KEY_ENTRY) { return; + } - if (passkey > BTM_MAX_PASSKEY_VAL) + if (passkey > BTM_MAX_PASSKEY_VAL) { res = BTM_ILLEGAL_VALUE; + } btm_sec_change_pairing_state (BTM_PAIR_STATE_WAIT_AUTH_COMPLETE); - if (res != BTM_SUCCESS) - { + if (res != BTM_SUCCESS) { /* use BTM_PAIR_STATE_WAIT_AUTH_COMPLETE to report authentication failed event */ btm_cb.acl_disc_reason = HCI_ERR_HOST_REJECT_SECURITY; btsnd_hcic_user_passkey_neg_reply (bd_addr); @@ -1652,8 +1572,9 @@ void BTM_PasskeyReqReply(tBTM_STATUS res, BD_ADDR bd_addr, UINT32 passkey) void BTM_SendKeypressNotif(BD_ADDR bd_addr, tBTM_SP_KEY_TYPE type) { /* This API only make sense between PASSKEY_REQ and SP complete */ - if (btm_cb.pairing_state == BTM_PAIR_STATE_KEY_ENTRY) + if (btm_cb.pairing_state == BTM_PAIR_STATE_KEY_ENTRY) { btsnd_hcic_send_keypress_notif (bd_addr, type); + } } #endif @@ -1676,19 +1597,20 @@ void BTM_SendKeypressNotif(BD_ADDR bd_addr, tBTM_SP_KEY_TYPE type) void BTM_IoCapRsp(BD_ADDR bd_addr, tBTM_IO_CAP io_cap, tBTM_OOB_DATA oob, tBTM_AUTH_REQ auth_req) { BTM_TRACE_EVENT ("BTM_IoCapRsp: state: %s oob: %d io_cap: %d\n", - btm_pair_state_descr(btm_cb.pairing_state), oob, io_cap); + btm_pair_state_descr(btm_cb.pairing_state), oob, io_cap); if ( (btm_cb.pairing_state != BTM_PAIR_STATE_WAIT_LOCAL_IOCAPS) - || (memcmp (btm_cb.pairing_bda, bd_addr, BD_ADDR_LEN) != 0) ) + || (memcmp (btm_cb.pairing_bda, bd_addr, BD_ADDR_LEN) != 0) ) { return; + } - if (oob < BTM_OOB_UNKNOWN && io_cap < BTM_IO_CAP_MAX) - { + if (oob < BTM_OOB_UNKNOWN && io_cap < BTM_IO_CAP_MAX) { btm_cb.devcb.loc_auth_req = auth_req; btm_cb.devcb.loc_io_caps = io_cap; - if (btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD) - auth_req = (BTM_AUTH_DD_BOND | (auth_req&BTM_AUTH_YN_BIT)); + if (btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD) { + auth_req = (BTM_AUTH_DD_BOND | (auth_req & BTM_AUTH_YN_BIT)); + } btsnd_hcic_io_cap_req_reply (bd_addr, io_cap, oob, auth_req); } @@ -1706,8 +1628,9 @@ tBTM_STATUS BTM_ReadLocalOobData(void) { tBTM_STATUS status = BTM_SUCCESS; - if (btsnd_hcic_read_local_oob_data() == FALSE) + if (btsnd_hcic_read_local_oob_data() == FALSE) { status = BTM_NO_RESOURCES; + } return status; } @@ -1727,16 +1650,16 @@ tBTM_STATUS BTM_ReadLocalOobData(void) void BTM_RemoteOobDataReply(tBTM_STATUS res, BD_ADDR bd_addr, BT_OCTET16 c, BT_OCTET16 r) { BTM_TRACE_EVENT ("%s() - State: %s res: %d\n", __func__, - btm_pair_state_descr(btm_cb.pairing_state), res); + btm_pair_state_descr(btm_cb.pairing_state), res); /* If timeout already expired or has been canceled, ignore the reply */ - if (btm_cb.pairing_state != BTM_PAIR_STATE_WAIT_LOCAL_OOB_RSP) + if (btm_cb.pairing_state != BTM_PAIR_STATE_WAIT_LOCAL_OOB_RSP) { return; + } btm_sec_change_pairing_state (BTM_PAIR_STATE_WAIT_AUTH_COMPLETE); - if (res != BTM_SUCCESS) - { + if (res != BTM_SUCCESS) { /* use BTM_PAIR_STATE_WAIT_AUTH_COMPLETE to report authentication failed event */ btm_cb.acl_disc_reason = HCI_ERR_HOST_REJECT_SECURITY; btsnd_hcic_rem_oob_neg_reply (bd_addr); @@ -1774,8 +1697,7 @@ UINT16 BTM_BuildOobData(UINT8 *p_data, UINT16 max_len, BT_OCTET16 c, UINT8 name_type = BTM_EIR_SHORTENED_LOCAL_NAME_TYPE; #endif - if (p_data && max_len >= BTM_OOB_MANDATORY_SIZE) - { + if (p_data && max_len >= BTM_OOB_MANDATORY_SIZE) { /* add mandatory part */ UINT16_TO_STREAM(p, len); BDADDR_TO_STREAM(p, controller_get_interface()->get_address()->address); @@ -1787,8 +1709,7 @@ UINT16 BTM_BuildOobData(UINT8 *p_data, UINT16 max_len, BT_OCTET16 c, /* add Hash C */ UINT16 delta = BTM_OOB_HASH_C_SIZE + 2; - if (max_len >= delta) - { + if (max_len >= delta) { *p++ = BTM_OOB_HASH_C_SIZE + 1; *p++ = BTM_EIR_OOB_SSP_HASH_C_TYPE; ARRAY_TO_STREAM(p, c, BTM_OOB_HASH_C_SIZE); @@ -1798,8 +1719,7 @@ UINT16 BTM_BuildOobData(UINT8 *p_data, UINT16 max_len, BT_OCTET16 c, /* add Rand R */ delta = BTM_OOB_RAND_R_SIZE + 2; - if (max_len >= delta) - { + if (max_len >= delta) { *p++ = BTM_OOB_RAND_R_SIZE + 1; *p++ = BTM_EIR_OOB_SSP_RAND_R_TYPE; ARRAY_TO_STREAM(p, r, BTM_OOB_RAND_R_SIZE); @@ -1809,8 +1729,7 @@ UINT16 BTM_BuildOobData(UINT8 *p_data, UINT16 max_len, BT_OCTET16 c, /* add class of device */ delta = BTM_OOB_COD_SIZE + 2; - if (max_len >= delta) - { + if (max_len >= delta) { *p++ = BTM_OOB_COD_SIZE + 1; *p++ = BTM_EIR_OOB_COD_TYPE; DEVCLASS_TO_STREAM(p, btm_cb.devcb.dev_class); @@ -1819,14 +1738,12 @@ UINT16 BTM_BuildOobData(UINT8 *p_data, UINT16 max_len, BT_OCTET16 c, } #if BTM_MAX_LOC_BD_NAME_LEN > 0 name_size = name_len; - if (name_size > strlen(btm_cb.cfg.bd_name)) - { + if (name_size > strlen(btm_cb.cfg.bd_name)) { name_type = BTM_EIR_COMPLETE_LOCAL_NAME_TYPE; name_size = (UINT16)strlen(btm_cb.cfg.bd_name); } delta = name_size + 2; - if (max_len >= delta) - { + if (max_len >= delta) { *p++ = name_size + 1; *p++ = name_type; ARRAY_TO_STREAM (p, btm_cb.cfg.bd_name, name_size); @@ -1878,11 +1795,10 @@ BOOLEAN BTM_PeerSupportsSecureConnections(BD_ADDR bd_addr) { tBTM_SEC_DEV_REC *p_dev_rec; - if ((p_dev_rec = btm_find_dev(bd_addr)) == NULL) - { + if ((p_dev_rec = btm_find_dev(bd_addr)) == NULL) { BTM_TRACE_WARNING("%s: unknown BDA: %08x%04x\n", __FUNCTION__, - (bd_addr[0]<<24) + (bd_addr[1]<<16) + (bd_addr[2]<<8) + bd_addr[3], - (bd_addr[4]<< 8) + bd_addr[5]); + (bd_addr[0] << 24) + (bd_addr[1] << 16) + (bd_addr[2] << 8) + bd_addr[3], + (bd_addr[4] << 8) + bd_addr[5]); return FALSE; } @@ -1904,7 +1820,7 @@ BOOLEAN BTM_PeerSupportsSecureConnections(BD_ADDR bd_addr) ** NULL, if the tag is not found. ** *******************************************************************************/ -UINT8 * BTM_ReadOobData(UINT8 *p_data, UINT8 eir_tag, UINT8 *p_len) +UINT8 *BTM_ReadOobData(UINT8 *p_data, UINT8 eir_tag, UINT8 *p_len) { UINT8 *p = p_data; UINT16 max_len; @@ -1912,48 +1828,41 @@ UINT8 * BTM_ReadOobData(UINT8 *p_data, UINT8 eir_tag, UINT8 *p_len) UINT8 *p_ret = NULL; UINT8 ret_len = 0; - if (p_data) - { + if (p_data) { STREAM_TO_UINT16(max_len, p); - if (max_len >= BTM_OOB_MANDATORY_SIZE) - { - if (BTM_EIR_OOB_BD_ADDR_TYPE == eir_tag) - { + if (max_len >= BTM_OOB_MANDATORY_SIZE) { + if (BTM_EIR_OOB_BD_ADDR_TYPE == eir_tag) { p_ret = p; /* the location for bd_addr */ ret_len = BTM_OOB_BD_ADDR_SIZE; - } - else - { + } else { p += BD_ADDR_LEN; max_len -= BTM_OOB_MANDATORY_SIZE; /* now the optional data in EIR format */ - while (max_len > 0) - { + while (max_len > 0) { len = *p++; /* tag data len + 1 */ type = *p++; - if (eir_tag == type) - { + if (eir_tag == type) { p_ret = p; ret_len = len - 1; break; } /* the data size of this tag is len + 1 (tag data len + 2) */ - if (max_len > len) - { + if (max_len > len) { max_len -= len; max_len--; len--; p += len; - } - else + } else { max_len = 0; + } } } } } - if (p_len) + if (p_len) { *p_len = ret_len; + } return p_ret; } @@ -1981,17 +1890,16 @@ void BTM_SetOutService(BD_ADDR bd_addr, UINT8 service_id, UINT32 mx_chan_id) btm_cb.p_out_serv = p_serv_rec; p_dev_rec = btm_find_dev (bd_addr); - for (int i = 0; i < BTM_SEC_MAX_SERVICE_RECORDS; i++, p_serv_rec++) - { + for (int i = 0; i < BTM_SEC_MAX_SERVICE_RECORDS; i++, p_serv_rec++) { if ((p_serv_rec->security_flags & BTM_SEC_IN_USE) - && (p_serv_rec->service_id == service_id) - && (p_serv_rec->orig_mx_chan_id == mx_chan_id)) - { + && (p_serv_rec->service_id == service_id) + && (p_serv_rec->orig_mx_chan_id == mx_chan_id)) { BTM_TRACE_API("BTM_SetOutService p_out_serv id %d, psm 0x%04x, proto_id %d, chan_id %d\n", - p_serv_rec->service_id, p_serv_rec->psm, p_serv_rec->mx_proto_id, p_serv_rec->orig_mx_chan_id); + p_serv_rec->service_id, p_serv_rec->psm, p_serv_rec->mx_proto_id, p_serv_rec->orig_mx_chan_id); btm_cb.p_out_serv = p_serv_rec; - if (p_dev_rec) + if (p_dev_rec) { p_dev_rec->p_cur_service = p_serv_rec; + } break; } } @@ -2015,32 +1923,28 @@ static BOOLEAN btm_sec_is_upgrade_possible(tBTM_SEC_DEV_REC *p_dev_rec, BOOLEAN UINT16 mtm_check = is_originator ? BTM_SEC_OUT_MITM : BTM_SEC_IN_MITM; BOOLEAN is_possible = TRUE; - if (p_dev_rec->sec_flags & BTM_SEC_LINK_KEY_KNOWN) - { + if (p_dev_rec->sec_flags & BTM_SEC_LINK_KEY_KNOWN) { is_possible = FALSE; - if(p_dev_rec->p_cur_service) - { + if (p_dev_rec->p_cur_service) { BTM_TRACE_DEBUG ("%s() id: %d, link_key_typet: %d, rmt_io_caps: %d, chk flags: 0x%x, flags: 0x%x\n", - __func__, p_dev_rec->p_cur_service->service_id, p_dev_rec->link_key_type, - p_dev_rec->rmt_io_caps, mtm_check, p_dev_rec->p_cur_service->security_flags); - } - else - { + __func__, p_dev_rec->p_cur_service->service_id, p_dev_rec->link_key_type, + p_dev_rec->rmt_io_caps, mtm_check, p_dev_rec->p_cur_service->security_flags); + } else { BTM_TRACE_DEBUG ("%s() link_key_typet: %d, rmt_io_caps: %d, chk flags: 0x%x\n", - __func__, p_dev_rec->link_key_type, p_dev_rec->rmt_io_caps, mtm_check); + __func__, p_dev_rec->link_key_type, p_dev_rec->rmt_io_caps, mtm_check); } /* Already have a link key to the connected peer. Is the link key secure enough? ** Is a link key upgrade even possible? */ if ((p_dev_rec->security_required & mtm_check) /* needs MITM */ - && ((p_dev_rec->link_key_type == BTM_LKEY_TYPE_UNAUTH_COMB) || - (p_dev_rec->link_key_type == BTM_LKEY_TYPE_UNAUTH_COMB_P_256)) - /* has unauthenticated - link key */ - && (p_dev_rec->rmt_io_caps < BTM_IO_CAP_MAX) /* a valid peer IO cap */ - && (btm_sec_io_map[p_dev_rec->rmt_io_caps][btm_cb.devcb.loc_io_caps])) - /* authenticated - link key is possible */ + && ((p_dev_rec->link_key_type == BTM_LKEY_TYPE_UNAUTH_COMB) || + (p_dev_rec->link_key_type == BTM_LKEY_TYPE_UNAUTH_COMB_P_256)) + /* has unauthenticated + link key */ + && (p_dev_rec->rmt_io_caps < BTM_IO_CAP_MAX) /* a valid peer IO cap */ + && (btm_sec_io_map[p_dev_rec->rmt_io_caps][btm_cb.devcb.loc_io_caps])) + /* authenticated + link key is possible */ { /* upgrade is possible: check if the application wants the upgrade. * If the application is configured to use a global MITM flag, @@ -2068,11 +1972,11 @@ static void btm_sec_check_upgrade(tBTM_SEC_DEV_REC *p_dev_rec, BOOLEAN is_origi BTM_TRACE_DEBUG ("%s()\n", __func__); /* Only check if link key already exists */ - if (!(p_dev_rec->sec_flags & BTM_SEC_LINK_KEY_KNOWN)) + if (!(p_dev_rec->sec_flags & BTM_SEC_LINK_KEY_KNOWN)) { return; + } - if (btm_sec_is_upgrade_possible (p_dev_rec, is_originator) == TRUE) - { + if (btm_sec_is_upgrade_possible (p_dev_rec, is_originator) == TRUE) { BTM_TRACE_DEBUG ("need upgrade!! sec_flags:0x%x\n", p_dev_rec->sec_flags); /* upgrade is possible: check if the application wants the upgrade. * If the application is configured to use a global MITM flag, @@ -2080,12 +1984,12 @@ static void btm_sec_check_upgrade(tBTM_SEC_DEV_REC *p_dev_rec, BOOLEAN is_origi tBTM_SP_UPGRADE evt_data; memcpy (evt_data.bd_addr, p_dev_rec->bd_addr, BD_ADDR_LEN); evt_data.upgrade = TRUE; - if (btm_cb.api.p_sp_callback) + if (btm_cb.api.p_sp_callback) { (*btm_cb.api.p_sp_callback) (BTM_SP_UPGRADE_EVT, (tBTM_SP_EVT_DATA *)&evt_data); + } BTM_TRACE_DEBUG ("evt_data.upgrade:0x%x\n", evt_data.upgrade); - if (evt_data.upgrade) - { + if (evt_data.upgrade) { /* if the application confirms the upgrade, set the upgrade bit */ p_dev_rec->sm4 |= BTM_SM4_UPGRADE; @@ -2140,10 +2044,11 @@ tBTM_STATUS btm_sec_l2cap_access_req (BD_ADDR bd_addr, UINT16 psm, UINT16 handle BOOLEAN transport = FALSE; /* should check PSM range in LE connection oriented L2CAP connection */ #if (L2CAP_UCD_INCLUDED == TRUE) - if (conn_type & CONNECTION_TYPE_ORIG_MASK) + if (conn_type & CONNECTION_TYPE_ORIG_MASK) { is_originator = TRUE; - else + } else { is_originator = FALSE; + } BTM_TRACE_DEBUG ("%s() conn_type: 0x%x, 0x%x\n", __func__, conn_type, p_ref_data); #else @@ -2161,83 +2066,67 @@ tBTM_STATUS btm_sec_l2cap_access_req (BD_ADDR bd_addr, UINT16 psm, UINT16 handle p_serv_rec = btm_sec_find_first_serv (conn_type, psm); /* If there is no application registered with this PSM do not allow connection */ - if (!p_serv_rec) - { + if (!p_serv_rec) { BTM_TRACE_WARNING ("%s() PSM: %d no application registerd\n", __func__, psm); (*p_callback) (bd_addr, transport, p_ref_data, BTM_MODE_UNSUPPORTED); - return(BTM_MODE_UNSUPPORTED); + return (BTM_MODE_UNSUPPORTED); } /* Services level0 by default have no security */ - if ((btm_sec_is_serv_level0(psm)) && (!btm_cb.devcb.secure_connections_only)) - { - (*p_callback) (bd_addr,transport, p_ref_data, BTM_SUCCESS_NO_SECURITY); - return(BTM_SUCCESS); + if ((btm_sec_is_serv_level0(psm)) && (!btm_cb.devcb.secure_connections_only)) { + (*p_callback) (bd_addr, transport, p_ref_data, BTM_SUCCESS_NO_SECURITY); + return (BTM_SUCCESS); } #if (L2CAP_UCD_INCLUDED == TRUE) - if ( conn_type & CONNECTION_TYPE_CONNLESS_MASK ) - { - if (btm_cb.security_mode == BTM_SEC_MODE_SC) - { + if ( conn_type & CONNECTION_TYPE_CONNLESS_MASK ) { + if (btm_cb.security_mode == BTM_SEC_MODE_SC) { security_required = btm_sec_set_serv_level4_flags (p_serv_rec->ucd_security_flags, - is_originator); - } - else - { + is_originator); + } else { security_required = p_serv_rec->ucd_security_flags; } rc = BTM_CMD_STARTED; - if (is_originator) - { + if (is_originator) { if (((security_required & BTM_SEC_OUT_FLAGS) == 0) || - ((((security_required & BTM_SEC_OUT_FLAGS) == BTM_SEC_OUT_AUTHENTICATE) && (p_dev_rec->sec_flags & BTM_SEC_AUTHENTICATED))) || - ((((security_required & BTM_SEC_OUT_FLAGS) == (BTM_SEC_OUT_AUTHENTICATE | BTM_SEC_OUT_ENCRYPT)) && (p_dev_rec->sec_flags & BTM_SEC_ENCRYPTED))) || - ((((security_required & BTM_SEC_OUT_FLAGS) == BTM_SEC_OUT_FLAGS) && (p_dev_rec->sec_flags & BTM_SEC_AUTHORIZED))) ) - { + ((((security_required & BTM_SEC_OUT_FLAGS) == BTM_SEC_OUT_AUTHENTICATE) && (p_dev_rec->sec_flags & BTM_SEC_AUTHENTICATED))) || + ((((security_required & BTM_SEC_OUT_FLAGS) == (BTM_SEC_OUT_AUTHENTICATE | BTM_SEC_OUT_ENCRYPT)) && (p_dev_rec->sec_flags & BTM_SEC_ENCRYPTED))) || + ((((security_required & BTM_SEC_OUT_FLAGS) == BTM_SEC_OUT_FLAGS) && (p_dev_rec->sec_flags & BTM_SEC_AUTHORIZED))) ) { rc = BTM_SUCCESS; } - } - else - { + } else { if (((security_required & BTM_SEC_IN_FLAGS) == 0) || - ((((security_required & BTM_SEC_IN_FLAGS) == BTM_SEC_IN_AUTHENTICATE) && (p_dev_rec->sec_flags & BTM_SEC_AUTHENTICATED))) || - ((((security_required & BTM_SEC_IN_FLAGS) == (BTM_SEC_IN_AUTHENTICATE | BTM_SEC_IN_ENCRYPT)) && (p_dev_rec->sec_flags & BTM_SEC_ENCRYPTED))) || - ((((security_required & BTM_SEC_IN_FLAGS) == BTM_SEC_IN_FLAGS) && (p_dev_rec->sec_flags & BTM_SEC_AUTHORIZED))) ) - { + ((((security_required & BTM_SEC_IN_FLAGS) == BTM_SEC_IN_AUTHENTICATE) && (p_dev_rec->sec_flags & BTM_SEC_AUTHENTICATED))) || + ((((security_required & BTM_SEC_IN_FLAGS) == (BTM_SEC_IN_AUTHENTICATE | BTM_SEC_IN_ENCRYPT)) && (p_dev_rec->sec_flags & BTM_SEC_ENCRYPTED))) || + ((((security_required & BTM_SEC_IN_FLAGS) == BTM_SEC_IN_FLAGS) && (p_dev_rec->sec_flags & BTM_SEC_AUTHORIZED))) ) { // Check for 16 digits (or MITM) if (((security_required & BTM_SEC_IN_MIN_16_DIGIT_PIN) == 0) || - (((security_required & BTM_SEC_IN_MIN_16_DIGIT_PIN) == BTM_SEC_IN_MIN_16_DIGIT_PIN) && - btm_dev_16_digit_authenticated(p_dev_rec))) { + (((security_required & BTM_SEC_IN_MIN_16_DIGIT_PIN) == BTM_SEC_IN_MIN_16_DIGIT_PIN) && + btm_dev_16_digit_authenticated(p_dev_rec))) { rc = BTM_SUCCESS; } } } if ((rc == BTM_SUCCESS) && (security_required & BTM_SEC_MODE4_LEVEL4) && - (p_dev_rec->link_key_type != BTM_LKEY_TYPE_AUTH_COMB_P_256)) - { + (p_dev_rec->link_key_type != BTM_LKEY_TYPE_AUTH_COMB_P_256)) { rc = BTM_CMD_STARTED; } - if (rc == BTM_SUCCESS) - { - if (p_callback) + if (rc == BTM_SUCCESS) { + if (p_callback) { (*p_callback) (bd_addr, transport, (void *)p_ref_data, BTM_SUCCESS); + } - return(BTM_SUCCESS); + return (BTM_SUCCESS); } - } - else + } else #endif { - if (btm_cb.security_mode == BTM_SEC_MODE_SC) - { + if (btm_cb.security_mode == BTM_SEC_MODE_SC) { security_required = btm_sec_set_serv_level4_flags (p_serv_rec->security_flags, - is_originator); - } - else - { + is_originator); + } else { security_required = p_serv_rec->security_flags; } } @@ -2245,19 +2134,17 @@ tBTM_STATUS btm_sec_l2cap_access_req (BD_ADDR bd_addr, UINT16 psm, UINT16 handle BTM_TRACE_DEBUG("%s: security_required 0x%04x, is_originator 0x%02x, psm 0x%04x\n", __FUNCTION__, security_required, is_originator, psm); - if ((!is_originator) && (security_required & BTM_SEC_MODE4_LEVEL4)) - { + if ((!is_originator) && (security_required & BTM_SEC_MODE4_LEVEL4)) { BOOLEAN local_supports_sc = controller_get_interface()->supports_secure_connections(); /* acceptor receives L2CAP Channel Connect Request for Secure Connections Only service */ - if (!(local_supports_sc) || !(p_dev_rec->remote_supports_secure_connections)) - { + if (!(local_supports_sc) || !(p_dev_rec->remote_supports_secure_connections)) { BTM_TRACE_DEBUG("%s: SC only service, local_support_for_sc %d\n" "rmt_support_for_sc : %d -> fail pairing\n", __FUNCTION__, local_supports_sc, p_dev_rec->remote_supports_secure_connections); if (p_callback) (*p_callback) (bd_addr, transport, (void *)p_ref_data, - BTM_MODE4_LEVEL4_NOT_SUPPORTED); + BTM_MODE4_LEVEL4_NOT_SUPPORTED); return (BTM_MODE4_LEVEL4_NOT_SUPPORTED); } @@ -2265,65 +2152,57 @@ tBTM_STATUS btm_sec_l2cap_access_req (BD_ADDR bd_addr, UINT16 psm, UINT16 handle /* there are some devices (moto KRZR) which connects to several services at the same time */ /* we will process one after another */ - if ( (p_dev_rec->p_callback) || (btm_cb.pairing_state != BTM_PAIR_STATE_IDLE) ) - { + if ( (p_dev_rec->p_callback) || (btm_cb.pairing_state != BTM_PAIR_STATE_IDLE) ) { BTM_TRACE_EVENT ("%s() - busy - PSM:%d delayed state: %s mode:%d, sm4:0x%x\n", __func__, - psm, btm_pair_state_descr(btm_cb.pairing_state), btm_cb.security_mode, p_dev_rec->sm4); + psm, btm_pair_state_descr(btm_cb.pairing_state), btm_cb.security_mode, p_dev_rec->sm4); BTM_TRACE_EVENT ("security_flags:x%x, sec_flags:x%x\n", security_required, p_dev_rec->sec_flags); rc = BTM_CMD_STARTED; if ((btm_cb.security_mode == BTM_SEC_MODE_UNDEFINED || - btm_cb.security_mode == BTM_SEC_MODE_NONE || - btm_cb.security_mode == BTM_SEC_MODE_SERVICE || - btm_cb.security_mode == BTM_SEC_MODE_LINK) || - (BTM_SM4_KNOWN == p_dev_rec->sm4) || (BTM_SEC_IS_SM4(p_dev_rec->sm4) && - (btm_sec_is_upgrade_possible(p_dev_rec, is_originator) == FALSE))) - { + btm_cb.security_mode == BTM_SEC_MODE_NONE || + btm_cb.security_mode == BTM_SEC_MODE_SERVICE || + btm_cb.security_mode == BTM_SEC_MODE_LINK) || + (BTM_SM4_KNOWN == p_dev_rec->sm4) || (BTM_SEC_IS_SM4(p_dev_rec->sm4) && + (btm_sec_is_upgrade_possible(p_dev_rec, is_originator) == FALSE))) { /* legacy mode - local is legacy or local is lisbon/peer is legacy * or SM4 with no possibility of link key upgrade */ - if (is_originator) - { + if (is_originator) { if (((security_required & BTM_SEC_OUT_FLAGS) == 0) || - ((((security_required & BTM_SEC_OUT_FLAGS) == BTM_SEC_OUT_AUTHENTICATE) && btm_dev_authenticated(p_dev_rec))) || - ((((security_required & BTM_SEC_OUT_FLAGS) == (BTM_SEC_OUT_AUTHENTICATE | BTM_SEC_OUT_ENCRYPT)) && btm_dev_encrypted(p_dev_rec))) || - ((((security_required & BTM_SEC_OUT_FLAGS) == BTM_SEC_OUT_FLAGS) && btm_dev_authorized(p_dev_rec) && btm_dev_encrypted(p_dev_rec))) ) - { + ((((security_required & BTM_SEC_OUT_FLAGS) == BTM_SEC_OUT_AUTHENTICATE) && btm_dev_authenticated(p_dev_rec))) || + ((((security_required & BTM_SEC_OUT_FLAGS) == (BTM_SEC_OUT_AUTHENTICATE | BTM_SEC_OUT_ENCRYPT)) && btm_dev_encrypted(p_dev_rec))) || + ((((security_required & BTM_SEC_OUT_FLAGS) == BTM_SEC_OUT_FLAGS) && btm_dev_authorized(p_dev_rec) && btm_dev_encrypted(p_dev_rec))) ) { rc = BTM_SUCCESS; } - } - else - { + } else { if (((security_required & BTM_SEC_IN_FLAGS) == 0) || - (((security_required & BTM_SEC_IN_FLAGS) == BTM_SEC_IN_AUTHENTICATE) && btm_dev_authenticated(p_dev_rec)) || - (((security_required & BTM_SEC_IN_FLAGS) == (BTM_SEC_IN_AUTHENTICATE | BTM_SEC_IN_ENCRYPT)) && btm_dev_encrypted(p_dev_rec)) || - (((security_required & BTM_SEC_IN_FLAGS) == BTM_SEC_IN_AUTHORIZE) && (btm_dev_authorized(p_dev_rec)||btm_serv_trusted(p_dev_rec, p_serv_rec))) || - (((security_required & BTM_SEC_IN_FLAGS) == (BTM_SEC_IN_AUTHENTICATE | BTM_SEC_IN_AUTHORIZE)) && ((btm_dev_authorized(p_dev_rec)||btm_serv_trusted(p_dev_rec, p_serv_rec)) && btm_dev_authenticated(p_dev_rec))) || - (((security_required & BTM_SEC_IN_FLAGS) == (BTM_SEC_IN_ENCRYPT | BTM_SEC_IN_AUTHORIZE)) && ((btm_dev_authorized(p_dev_rec)||btm_serv_trusted(p_dev_rec, p_serv_rec)) && btm_dev_encrypted(p_dev_rec))) || - (((security_required & BTM_SEC_IN_FLAGS) == BTM_SEC_IN_FLAGS) && btm_dev_encrypted(p_dev_rec) && (btm_dev_authorized(p_dev_rec)||btm_serv_trusted(p_dev_rec, p_serv_rec)))) - { + (((security_required & BTM_SEC_IN_FLAGS) == BTM_SEC_IN_AUTHENTICATE) && btm_dev_authenticated(p_dev_rec)) || + (((security_required & BTM_SEC_IN_FLAGS) == (BTM_SEC_IN_AUTHENTICATE | BTM_SEC_IN_ENCRYPT)) && btm_dev_encrypted(p_dev_rec)) || + (((security_required & BTM_SEC_IN_FLAGS) == BTM_SEC_IN_AUTHORIZE) && (btm_dev_authorized(p_dev_rec) || btm_serv_trusted(p_dev_rec, p_serv_rec))) || + (((security_required & BTM_SEC_IN_FLAGS) == (BTM_SEC_IN_AUTHENTICATE | BTM_SEC_IN_AUTHORIZE)) && ((btm_dev_authorized(p_dev_rec) || btm_serv_trusted(p_dev_rec, p_serv_rec)) && btm_dev_authenticated(p_dev_rec))) || + (((security_required & BTM_SEC_IN_FLAGS) == (BTM_SEC_IN_ENCRYPT | BTM_SEC_IN_AUTHORIZE)) && ((btm_dev_authorized(p_dev_rec) || btm_serv_trusted(p_dev_rec, p_serv_rec)) && btm_dev_encrypted(p_dev_rec))) || + (((security_required & BTM_SEC_IN_FLAGS) == BTM_SEC_IN_FLAGS) && btm_dev_encrypted(p_dev_rec) && (btm_dev_authorized(p_dev_rec) || btm_serv_trusted(p_dev_rec, p_serv_rec)))) { // Check for 16 digits (or MITM) if (((security_required & BTM_SEC_IN_MIN_16_DIGIT_PIN) == 0) || - (((security_required & BTM_SEC_IN_MIN_16_DIGIT_PIN) == BTM_SEC_IN_MIN_16_DIGIT_PIN) && btm_dev_16_digit_authenticated(p_dev_rec))) { + (((security_required & BTM_SEC_IN_MIN_16_DIGIT_PIN) == BTM_SEC_IN_MIN_16_DIGIT_PIN) && btm_dev_16_digit_authenticated(p_dev_rec))) { rc = BTM_SUCCESS; } } } if ((rc == BTM_SUCCESS) && (security_required & BTM_SEC_MODE4_LEVEL4) && - (p_dev_rec->link_key_type != BTM_LKEY_TYPE_AUTH_COMB_P_256)) - { + (p_dev_rec->link_key_type != BTM_LKEY_TYPE_AUTH_COMB_P_256)) { rc = BTM_CMD_STARTED; } - if (rc == BTM_SUCCESS) - { - if (p_callback) + if (rc == BTM_SUCCESS) { + if (p_callback) { (*p_callback) (bd_addr, transport, (void *)p_ref_data, BTM_SUCCESS); - return(BTM_SUCCESS); + } + return (BTM_SUCCESS); } } btm_cb.sec_req_pending = TRUE; - return(BTM_CMD_STARTED); + return (BTM_CMD_STARTED); } /* Save pointer to service record */ @@ -2331,26 +2210,19 @@ tBTM_STATUS btm_sec_l2cap_access_req (BD_ADDR bd_addr, UINT16 psm, UINT16 handle /* Modify security_required in btm_sec_l2cap_access_req for Lisbon */ if (btm_cb.security_mode == BTM_SEC_MODE_SP || - btm_cb.security_mode == BTM_SEC_MODE_SP_DEBUG || - btm_cb.security_mode == BTM_SEC_MODE_SC) - { - if (BTM_SEC_IS_SM4(p_dev_rec->sm4)) - { - if (is_originator) - { + btm_cb.security_mode == BTM_SEC_MODE_SP_DEBUG || + btm_cb.security_mode == BTM_SEC_MODE_SC) { + if (BTM_SEC_IS_SM4(p_dev_rec->sm4)) { + if (is_originator) { /* SM4 to SM4 -> always authenticate & encrypt */ security_required |= (BTM_SEC_OUT_AUTHENTICATE | BTM_SEC_OUT_ENCRYPT); - } - else /* acceptor */ - { + } else { /* acceptor */ /* SM4 to SM4: the acceptor needs to make sure the authentication is already done */ chk_acp_auth_done = TRUE; /* SM4 to SM4 -> always authenticate & encrypt */ security_required |= (BTM_SEC_IN_AUTHENTICATE | BTM_SEC_IN_ENCRYPT); - } - } - else if (!(BTM_SM4_KNOWN & p_dev_rec->sm4)) - { + } + } else if (!(BTM_SM4_KNOWN & p_dev_rec->sm4)) { /* the remote features are not known yet */ BTM_TRACE_DEBUG("%s: (%s) remote features unknown!!sec_flags:0x%02x\n", __FUNCTION__, (is_originator) ? "initiator" : "acceptor", p_dev_rec->sec_flags); @@ -2361,7 +2233,7 @@ tBTM_STATUS btm_sec_l2cap_access_req (BD_ADDR bd_addr, UINT16 psm, UINT16 handle } BTM_TRACE_DEBUG ("%s() sm4:0x%x, sec_flags:0x%x, security_required:0x%x chk:%d\n", __func__, - p_dev_rec->sm4, p_dev_rec->sec_flags, security_required, chk_acp_auth_done); + p_dev_rec->sm4, p_dev_rec->sec_flags, security_required, chk_acp_auth_done); old_security_required = p_dev_rec->security_required; old_is_originator = p_dev_rec->is_originator; @@ -2370,24 +2242,24 @@ tBTM_STATUS btm_sec_l2cap_access_req (BD_ADDR bd_addr, UINT16 psm, UINT16 handle p_dev_rec->is_originator = is_originator; #if (L2CAP_UCD_INCLUDED == TRUE) - if ( conn_type & CONNECTION_TYPE_CONNLESS_MASK ) + if ( conn_type & CONNECTION_TYPE_CONNLESS_MASK ) { p_dev_rec->is_ucd = TRUE; - else + } else { p_dev_rec->is_ucd = FALSE; + } #endif /* If there are multiple service records used through the same PSM */ /* leave security decision for the multiplexor on the top */ #if (L2CAP_UCD_INCLUDED == TRUE) if (((btm_sec_find_next_serv (p_serv_rec)) != NULL) - &&(!( conn_type & CONNECTION_TYPE_CONNLESS_MASK ))) /* if not UCD */ + && (!( conn_type & CONNECTION_TYPE_CONNLESS_MASK ))) /* if not UCD */ #else if ((btm_sec_find_next_serv (p_serv_rec)) != NULL) #endif { BTM_TRACE_DEBUG ("no next_serv sm4:0x%x, chk:%d\n", p_dev_rec->sm4, chk_acp_auth_done); - if (!BTM_SEC_IS_SM4(p_dev_rec->sm4)) - { + if (!BTM_SEC_IS_SM4(p_dev_rec->sm4)) { BTM_TRACE_EVENT ("Security Manager: l2cap_access_req PSM:%d postponed for multiplexer\n", psm); /* pre-Lisbon: restore the old settings */ p_dev_rec->security_required = old_security_required; @@ -2395,7 +2267,7 @@ tBTM_STATUS btm_sec_l2cap_access_req (BD_ADDR bd_addr, UINT16 psm, UINT16 handle (*p_callback) (bd_addr, transport, p_ref_data, BTM_SUCCESS); - return(BTM_SUCCESS); + return (BTM_SUCCESS); } } @@ -2403,12 +2275,11 @@ tBTM_STATUS btm_sec_l2cap_access_req (BD_ADDR bd_addr, UINT16 psm, UINT16 handle * The layer above L2CAP needs to carry out the security requirement after L2CAP connect * response is received */ if (is_originator && - ((btm_cb.security_mode == BTM_SEC_MODE_UNDEFINED || - btm_cb.security_mode == BTM_SEC_MODE_NONE || - btm_cb.security_mode == BTM_SEC_MODE_SERVICE || - btm_cb.security_mode == BTM_SEC_MODE_LINK) || - !BTM_SEC_IS_SM4(p_dev_rec->sm4)) && (psm >= 0x1001)) - { + ((btm_cb.security_mode == BTM_SEC_MODE_UNDEFINED || + btm_cb.security_mode == BTM_SEC_MODE_NONE || + btm_cb.security_mode == BTM_SEC_MODE_SERVICE || + btm_cb.security_mode == BTM_SEC_MODE_LINK) || + !BTM_SEC_IS_SM4(p_dev_rec->sm4)) && (psm >= 0x1001)) { BTM_TRACE_EVENT ("dynamic PSM:0x%x in legacy mode - postponed for upper layer\n", psm); /* restore the old settings */ p_dev_rec->security_required = old_security_required; @@ -2416,18 +2287,16 @@ tBTM_STATUS btm_sec_l2cap_access_req (BD_ADDR bd_addr, UINT16 psm, UINT16 handle (*p_callback) (bd_addr, transport, p_ref_data, BTM_SUCCESS); - return(BTM_SUCCESS); + return (BTM_SUCCESS); } - if (chk_acp_auth_done) - { + if (chk_acp_auth_done) { BTM_TRACE_DEBUG ("(SM4 to SM4) btm_sec_l2cap_access_req rspd. authenticated: x%x, enc: x%x\n", - (p_dev_rec->sec_flags & BTM_SEC_AUTHENTICATED), (p_dev_rec->sec_flags & BTM_SEC_ENCRYPTED)); + (p_dev_rec->sec_flags & BTM_SEC_AUTHENTICATED), (p_dev_rec->sec_flags & BTM_SEC_ENCRYPTED)); /* SM4, but we do not know for sure which level of security we need. * as long as we have a link key, it's OK */ if ((0 == (p_dev_rec->sec_flags & BTM_SEC_AUTHENTICATED)) - ||(0 == (p_dev_rec->sec_flags & BTM_SEC_ENCRYPTED))) - { + || (0 == (p_dev_rec->sec_flags & BTM_SEC_ENCRYPTED))) { rc = BTM_DELAY_CHECK; /* 2046 may report HCI_Encryption_Change and L2C Connection Request out of sequence @@ -2445,8 +2314,7 @@ tBTM_STATUS btm_sec_l2cap_access_req (BD_ADDR bd_addr, UINT16 psm, UINT16 handle p_dev_rec->p_callback = p_callback; if (p_dev_rec->last_author_service_id == BTM_SEC_NO_LAST_SERVICE_ID - || p_dev_rec->last_author_service_id != p_dev_rec->p_cur_service->service_id) - { + || p_dev_rec->last_author_service_id != p_dev_rec->p_cur_service->service_id) { /* Although authentication and encryption are per connection ** authorization is per access request. For example when serial connection ** is up and authorized and client requests to read file (access to other @@ -2455,38 +2323,32 @@ tBTM_STATUS btm_sec_l2cap_access_req (BD_ADDR bd_addr, UINT16 psm, UINT16 handle p_dev_rec->sec_flags &= ~BTM_SEC_AUTHORIZED; } - if (BTM_SEC_IS_SM4(p_dev_rec->sm4)) - { + if (BTM_SEC_IS_SM4(p_dev_rec->sm4)) { if ((p_dev_rec->security_required & BTM_SEC_MODE4_LEVEL4) && - (p_dev_rec->link_key_type != BTM_LKEY_TYPE_AUTH_COMB_P_256)) - { + (p_dev_rec->link_key_type != BTM_LKEY_TYPE_AUTH_COMB_P_256)) { /* BTM_LKEY_TYPE_AUTH_COMB_P_256 is the only acceptable key in this case */ - if ((p_dev_rec->sec_flags & BTM_SEC_LINK_KEY_KNOWN) != 0) - { + if ((p_dev_rec->sec_flags & BTM_SEC_LINK_KEY_KNOWN) != 0) { p_dev_rec->sm4 |= BTM_SM4_UPGRADE; } p_dev_rec->sec_flags &= ~(BTM_SEC_LINK_KEY_KNOWN | BTM_SEC_LINK_KEY_AUTHED | BTM_SEC_AUTHENTICATED); BTM_TRACE_DEBUG ("%s: sec_flags:0x%x", __FUNCTION__, p_dev_rec->sec_flags); - } - else - { + } else { /* If we already have a link key to the connected peer, is it secure enough? */ btm_sec_check_upgrade(p_dev_rec, is_originator); } } BTM_TRACE_EVENT ("%s() PSM:%d Handle:%d State:%d Flags: 0x%x Required: 0x%x Service ID:%d\n", - __func__, psm, handle, p_dev_rec->sec_state, p_dev_rec->sec_flags, - p_dev_rec->security_required, p_dev_rec->p_cur_service->service_id); + __func__, psm, handle, p_dev_rec->sec_state, p_dev_rec->sec_flags, + p_dev_rec->security_required, p_dev_rec->p_cur_service->service_id); - if ((rc = btm_sec_execute_procedure (p_dev_rec)) != BTM_CMD_STARTED) - { + if ((rc = btm_sec_execute_procedure (p_dev_rec)) != BTM_CMD_STARTED) { p_dev_rec->p_callback = NULL; (*p_callback) (bd_addr, transport, p_dev_rec->p_ref_data, (UINT8)rc); } - return(rc); + return (rc); } /******************************************************************************* @@ -2530,86 +2392,73 @@ tBTM_STATUS btm_sec_mx_access_request (BD_ADDR bd_addr, UINT16 psm, BOOLEAN is_o p_serv_rec = btm_sec_find_mx_serv (is_originator, psm, mx_proto_id, mx_chan_id); /* If there is no application registered with this PSM do not allow connection */ - if (!p_serv_rec) - { - if (p_callback) + if (!p_serv_rec) { + if (p_callback) { (*p_callback) (bd_addr, transport, p_ref_data, BTM_MODE_UNSUPPORTED); + } BTM_TRACE_ERROR ("Security Manager: MX service not found PSM:%d Proto:%d SCN:%d\n", - psm, mx_proto_id, mx_chan_id); + psm, mx_proto_id, mx_chan_id); return BTM_NO_RESOURCES; } - if ((btm_cb.security_mode == BTM_SEC_MODE_SC) && (!btm_sec_is_serv_level0(psm))) - { + if ((btm_cb.security_mode == BTM_SEC_MODE_SC) && (!btm_sec_is_serv_level0(psm))) { security_required = btm_sec_set_serv_level4_flags (p_serv_rec->security_flags, - is_originator); - } - else - { + is_originator); + } else { security_required = p_serv_rec->security_flags; } /* there are some devices (moto phone) which connects to several services at the same time */ /* we will process one after another */ - if ( (p_dev_rec->p_callback) || (btm_cb.pairing_state != BTM_PAIR_STATE_IDLE) ) - { + if ( (p_dev_rec->p_callback) || (btm_cb.pairing_state != BTM_PAIR_STATE_IDLE) ) { BTM_TRACE_EVENT ("%s() service PSM:%d Proto:%d SCN:%d delayed state: %s\n", __func__, - psm, mx_proto_id, mx_chan_id, btm_pair_state_descr(btm_cb.pairing_state)); + psm, mx_proto_id, mx_chan_id, btm_pair_state_descr(btm_cb.pairing_state)); rc = BTM_CMD_STARTED; if ((btm_cb.security_mode == BTM_SEC_MODE_UNDEFINED || - btm_cb.security_mode == BTM_SEC_MODE_NONE || - btm_cb.security_mode == BTM_SEC_MODE_SERVICE || - btm_cb.security_mode == BTM_SEC_MODE_LINK) || - (BTM_SM4_KNOWN == p_dev_rec->sm4) || (BTM_SEC_IS_SM4(p_dev_rec->sm4) && - (btm_sec_is_upgrade_possible(p_dev_rec, is_originator) == FALSE))) - { + btm_cb.security_mode == BTM_SEC_MODE_NONE || + btm_cb.security_mode == BTM_SEC_MODE_SERVICE || + btm_cb.security_mode == BTM_SEC_MODE_LINK) || + (BTM_SM4_KNOWN == p_dev_rec->sm4) || (BTM_SEC_IS_SM4(p_dev_rec->sm4) && + (btm_sec_is_upgrade_possible(p_dev_rec, is_originator) == FALSE))) { /* legacy mode - local is legacy or local is lisbon/peer is legacy * or SM4 with no possibility of link key upgrade */ - if (is_originator) - { + if (is_originator) { if (((security_required & BTM_SEC_OUT_FLAGS) == 0) || - ((((security_required & BTM_SEC_OUT_FLAGS) == BTM_SEC_OUT_AUTHENTICATE) && btm_dev_authenticated(p_dev_rec))) || - ((((security_required & BTM_SEC_OUT_FLAGS) == (BTM_SEC_OUT_AUTHENTICATE | BTM_SEC_OUT_ENCRYPT)) && btm_dev_encrypted(p_dev_rec))) - ) - { + ((((security_required & BTM_SEC_OUT_FLAGS) == BTM_SEC_OUT_AUTHENTICATE) && btm_dev_authenticated(p_dev_rec))) || + ((((security_required & BTM_SEC_OUT_FLAGS) == (BTM_SEC_OUT_AUTHENTICATE | BTM_SEC_OUT_ENCRYPT)) && btm_dev_encrypted(p_dev_rec))) + ) { rc = BTM_SUCCESS; } - } - else - { + } else { if (((security_required & BTM_SEC_IN_FLAGS) == 0) || - ((((security_required & BTM_SEC_IN_FLAGS) == BTM_SEC_IN_AUTHENTICATE) && btm_dev_authenticated(p_dev_rec))) || - (((security_required & BTM_SEC_IN_FLAGS) == BTM_SEC_IN_AUTHORIZE) && (btm_dev_authorized(p_dev_rec)||btm_serv_trusted(p_dev_rec, p_serv_rec))) || - (((security_required & BTM_SEC_IN_FLAGS) == (BTM_SEC_IN_AUTHORIZE | BTM_SEC_IN_AUTHENTICATE)) && ((btm_dev_authorized(p_dev_rec)||btm_serv_trusted(p_dev_rec, p_serv_rec)) && btm_dev_authenticated(p_dev_rec))) || - (((security_required & BTM_SEC_IN_FLAGS) == (BTM_SEC_IN_AUTHORIZE | BTM_SEC_IN_ENCRYPT)) && ((btm_dev_authorized(p_dev_rec)||btm_serv_trusted(p_dev_rec, p_serv_rec))&& btm_dev_encrypted(p_dev_rec))) || - ((((security_required & BTM_SEC_IN_FLAGS) == (BTM_SEC_IN_AUTHENTICATE | BTM_SEC_IN_ENCRYPT)) && btm_dev_encrypted(p_dev_rec))) - ) - { + ((((security_required & BTM_SEC_IN_FLAGS) == BTM_SEC_IN_AUTHENTICATE) && btm_dev_authenticated(p_dev_rec))) || + (((security_required & BTM_SEC_IN_FLAGS) == BTM_SEC_IN_AUTHORIZE) && (btm_dev_authorized(p_dev_rec) || btm_serv_trusted(p_dev_rec, p_serv_rec))) || + (((security_required & BTM_SEC_IN_FLAGS) == (BTM_SEC_IN_AUTHORIZE | BTM_SEC_IN_AUTHENTICATE)) && ((btm_dev_authorized(p_dev_rec) || btm_serv_trusted(p_dev_rec, p_serv_rec)) && btm_dev_authenticated(p_dev_rec))) || + (((security_required & BTM_SEC_IN_FLAGS) == (BTM_SEC_IN_AUTHORIZE | BTM_SEC_IN_ENCRYPT)) && ((btm_dev_authorized(p_dev_rec) || btm_serv_trusted(p_dev_rec, p_serv_rec)) && btm_dev_encrypted(p_dev_rec))) || + ((((security_required & BTM_SEC_IN_FLAGS) == (BTM_SEC_IN_AUTHENTICATE | BTM_SEC_IN_ENCRYPT)) && btm_dev_encrypted(p_dev_rec))) + ) { // Check for 16 digits (or MITM) if (((security_required & BTM_SEC_IN_MIN_16_DIGIT_PIN) == 0) || - (((security_required & BTM_SEC_IN_MIN_16_DIGIT_PIN) == BTM_SEC_IN_MIN_16_DIGIT_PIN) && btm_dev_16_digit_authenticated(p_dev_rec))) { + (((security_required & BTM_SEC_IN_MIN_16_DIGIT_PIN) == BTM_SEC_IN_MIN_16_DIGIT_PIN) && btm_dev_16_digit_authenticated(p_dev_rec))) { rc = BTM_SUCCESS; } } } if ((rc == BTM_SUCCESS) && (security_required & BTM_SEC_MODE4_LEVEL4) && - (p_dev_rec->link_key_type != BTM_LKEY_TYPE_AUTH_COMB_P_256)) - { + (p_dev_rec->link_key_type != BTM_LKEY_TYPE_AUTH_COMB_P_256)) { rc = BTM_CMD_STARTED; } } - if (rc == BTM_SUCCESS) - { + if (rc == BTM_SUCCESS) { BTM_TRACE_EVENT("%s: allow to bypass, checking authorization\n", __FUNCTION__); /* the security in BTM_SEC_IN_FLAGS is fullfilled so far, check the requirements in */ /* btm_sec_execute_procedure */ if ((is_originator && (p_serv_rec->security_flags & BTM_SEC_OUT_AUTHORIZE)) || - (!is_originator && (p_serv_rec->security_flags & BTM_SEC_IN_AUTHORIZE))) - { + (!is_originator && (p_serv_rec->security_flags & BTM_SEC_IN_AUTHORIZE))) { BTM_TRACE_EVENT("%s: still need authorization\n", __FUNCTION__); rc = BTM_CMD_STARTED; } @@ -2617,41 +2466,34 @@ tBTM_STATUS btm_sec_mx_access_request (BD_ADDR bd_addr, UINT16 psm, BOOLEAN is_o /* Check whether there is a pending security procedure, if so we should always queue */ /* the new security request */ - if (p_dev_rec->sec_state != BTM_SEC_STATE_IDLE) - { + if (p_dev_rec->sec_state != BTM_SEC_STATE_IDLE) { BTM_TRACE_EVENT("%s: There is a pending security procedure\n", __FUNCTION__); rc = BTM_CMD_STARTED; } - if (rc == BTM_CMD_STARTED) - { + if (rc == BTM_CMD_STARTED) { BTM_TRACE_EVENT("%s: call btm_sec_queue_mx_request\n", __FUNCTION__); btm_sec_queue_mx_request (bd_addr, psm, is_originator, mx_proto_id, mx_chan_id, p_callback, p_ref_data); - } - else /* rc == BTM_SUCCESS */ - { + } else { /* rc == BTM_SUCCESS */ /* access granted */ - if (p_callback) - { + if (p_callback) { (*p_callback) (bd_addr, transport, p_ref_data, (UINT8)rc); } } BTM_TRACE_EVENT("%s: return with rc = 0x%02x in delayed state %s\n", __FUNCTION__, rc, - btm_pair_state_descr(btm_cb.pairing_state)); + btm_pair_state_descr(btm_cb.pairing_state)); return rc; } if ((!is_originator) && ((security_required & BTM_SEC_MODE4_LEVEL4) || - (btm_cb.security_mode == BTM_SEC_MODE_SC))) - { + (btm_cb.security_mode == BTM_SEC_MODE_SC))) { BOOLEAN local_supports_sc = controller_get_interface()->supports_secure_connections(); /* acceptor receives service connection establishment Request for */ /* Secure Connections Only service */ - if (!(local_supports_sc) || !(p_dev_rec->remote_supports_secure_connections)) - { + if (!(local_supports_sc) || !(p_dev_rec->remote_supports_secure_connections)) { BTM_TRACE_DEBUG("%s: SC only service,local_support_for_sc %d,\n" - "remote_support_for_sc %d: fail pairing\n",__FUNCTION__, + "remote_support_for_sc %d: fail pairing\n", __FUNCTION__, local_supports_sc, p_dev_rec->remote_supports_secure_connections); if (p_callback) @@ -2666,26 +2508,20 @@ tBTM_STATUS btm_sec_mx_access_request (BD_ADDR bd_addr, UINT16 psm, BOOLEAN is_o p_dev_rec->security_required = security_required; if (btm_cb.security_mode == BTM_SEC_MODE_SP || - btm_cb.security_mode == BTM_SEC_MODE_SP_DEBUG || - btm_cb.security_mode == BTM_SEC_MODE_SC) - { - if (BTM_SEC_IS_SM4(p_dev_rec->sm4)) - { + btm_cb.security_mode == BTM_SEC_MODE_SP_DEBUG || + btm_cb.security_mode == BTM_SEC_MODE_SC) { + if (BTM_SEC_IS_SM4(p_dev_rec->sm4)) { if ((p_dev_rec->security_required & BTM_SEC_MODE4_LEVEL4) && - (p_dev_rec->link_key_type != BTM_LKEY_TYPE_AUTH_COMB_P_256)) - { + (p_dev_rec->link_key_type != BTM_LKEY_TYPE_AUTH_COMB_P_256)) { /* BTM_LKEY_TYPE_AUTH_COMB_P_256 is the only acceptable key in this case */ - if ((p_dev_rec->sec_flags & BTM_SEC_LINK_KEY_KNOWN) != 0) - { + if ((p_dev_rec->sec_flags & BTM_SEC_LINK_KEY_KNOWN) != 0) { p_dev_rec->sm4 |= BTM_SM4_UPGRADE; } p_dev_rec->sec_flags &= ~(BTM_SEC_LINK_KEY_KNOWN | BTM_SEC_LINK_KEY_AUTHED | BTM_SEC_AUTHENTICATED); BTM_TRACE_DEBUG("%s: sec_flags:0x%x\n", __FUNCTION__, p_dev_rec->sec_flags); - } - else - { + } else { /* If we already have a link key, check if that link key is good enough */ btm_sec_check_upgrade(p_dev_rec, is_originator); } @@ -2703,15 +2539,13 @@ tBTM_STATUS btm_sec_mx_access_request (BD_ADDR bd_addr, UINT16 psm, BOOLEAN is_o p_dev_rec->sec_flags &= ~(BTM_SEC_AUTHORIZED); BTM_TRACE_EVENT ("%s() proto_id:%d chan_id:%d State:%d Flags:0x%x Required:0x%x Service ID:%d\n", - __func__, mx_proto_id, mx_chan_id, p_dev_rec->sec_state, p_dev_rec->sec_flags, - p_dev_rec->security_required, p_dev_rec->p_cur_service->service_id); + __func__, mx_proto_id, mx_chan_id, p_dev_rec->sec_state, p_dev_rec->sec_flags, + p_dev_rec->security_required, p_dev_rec->p_cur_service->service_id); - if ((rc = btm_sec_execute_procedure (p_dev_rec)) != BTM_CMD_STARTED) - { - if (p_callback) - { + if ((rc = btm_sec_execute_procedure (p_dev_rec)) != BTM_CMD_STARTED) { + if (p_callback) { p_dev_rec->p_callback = NULL; - (*p_callback) (bd_addr,transport, p_ref_data, (UINT8)rc); + (*p_callback) (bd_addr, transport, p_ref_data, (UINT8)rc); } } @@ -2731,10 +2565,9 @@ tBTM_STATUS btm_sec_mx_access_request (BD_ADDR bd_addr, UINT16 psm, BOOLEAN is_o void btm_sec_conn_req (UINT8 *bda, UINT8 *dc) { tBTM_SEC_DEV_REC *p_dev_rec = btm_find_dev (bda); - BTM_TRACE_ERROR ("%s\n",__func__); + BTM_TRACE_ERROR ("%s\n", __func__); /* Some device may request a connection before we are done with the HCI_Reset sequence */ - if (!controller_get_interface()->get_is_ready()) - { + if (!controller_get_interface()->get_is_ready()) { BTM_TRACE_ERROR ("Security Manager: connect request when device not ready\n"); btsnd_hcic_reject_conn (bda, HCI_ERR_HOST_REJECT_DEVICE); return; @@ -2743,10 +2576,8 @@ void btm_sec_conn_req (UINT8 *bda, UINT8 *dc) /* Security guys wants us not to allow connection from not paired devices */ /* Check if connection is allowed for only paired devices */ - if (btm_cb.connect_only_paired) - { - if (!p_dev_rec || !(p_dev_rec->sec_flags & BTM_SEC_LINK_KEY_AUTHED)) - { + if (btm_cb.connect_only_paired) { + if (!p_dev_rec || !(p_dev_rec->sec_flags & BTM_SEC_LINK_KEY_AUTHED)) { BTM_TRACE_ERROR ("Security Manager: connect request from non-paired device\n"); btsnd_hcic_reject_conn (bda, HCI_ERR_HOST_REJECT_DEVICE); return; @@ -2755,10 +2586,8 @@ void btm_sec_conn_req (UINT8 *bda, UINT8 *dc) #if BTM_ALLOW_CONN_IF_NONDISCOVER == FALSE /* If non-discoverable, only allow known devices to connect */ - if (btm_cb.btm_inq_vars.discoverable_mode == BTM_NON_DISCOVERABLE) - { - if (!p_dev_rec) - { + if (btm_cb.btm_inq_vars.discoverable_mode == BTM_NON_DISCOVERABLE) { + if (!p_dev_rec) { BTM_TRACE_ERROR ("Security Manager: connect request from not paired device\n"); btsnd_hcic_reject_conn (bda, HCI_ERR_HOST_REJECT_DEVICE); return; @@ -2767,9 +2596,8 @@ void btm_sec_conn_req (UINT8 *bda, UINT8 *dc) #endif if ((btm_cb.pairing_state != BTM_PAIR_STATE_IDLE) - &&(btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD) - &&(!memcmp (btm_cb.pairing_bda, bda, BD_ADDR_LEN))) - { + && (btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD) + && (!memcmp (btm_cb.pairing_bda, bda, BD_ADDR_LEN))) { BTM_TRACE_ERROR ("Security Manager: reject connect request from bonding device\n"); /* incoming connection from bonding device is rejected */ @@ -2783,15 +2611,12 @@ void btm_sec_conn_req (UINT8 *bda, UINT8 *dc) memcpy (btm_cb.connecting_bda, bda, BD_ADDR_LEN); memcpy (btm_cb.connecting_dc, dc, DEV_CLASS_LEN); - if (l2c_link_hci_conn_req (bda)) - { - if (!p_dev_rec) - { + if (l2c_link_hci_conn_req (bda)) { + if (!p_dev_rec) { /* accept the connection -> allocate a device record */ p_dev_rec = btm_sec_alloc_dev (bda); } - if (p_dev_rec) - { + if (p_dev_rec) { p_dev_rec->sm4 |= BTM_SM4_CONN_PEND; } } @@ -2812,24 +2637,25 @@ static void btm_sec_bond_cancel_complete (void) tBTM_SEC_DEV_REC *p_dev_rec; if ((btm_cb.pairing_flags & BTM_PAIR_FLAGS_DISC_WHEN_DONE) || - (BTM_PAIR_STATE_WAIT_LOCAL_PIN == btm_cb.pairing_state && - BTM_PAIR_FLAGS_WE_STARTED_DD & btm_cb.pairing_flags) || - (btm_cb.pairing_state == BTM_PAIR_STATE_GET_REM_NAME && - BTM_PAIR_FLAGS_WE_CANCEL_DD & btm_cb.pairing_flags)) - { + (BTM_PAIR_STATE_WAIT_LOCAL_PIN == btm_cb.pairing_state && + BTM_PAIR_FLAGS_WE_STARTED_DD & btm_cb.pairing_flags) || + (btm_cb.pairing_state == BTM_PAIR_STATE_GET_REM_NAME && + BTM_PAIR_FLAGS_WE_CANCEL_DD & btm_cb.pairing_flags)) { /* for dedicated bonding in legacy mode, authentication happens at "link level" * btm_sec_connected is called with failed status. * In theory, the code that handles is_pairing_device/TRUE should clean out security related code. * However, this function may clean out the security related flags and btm_sec_connected would not know * this function also needs to do proper clean up. */ - if ((p_dev_rec = btm_find_dev (btm_cb.pairing_bda)) != NULL) + if ((p_dev_rec = btm_find_dev (btm_cb.pairing_bda)) != NULL) { p_dev_rec->security_required = BTM_SEC_NONE; + } btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); /* Notify application that the cancel succeeded */ - if (btm_cb.api.p_bond_cancel_cmpl_callback) + if (btm_cb.api.p_bond_cancel_cmpl_callback) { btm_cb.api.p_bond_cancel_cmpl_callback(BTM_SUCCESS); + } } } @@ -2850,23 +2676,23 @@ void btm_create_conn_cancel_complete (UINT8 *p) STREAM_TO_UINT8 (status, p); BTM_TRACE_EVENT ("btm_create_conn_cancel_complete(): in State: %s status:%d\n", - btm_pair_state_descr(btm_cb.pairing_state), status); + btm_pair_state_descr(btm_cb.pairing_state), status); /* if the create conn cancel cmd was issued by the bond cancel, ** the application needs to be notified that bond cancel succeeded */ - switch (status) - { - case HCI_SUCCESS: - btm_sec_bond_cancel_complete(); - break; - case HCI_ERR_CONNECTION_EXISTS: - case HCI_ERR_NO_CONNECTION: - default: - /* Notify application of the error */ - if (btm_cb.api.p_bond_cancel_cmpl_callback) - btm_cb.api.p_bond_cancel_cmpl_callback(BTM_ERR_PROCESSING); - break; + switch (status) { + case HCI_SUCCESS: + btm_sec_bond_cancel_complete(); + break; + case HCI_ERR_CONNECTION_EXISTS: + case HCI_ERR_NO_CONNECTION: + default: + /* Notify application of the error */ + if (btm_cb.api.p_bond_cancel_cmpl_callback) { + btm_cb.api.p_bond_cancel_cmpl_callback(BTM_ERR_PROCESSING); + } + break; } } @@ -2885,11 +2711,9 @@ void btm_sec_check_pending_reqs (void) tBTM_SEC_QUEUE_ENTRY *p_e; BUFFER_Q bq; - if (btm_cb.pairing_state == BTM_PAIR_STATE_IDLE) - { + if (btm_cb.pairing_state == BTM_PAIR_STATE_IDLE) { /* First, resubmit L2CAP requests */ - if (btm_cb.sec_req_pending) - { + if (btm_cb.sec_req_pending) { btm_cb.sec_req_pending = FALSE; l2cu_resubmit_pending_sec_req (NULL); } @@ -2899,23 +2723,18 @@ void btm_sec_check_pending_reqs (void) GKI_init_q (&btm_cb.sec_pending_q); - while ((p_e = (tBTM_SEC_QUEUE_ENTRY *)GKI_dequeue (&bq)) != NULL) - { + while ((p_e = (tBTM_SEC_QUEUE_ENTRY *)GKI_dequeue (&bq)) != NULL) { /* Check that the ACL is still up before starting security procedures */ - if (btm_bda_to_acl(p_e->bd_addr, p_e->transport) != NULL) - { - if (p_e->psm != 0) - { + if (btm_bda_to_acl(p_e->bd_addr, p_e->transport) != NULL) { + if (p_e->psm != 0) { BTM_TRACE_EVENT("%s PSM:0x%04x Is_Orig:%u mx_proto_id:%u mx_chan_id:%u\n", __FUNCTION__, p_e->psm, p_e->is_orig, p_e->mx_proto_id, p_e->mx_chan_id); btm_sec_mx_access_request (p_e->bd_addr, p_e->psm, p_e->is_orig, - p_e->mx_proto_id, p_e->mx_chan_id, - p_e->p_callback, p_e->p_ref_data); - } - else - { + p_e->mx_proto_id, p_e->mx_chan_id, + p_e->p_callback, p_e->p_ref_data); + } else { BTM_SetEncryption(p_e->bd_addr, p_e->transport, p_e->p_callback, p_e->p_ref_data); } @@ -2969,16 +2788,13 @@ void btm_sec_device_down (void) *******************************************************************************/ void btm_sec_dev_reset (void) { - if (controller_get_interface()->supports_simple_pairing()) - { + if (controller_get_interface()->supports_simple_pairing()) { /* set the default IO capabilities */ btm_cb.devcb.loc_io_caps = BTM_LOCAL_IO_CAPS; /* add mx service to use no security */ BTM_SetSecurityLevel(FALSE, "RFC_MUX\n", BTM_SEC_SERVICE_RFC_MUX, BTM_SEC_NONE, BT_PSM_RFCOMM, BTM_SEC_PROTO_RFCOMM, 0); - } - else - { + } else { btm_cb.security_mode = BTM_SEC_MODE_SERVICE; } @@ -3001,12 +2817,14 @@ void btm_sec_abort_access_req (BD_ADDR bd_addr) { tBTM_SEC_DEV_REC *p_dev_rec = btm_find_dev (bd_addr); - if (!p_dev_rec) + if (!p_dev_rec) { return; + } if ((p_dev_rec->sec_state != BTM_SEC_STATE_AUTHORIZING) - && (p_dev_rec->sec_state != BTM_SEC_STATE_AUTHENTICATING)) + && (p_dev_rec->sec_state != BTM_SEC_STATE_AUTHENTICATING)) { return; + } p_dev_rec->sec_state = BTM_SEC_STATE_IDLE; p_dev_rec->p_callback = NULL; @@ -3025,44 +2843,41 @@ void btm_sec_abort_access_req (BD_ADDR bd_addr) static tBTM_STATUS btm_sec_dd_create_conn (tBTM_SEC_DEV_REC *p_dev_rec) { tL2C_LCB *p_lcb = l2cu_find_lcb_by_bd_addr(p_dev_rec->bd_addr, BT_TRANSPORT_BR_EDR); - if (p_lcb && (p_lcb->link_state == LST_CONNECTED || p_lcb->link_state == LST_CONNECTING)) - { - BTM_TRACE_WARNING("%s Connection already exists\n", __func__); - return BTM_CMD_STARTED; + if (p_lcb && (p_lcb->link_state == LST_CONNECTED || p_lcb->link_state == LST_CONNECTING)) { + BTM_TRACE_WARNING("%s Connection already exists\n", __func__); + return BTM_CMD_STARTED; } /* Make sure an L2cap link control block is available */ - if (!p_lcb && (p_lcb = l2cu_allocate_lcb (p_dev_rec->bd_addr, TRUE, BT_TRANSPORT_BR_EDR)) == NULL) - { + if (!p_lcb && (p_lcb = l2cu_allocate_lcb (p_dev_rec->bd_addr, TRUE, BT_TRANSPORT_BR_EDR)) == NULL) { BTM_TRACE_WARNING ("Security Manager: failed allocate LCB [%02x%02x%02x%02x%02x%02x]\n", - p_dev_rec->bd_addr[0], p_dev_rec->bd_addr[1], p_dev_rec->bd_addr[2], - p_dev_rec->bd_addr[3], p_dev_rec->bd_addr[4], p_dev_rec->bd_addr[5]); + p_dev_rec->bd_addr[0], p_dev_rec->bd_addr[1], p_dev_rec->bd_addr[2], + p_dev_rec->bd_addr[3], p_dev_rec->bd_addr[4], p_dev_rec->bd_addr[5]); - return(BTM_NO_RESOURCES); + return (BTM_NO_RESOURCES); } /* set up the control block to indicated dedicated bonding */ btm_cb.pairing_flags |= BTM_PAIR_FLAGS_DISC_WHEN_DONE; - if (l2cu_create_conn(p_lcb, BT_TRANSPORT_BR_EDR) == FALSE) - { + if (l2cu_create_conn(p_lcb, BT_TRANSPORT_BR_EDR) == FALSE) { BTM_TRACE_WARNING ("Security Manager: failed create [%02x%02x%02x%02x%02x%02x]\n", - p_dev_rec->bd_addr[0], p_dev_rec->bd_addr[1], p_dev_rec->bd_addr[2], - p_dev_rec->bd_addr[3], p_dev_rec->bd_addr[4], p_dev_rec->bd_addr[5]); + p_dev_rec->bd_addr[0], p_dev_rec->bd_addr[1], p_dev_rec->bd_addr[2], + p_dev_rec->bd_addr[3], p_dev_rec->bd_addr[4], p_dev_rec->bd_addr[5]); l2cu_release_lcb(p_lcb); - return(BTM_NO_RESOURCES); + return (BTM_NO_RESOURCES); } btm_acl_update_busy_level (BTM_BLI_PAGE_EVT); BTM_TRACE_DEBUG ("Security Manager: btm_sec_dd_create_conn [%02x%02x%02x%02x%02x%02x]\n", - p_dev_rec->bd_addr[0], p_dev_rec->bd_addr[1], p_dev_rec->bd_addr[2], - p_dev_rec->bd_addr[3], p_dev_rec->bd_addr[4], p_dev_rec->bd_addr[5]); + p_dev_rec->bd_addr[0], p_dev_rec->bd_addr[1], p_dev_rec->bd_addr[2], + p_dev_rec->bd_addr[3], p_dev_rec->bd_addr[4], p_dev_rec->bd_addr[5]); btm_sec_change_pairing_state (BTM_PAIR_STATE_WAIT_PIN_REQ); - return(BTM_CMD_STARTED); + return (BTM_CMD_STARTED); } /******************************************************************************* @@ -3084,91 +2899,80 @@ void btm_sec_rmt_name_request_complete (UINT8 *p_bd_addr, UINT8 *p_bd_name, UINT BTM_TRACE_EVENT ("btm_sec_rmt_name_request_complete\n"); if (((p_bd_addr == NULL) && !BTM_ACL_IS_CONNECTED(btm_cb.connecting_bda)) - || ((p_bd_addr != NULL) && !BTM_ACL_IS_CONNECTED(p_bd_addr))) - { + || ((p_bd_addr != NULL) && !BTM_ACL_IS_CONNECTED(p_bd_addr))) { btm_acl_resubmit_page(); } /* If remote name request failed, p_bd_addr is null and we need to search */ /* based on state assuming that we are doing 1 at a time */ - if (p_bd_addr) + if (p_bd_addr) { p_dev_rec = btm_find_dev (p_bd_addr); - else - { + } else { p_dev_rec = &btm_cb.sec_dev_rec[0]; - for (i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i++, p_dev_rec++) - { + for (i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i++, p_dev_rec++) { if ((p_dev_rec->sec_flags & BTM_SEC_IN_USE) - && (p_dev_rec->sec_state == BTM_SEC_STATE_GETTING_NAME)) - { + && (p_dev_rec->sec_state == BTM_SEC_STATE_GETTING_NAME)) { p_bd_addr = p_dev_rec->bd_addr; break; } } - if (i == BTM_SEC_MAX_DEVICE_RECORDS) + if (i == BTM_SEC_MAX_DEVICE_RECORDS) { p_dev_rec = NULL; + } } /* Commenting out trace due to obf/compilation problems. */ #if (BT_USE_TRACES == TRUE) - if (!p_bd_name) + if (!p_bd_name) { p_bd_name = (UINT8 *)""; - - if (p_dev_rec) - { - BTM_TRACE_EVENT ("Security Manager: rmt_name_complete PairState: %s RemName: %s status: %d State:%d p_dev_rec: 0x%08x \n", - btm_pair_state_descr (btm_cb.pairing_state), p_bd_name, - status, p_dev_rec->sec_state, p_dev_rec); } - else - { + + if (p_dev_rec) { + BTM_TRACE_EVENT ("Security Manager: rmt_name_complete PairState: %s RemName: %s status: %d State:%d p_dev_rec: 0x%08x \n", + btm_pair_state_descr (btm_cb.pairing_state), p_bd_name, + status, p_dev_rec->sec_state, p_dev_rec); + } else { BTM_TRACE_EVENT ("Security Manager: rmt_name_complete PairState: %s RemName: %s status: %d\n", - btm_pair_state_descr (btm_cb.pairing_state), p_bd_name, - status); + btm_pair_state_descr (btm_cb.pairing_state), p_bd_name, + status); } #endif - if (p_dev_rec) - { + if (p_dev_rec) { old_sec_state = p_dev_rec->sec_state; - if (status == HCI_SUCCESS) - { + if (status == HCI_SUCCESS) { BCM_STRNCPY_S ((char *)p_dev_rec->sec_bd_name, sizeof (p_dev_rec->sec_bd_name), (char *)p_bd_name, BTM_MAX_REM_BD_NAME_LEN); p_dev_rec->sec_flags |= BTM_SEC_NAME_KNOWN; BTM_TRACE_EVENT ("setting BTM_SEC_NAME_KNOWN sec_flags:0x%x\n", p_dev_rec->sec_flags); - } - else - { + } else { /* Notify all clients waiting for name to be resolved even if it failed so clients can continue */ p_dev_rec->sec_bd_name[0] = 0; } - if (p_dev_rec->sec_state == BTM_SEC_STATE_GETTING_NAME) + if (p_dev_rec->sec_state == BTM_SEC_STATE_GETTING_NAME) { p_dev_rec->sec_state = BTM_SEC_STATE_IDLE; + } /* Notify all clients waiting for name to be resolved */ - for (i = 0;i < BTM_SEC_MAX_RMT_NAME_CALLBACKS; i++) - { + for (i = 0; i < BTM_SEC_MAX_RMT_NAME_CALLBACKS; i++) { if (btm_cb.p_rmt_name_callback[i] && p_bd_addr) (*btm_cb.p_rmt_name_callback[i])(p_bd_addr, p_dev_rec->dev_class, p_dev_rec->sec_bd_name); } - } - else - { + } else { dev_class[0] = 0; dev_class[1] = 0; dev_class[2] = 0; /* Notify all clients waiting for name to be resolved even if not found so clients can continue */ - for (i = 0;i < BTM_SEC_MAX_RMT_NAME_CALLBACKS; i++) - { - if (btm_cb.p_rmt_name_callback[i] && p_bd_addr) + for (i = 0; i < BTM_SEC_MAX_RMT_NAME_CALLBACKS; i++) { + if (btm_cb.p_rmt_name_callback[i] && p_bd_addr) { (*btm_cb.p_rmt_name_callback[i])(p_bd_addr, dev_class, (UINT8 *)""); + } } return; @@ -3176,19 +2980,17 @@ void btm_sec_rmt_name_request_complete (UINT8 *p_bd_addr, UINT8 *p_bd_name, UINT /* If we were delaying asking UI for a PIN because name was not resolved, ask now */ if ( (btm_cb.pairing_state == BTM_PAIR_STATE_WAIT_LOCAL_PIN) && p_bd_addr - && (memcmp (btm_cb.pairing_bda, p_bd_addr, BD_ADDR_LEN) == 0) ) - { + && (memcmp (btm_cb.pairing_bda, p_bd_addr, BD_ADDR_LEN) == 0) ) { BTM_TRACE_EVENT ("btm_sec_rmt_name_request_complete() delayed pin now being requested flags:0x%x, (p_pin_callback=0x%p)\n", btm_cb.pairing_flags, btm_cb.api.p_pin_callback); if (((btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD) == 0) && - ((btm_cb.pairing_flags & BTM_PAIR_FLAGS_PIN_REQD) == 0) && - btm_cb.api.p_pin_callback) - { + ((btm_cb.pairing_flags & BTM_PAIR_FLAGS_PIN_REQD) == 0) && + btm_cb.api.p_pin_callback) { BTM_TRACE_EVENT ("btm_sec_rmt_name_request_complete() calling pin_callback\n"); btm_cb.pairing_flags |= BTM_PAIR_FLAGS_PIN_REQD; (*btm_cb.api.p_pin_callback) (p_dev_rec->bd_addr, p_dev_rec->dev_class, p_bd_name, - (p_dev_rec->p_cur_service==NULL) ? FALSE - : (p_dev_rec->p_cur_service->security_flags & BTM_SEC_IN_MIN_16_DIGIT_PIN)); + (p_dev_rec->p_cur_service == NULL) ? FALSE + : (p_dev_rec->p_cur_service->security_flags & BTM_SEC_IN_MIN_16_DIGIT_PIN)); } /* Set the same state again to force the timer to be restarted */ @@ -3197,19 +2999,15 @@ void btm_sec_rmt_name_request_complete (UINT8 *p_bd_addr, UINT8 *p_bd_name, UINT } /* Check if we were delaying bonding because name was not resolved */ - if ( btm_cb.pairing_state == BTM_PAIR_STATE_GET_REM_NAME) - { - if (p_bd_addr && memcmp (btm_cb.pairing_bda, p_bd_addr, BD_ADDR_LEN) == 0) - { + if ( btm_cb.pairing_state == BTM_PAIR_STATE_GET_REM_NAME) { + if (p_bd_addr && memcmp (btm_cb.pairing_bda, p_bd_addr, BD_ADDR_LEN) == 0) { BTM_TRACE_EVENT ("btm_sec_rmt_name_request_complete() continue bonding sm4: 0x%04x, status:0x%x\n", p_dev_rec->sm4, status); - if(btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_CANCEL_DD) - { + if (btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_CANCEL_DD) { btm_sec_bond_cancel_complete(); return; } - if (status != HCI_SUCCESS) - { + if (status != HCI_SUCCESS) { btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); if (btm_cb.api.p_auth_complete_callback) @@ -3219,49 +3017,42 @@ void btm_sec_rmt_name_request_complete (UINT8 *p_bd_addr, UINT8 *p_bd_name, UINT } /* if peer is very old legacy devices, HCI_RMT_HOST_SUP_FEAT_NOTIFY_EVT is not reported */ - if (BTM_SEC_IS_SM4_UNKNOWN(p_dev_rec->sm4)) - { + if (BTM_SEC_IS_SM4_UNKNOWN(p_dev_rec->sm4)) { /* set the KNOWN flag only if BTM_PAIR_FLAGS_REJECTED_CONNECT is not set.*/ /* If it is set, there may be a race condition */ BTM_TRACE_DEBUG ("btm_sec_rmt_name_request_complete IS_SM4_UNKNOWN Flags:0x%04x\n", - btm_cb.pairing_flags); - if ((btm_cb.pairing_flags & BTM_PAIR_FLAGS_REJECTED_CONNECT) == 0) - { + btm_cb.pairing_flags); + if ((btm_cb.pairing_flags & BTM_PAIR_FLAGS_REJECTED_CONNECT) == 0) { p_dev_rec->sm4 |= BTM_SM4_KNOWN; } } - BTM_TRACE_DEBUG("%s, SM4 Value: %x, Legacy:%d,IS SM4:%d, Unknown:%d\n",__FUNCTION__, - p_dev_rec->sm4, BTM_SEC_IS_SM4_LEGACY(p_dev_rec->sm4), - BTM_SEC_IS_SM4(p_dev_rec->sm4),BTM_SEC_IS_SM4_UNKNOWN(p_dev_rec->sm4)); + BTM_TRACE_DEBUG("%s, SM4 Value: %x, Legacy:%d,IS SM4:%d, Unknown:%d\n", __FUNCTION__, + p_dev_rec->sm4, BTM_SEC_IS_SM4_LEGACY(p_dev_rec->sm4), + BTM_SEC_IS_SM4(p_dev_rec->sm4), BTM_SEC_IS_SM4_UNKNOWN(p_dev_rec->sm4)); /* BT 2.1 or carkit, bring up the connection to force the peer to request PIN. ** Else prefetch (btm_sec_check_prefetch_pin will do the prefetching if needed) */ - if ((p_dev_rec->sm4 != BTM_SM4_KNOWN) || !btm_sec_check_prefetch_pin(p_dev_rec)) - { + if ((p_dev_rec->sm4 != BTM_SM4_KNOWN) || !btm_sec_check_prefetch_pin(p_dev_rec)) { /* if we rejected incoming connection request, we have to wait HCI_Connection_Complete event */ /* before originating */ - if (btm_cb.pairing_flags & BTM_PAIR_FLAGS_REJECTED_CONNECT) - { + if (btm_cb.pairing_flags & BTM_PAIR_FLAGS_REJECTED_CONNECT) { BTM_TRACE_WARNING ("btm_sec_rmt_name_request_complete: waiting HCI_Connection_Complete after rejecting connection\n"); } /* Both we and the peer are 2.1 - continue to create connection */ - else if (btm_sec_dd_create_conn(p_dev_rec) != BTM_CMD_STARTED) - { + else if (btm_sec_dd_create_conn(p_dev_rec) != BTM_CMD_STARTED) { BTM_TRACE_WARNING ("btm_sec_rmt_name_request_complete: failed to start connection\n"); btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); if (btm_cb.api.p_auth_complete_callback) - (*btm_cb.api.p_auth_complete_callback) (p_dev_rec->bd_addr, p_dev_rec->dev_class, - p_dev_rec->sec_bd_name, HCI_ERR_MEMORY_FULL); + (*btm_cb.api.p_auth_complete_callback) (p_dev_rec->bd_addr, p_dev_rec->dev_class, + p_dev_rec->sec_bd_name, HCI_ERR_MEMORY_FULL); } } return; - } - else - { + } else { BTM_TRACE_WARNING ("btm_sec_rmt_name_request_complete: wrong BDA, retry with pairing BDA\n"); BTM_ReadRemoteDeviceName (btm_cb.pairing_bda, NULL, BT_TRANSPORT_BR_EDR); @@ -3270,11 +3061,11 @@ void btm_sec_rmt_name_request_complete (UINT8 *p_bd_addr, UINT8 *p_bd_name, UINT } /* check if we were delaying link_key_callback because name was not resolved */ - if (p_dev_rec->link_key_not_sent) - { + if (p_dev_rec->link_key_not_sent) { /* If HCI connection complete has not arrived, wait for it */ - if (p_dev_rec->hci_handle == BTM_SEC_INVALID_HANDLE) + if (p_dev_rec->hci_handle == BTM_SEC_INVALID_HANDLE) { return; + } p_dev_rec->link_key_not_sent = FALSE; btm_send_link_key_notif(p_dev_rec); @@ -3282,8 +3073,7 @@ void btm_sec_rmt_name_request_complete (UINT8 *p_bd_addr, UINT8 *p_bd_name, UINT /* If its not us who perform authentication, we should tell stackserver */ /* that some authentication has been completed */ /* This is required when different entities receive link notification and auth complete */ - if (!(p_dev_rec->security_required & BTM_SEC_OUT_AUTHENTICATE)) - { + if (!(p_dev_rec->security_required & BTM_SEC_OUT_AUTHENTICATE)) { if (btm_cb.api.p_auth_complete_callback) (*btm_cb.api.p_auth_complete_callback) (p_dev_rec->bd_addr, p_dev_rec->dev_class, @@ -3294,26 +3084,24 @@ void btm_sec_rmt_name_request_complete (UINT8 *p_bd_addr, UINT8 *p_bd_name, UINT /* If this is a bonding procedure can disconnect the link now */ if ((btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD) - && (p_dev_rec->sec_flags & BTM_SEC_AUTHENTICATED)) - { + && (p_dev_rec->sec_flags & BTM_SEC_AUTHENTICATED)) { BTM_TRACE_WARNING ("btm_sec_rmt_name_request_complete (none/ce)\n"); p_dev_rec->security_required &= ~(BTM_SEC_OUT_AUTHENTICATE); l2cu_start_post_bond_timer(p_dev_rec->hci_handle); return; } - if (old_sec_state != BTM_SEC_STATE_GETTING_NAME) + if (old_sec_state != BTM_SEC_STATE_GETTING_NAME) { return; + } /* If get name failed, notify the waiting layer */ - if (status != HCI_SUCCESS) - { + if (status != HCI_SUCCESS) { btm_sec_dev_rec_cback_event (p_dev_rec, BTM_ERR_PROCESSING, FALSE); return; } - if (p_dev_rec->sm4 & BTM_SM4_REQ_PEND) - { + if (p_dev_rec->sm4 & BTM_SM4_REQ_PEND) { BTM_TRACE_EVENT ("waiting for remote features!!\n"); return; } @@ -3322,8 +3110,9 @@ void btm_sec_rmt_name_request_complete (UINT8 *p_bd_addr, UINT8 *p_bd_name, UINT status = (UINT8)btm_sec_execute_procedure (p_dev_rec); /* If result is pending reply from the user or from the device is pending */ - if (status == BTM_CMD_STARTED) + if (status == BTM_CMD_STARTED) { return; + } /* There is no next procedure or start of procedure failed, notify the waiting layer */ btm_sec_dev_rec_cback_event (p_dev_rec, status, FALSE); @@ -3350,12 +3139,10 @@ void btm_sec_rmt_host_support_feat_evt (UINT8 *p) BTM_TRACE_EVENT ("btm_sec_rmt_host_support_feat_evt sm4: 0x%x p[0]: 0x%x\n", p_dev_rec->sm4, p[0]); - if (BTM_SEC_IS_SM4_UNKNOWN(p_dev_rec->sm4)) - { + if (BTM_SEC_IS_SM4_UNKNOWN(p_dev_rec->sm4)) { p_dev_rec->sm4 = BTM_SM4_KNOWN; STREAM_TO_ARRAY(features, p, HCI_FEATURE_BYTES_PER_PAGE); - if (HCI_SSP_HOST_SUPPORTED(features)) - { + if (HCI_SSP_HOST_SUPPORTED(features)) { p_dev_rec->sm4 = BTM_SM4_TRUE; } BTM_TRACE_EVENT ("btm_sec_rmt_host_support_feat_evt sm4: 0x%x features[0]: 0x%x\n", p_dev_rec->sm4, features[0]); @@ -3395,12 +3182,11 @@ void btm_io_capabilities_req (UINT8 *p) p_dev_rec = btm_find_or_alloc_dev (evt_data.bd_addr); BTM_TRACE_DEBUG("%s:Security mode: %d, Num Read Remote Feat pages: %d\n", __FUNCTION__, - btm_cb.security_mode, p_dev_rec->num_read_pages); + btm_cb.security_mode, p_dev_rec->num_read_pages); - if ((btm_cb.security_mode == BTM_SEC_MODE_SC) && (p_dev_rec->num_read_pages == 0)) - { + if ((btm_cb.security_mode == BTM_SEC_MODE_SC) && (p_dev_rec->num_read_pages == 0)) { BTM_TRACE_EVENT("%s: Device security mode is SC only.\n" - "To continue need to know remote features.\n", __FUNCTION__); + "To continue need to know remote features.\n", __FUNCTION__); p_dev_rec->remote_features_needed = TRUE; return; @@ -3409,68 +3195,58 @@ void btm_io_capabilities_req (UINT8 *p) p_dev_rec->sm4 |= BTM_SM4_TRUE; BTM_TRACE_EVENT("%s: State: %s Flags: 0x%04x p_cur_service: 0x%08x\n", - __FUNCTION__, btm_pair_state_descr(btm_cb.pairing_state), - btm_cb.pairing_flags, p_dev_rec->p_cur_service); + __FUNCTION__, btm_pair_state_descr(btm_cb.pairing_state), + btm_cb.pairing_flags, p_dev_rec->p_cur_service); - if (p_dev_rec->p_cur_service) - { + if (p_dev_rec->p_cur_service) { BTM_TRACE_EVENT("%s: cur_service psm: 0x%04x, security_flags: 0x%04x\n", - __FUNCTION__, p_dev_rec->p_cur_service->psm, - p_dev_rec->p_cur_service->security_flags); + __FUNCTION__, p_dev_rec->p_cur_service->psm, + p_dev_rec->p_cur_service->security_flags); } - switch (btm_cb.pairing_state) - { - /* initiator connecting */ - case BTM_PAIR_STATE_IDLE: - //TODO: Handle Idle pairing state - //security_required = p_dev_rec->security_required; - break; + switch (btm_cb.pairing_state) { + /* initiator connecting */ + case BTM_PAIR_STATE_IDLE: + //TODO: Handle Idle pairing state + //security_required = p_dev_rec->security_required; + break; - /* received IO capability response already->acceptor */ - case BTM_PAIR_STATE_INCOMING_SSP: - is_orig = FALSE; + /* received IO capability response already->acceptor */ + case BTM_PAIR_STATE_INCOMING_SSP: + is_orig = FALSE; - if (btm_cb.pairing_flags & BTM_PAIR_FLAGS_PEER_STARTED_DD) - { - /* acceptor in dedicated bonding */ - evt_data.auth_req = BTM_DEFAULT_DD_AUTH_REQ; - } - break; + if (btm_cb.pairing_flags & BTM_PAIR_FLAGS_PEER_STARTED_DD) { + /* acceptor in dedicated bonding */ + evt_data.auth_req = BTM_DEFAULT_DD_AUTH_REQ; + } + break; - /* initiator, at this point it is expected to be dedicated bonding - initiated by local device */ - case BTM_PAIR_STATE_WAIT_PIN_REQ: - if (!memcmp (evt_data.bd_addr, btm_cb.pairing_bda, BD_ADDR_LEN)) - { - evt_data.auth_req = BTM_DEFAULT_DD_AUTH_REQ; - } - else - { - err_code = HCI_ERR_HOST_BUSY_PAIRING; - } - break; - - /* any other state is unexpected */ - default: + /* initiator, at this point it is expected to be dedicated bonding + initiated by local device */ + case BTM_PAIR_STATE_WAIT_PIN_REQ: + if (!memcmp (evt_data.bd_addr, btm_cb.pairing_bda, BD_ADDR_LEN)) { + evt_data.auth_req = BTM_DEFAULT_DD_AUTH_REQ; + } else { err_code = HCI_ERR_HOST_BUSY_PAIRING; - BTM_TRACE_ERROR("%s: Unexpected Pairing state received %d\n", __FUNCTION__, - btm_cb.pairing_state); - break; + } + break; + + /* any other state is unexpected */ + default: + err_code = HCI_ERR_HOST_BUSY_PAIRING; + BTM_TRACE_ERROR("%s: Unexpected Pairing state received %d\n", __FUNCTION__, + btm_cb.pairing_state); + break; } - if (btm_cb.pairing_disabled) - { + if (btm_cb.pairing_disabled) { /* pairing is not allowed */ BTM_TRACE_DEBUG("%s: Pairing is not allowed -> fail pairing.\n", __FUNCTION__); err_code = HCI_ERR_PAIRING_NOT_ALLOWED; - } - else if (btm_cb.security_mode == BTM_SEC_MODE_SC) - { + } else if (btm_cb.security_mode == BTM_SEC_MODE_SC) { BOOLEAN local_supports_sc = controller_get_interface()->supports_secure_connections(); /* device in Secure Connections Only mode */ - if (!(local_supports_sc) || !(p_dev_rec->remote_supports_secure_connections)) - { + if (!(local_supports_sc) || !(p_dev_rec->remote_supports_secure_connections)) { BTM_TRACE_DEBUG("%s: SC only service, local_support_for_sc %d,\n" " remote_support_for_sc 0x%02x -> fail pairing\n", __FUNCTION__, local_supports_sc, p_dev_rec->remote_supports_secure_connections); @@ -3479,34 +3255,28 @@ void btm_io_capabilities_req (UINT8 *p) } } - if (err_code != 0) - { -/* coverity[uninit_use_in_call] -Event uninit_use_in_call: Using uninitialized element of array "evt_data.bd_addr" in call to function "memcmp" -False-positive: evt_data.bd_addr is set at the beginning with: STREAM_TO_BDADDR (evt_data.bd_addr, p); -*/ + if (err_code != 0) { + /* coverity[uninit_use_in_call] + Event uninit_use_in_call: Using uninitialized element of array "evt_data.bd_addr" in call to function "memcmp" + False-positive: evt_data.bd_addr is set at the beginning with: STREAM_TO_BDADDR (evt_data.bd_addr, p); + */ btsnd_hcic_io_cap_req_neg_reply(evt_data.bd_addr, err_code); return; } evt_data.is_orig = is_orig; - if (is_orig) - { + if (is_orig) { /* local device initiated the pairing non-bonding -> use p_cur_service */ if (!(btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD) && - p_dev_rec->p_cur_service && - (p_dev_rec->p_cur_service->security_flags & BTM_SEC_OUT_AUTHENTICATE)) - { - if (btm_cb.security_mode == BTM_SEC_MODE_SC) - { + p_dev_rec->p_cur_service && + (p_dev_rec->p_cur_service->security_flags & BTM_SEC_OUT_AUTHENTICATE)) { + if (btm_cb.security_mode == BTM_SEC_MODE_SC) { /* SC only mode device requires MITM protection */ evt_data.auth_req = BTM_AUTH_SP_YES; - } - else - { + } else { evt_data.auth_req = (p_dev_rec->p_cur_service->security_flags & - BTM_SEC_OUT_MITM)? BTM_AUTH_SP_YES : BTM_AUTH_SP_NO; + BTM_SEC_OUT_MITM) ? BTM_AUTH_SP_YES : BTM_AUTH_SP_NO; } } } @@ -3516,25 +3286,23 @@ False-positive: evt_data.bd_addr is set at the beginning with: STREAM_TO_BDA memcpy (btm_cb.pairing_bda, evt_data.bd_addr, BD_ADDR_LEN); -/* coverity[uninit_use_in_call] -Event uninit_use_in_call: Using uninitialized element of array "evt_data.bd_addr" in call to function "memcmp" -False-positive: False-positive: evt_data.bd_addr is set at the beginning with: STREAM_TO_BDADDR (evt_data.bd_addr, p); -*/ - if (!memcmp (evt_data.bd_addr, btm_cb.connecting_bda, BD_ADDR_LEN)) + /* coverity[uninit_use_in_call] + Event uninit_use_in_call: Using uninitialized element of array "evt_data.bd_addr" in call to function "memcmp" + False-positive: False-positive: evt_data.bd_addr is set at the beginning with: STREAM_TO_BDADDR (evt_data.bd_addr, p); + */ + if (!memcmp (evt_data.bd_addr, btm_cb.connecting_bda, BD_ADDR_LEN)) { memcpy (p_dev_rec->dev_class, btm_cb.connecting_dc, DEV_CLASS_LEN); + } btm_sec_change_pairing_state (BTM_PAIR_STATE_WAIT_LOCAL_IOCAPS); callback_rc = BTM_SUCCESS; - if (p_dev_rec->sm4 & BTM_SM4_UPGRADE) - { + if (p_dev_rec->sm4 & BTM_SM4_UPGRADE) { p_dev_rec->sm4 &= ~BTM_SM4_UPGRADE; /* link key upgrade: always use SPGB_YES - assuming we want to save the link key */ evt_data.auth_req = BTM_AUTH_SPGB_YES; - } - else if (btm_cb.api.p_sp_callback) - { + } else if (btm_cb.api.p_sp_callback) { /* the callback function implementation may change the IO capability... */ callback_rc = (*btm_cb.api.p_sp_callback) (BTM_SP_IO_REQ_EVT, (tBTM_SP_EVT_DATA *)&evt_data); } @@ -3545,18 +3313,16 @@ False-positive: False-positive: evt_data.bd_addr is set at the beginning with: if (callback_rc == BTM_SUCCESS) #endif { - if ((btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD)) - { + if ((btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD)) { evt_data.auth_req = (BTM_AUTH_DD_BOND | (evt_data.auth_req & BTM_AUTH_YN_BIT)); } - if (btm_cb.security_mode == BTM_SEC_MODE_SC) - { + if (btm_cb.security_mode == BTM_SEC_MODE_SC) { /* At this moment we know that both sides are SC capable, device in */ /* SC only mode requires MITM for any service so let's set MITM bit */ evt_data.auth_req |= BTM_AUTH_YN_BIT; BTM_TRACE_DEBUG("%s: for device in \"SC only\" mode set auth_req to 0x%02x\n", - __FUNCTION__, evt_data.auth_req); + __FUNCTION__, evt_data.auth_req); } /* if the user does not indicate "reply later" by setting the oob_data to unknown */ @@ -3565,8 +3331,8 @@ False-positive: False-positive: evt_data.bd_addr is set at the beginning with: btm_cb.devcb.loc_io_caps = evt_data.io_cap; BTM_TRACE_EVENT("%s: State: %s IO_CAP:%d oob_data:%d auth_req:%d", - __FUNCTION__, btm_pair_state_descr(btm_cb.pairing_state), evt_data.io_cap, - evt_data.oob_data, evt_data.auth_req); + __FUNCTION__, btm_pair_state_descr(btm_cb.pairing_state), evt_data.io_cap, + evt_data.oob_data, evt_data.auth_req); btsnd_hcic_io_cap_req_reply(evt_data.bd_addr, evt_data.io_cap, evt_data.oob_data, evt_data.auth_req); @@ -3597,8 +3363,7 @@ void btm_io_capabilities_rsp (UINT8 *p) p_dev_rec = btm_find_or_alloc_dev (evt_data.bd_addr); /* If no security is in progress, this indicates incoming security */ - if (btm_cb.pairing_state == BTM_PAIR_STATE_IDLE) - { + if (btm_cb.pairing_state == BTM_PAIR_STATE_IDLE) { memcpy (btm_cb.pairing_bda, evt_data.bd_addr, BD_ADDR_LEN); btm_sec_change_pairing_state (BTM_PAIR_STATE_INCOMING_SSP); @@ -3615,17 +3380,17 @@ void btm_io_capabilities_rsp (UINT8 *p) /* We must have a device record here. * Use the connecting device's CoD for the connection */ -/* coverity[uninit_use_in_call] -Event uninit_use_in_call: Using uninitialized element of array "evt_data.bd_addr" in call to function "memcmp" -FALSE-POSITIVE error from Coverity test-tool. evt_data.bd_addr is set at the beginning with: STREAM_TO_BDADDR (evt_data.bd_addr, p); -*/ - if (!memcmp (evt_data.bd_addr, btm_cb.connecting_bda, BD_ADDR_LEN)) + /* coverity[uninit_use_in_call] + Event uninit_use_in_call: Using uninitialized element of array "evt_data.bd_addr" in call to function "memcmp" + FALSE-POSITIVE error from Coverity test-tool. evt_data.bd_addr is set at the beginning with: STREAM_TO_BDADDR (evt_data.bd_addr, p); + */ + if (!memcmp (evt_data.bd_addr, btm_cb.connecting_bda, BD_ADDR_LEN)) { memcpy (p_dev_rec->dev_class, btm_cb.connecting_dc, DEV_CLASS_LEN); + } /* peer sets dedicated bonding bit and we did not initiate dedicated bonding */ if (btm_cb.pairing_state == BTM_PAIR_STATE_INCOMING_SSP /* peer initiated bonding */ - && (evt_data.auth_req & BTM_AUTH_DD_BOND) ) /* and dedicated bonding bit is set */ - { + && (evt_data.auth_req & BTM_AUTH_DD_BOND) ) { /* and dedicated bonding bit is set */ btm_cb.pairing_flags |= BTM_PAIR_FLAGS_PEER_STARTED_DD; } @@ -3633,8 +3398,9 @@ FALSE-POSITIVE error from Coverity test-tool. evt_data.bd_addr is set at the beg p_dev_rec->rmt_io_caps = evt_data.io_cap; p_dev_rec->rmt_auth_req = evt_data.auth_req; - if (btm_cb.api.p_sp_callback) + if (btm_cb.api.p_sp_callback) { (*btm_cb.api.p_sp_callback) (BTM_SP_IO_RSP_EVT, (tBTM_SP_EVT_DATA *)&evt_data); + } } /******************************************************************************* @@ -3660,90 +3426,81 @@ void btm_proc_sp_req_evt (tBTM_SP_EVT event, UINT8 *p) STREAM_TO_BDADDR (p_bda, p); BTM_TRACE_EVENT ("btm_proc_sp_req_evt() BDA: %08x%04x event: 0x%x, State: %s\n", - (p_bda[0]<<24) + (p_bda[1]<<16) + (p_bda[2]<<8) + p_bda[3], (p_bda[4] << 8) + p_bda[5], - event, btm_pair_state_descr(btm_cb.pairing_state)); + (p_bda[0] << 24) + (p_bda[1] << 16) + (p_bda[2] << 8) + p_bda[3], (p_bda[4] << 8) + p_bda[5], + event, btm_pair_state_descr(btm_cb.pairing_state)); if ( ((p_dev_rec = btm_find_dev (p_bda)) != NULL) - && (btm_cb.pairing_state != BTM_PAIR_STATE_IDLE) - && (memcmp (btm_cb.pairing_bda, p_bda, BD_ADDR_LEN) == 0) ) - { + && (btm_cb.pairing_state != BTM_PAIR_STATE_IDLE) + && (memcmp (btm_cb.pairing_bda, p_bda, BD_ADDR_LEN) == 0) ) { memcpy (evt_data.cfm_req.bd_addr, p_dev_rec->bd_addr, BD_ADDR_LEN); memcpy (evt_data.cfm_req.dev_class, p_dev_rec->dev_class, DEV_CLASS_LEN); BCM_STRNCPY_S ((char *)evt_data.cfm_req.bd_name, sizeof(evt_data.cfm_req.bd_name), (char *)p_dev_rec->sec_bd_name, BTM_MAX_REM_BD_NAME_LEN); - switch (event) - { - case BTM_SP_CFM_REQ_EVT: - /* Numeric confirmation. Need user to conf the passkey */ - btm_sec_change_pairing_state (BTM_PAIR_STATE_WAIT_NUMERIC_CONFIRM); + switch (event) { + case BTM_SP_CFM_REQ_EVT: + /* Numeric confirmation. Need user to conf the passkey */ + btm_sec_change_pairing_state (BTM_PAIR_STATE_WAIT_NUMERIC_CONFIRM); - /* The device record must be allocated in the "IO cap exchange" step */ - STREAM_TO_UINT32 (evt_data.cfm_req.num_val, p); + /* The device record must be allocated in the "IO cap exchange" step */ + STREAM_TO_UINT32 (evt_data.cfm_req.num_val, p); - evt_data.cfm_req.just_works = TRUE; + evt_data.cfm_req.just_works = TRUE; - /* process user confirm req in association with the auth_req param */ + /* process user confirm req in association with the auth_req param */ #if (BTM_LOCAL_IO_CAPS == BTM_IO_CAP_IO) - if ( (p_dev_rec->rmt_io_caps == BTM_IO_CAP_IO) - && (btm_cb.devcb.loc_io_caps == BTM_IO_CAP_IO) - && ((p_dev_rec->rmt_auth_req & BTM_AUTH_SP_YES) || (btm_cb.devcb.loc_auth_req & BTM_AUTH_SP_YES)) ) - { - /* Both devices are DisplayYesNo and one or both devices want to authenticate - -> use authenticated link key */ - evt_data.cfm_req.just_works = FALSE; - } + if ( (p_dev_rec->rmt_io_caps == BTM_IO_CAP_IO) + && (btm_cb.devcb.loc_io_caps == BTM_IO_CAP_IO) + && ((p_dev_rec->rmt_auth_req & BTM_AUTH_SP_YES) || (btm_cb.devcb.loc_auth_req & BTM_AUTH_SP_YES)) ) { + /* Both devices are DisplayYesNo and one or both devices want to authenticate + -> use authenticated link key */ + evt_data.cfm_req.just_works = FALSE; + } #endif - BTM_TRACE_DEBUG ("btm_proc_sp_req_evt() just_works:%d, io loc:%d, rmt:%d, auth loc:%d, rmt:%d\n", - evt_data.cfm_req.just_works, btm_cb.devcb.loc_io_caps, p_dev_rec->rmt_io_caps, - btm_cb.devcb.loc_auth_req, p_dev_rec->rmt_auth_req); + BTM_TRACE_DEBUG ("btm_proc_sp_req_evt() just_works:%d, io loc:%d, rmt:%d, auth loc:%d, rmt:%d\n", + evt_data.cfm_req.just_works, btm_cb.devcb.loc_io_caps, p_dev_rec->rmt_io_caps, + btm_cb.devcb.loc_auth_req, p_dev_rec->rmt_auth_req); - evt_data.cfm_req.loc_auth_req = btm_cb.devcb.loc_auth_req; - evt_data.cfm_req.rmt_auth_req = p_dev_rec->rmt_auth_req; - evt_data.cfm_req.loc_io_caps = btm_cb.devcb.loc_io_caps; - evt_data.cfm_req.rmt_io_caps = p_dev_rec->rmt_io_caps; - break; + evt_data.cfm_req.loc_auth_req = btm_cb.devcb.loc_auth_req; + evt_data.cfm_req.rmt_auth_req = p_dev_rec->rmt_auth_req; + evt_data.cfm_req.loc_io_caps = btm_cb.devcb.loc_io_caps; + evt_data.cfm_req.rmt_io_caps = p_dev_rec->rmt_io_caps; + break; - case BTM_SP_KEY_NOTIF_EVT: - /* Passkey notification (other side is a keyboard) */ - STREAM_TO_UINT32 (evt_data.key_notif.passkey, p); + case BTM_SP_KEY_NOTIF_EVT: + /* Passkey notification (other side is a keyboard) */ + STREAM_TO_UINT32 (evt_data.key_notif.passkey, p); - BTM_TRACE_DEBUG ("BTM_SP_KEY_NOTIF_EVT: passkey: %u\n", evt_data.key_notif.passkey); + BTM_TRACE_DEBUG ("BTM_SP_KEY_NOTIF_EVT: passkey: %u\n", evt_data.key_notif.passkey); - btm_sec_change_pairing_state (BTM_PAIR_STATE_WAIT_AUTH_COMPLETE); - break; + btm_sec_change_pairing_state (BTM_PAIR_STATE_WAIT_AUTH_COMPLETE); + break; #if (BTM_LOCAL_IO_CAPS != BTM_IO_CAP_NONE) - case BTM_SP_KEY_REQ_EVT: - /* HCI_USER_PASSKEY_REQUEST_EVT */ - btm_sec_change_pairing_state (BTM_PAIR_STATE_KEY_ENTRY); - break; + case BTM_SP_KEY_REQ_EVT: + /* HCI_USER_PASSKEY_REQUEST_EVT */ + btm_sec_change_pairing_state (BTM_PAIR_STATE_KEY_ENTRY); + break; #endif } - if (btm_cb.api.p_sp_callback) - { + if (btm_cb.api.p_sp_callback) { status = (*btm_cb.api.p_sp_callback) (event, (tBTM_SP_EVT_DATA *)&evt_data); - if (status != BTM_NOT_AUTHORIZED) - { + if (status != BTM_NOT_AUTHORIZED) { return; } /* else BTM_NOT_AUTHORIZED means when the app wants to reject the req right now */ - } - else if ( (event == BTM_SP_CFM_REQ_EVT) && (evt_data.cfm_req.just_works == TRUE) ) - { + } else if ( (event == BTM_SP_CFM_REQ_EVT) && (evt_data.cfm_req.just_works == TRUE) ) { /* automatically reply with just works if no sp_cback */ status = BTM_SUCCESS; } - if (event == BTM_SP_CFM_REQ_EVT) - { + if (event == BTM_SP_CFM_REQ_EVT) { BTM_TRACE_DEBUG ("calling BTM_ConfirmReqReply with status: %d\n", status); BTM_ConfirmReqReply (status, p_bda); } #if (BTM_LOCAL_IO_CAPS != BTM_IO_CAP_NONE) - else if (event == BTM_SP_KEY_REQ_EVT) - { + else if (event == BTM_SP_KEY_REQ_EVT) { BTM_PasskeyReqReply(status, p_bda, 0); } #endif @@ -3753,26 +3510,21 @@ void btm_proc_sp_req_evt (tBTM_SP_EVT event, UINT8 *p) /* Something bad. we can only fail this connection */ btm_cb.acl_disc_reason = HCI_ERR_HOST_REJECT_SECURITY; - if (BTM_SP_CFM_REQ_EVT == event) - { + if (BTM_SP_CFM_REQ_EVT == event) { btsnd_hcic_user_conf_reply (p_bda, FALSE); - } - else if (BTM_SP_KEY_NOTIF_EVT == event) - { + } else if (BTM_SP_KEY_NOTIF_EVT == event) { /* do nothing -> it very unlikely to happen. This event is most likely to be received by a HID host when it first connects to a HID device. Usually the Host initiated the connection in this case. On Mobile platforms, if there's a security process happening, the host probably can not initiate another connection. BTW (PC) is another story. */ - if (NULL != (p_dev_rec = btm_find_dev (p_bda)) ) - { + if (NULL != (p_dev_rec = btm_find_dev (p_bda)) ) { btm_sec_disconnect (p_dev_rec->hci_handle, HCI_ERR_AUTH_FAILURE); } } #if (BTM_LOCAL_IO_CAPS != BTM_IO_CAP_NONE) - else - { + else { btsnd_hcic_user_passkey_neg_reply(p_bda); } #endif @@ -3794,8 +3546,7 @@ void btm_keypress_notif_evt (UINT8 *p) UINT8 *p_bda; /* parse & report BTM_SP_KEYPRESS_EVT */ - if (btm_cb.api.p_sp_callback) - { + if (btm_cb.api.p_sp_callback) { p_bda = evt_data.bd_addr; STREAM_TO_BDADDR (p_bda, p); @@ -3825,61 +3576,52 @@ void btm_simple_pair_complete (UINT8 *p) status = *p++; STREAM_TO_BDADDR (evt_data.bd_addr, p); - if ((p_dev_rec = btm_find_dev (evt_data.bd_addr)) == NULL) - { + if ((p_dev_rec = btm_find_dev (evt_data.bd_addr)) == NULL) { BTM_TRACE_ERROR ("btm_simple_pair_complete() with unknown BDA: %08x%04x\n", - (evt_data.bd_addr[0]<<24) + (evt_data.bd_addr[1]<<16) + (evt_data.bd_addr[2]<<8) + evt_data.bd_addr[3], - (evt_data.bd_addr[4] << 8) + evt_data.bd_addr[5]); + (evt_data.bd_addr[0] << 24) + (evt_data.bd_addr[1] << 16) + (evt_data.bd_addr[2] << 8) + evt_data.bd_addr[3], + (evt_data.bd_addr[4] << 8) + evt_data.bd_addr[5]); return; } BTM_TRACE_EVENT ("btm_simple_pair_complete() Pair State: %s Status:%d sec_state: %u\n", - btm_pair_state_descr(btm_cb.pairing_state), status, p_dev_rec->sec_state); + btm_pair_state_descr(btm_cb.pairing_state), status, p_dev_rec->sec_state); evt_data.status = BTM_ERR_PROCESSING; - if (status == HCI_SUCCESS) - { + if (status == HCI_SUCCESS) { evt_data.status = BTM_SUCCESS; p_dev_rec->sec_flags |= BTM_SEC_AUTHENTICATED; - } - else - { - if (status == HCI_ERR_PAIRING_NOT_ALLOWED) - { + } else { + if (status == HCI_ERR_PAIRING_NOT_ALLOWED) { /* The test spec wants the peer device to get this failure code. */ btm_sec_change_pairing_state (BTM_PAIR_STATE_WAIT_DISCONNECT); /* Change the timer to 1 second */ btu_start_timer (&btm_cb.pairing_tle, BTU_TTYPE_USER_FUNC, BT_1SEC_TIMEOUT); - } - else if (memcmp (btm_cb.pairing_bda, evt_data.bd_addr, BD_ADDR_LEN) == 0) - { + } else if (memcmp (btm_cb.pairing_bda, evt_data.bd_addr, BD_ADDR_LEN) == 0) { /* stop the timer */ btu_stop_timer (&btm_cb.pairing_tle); - if (p_dev_rec->sec_state != BTM_SEC_STATE_AUTHENTICATING) - { + if (p_dev_rec->sec_state != BTM_SEC_STATE_AUTHENTICATING) { /* the initiating side: will receive auth complete event. disconnect ACL at that time */ disc = TRUE; } - } - else + } else { disc = TRUE; + } } /* Let the pairing state stay active, p_auth_complete_callback will report the failure */ memcpy (evt_data.bd_addr, p_dev_rec->bd_addr, BD_ADDR_LEN); memcpy (evt_data.dev_class, p_dev_rec->dev_class, DEV_CLASS_LEN); - if (btm_cb.api.p_sp_callback) + if (btm_cb.api.p_sp_callback) { (*btm_cb.api.p_sp_callback) (BTM_SP_COMPLT_EVT, (tBTM_SP_EVT_DATA *)&evt_data); + } - if (disc) - { + if (disc) { /* simple pairing failed */ /* Avoid sending disconnect on HCI_ERR_PEER_USER */ - if ((status != HCI_ERR_PEER_USER) && (status != HCI_ERR_CONN_CAUSE_LOCAL_HOST)) - { + if ((status != HCI_ERR_PEER_USER) && (status != HCI_ERR_CONN_CAUSE_LOCAL_HOST)) { btm_sec_send_hci_disconnect (p_dev_rec, HCI_ERR_AUTH_FAILURE, p_dev_rec->hci_handle); } } @@ -3909,19 +3651,17 @@ void btm_rem_oob_req (UINT8 *p) STREAM_TO_BDADDR (p_bda, p); BTM_TRACE_EVENT ("btm_rem_oob_req() BDA: %02x:%02x:%02x:%02x:%02x:%02x\n", - p_bda[0], p_bda[1], p_bda[2], p_bda[3], p_bda[4], p_bda[5]); + p_bda[0], p_bda[1], p_bda[2], p_bda[3], p_bda[4], p_bda[5]); if ( (NULL != (p_dev_rec = btm_find_dev (p_bda))) && - btm_cb.api.p_sp_callback) - { + btm_cb.api.p_sp_callback) { memcpy (evt_data.bd_addr, p_dev_rec->bd_addr, BD_ADDR_LEN); memcpy (evt_data.dev_class, p_dev_rec->dev_class, DEV_CLASS_LEN); - BCM_STRNCPY_S((char *)evt_data.bd_name, sizeof(evt_data.bd_name), (char *)p_dev_rec->sec_bd_name, BTM_MAX_REM_BD_NAME_LEN+1); + BCM_STRNCPY_S((char *)evt_data.bd_name, sizeof(evt_data.bd_name), (char *)p_dev_rec->sec_bd_name, BTM_MAX_REM_BD_NAME_LEN + 1); evt_data.bd_name[BTM_MAX_REM_BD_NAME_LEN] = 0; btm_sec_change_pairing_state(BTM_PAIR_STATE_WAIT_LOCAL_OOB_RSP); - if ((*btm_cb.api.p_sp_callback) (BTM_SP_RMT_OOB_EVT, (tBTM_SP_EVT_DATA *)&evt_data) == BTM_NOT_AUTHORIZED) - { + if ((*btm_cb.api.p_sp_callback) (BTM_SP_RMT_OOB_EVT, (tBTM_SP_EVT_DATA *)&evt_data) == BTM_NOT_AUTHORIZED) { BTM_RemoteOobDataReply(TRUE, p_bda, c, r); } return; @@ -3948,17 +3688,17 @@ void btm_read_local_oob_complete (UINT8 *p) UINT8 status = *p++; BTM_TRACE_EVENT ("btm_read_local_oob_complete:%d\n", status); - if (status == HCI_SUCCESS) - { + if (status == HCI_SUCCESS) { evt_data.status = BTM_SUCCESS; STREAM_TO_ARRAY16(evt_data.c, p); STREAM_TO_ARRAY16(evt_data.r, p); - } - else + } else { evt_data.status = BTM_ERR_PROCESSING; + } - if (btm_cb.api.p_sp_callback) + if (btm_cb.api.p_sp_callback) { (*btm_cb.api.p_sp_callback) (BTM_SP_LOC_OOB_EVT, (tBTM_SP_EVT_DATA *)&evt_data); + } } #endif /* BTM_OOB_INCLUDED */ @@ -3976,25 +3716,25 @@ static void btm_sec_auth_collision (UINT16 handle) { tBTM_SEC_DEV_REC *p_dev_rec; - if (!btm_cb.collision_start_time) + if (!btm_cb.collision_start_time) { btm_cb.collision_start_time = GKI_get_os_tick_count(); + } - if ((GKI_get_os_tick_count() - btm_cb.collision_start_time) < btm_cb.max_collision_delay) - { - if (handle == BTM_SEC_INVALID_HANDLE) - { - if ((p_dev_rec = btm_sec_find_dev_by_sec_state (BTM_SEC_STATE_AUTHENTICATING)) == NULL) + if ((GKI_get_os_tick_count() - btm_cb.collision_start_time) < btm_cb.max_collision_delay) { + if (handle == BTM_SEC_INVALID_HANDLE) { + if ((p_dev_rec = btm_sec_find_dev_by_sec_state (BTM_SEC_STATE_AUTHENTICATING)) == NULL) { p_dev_rec = btm_sec_find_dev_by_sec_state (BTM_SEC_STATE_ENCRYPTING); - } - else + } + } else { p_dev_rec = btm_find_dev_by_handle (handle); + } - if (p_dev_rec != NULL) - { + if (p_dev_rec != NULL) { BTM_TRACE_DEBUG ("btm_sec_auth_collision: state %d (retrying in a moment...)\n", p_dev_rec->sec_state); /* We will restart authentication after timeout */ - if (p_dev_rec->sec_state == BTM_SEC_STATE_AUTHENTICATING || p_dev_rec->sec_state == BTM_SEC_STATE_ENCRYPTING) + if (p_dev_rec->sec_state == BTM_SEC_STATE_AUTHENTICATING || p_dev_rec->sec_state == BTM_SEC_STATE_ENCRYPTING) { p_dev_rec->sec_state = 0; + } btm_cb.p_collided_dev_rec = p_dev_rec; btm_cb.sec_collision_tle.param = (UINT32) btm_sec_collision_timeout; @@ -4023,27 +3763,23 @@ void btm_sec_auth_complete (UINT16 handle, UINT8 status) /* Commenting out trace due to obf/compilation problems. */ #if (BT_USE_TRACES == TRUE) - if (p_dev_rec) - { + if (p_dev_rec) { BTM_TRACE_EVENT ("Security Manager: auth_complete PairState: %s handle:%u status:%d dev->sec_state: %u Bda:%08x, RName:%s\n", - btm_pair_state_descr (btm_cb.pairing_state), - handle, status, - p_dev_rec->sec_state, - (p_dev_rec->bd_addr[2]<<24)+(p_dev_rec->bd_addr[3]<<16)+(p_dev_rec->bd_addr[4]<<8)+p_dev_rec->bd_addr[5], - p_dev_rec->sec_bd_name); - } - else - { + btm_pair_state_descr (btm_cb.pairing_state), + handle, status, + p_dev_rec->sec_state, + (p_dev_rec->bd_addr[2] << 24) + (p_dev_rec->bd_addr[3] << 16) + (p_dev_rec->bd_addr[4] << 8) + p_dev_rec->bd_addr[5], + p_dev_rec->sec_bd_name); + } else { BTM_TRACE_EVENT ("Security Manager: auth_complete PairState: %s handle:%u status:%d\n", - btm_pair_state_descr (btm_cb.pairing_state), - handle, status); + btm_pair_state_descr (btm_cb.pairing_state), + handle, status); } #endif /* For transaction collision we need to wait and repeat. There is no need */ /* for random timeout because only slave should receive the result */ - if ((status == HCI_ERR_LMP_ERR_TRANS_COLLISION) || (status == HCI_ERR_DIFF_TRANSACTION_COLLISION)) - { + if ((status == HCI_ERR_LMP_ERR_TRANS_COLLISION) || (status == HCI_ERR_DIFF_TRANSACTION_COLLISION)) { btm_sec_auth_collision(handle); return; } @@ -4055,35 +3791,35 @@ void btm_sec_auth_complete (UINT16 handle, UINT8 status) the connection that is up, this is the last event received. */ if (p_dev_rec - && (btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD) - && !(btm_cb.pairing_flags & BTM_PAIR_FLAGS_DISC_WHEN_DONE)) - { + && (btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD) + && !(btm_cb.pairing_flags & BTM_PAIR_FLAGS_DISC_WHEN_DONE)) { p_dev_rec->security_required &= ~BTM_SEC_OUT_AUTHENTICATE; l2cu_start_post_bond_timer (p_dev_rec->hci_handle); } - if (!p_dev_rec) + if (!p_dev_rec) { return; + } /* keep the old sm4 flag and clear the retry bit in control block */ old_sm4 = p_dev_rec->sm4; p_dev_rec->sm4 &= ~BTM_SM4_RETRY; if ( (btm_cb.pairing_state != BTM_PAIR_STATE_IDLE) - && (btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD) - && (memcmp (p_dev_rec->bd_addr, btm_cb.pairing_bda, BD_ADDR_LEN) == 0) ) + && (btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD) + && (memcmp (p_dev_rec->bd_addr, btm_cb.pairing_bda, BD_ADDR_LEN) == 0) ) { are_bonding = TRUE; + } if ( (btm_cb.pairing_state != BTM_PAIR_STATE_IDLE) - && (memcmp (p_dev_rec->bd_addr, btm_cb.pairing_bda, BD_ADDR_LEN) == 0) ) + && (memcmp (p_dev_rec->bd_addr, btm_cb.pairing_bda, BD_ADDR_LEN) == 0) ) { btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); + } - if (p_dev_rec->sec_state != BTM_SEC_STATE_AUTHENTICATING) - { + if (p_dev_rec->sec_state != BTM_SEC_STATE_AUTHENTICATING) { if ( (btm_cb.api.p_auth_complete_callback && status != HCI_SUCCESS) - && (old_state != BTM_PAIR_STATE_IDLE) ) - { + && (old_state != BTM_PAIR_STATE_IDLE) ) { (*btm_cb.api.p_auth_complete_callback) (p_dev_rec->bd_addr, p_dev_rec->dev_class, p_dev_rec->sec_bd_name, status); @@ -4098,15 +3834,13 @@ void btm_sec_auth_complete (UINT16 handle, UINT8 status) ** on the encrypted link, so device is correct. */ if ((status == HCI_ERR_COMMAND_DISALLOWED) - && ((p_dev_rec->sec_flags & (BTM_SEC_AUTHENTICATED | BTM_SEC_ENCRYPTED)) == - (BTM_SEC_AUTHENTICATED | BTM_SEC_ENCRYPTED))) - { + && ((p_dev_rec->sec_flags & (BTM_SEC_AUTHENTICATED | BTM_SEC_ENCRYPTED)) == + (BTM_SEC_AUTHENTICATED | BTM_SEC_ENCRYPTED))) { status = HCI_SUCCESS; } /* Currently we do not notify user if it is a keyboard which connects */ /* User probably Disabled the keyboard while it was asleap. Let her try */ - if (btm_cb.api.p_auth_complete_callback) - { + if (btm_cb.api.p_auth_complete_callback) { /* report the suthentication status */ if (old_state != BTM_PAIR_STATE_IDLE) (*btm_cb.api.p_auth_complete_callback) (p_dev_rec->bd_addr, @@ -4117,29 +3851,24 @@ void btm_sec_auth_complete (UINT16 handle, UINT8 status) p_dev_rec->sec_state = BTM_SEC_STATE_IDLE; /* If this is a bonding procedure can disconnect the link now */ - if (are_bonding) - { + if (are_bonding) { p_dev_rec->security_required &= ~BTM_SEC_OUT_AUTHENTICATE; - if (status != HCI_SUCCESS) - { - if(((status != HCI_ERR_PEER_USER) && (status != HCI_ERR_CONN_CAUSE_LOCAL_HOST))) + if (status != HCI_SUCCESS) { + if (((status != HCI_ERR_PEER_USER) && (status != HCI_ERR_CONN_CAUSE_LOCAL_HOST))) { btm_sec_send_hci_disconnect (p_dev_rec, HCI_ERR_PEER_USER, p_dev_rec->hci_handle); - } - else - { + } + } else { BTM_TRACE_DEBUG ("TRYING TO DECIDE IF CAN USE SMP_BR_CHNL\n"); if (p_dev_rec->new_encryption_key_is_p256 && (btm_sec_use_smp_br_chnl(p_dev_rec)) - /* no LE keys are available, do deriving */ - && (!(p_dev_rec->sec_flags &BTM_SEC_LE_LINK_KEY_KNOWN) || - /* or BR key is higher security than existing LE keys */ - (!(p_dev_rec->sec_flags & BTM_SEC_LE_LINK_KEY_AUTHED) && - (p_dev_rec->sec_flags & BTM_SEC_LINK_KEY_AUTHED)))) - { + /* no LE keys are available, do deriving */ + && (!(p_dev_rec->sec_flags & BTM_SEC_LE_LINK_KEY_KNOWN) || + /* or BR key is higher security than existing LE keys */ + (!(p_dev_rec->sec_flags & BTM_SEC_LE_LINK_KEY_AUTHED) && + (p_dev_rec->sec_flags & BTM_SEC_LINK_KEY_AUTHED)))) { BTM_TRACE_DEBUG ("link encrypted afer dedic bonding can use SMP_BR_CHNL\n"); - if (btm_sec_is_master(p_dev_rec)) - { + if (btm_sec_is_master(p_dev_rec)) { // Encryption is required to start SM over BR/EDR // indicate that this is encryption after authentication BTM_SetEncryption(p_dev_rec->bd_addr, BT_TRANSPORT_BR_EDR, NULL, NULL); @@ -4152,21 +3881,17 @@ void btm_sec_auth_complete (UINT16 handle, UINT8 status) } /* If authentication failed, notify the waiting layer */ - if (status != HCI_SUCCESS) - { - if ((old_sm4 & BTM_SM4_RETRY) == 0) - { + if (status != HCI_SUCCESS) { + if ((old_sm4 & BTM_SM4_RETRY) == 0) { /* allow retry only once */ - if (status == HCI_ERR_LMP_ERR_TRANS_COLLISION) - { + if (status == HCI_ERR_LMP_ERR_TRANS_COLLISION) { /* not retried yet. set the retry bit */ p_dev_rec->sm4 |= BTM_SM4_RETRY; BTM_TRACE_DEBUG ("Collision retry sm4:x%x sec_flags:0x%x\n", p_dev_rec->sm4, p_dev_rec->sec_flags); } /* this retry for missing key is for Lisbon or later only. * Legacy device do not need this. the controller will drive the retry automatically */ - else if (HCI_ERR_KEY_MISSING == status && BTM_SEC_IS_SM4(p_dev_rec->sm4)) - { + else if (HCI_ERR_KEY_MISSING == status && BTM_SEC_IS_SM4(p_dev_rec->sm4)) { /* not retried yet. set the retry bit */ p_dev_rec->sm4 |= BTM_SM4_RETRY; p_dev_rec->sec_flags &= ~BTM_SEC_LINK_KEY_KNOWN; @@ -4177,8 +3902,7 @@ void btm_sec_auth_complete (UINT16 handle, UINT8 status) BTM_DeleteStoredLinkKey (bd_addr, NULL); */ } - if (p_dev_rec->sm4 & BTM_SM4_RETRY) - { + if (p_dev_rec->sm4 & BTM_SM4_RETRY) { btm_sec_execute_procedure (p_dev_rec); return; } @@ -4186,8 +3910,7 @@ void btm_sec_auth_complete (UINT16 handle, UINT8 status) btm_sec_dev_rec_cback_event (p_dev_rec, BTM_ERR_PROCESSING, FALSE); - if (btm_cb.pairing_flags & BTM_PAIR_FLAGS_DISC_WHEN_DONE) - { + if (btm_cb.pairing_flags & BTM_PAIR_FLAGS_DISC_WHEN_DONE) { btm_sec_send_hci_disconnect (p_dev_rec, HCI_ERR_AUTH_FAILURE, p_dev_rec->hci_handle); } return; @@ -4196,8 +3919,8 @@ void btm_sec_auth_complete (UINT16 handle, UINT8 status) p_dev_rec->sec_flags |= BTM_SEC_AUTHENTICATED; if (p_dev_rec->pin_code_length >= 16 || - p_dev_rec->link_key_type == BTM_LKEY_TYPE_AUTH_COMB || - p_dev_rec->link_key_type == BTM_LKEY_TYPE_AUTH_COMB_P_256) { + p_dev_rec->link_key_type == BTM_LKEY_TYPE_AUTH_COMB || + p_dev_rec->link_key_type == BTM_LKEY_TYPE_AUTH_COMB_P_256) { // If we have MITM protection we have a higher level of security than // provided by 16 digits PIN p_dev_rec->sec_flags |= BTM_SEC_16_DIGIT_PIN_AUTHED; @@ -4207,8 +3930,9 @@ void btm_sec_auth_complete (UINT16 handle, UINT8 status) status = btm_sec_execute_procedure (p_dev_rec); /* If there is no next procedure, or procedure failed to start, notify the caller */ - if (status != BTM_CMD_STARTED) + if (status != BTM_CMD_STARTED) { btm_sec_dev_rec_cback_event (p_dev_rec, status, FALSE); + } } /******************************************************************************* @@ -4229,116 +3953,103 @@ void btm_sec_encrypt_change (UINT16 handle, UINT8 status, UINT8 encr_enable) UINT8 acl_idx = btm_handle_to_acl_index(handle); #endif BTM_TRACE_EVENT ("Security Manager: encrypt_change status:%d State:%d, encr_enable = %d\n", - status, (p_dev_rec) ? p_dev_rec->sec_state : 0, encr_enable); + status, (p_dev_rec) ? p_dev_rec->sec_state : 0, encr_enable); BTM_TRACE_DEBUG ("before update p_dev_rec->sec_flags=0x%x\n", (p_dev_rec) ? p_dev_rec->sec_flags : 0 ); /* For transaction collision we need to wait and repeat. There is no need */ /* for random timeout because only slave should receive the result */ if ((status == HCI_ERR_LMP_ERR_TRANS_COLLISION) || - (status == HCI_ERR_DIFF_TRANSACTION_COLLISION)) - { + (status == HCI_ERR_DIFF_TRANSACTION_COLLISION)) { btm_sec_auth_collision(handle); return; } btm_cb.collision_start_time = 0; - if (!p_dev_rec) + if (!p_dev_rec) { return; + } - if ((status == HCI_SUCCESS) && encr_enable) - { + if ((status == HCI_SUCCESS) && encr_enable) { if (p_dev_rec->hci_handle == handle) { p_dev_rec->sec_flags |= (BTM_SEC_AUTHENTICATED | BTM_SEC_ENCRYPTED); if (p_dev_rec->pin_code_length >= 16 || - p_dev_rec->link_key_type == BTM_LKEY_TYPE_AUTH_COMB || - p_dev_rec->link_key_type == BTM_LKEY_TYPE_AUTH_COMB_P_256) { + p_dev_rec->link_key_type == BTM_LKEY_TYPE_AUTH_COMB || + p_dev_rec->link_key_type == BTM_LKEY_TYPE_AUTH_COMB_P_256) { p_dev_rec->sec_flags |= BTM_SEC_16_DIGIT_PIN_AUTHED; } - } - else - { + } else { p_dev_rec->sec_flags |= (BTM_SEC_LE_AUTHENTICATED | BTM_SEC_LE_ENCRYPTED); } } /* It is possible that we decrypted the link to perform role switch */ /* mark link not to be encrypted, so that when we execute security next time it will kick in again */ - if ((status == HCI_SUCCESS) && !encr_enable) - { - if (p_dev_rec->hci_handle == handle) + if ((status == HCI_SUCCESS) && !encr_enable) { + if (p_dev_rec->hci_handle == handle) { p_dev_rec->sec_flags &= ~BTM_SEC_ENCRYPTED; - else + } else { p_dev_rec->sec_flags &= ~BTM_SEC_LE_ENCRYPTED; + } } BTM_TRACE_DEBUG ("after update p_dev_rec->sec_flags=0x%x\n", p_dev_rec->sec_flags ); #if BLE_INCLUDED == TRUE && SMP_INCLUDED == TRUE - if (acl_idx != MAX_L2CAP_LINKS) + if (acl_idx != MAX_L2CAP_LINKS) { p_acl = &btm_cb.acl_db[acl_idx]; + } - if (p_acl != NULL) + if (p_acl != NULL) { btm_sec_check_pending_enc_req(p_dev_rec, p_acl->transport, encr_enable); + } - if (p_acl && p_acl->transport == BT_TRANSPORT_LE) - { + if (p_acl && p_acl->transport == BT_TRANSPORT_LE) { if (status == HCI_ERR_KEY_MISSING || status == HCI_ERR_AUTH_FAILURE || - status == HCI_ERR_ENCRY_MODE_NOT_ACCEPTABLE) - { + status == HCI_ERR_ENCRY_MODE_NOT_ACCEPTABLE) { p_dev_rec->sec_flags &= ~ (BTM_SEC_LE_LINK_KEY_KNOWN); p_dev_rec->ble.key_type = BTM_LE_KEY_NONE; } btm_ble_link_encrypted(p_dev_rec->ble.pseudo_addr, encr_enable); return; - } - else - { + } else { /* BR/EDR connection, update the encryption key size to be 16 as always */ p_dev_rec->enc_key_size = 16; } - BTM_TRACE_DEBUG ("in %s new_encr_key_256 is %d\n", - __func__, p_dev_rec->new_encryption_key_is_p256); + BTM_TRACE_DEBUG ("in %s new_encr_key_256 is %d\n", + __func__, p_dev_rec->new_encryption_key_is_p256); - if ((status == HCI_SUCCESS) && encr_enable && (p_dev_rec->hci_handle == handle)) - { - if (p_dev_rec->new_encryption_key_is_p256) - { + if ((status == HCI_SUCCESS) && encr_enable && (p_dev_rec->hci_handle == handle)) { + if (p_dev_rec->new_encryption_key_is_p256) { if (btm_sec_use_smp_br_chnl(p_dev_rec) && - btm_sec_is_master(p_dev_rec) && - /* if LE key is not known, do deriving */ - (!(p_dev_rec->sec_flags &BTM_SEC_LE_LINK_KEY_KNOWN) || - /* or BR key is higher security than existing LE keys */ - (!(p_dev_rec->sec_flags & BTM_SEC_LE_LINK_KEY_AUTHED) - && (p_dev_rec->sec_flags & BTM_SEC_LINK_KEY_AUTHED)))) - { + btm_sec_is_master(p_dev_rec) && + /* if LE key is not known, do deriving */ + (!(p_dev_rec->sec_flags & BTM_SEC_LE_LINK_KEY_KNOWN) || + /* or BR key is higher security than existing LE keys */ + (!(p_dev_rec->sec_flags & BTM_SEC_LE_LINK_KEY_AUTHED) + && (p_dev_rec->sec_flags & BTM_SEC_LINK_KEY_AUTHED)))) { /* BR/EDR is encrypted with LK that can be used to derive LE LTK */ p_dev_rec->new_encryption_key_is_p256 = FALSE; - if (p_dev_rec->no_smp_on_br) - { + if (p_dev_rec->no_smp_on_br) { BTM_TRACE_DEBUG ("%s NO SM over BR/EDR\n", __func__); - } - else - { + } else { BTM_TRACE_DEBUG ("%s start SM over BR/EDR\n", __func__); SMP_BR_PairWith(p_dev_rec->bd_addr); } } - } - else - { + } else { // BR/EDR is successfully encrypted. Correct LK type if needed // (BR/EDR LK derived from LE LTK was used for encryption) if ((encr_enable == 1) && /* encryption is ON for SSP */ - /* LK type is for BR/EDR SC */ - (p_dev_rec->link_key_type == BTM_LKEY_TYPE_UNAUTH_COMB_P_256 || - p_dev_rec->link_key_type == BTM_LKEY_TYPE_AUTH_COMB_P_256)) - { - if (p_dev_rec->link_key_type == BTM_LKEY_TYPE_UNAUTH_COMB_P_256) + /* LK type is for BR/EDR SC */ + (p_dev_rec->link_key_type == BTM_LKEY_TYPE_UNAUTH_COMB_P_256 || + p_dev_rec->link_key_type == BTM_LKEY_TYPE_AUTH_COMB_P_256)) { + if (p_dev_rec->link_key_type == BTM_LKEY_TYPE_UNAUTH_COMB_P_256) { p_dev_rec->link_key_type = BTM_LKEY_TYPE_UNAUTH_COMB; - else /* BTM_LKEY_TYPE_AUTH_COMB_P_256 */ + } else { /* BTM_LKEY_TYPE_AUTH_COMB_P_256 */ p_dev_rec->link_key_type = BTM_LKEY_TYPE_AUTH_COMB; + } BTM_TRACE_DEBUG("updated link key type to %d\n", p_dev_rec->link_key_type); btm_send_link_key_notif(p_dev_rec); @@ -4350,10 +4061,8 @@ void btm_sec_encrypt_change (UINT16 handle, UINT8 status, UINT8 encr_enable) #endif /* BLE_INCLUDED == TRUE && SMP_INCLUDED == TRUE */ /* If this encryption was started by peer do not need to do anything */ - if (p_dev_rec->sec_state != BTM_SEC_STATE_ENCRYPTING) - { - if (BTM_SEC_STATE_DELAY_FOR_ENC == p_dev_rec->sec_state) - { + if (p_dev_rec->sec_state != BTM_SEC_STATE_ENCRYPTING) { + if (BTM_SEC_STATE_DELAY_FOR_ENC == p_dev_rec->sec_state) { p_dev_rec->sec_state = BTM_SEC_STATE_IDLE; p_dev_rec->p_callback = NULL; l2cu_resubmit_pending_sec_req (p_dev_rec->bd_addr); @@ -4363,8 +4072,7 @@ void btm_sec_encrypt_change (UINT16 handle, UINT8 status, UINT8 encr_enable) p_dev_rec->sec_state = BTM_SEC_STATE_IDLE; /* If encryption setup failed, notify the waiting layer */ - if (status != HCI_SUCCESS) - { + if (status != HCI_SUCCESS) { btm_sec_dev_rec_cback_event (p_dev_rec, BTM_ERR_PROCESSING, FALSE); return; } @@ -4372,8 +4080,9 @@ void btm_sec_encrypt_change (UINT16 handle, UINT8 status, UINT8 encr_enable) /* Encryption setup succeeded, execute the next security procedure, if any */ status = (UINT8)btm_sec_execute_procedure (p_dev_rec); /* If there is no next procedure, or procedure failed to start, notify the caller */ - if (status != BTM_CMD_STARTED) + if (status != BTM_CMD_STARTED) { btm_sec_dev_rec_cback_event (p_dev_rec, status, FALSE); + } } /******************************************************************************* @@ -4395,15 +4104,14 @@ static void btm_sec_connect_after_reject_timeout (TIMER_LIST_ENT *p_tle) btm_cb.sec_collision_tle.param = 0; btm_cb.p_collided_dev_rec = 0; - if (btm_sec_dd_create_conn(p_dev_rec) != BTM_CMD_STARTED) - { + if (btm_sec_dd_create_conn(p_dev_rec) != BTM_CMD_STARTED) { BTM_TRACE_WARNING ("Security Manager: btm_sec_connect_after_reject_timeout: failed to start connection\n"); btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); if (btm_cb.api.p_auth_complete_callback) - (*btm_cb.api.p_auth_complete_callback) (p_dev_rec->bd_addr, p_dev_rec->dev_class, - p_dev_rec->sec_bd_name, HCI_ERR_MEMORY_FULL); + (*btm_cb.api.p_auth_complete_callback) (p_dev_rec->bd_addr, p_dev_rec->dev_class, + p_dev_rec->sec_bd_name, HCI_ERR_MEMORY_FULL); } } @@ -4426,40 +4134,32 @@ void btm_sec_connected (UINT8 *bda, UINT16 handle, UINT8 status, UINT8 enc_mode) UINT8 bit_shift = 0; btm_acl_resubmit_page(); - - BTM_TRACE_ERROR ("%s\n",__func__); + + BTM_TRACE_ERROR ("%s\n", __func__); /* Commenting out trace due to obf/compilation problems. */ #if (BT_USE_TRACES == TRUE) - if (p_dev_rec) - { + if (p_dev_rec) { BTM_TRACE_EVENT ("Security Manager: btm_sec_connected in state: %s handle:%d status:%d enc_mode:%d bda:%x RName:%s\n", - btm_pair_state_descr(btm_cb.pairing_state), handle, status, enc_mode, - (bda[2]<<24)+(bda[3]<<16)+(bda[4]<<8)+bda[5], - p_dev_rec->sec_bd_name); - } - else - { + btm_pair_state_descr(btm_cb.pairing_state), handle, status, enc_mode, + (bda[2] << 24) + (bda[3] << 16) + (bda[4] << 8) + bda[5], + p_dev_rec->sec_bd_name); + } else { BTM_TRACE_EVENT ("Security Manager: btm_sec_connected in state: %s handle:%d status:%d enc_mode:%d bda:%x \n", - btm_pair_state_descr(btm_cb.pairing_state), handle, status, enc_mode, - (bda[2]<<24)+(bda[3]<<16)+(bda[4]<<8)+bda[5]); + btm_pair_state_descr(btm_cb.pairing_state), handle, status, enc_mode, + (bda[2] << 24) + (bda[3] << 16) + (bda[4] << 8) + bda[5]); } #endif - if (!p_dev_rec) - { + if (!p_dev_rec) { /* There is no device record for new connection. Allocate one */ - if (status == HCI_SUCCESS) - { + if (status == HCI_SUCCESS) { p_dev_rec = btm_sec_alloc_dev (bda); - } - else - { + } else { /* If the device matches with stored paring address * reset the paring state to idle */ if ((btm_cb.pairing_state != BTM_PAIR_STATE_IDLE) && - (memcmp (btm_cb.pairing_bda, bda, BD_ADDR_LEN) == 0)) - { + (memcmp (btm_cb.pairing_bda, bda, BD_ADDR_LEN) == 0)) { btm_sec_change_pairing_state(BTM_PAIR_STATE_IDLE); } @@ -4467,38 +4167,30 @@ void btm_sec_connected (UINT8 *bda, UINT16 handle, UINT8 status, UINT8 enc_mode) * just ignore it */ return; } - } - else /* Update the timestamp for this device */ - { + } else { /* Update the timestamp for this device */ #if BLE_INCLUDED == TRUE - bit_shift = (handle == p_dev_rec->ble_hci_handle) ? 8 :0; + bit_shift = (handle == p_dev_rec->ble_hci_handle) ? 8 : 0; #endif p_dev_rec->timestamp = btm_cb.dev_rec_count++; - if (p_dev_rec->sm4 & BTM_SM4_CONN_PEND) - { + if (p_dev_rec->sm4 & BTM_SM4_CONN_PEND) { /* tell L2CAP it's a bonding connection. */ if ( (btm_cb.pairing_state != BTM_PAIR_STATE_IDLE) - && (memcmp (btm_cb.pairing_bda, p_dev_rec->bd_addr, BD_ADDR_LEN) == 0) - && (btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD) ) - { + && (memcmp (btm_cb.pairing_bda, p_dev_rec->bd_addr, BD_ADDR_LEN) == 0) + && (btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD) ) { /* if incoming connection failed while pairing, then try to connect and continue */ /* Motorola S9 disconnects without asking pin code */ - if ((status != HCI_SUCCESS)&&(btm_cb.pairing_state == BTM_PAIR_STATE_WAIT_PIN_REQ)) - { + if ((status != HCI_SUCCESS) && (btm_cb.pairing_state == BTM_PAIR_STATE_WAIT_PIN_REQ)) { BTM_TRACE_WARNING ("Security Manager: btm_sec_connected: incoming connection failed without asking PIN\n"); p_dev_rec->sm4 &= ~BTM_SM4_CONN_PEND; - if (p_dev_rec->sec_flags & BTM_SEC_NAME_KNOWN) - { + if (p_dev_rec->sec_flags & BTM_SEC_NAME_KNOWN) { /* Start timer with 0 to initiate connection with new LCB */ /* because L2CAP will delete current LCB with this event */ btm_cb.p_collided_dev_rec = p_dev_rec; btm_cb.sec_collision_tle.param = (UINT32) btm_sec_connect_after_reject_timeout; btu_start_timer (&btm_cb.sec_collision_tle, BTU_TTYPE_USER_FUNC, 0); - } - else - { + } else { btm_sec_change_pairing_state (BTM_PAIR_STATE_GET_REM_NAME); BTM_ReadRemoteDeviceName(p_dev_rec->bd_addr, NULL, BT_TRANSPORT_BR_EDR); } @@ -4506,9 +4198,7 @@ void btm_sec_connected (UINT8 *bda, UINT16 handle, UINT8 status, UINT8 enc_mode) p_dev_rec->rs_disc_pending = BTM_SEC_RS_NOT_PENDING; /* reset flag */ #endif return; - } - else - { + } else { l2cu_update_lcb_4_bonding(p_dev_rec->bd_addr, TRUE); } } @@ -4528,18 +4218,15 @@ void btm_sec_connected (UINT8 *bda, UINT16 handle, UINT8 status, UINT8 enc_mode) p_dev_rec->rs_disc_pending = BTM_SEC_RS_NOT_PENDING; /* reset flag */ if ( (btm_cb.pairing_state != BTM_PAIR_STATE_IDLE) - && (memcmp (btm_cb.pairing_bda, bda, BD_ADDR_LEN) == 0) ) - { + && (memcmp (btm_cb.pairing_bda, bda, BD_ADDR_LEN) == 0) ) { /* if we rejected incoming connection from bonding device */ if ((status == HCI_ERR_HOST_REJECT_DEVICE) - &&(btm_cb.pairing_flags & BTM_PAIR_FLAGS_REJECTED_CONNECT)) - { + && (btm_cb.pairing_flags & BTM_PAIR_FLAGS_REJECTED_CONNECT)) { BTM_TRACE_WARNING ("Security Manager: btm_sec_connected: HCI_Conn_Comp Flags:0x%04x, sm4: 0x%x\n", - btm_cb.pairing_flags, p_dev_rec->sm4); + btm_cb.pairing_flags, p_dev_rec->sm4); btm_cb.pairing_flags &= ~BTM_PAIR_FLAGS_REJECTED_CONNECT; - if (BTM_SEC_IS_SM4_UNKNOWN(p_dev_rec->sm4)) - { + if (BTM_SEC_IS_SM4_UNKNOWN(p_dev_rec->sm4)) { /* Try again: RNR when no ACL causes HCI_RMT_HOST_SUP_FEAT_NOTIFY_EVT */ btm_sec_change_pairing_state (BTM_PAIR_STATE_GET_REM_NAME); BTM_ReadRemoteDeviceName(bda, NULL, BT_TRANSPORT_BR_EDR); @@ -4547,8 +4234,7 @@ void btm_sec_connected (UINT8 *bda, UINT16 handle, UINT8 status, UINT8 enc_mode) } /* if we already have pin code */ - if (btm_cb.pairing_state != BTM_PAIR_STATE_WAIT_LOCAL_PIN) - { + if (btm_cb.pairing_state != BTM_PAIR_STATE_WAIT_LOCAL_PIN) { /* Start timer with 0 to initiate connection with new LCB */ /* because L2CAP will delete current LCB with this event */ btm_cb.p_collided_dev_rec = p_dev_rec; @@ -4559,8 +4245,7 @@ void btm_sec_connected (UINT8 *bda, UINT16 handle, UINT8 status, UINT8 enc_mode) return; } /* wait for incoming connection without resetting pairing state */ - else if (status == HCI_ERR_CONNECTION_EXISTS) - { + else if (status == HCI_ERR_CONNECTION_EXISTS) { BTM_TRACE_WARNING ("Security Manager: btm_sec_connected: Wait for incoming connection\n"); return; } @@ -4572,11 +4257,9 @@ void btm_sec_connected (UINT8 *bda, UINT16 handle, UINT8 status, UINT8 enc_mode) btm_restore_mode(); /* if connection fails during pin request, notify application */ - if (status != HCI_SUCCESS) - { + if (status != HCI_SUCCESS) { /* If connection failed because of during pairing, need to tell user */ - if (is_pairing_device) - { + if (is_pairing_device) { p_dev_rec->security_required &= ~BTM_SEC_OUT_AUTHENTICATE; p_dev_rec->sec_flags &= ~((BTM_SEC_LINK_KEY_KNOWN | BTM_SEC_LINK_KEY_AUTHED) << bit_shift); BTM_TRACE_DEBUG ("security_required:%x \n", p_dev_rec->security_required ); @@ -4584,44 +4267,40 @@ void btm_sec_connected (UINT8 *bda, UINT16 handle, UINT8 status, UINT8 enc_mode) btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); /* We need to notify host that the key is not known any more */ - if (btm_cb.api.p_auth_complete_callback) - { + if (btm_cb.api.p_auth_complete_callback) { (*btm_cb.api.p_auth_complete_callback) (p_dev_rec->bd_addr, p_dev_rec->dev_class, p_dev_rec->sec_bd_name, status); } } - /* - Do not send authentication failure, if following conditions hold good - 1. BTM Sec Pairing state is idle - 2. Link key for the remote device is present. - 3. Remote is SSP capable. - */ + /* + Do not send authentication failure, if following conditions hold good + 1. BTM Sec Pairing state is idle + 2. Link key for the remote device is present. + 3. Remote is SSP capable. + */ else if ((p_dev_rec->link_key_type <= BTM_LKEY_TYPE_REMOTE_UNIT) && - (((status == HCI_ERR_AUTH_FAILURE) || - (status == HCI_ERR_KEY_MISSING) || - (status == HCI_ERR_HOST_REJECT_SECURITY) || - (status == HCI_ERR_PAIRING_NOT_ALLOWED) || - (status == HCI_ERR_UNIT_KEY_USED) || - (status == HCI_ERR_PAIRING_WITH_UNIT_KEY_NOT_SUPPORTED) || - (status == HCI_ERR_ENCRY_MODE_NOT_ACCEPTABLE) || - (status == HCI_ERR_REPEATED_ATTEMPTS)))) - { + (((status == HCI_ERR_AUTH_FAILURE) || + (status == HCI_ERR_KEY_MISSING) || + (status == HCI_ERR_HOST_REJECT_SECURITY) || + (status == HCI_ERR_PAIRING_NOT_ALLOWED) || + (status == HCI_ERR_UNIT_KEY_USED) || + (status == HCI_ERR_PAIRING_WITH_UNIT_KEY_NOT_SUPPORTED) || + (status == HCI_ERR_ENCRY_MODE_NOT_ACCEPTABLE) || + (status == HCI_ERR_REPEATED_ATTEMPTS)))) { p_dev_rec->security_required &= ~BTM_SEC_OUT_AUTHENTICATE; p_dev_rec->sec_flags &= ~ (BTM_SEC_LE_LINK_KEY_KNOWN << bit_shift); #ifdef BRCM_NOT_4_BTE /* If we rejected pairing, pass this special result code */ - if (btm_cb.acl_disc_reason == HCI_ERR_HOST_REJECT_SECURITY) - { + if (btm_cb.acl_disc_reason == HCI_ERR_HOST_REJECT_SECURITY) { status = HCI_ERR_HOST_REJECT_SECURITY; } #endif /* We need to notify host that the key is not known any more */ - if (btm_cb.api.p_auth_complete_callback) - { + if (btm_cb.api.p_auth_complete_callback) { (*btm_cb.api.p_auth_complete_callback) (p_dev_rec->bd_addr, p_dev_rec->dev_class, p_dev_rec->sec_bd_name, status); @@ -4629,10 +4308,11 @@ void btm_sec_connected (UINT8 *bda, UINT16 handle, UINT8 status, UINT8 enc_mode) } if (status == HCI_ERR_CONNECTION_TOUT || status == HCI_ERR_LMP_RESPONSE_TIMEOUT || - status == HCI_ERR_UNSPECIFIED || status == HCI_ERR_PAGE_TIMEOUT) + status == HCI_ERR_UNSPECIFIED || status == HCI_ERR_PAGE_TIMEOUT) { btm_sec_dev_rec_cback_event (p_dev_rec, BTM_DEVICE_TIMEOUT, FALSE); - else + } else { btm_sec_dev_rec_cback_event (p_dev_rec, BTM_ERR_PROCESSING, FALSE); + } return; } @@ -4640,10 +4320,8 @@ void btm_sec_connected (UINT8 *bda, UINT16 handle, UINT8 status, UINT8 enc_mode) /* If initiated dedicated bonding, return the link key now, and initiate disconnect */ /* If dedicated bonding, and we now have a link key, we are all done */ if ( is_pairing_device - && (p_dev_rec->sec_flags & BTM_SEC_LINK_KEY_KNOWN) ) - { - if (p_dev_rec->link_key_not_sent) - { + && (p_dev_rec->sec_flags & BTM_SEC_LINK_KEY_KNOWN) ) { + if (p_dev_rec->link_key_not_sent) { p_dev_rec->link_key_not_sent = FALSE; btm_send_link_key_notif(p_dev_rec); } @@ -4651,10 +4329,11 @@ void btm_sec_connected (UINT8 *bda, UINT16 handle, UINT8 status, UINT8 enc_mode) p_dev_rec->security_required &= ~BTM_SEC_OUT_AUTHENTICATE; /* remember flag before it is initialized */ - if (btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD) + if (btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD) { res = TRUE; - else + } else { res = FALSE; + } if (btm_cb.api.p_auth_complete_callback) (*btm_cb.api.p_auth_complete_callback) (p_dev_rec->bd_addr, @@ -4663,8 +4342,7 @@ void btm_sec_connected (UINT8 *bda, UINT16 handle, UINT8 status, UINT8 enc_mode) btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); - if ( res ) - { + if ( res ) { /* Let l2cap start bond timer */ l2cu_update_lcb_4_bonding (p_dev_rec->bd_addr, TRUE); } @@ -4678,8 +4356,7 @@ void btm_sec_connected (UINT8 *bda, UINT16 handle, UINT8 status, UINT8 enc_mode) /* notify btm_acl that link is up, so starting of rmt name request will not */ /* set paging flag up */ p_acl_cb = btm_bda_to_acl(bda, BT_TRANSPORT_BR_EDR); - if (p_acl_cb) - { + if (p_acl_cb) { /* whatever is in btm_establish_continue() without reporting the BTM_BL_CONN_EVT event */ #if (!defined(BTM_BYPASS_EXTRA_ACL_SETUP) || BTM_BYPASS_EXTRA_ACL_SETUP == FALSE) /* For now there are a some devices that do not like sending */ @@ -4687,8 +4364,9 @@ void btm_sec_connected (UINT8 *bda, UINT16 handle, UINT8 status, UINT8 enc_mode) /* Set the packet types to the default allowed by the device */ btm_set_packet_types (p_acl_cb, btm_cb.btm_acl_pkt_types_supported); - if (btm_cb.btm_def_link_policy) + if (btm_cb.btm_def_link_policy) { BTM_SetLinkPolicy (p_acl_cb->remote_addr, &btm_cb.btm_def_link_policy); + } #endif } btm_acl_created (bda, p_dev_rec->dev_class, p_dev_rec->sec_bd_name, handle, HCI_ROLE_SLAVE, BT_TRANSPORT_BR_EDR); @@ -4697,17 +4375,19 @@ void btm_sec_connected (UINT8 *bda, UINT16 handle, UINT8 status, UINT8 enc_mode) /* authorization complete could have come after the connection is dropped */ /* and that would set wrong flag that link has been authorized already */ p_dev_rec->sec_flags &= ~((BTM_SEC_AUTHORIZED | BTM_SEC_AUTHENTICATED | - BTM_SEC_ENCRYPTED | BTM_SEC_ROLE_SWITCHED) << bit_shift); + BTM_SEC_ENCRYPTED | BTM_SEC_ROLE_SWITCHED) << bit_shift); - if (enc_mode != HCI_ENCRYPT_MODE_DISABLED) + if (enc_mode != HCI_ENCRYPT_MODE_DISABLED) { p_dev_rec->sec_flags |= ((BTM_SEC_AUTHENTICATED | BTM_SEC_ENCRYPTED) << bit_shift); + } - if (btm_cb.security_mode == BTM_SEC_MODE_LINK) + if (btm_cb.security_mode == BTM_SEC_MODE_LINK) { p_dev_rec->sec_flags |= (BTM_SEC_AUTHENTICATED << bit_shift); + } if (p_dev_rec->pin_code_length >= 16 || - p_dev_rec->link_key_type == BTM_LKEY_TYPE_AUTH_COMB || - p_dev_rec->link_key_type == BTM_LKEY_TYPE_AUTH_COMB_P_256) { + p_dev_rec->link_key_type == BTM_LKEY_TYPE_AUTH_COMB || + p_dev_rec->link_key_type == BTM_LKEY_TYPE_AUTH_COMB_P_256) { p_dev_rec->sec_flags |= (BTM_SEC_16_DIGIT_PIN_AUTHED << bit_shift); } @@ -4717,10 +4397,10 @@ void btm_sec_connected (UINT8 *bda, UINT16 handle, UINT8 status, UINT8 enc_mode) /* the name, or if we are originator because some procedure can have */ /* been scheduled while connection was down */ BTM_TRACE_DEBUG ("is_originator:%d \n", p_dev_rec->is_originator); - if (!(p_dev_rec->sec_flags & BTM_SEC_NAME_KNOWN) || p_dev_rec->is_originator) - { - if ((res = btm_sec_execute_procedure (p_dev_rec)) != BTM_CMD_STARTED) + if (!(p_dev_rec->sec_flags & BTM_SEC_NAME_KNOWN) || p_dev_rec->is_originator) { + if ((res = btm_sec_execute_procedure (p_dev_rec)) != BTM_CMD_STARTED) { btm_sec_dev_rec_cback_event (p_dev_rec, res, FALSE); + } } return; } @@ -4739,23 +4419,21 @@ tBTM_STATUS btm_sec_disconnect (UINT16 handle, UINT8 reason) tBTM_SEC_DEV_REC *p_dev_rec = btm_find_dev_by_handle (handle); /* In some weird race condition we may not have a record */ - if (!p_dev_rec) - { + if (!p_dev_rec) { btsnd_hcic_disconnect (handle, reason); - return(BTM_SUCCESS); + return (BTM_SUCCESS); } /* If we are in the process of bonding we need to tell client that auth failed */ if ( (btm_cb.pairing_state != BTM_PAIR_STATE_IDLE) - && (memcmp (btm_cb.pairing_bda, p_dev_rec->bd_addr, BD_ADDR_LEN) == 0) - && (btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD) ) - { + && (memcmp (btm_cb.pairing_bda, p_dev_rec->bd_addr, BD_ADDR_LEN) == 0) + && (btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD) ) { /* we are currently doing bonding. Link will be disconnected when done */ btm_cb.pairing_flags |= BTM_PAIR_FLAGS_DISC_WHEN_DONE; - return(BTM_BUSY); + return (BTM_BUSY); } - return(btm_sec_send_hci_disconnect(p_dev_rec, reason, handle)); + return (btm_sec_send_hci_disconnect(p_dev_rec, reason, handle)); } /******************************************************************************* @@ -4781,10 +4459,11 @@ void btm_sec_disconnected (UINT16 handle, UINT8 reason) btm_acl_resubmit_page(); - if (!p_dev_rec) + if (!p_dev_rec) { return; + } - transport = (handle == p_dev_rec->hci_handle) ? BT_TRANSPORT_BR_EDR: BT_TRANSPORT_LE; + transport = (handle == p_dev_rec->hci_handle) ? BT_TRANSPORT_BR_EDR : BT_TRANSPORT_LE; p_dev_rec->rs_disc_pending = BTM_SEC_RS_NOT_PENDING; /* reset flag */ @@ -4798,29 +4477,24 @@ void btm_sec_disconnected (UINT16 handle, UINT8 reason) uint8_t *bd_addr = (uint8_t *)p_dev_rec->bd_addr; BTM_TRACE_EVENT("%s sec_req:x%x state:%s reason:%d bd_addr:%02x:%02x:%02x:%02x:%02x:%02x" - " remote_name:%s\n", __func__, p_dev_rec->security_required, btm_pair_state_descr(btm_cb.pairing_state), - reason, bd_addr[0], bd_addr[1], bd_addr[2], bd_addr[3], bd_addr[4], bd_addr[5], p_dev_rec->sec_bd_name); + " remote_name:%s\n", __func__, p_dev_rec->security_required, btm_pair_state_descr(btm_cb.pairing_state), + reason, bd_addr[0], bd_addr[1], bd_addr[2], bd_addr[3], bd_addr[4], bd_addr[5], p_dev_rec->sec_bd_name); BTM_TRACE_EVENT("%s before update sec_flags=0x%x\n", __func__, p_dev_rec->sec_flags); /* If we are in the process of bonding we need to tell client that auth failed */ if ( (btm_cb.pairing_state != BTM_PAIR_STATE_IDLE) - && (memcmp (btm_cb.pairing_bda, p_dev_rec->bd_addr, BD_ADDR_LEN) == 0)) - { + && (memcmp (btm_cb.pairing_bda, p_dev_rec->bd_addr, BD_ADDR_LEN) == 0)) { btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); p_dev_rec->sec_flags &= ~BTM_SEC_LINK_KEY_KNOWN; - if (btm_cb.api.p_auth_complete_callback) - { + if (btm_cb.api.p_auth_complete_callback) { /* If the disconnection reason is REPEATED_ATTEMPTS, send this error message to complete callback function to display the error message of Repeated attempts. All others, send HCI_ERR_AUTH_FAILURE. */ - if (reason == HCI_ERR_REPEATED_ATTEMPTS) - { + if (reason == HCI_ERR_REPEATED_ATTEMPTS) { result = HCI_ERR_REPEATED_ATTEMPTS; - } - else if (old_pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD) - { + } else if (old_pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD) { result = HCI_ERR_HOST_REJECT_SECURITY; } (*btm_cb.api.p_auth_complete_callback) (p_dev_rec->bd_addr, p_dev_rec->dev_class, @@ -4832,25 +4506,22 @@ void btm_sec_disconnected (UINT16 handle, UINT8 reason) btm_ble_update_mode_operation(HCI_ROLE_UNKNOWN, p_dev_rec->bd_addr, HCI_SUCCESS); /* see sec_flags processing in btm_acl_removed */ - if (transport == BT_TRANSPORT_LE) - { + if (transport == BT_TRANSPORT_LE) { p_dev_rec->ble_hci_handle = BTM_SEC_INVALID_HANDLE; - p_dev_rec->sec_flags &= ~(BTM_SEC_LE_AUTHENTICATED|BTM_SEC_LE_ENCRYPTED); + p_dev_rec->sec_flags &= ~(BTM_SEC_LE_AUTHENTICATED | BTM_SEC_LE_ENCRYPTED); p_dev_rec->enc_key_size = 0; - } - else + } else #endif { p_dev_rec->hci_handle = BTM_SEC_INVALID_HANDLE; p_dev_rec->sec_flags &= ~(BTM_SEC_AUTHORIZED | BTM_SEC_AUTHENTICATED | BTM_SEC_ENCRYPTED - | BTM_SEC_ROLE_SWITCHED | BTM_SEC_16_DIGIT_PIN_AUTHED); + | BTM_SEC_ROLE_SWITCHED | BTM_SEC_16_DIGIT_PIN_AUTHED); } #if BLE_INCLUDED == TRUE && SMP_INCLUDED == TRUE - if (p_dev_rec->sec_state == BTM_SEC_STATE_DISCONNECTING_BOTH) - { + if (p_dev_rec->sec_state == BTM_SEC_STATE_DISCONNECTING_BOTH) { p_dev_rec->sec_state = (transport == BT_TRANSPORT_LE) ? - BTM_SEC_STATE_DISCONNECTING : BTM_SEC_STATE_DISCONNECTING_BLE; + BTM_SEC_STATE_DISCONNECTING : BTM_SEC_STATE_DISCONNECTING_BLE; return; } #endif @@ -4860,8 +4531,7 @@ void btm_sec_disconnected (UINT16 handle, UINT8 reason) p_callback = p_dev_rec->p_callback; /* if security is pending, send callback to clean up the security state */ - if(p_callback) - { + if (p_callback) { p_dev_rec->p_callback = NULL; /* when the peer device time out the authentication before we do, this call back must be reset here */ (*p_callback) (p_dev_rec->bd_addr, transport, p_dev_rec->p_ref_data, BTM_ERR_PROCESSING); @@ -4887,20 +4557,20 @@ void btm_sec_link_key_notification (UINT8 *p_bda, UINT8 *p_link_key, UINT8 key_t BOOLEAN ltk_derived_lk = FALSE; BTM_TRACE_EVENT ("btm_sec_link_key_notification() BDA:%04x%08x, TYPE: %d\n", - (p_bda[0]<<8)+p_bda[1], (p_bda[2]<<24)+(p_bda[3]<<16)+(p_bda[4]<<8)+p_bda[5], - key_type); + (p_bda[0] << 8) + p_bda[1], (p_bda[2] << 24) + (p_bda[3] << 16) + (p_bda[4] << 8) + p_bda[5], + key_type); if ((key_type >= BTM_LTK_DERIVED_LKEY_OFFSET + BTM_LKEY_TYPE_COMBINATION) && - (key_type <= BTM_LTK_DERIVED_LKEY_OFFSET + BTM_LKEY_TYPE_AUTH_COMB_P_256)) - { + (key_type <= BTM_LTK_DERIVED_LKEY_OFFSET + BTM_LKEY_TYPE_AUTH_COMB_P_256)) { ltk_derived_lk = TRUE; key_type -= BTM_LTK_DERIVED_LKEY_OFFSET; } /* If connection was made to do bonding restore link security if changed */ btm_restore_mode(); - if (key_type != BTM_LKEY_TYPE_CHANGED_COMB) + if (key_type != BTM_LKEY_TYPE_CHANGED_COMB) { p_dev_rec->link_key_type = key_type; + } p_dev_rec->sec_flags |= BTM_SEC_LINK_KEY_KNOWN; @@ -4909,8 +4579,8 @@ void btm_sec_link_key_notification (UINT8 *p_bda, UINT8 *p_link_key, UINT8 key_t * add the extended security flag here. */ if (p_dev_rec->pin_code_length >= 16 || - p_dev_rec->link_key_type == BTM_LKEY_TYPE_AUTH_COMB || - p_dev_rec->link_key_type == BTM_LKEY_TYPE_AUTH_COMB_P_256) { + p_dev_rec->link_key_type == BTM_LKEY_TYPE_AUTH_COMB || + p_dev_rec->link_key_type == BTM_LKEY_TYPE_AUTH_COMB_P_256) { p_dev_rec->sec_flags |= BTM_SEC_16_DIGIT_PIN_AUTHED; } @@ -4921,54 +4591,48 @@ void btm_sec_link_key_notification (UINT8 *p_bda, UINT8 *p_link_key, UINT8 key_t memcpy (p_dev_rec->link_key, p_link_key, LINK_KEY_LEN); if ( (btm_cb.pairing_state != BTM_PAIR_STATE_IDLE) - && (memcmp (btm_cb.pairing_bda, p_bda, BD_ADDR_LEN) == 0) ) - { - if (btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD) + && (memcmp (btm_cb.pairing_bda, p_bda, BD_ADDR_LEN) == 0) ) { + if (btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD) { we_are_bonding = TRUE; - else + } else { btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); + } } /* save LTK derived LK no matter what */ - if (ltk_derived_lk) - { - if (btm_cb.api.p_link_key_callback) - { - BTM_TRACE_DEBUG ("%s() Save LTK derived LK (key_type = %d)\n", - __FUNCTION__, p_dev_rec->link_key_type); - (*btm_cb.api.p_link_key_callback) (p_bda, p_dev_rec->dev_class, - p_dev_rec->sec_bd_name, - p_link_key, p_dev_rec->link_key_type); + if (ltk_derived_lk) { + if (btm_cb.api.p_link_key_callback) { + BTM_TRACE_DEBUG ("%s() Save LTK derived LK (key_type = %d)\n", + __FUNCTION__, p_dev_rec->link_key_type); + (*btm_cb.api.p_link_key_callback) (p_bda, p_dev_rec->dev_class, + p_dev_rec->sec_bd_name, + p_link_key, p_dev_rec->link_key_type); } - } - else - { + } else { if ((p_dev_rec->link_key_type == BTM_LKEY_TYPE_UNAUTH_COMB_P_256) || - (p_dev_rec->link_key_type == BTM_LKEY_TYPE_AUTH_COMB_P_256)) - { - p_dev_rec->new_encryption_key_is_p256 = TRUE; - BTM_TRACE_DEBUG ("%s set new_encr_key_256 to %d\n", - __func__, p_dev_rec->new_encryption_key_is_p256); + (p_dev_rec->link_key_type == BTM_LKEY_TYPE_AUTH_COMB_P_256)) { + p_dev_rec->new_encryption_key_is_p256 = TRUE; + BTM_TRACE_DEBUG ("%s set new_encr_key_256 to %d\n", + __func__, p_dev_rec->new_encryption_key_is_p256); } } /* If name is not known at this point delay calling callback until the name is */ /* resolved. Unless it is a HID Device and we really need to send all link keys. */ if ((!(p_dev_rec->sec_flags & BTM_SEC_NAME_KNOWN) - && ((p_dev_rec->dev_class[1] & BTM_COD_MAJOR_CLASS_MASK) != BTM_COD_MAJOR_PERIPHERAL)) - && !ltk_derived_lk) - { + && ((p_dev_rec->dev_class[1] & BTM_COD_MAJOR_CLASS_MASK) != BTM_COD_MAJOR_PERIPHERAL)) + && !ltk_derived_lk) { BTM_TRACE_EVENT ("btm_sec_link_key_notification() Delayed BDA: %08x%04x Type:%d\n", - (p_bda[0]<<24) + (p_bda[1]<<16) + (p_bda[2]<<8) + p_bda[3], - (p_bda[4] << 8) + p_bda[5], key_type); + (p_bda[0] << 24) + (p_bda[1] << 16) + (p_bda[2] << 8) + p_bda[3], + (p_bda[4] << 8) + p_bda[5], key_type); p_dev_rec->link_key_not_sent = TRUE; /* If it is for bonding nothing else will follow, so we need to start name resolution */ - if (we_are_bonding) - { - if (!(btsnd_hcic_rmt_name_req (p_bda, HCI_PAGE_SCAN_REP_MODE_R1, HCI_MANDATARY_PAGE_SCAN_MODE, 0))) + if (we_are_bonding) { + if (!(btsnd_hcic_rmt_name_req (p_bda, HCI_PAGE_SCAN_REP_MODE_R1, HCI_MANDATARY_PAGE_SCAN_MODE, 0))) { btm_inq_rmt_name_failed(); + } } BTM_TRACE_EVENT ("rmt_io_caps:%d, sec_flags:x%x, dev_class[1]:x%02x\n", p_dev_rec->rmt_io_caps, p_dev_rec->sec_flags, p_dev_rec->dev_class[1]) @@ -4979,9 +4643,8 @@ void btm_sec_link_key_notification (UINT8 *p_bda, UINT8 *p_link_key, UINT8 key_t /* that some authentication has been completed */ /* This is required when different entities receive link notification and auth complete */ if (!(p_dev_rec->security_required & BTM_SEC_OUT_AUTHENTICATE) - /* for derived key, always send authentication callback for BR channel */ - || ltk_derived_lk) - { + /* for derived key, always send authentication callback for BR channel */ + || ltk_derived_lk) { if (btm_cb.api.p_auth_complete_callback) (*btm_cb.api.p_auth_complete_callback) (p_dev_rec->bd_addr, p_dev_rec->dev_class, p_dev_rec->sec_bd_name, HCI_SUCCESS); @@ -4992,15 +4655,11 @@ void btm_sec_link_key_notification (UINT8 *p_bda, UINT8 *p_link_key, UINT8 key_t if (p_dev_rec->sec_flags & BTM_SEC_LINK_KEY_AUTHED) #endif { - if (btm_cb.api.p_link_key_callback) - { - if (ltk_derived_lk) - { + if (btm_cb.api.p_link_key_callback) { + if (ltk_derived_lk) { BTM_TRACE_DEBUG ("btm_sec_link_key_notification() LTK derived LK is saved already" - " (key_type = %d)\n", p_dev_rec->link_key_type); - } - else - { + " (key_type = %d)\n", p_dev_rec->link_key_type); + } else { (*btm_cb.api.p_link_key_callback) (p_bda, p_dev_rec->dev_class, p_dev_rec->sec_bd_name, p_link_key, p_dev_rec->link_key_type); @@ -5023,20 +4682,18 @@ void btm_sec_link_key_request (UINT8 *p_bda) tBTM_SEC_DEV_REC *p_dev_rec = btm_find_or_alloc_dev (p_bda); BTM_TRACE_EVENT ("btm_sec_link_key_request() BDA: %02x:%02x:%02x:%02x:%02x:%02x\n", - p_bda[0], p_bda[1], p_bda[2], p_bda[3], p_bda[4], p_bda[5]); + p_bda[0], p_bda[1], p_bda[2], p_bda[3], p_bda[4], p_bda[5]); - if( (btm_cb.pairing_state == BTM_PAIR_STATE_WAIT_PIN_REQ) && - (btm_cb.collision_start_time != 0) && - (memcmp (btm_cb.p_collided_dev_rec->bd_addr, p_bda, BD_ADDR_LEN) == 0) ) - { + if ( (btm_cb.pairing_state == BTM_PAIR_STATE_WAIT_PIN_REQ) && + (btm_cb.collision_start_time != 0) && + (memcmp (btm_cb.p_collided_dev_rec->bd_addr, p_bda, BD_ADDR_LEN) == 0) ) { BTM_TRACE_EVENT ("btm_sec_link_key_request() rejecting link key req " - "State: %d START_TIMEOUT : %d\n", - btm_cb.pairing_state, btm_cb.collision_start_time); + "State: %d START_TIMEOUT : %d\n", + btm_cb.pairing_state, btm_cb.collision_start_time); btsnd_hcic_link_key_neg_reply (p_bda); return; } - if (p_dev_rec->sec_flags & BTM_SEC_LINK_KEY_KNOWN) - { + if (p_dev_rec->sec_flags & BTM_SEC_LINK_KEY_KNOWN) { btsnd_hcic_link_key_req_reply (p_bda, p_dev_rec->link_key); return; } @@ -5073,107 +4730,101 @@ static void btm_sec_pairing_timeout (TIMER_LIST_ENT *p_tle) UNUSED(p_tle); p_cb->pairing_tle.param = 0; -/* Coverity: FALSE-POSITIVE error from Coverity tool. Please do NOT remove following comment. */ -/* coverity[UNUSED_VALUE] pointer p_dev_rec is actually used several times... This is a Coverity false-positive, i.e. a fake issue. -*/ + /* Coverity: FALSE-POSITIVE error from Coverity tool. Please do NOT remove following comment. */ + /* coverity[UNUSED_VALUE] pointer p_dev_rec is actually used several times... This is a Coverity false-positive, i.e. a fake issue. + */ p_dev_rec = btm_find_dev (p_cb->pairing_bda); BTM_TRACE_EVENT ("btm_sec_pairing_timeout() State: %s Flags: %u\n", - btm_pair_state_descr(p_cb->pairing_state), p_cb->pairing_flags); + btm_pair_state_descr(p_cb->pairing_state), p_cb->pairing_flags); - switch (p_cb->pairing_state) - { - case BTM_PAIR_STATE_WAIT_PIN_REQ: - btm_sec_bond_cancel_complete(); - break; + switch (p_cb->pairing_state) { + case BTM_PAIR_STATE_WAIT_PIN_REQ: + btm_sec_bond_cancel_complete(); + break; - case BTM_PAIR_STATE_WAIT_LOCAL_PIN: - if ( (btm_cb.pairing_flags & BTM_PAIR_FLAGS_PRE_FETCH_PIN) == 0) - btsnd_hcic_pin_code_neg_reply (p_cb->pairing_bda); - btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); - /* We need to notify the UI that no longer need the PIN */ - if (btm_cb.api.p_auth_complete_callback) - { - if (p_dev_rec == NULL) - { - name[0] = 0; - (*btm_cb.api.p_auth_complete_callback) (p_cb->pairing_bda, - NULL, - name, HCI_ERR_CONNECTION_TOUT); - } - else - (*btm_cb.api.p_auth_complete_callback) (p_dev_rec->bd_addr, - p_dev_rec->dev_class, - p_dev_rec->sec_bd_name, HCI_ERR_CONNECTION_TOUT); - } - break; + case BTM_PAIR_STATE_WAIT_LOCAL_PIN: + if ( (btm_cb.pairing_flags & BTM_PAIR_FLAGS_PRE_FETCH_PIN) == 0) { + btsnd_hcic_pin_code_neg_reply (p_cb->pairing_bda); + } + btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); + /* We need to notify the UI that no longer need the PIN */ + if (btm_cb.api.p_auth_complete_callback) { + if (p_dev_rec == NULL) { + name[0] = 0; + (*btm_cb.api.p_auth_complete_callback) (p_cb->pairing_bda, + NULL, + name, HCI_ERR_CONNECTION_TOUT); + } else + (*btm_cb.api.p_auth_complete_callback) (p_dev_rec->bd_addr, + p_dev_rec->dev_class, + p_dev_rec->sec_bd_name, HCI_ERR_CONNECTION_TOUT); + } + break; - case BTM_PAIR_STATE_WAIT_NUMERIC_CONFIRM: - btsnd_hcic_user_conf_reply (p_cb->pairing_bda, FALSE); - /* btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); */ - break; + case BTM_PAIR_STATE_WAIT_NUMERIC_CONFIRM: + btsnd_hcic_user_conf_reply (p_cb->pairing_bda, FALSE); + /* btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); */ + break; #if (BTM_LOCAL_IO_CAPS != BTM_IO_CAP_NONE) - case BTM_PAIR_STATE_KEY_ENTRY: - btsnd_hcic_user_passkey_neg_reply(p_cb->pairing_bda); - /* btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); */ - break; + case BTM_PAIR_STATE_KEY_ENTRY: + btsnd_hcic_user_passkey_neg_reply(p_cb->pairing_bda); + /* btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); */ + break; #endif /* !BTM_IO_CAP_NONE */ #if BTM_OOB_INCLUDED == TRUE - case BTM_PAIR_STATE_WAIT_LOCAL_IOCAPS: - if (btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD) - auth_req |= BTM_AUTH_DD_BOND; + case BTM_PAIR_STATE_WAIT_LOCAL_IOCAPS: + if (btm_cb.pairing_flags & BTM_PAIR_FLAGS_WE_STARTED_DD) { + auth_req |= BTM_AUTH_DD_BOND; + } - btsnd_hcic_io_cap_req_reply (p_cb->pairing_bda, btm_cb.devcb.loc_io_caps, - BTM_OOB_NONE, auth_req); - btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); - break; + btsnd_hcic_io_cap_req_reply (p_cb->pairing_bda, btm_cb.devcb.loc_io_caps, + BTM_OOB_NONE, auth_req); + btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); + break; - case BTM_PAIR_STATE_WAIT_LOCAL_OOB_RSP: - btsnd_hcic_rem_oob_neg_reply (p_cb->pairing_bda); - btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); - break; + case BTM_PAIR_STATE_WAIT_LOCAL_OOB_RSP: + btsnd_hcic_rem_oob_neg_reply (p_cb->pairing_bda); + btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); + break; #endif /* BTM_OOB_INCLUDED */ - case BTM_PAIR_STATE_WAIT_DISCONNECT: - /* simple pairing failed. Started a 1-sec timer at simple pairing complete. - * now it's time to tear down the ACL link*/ - if (p_dev_rec == NULL) - { - BTM_TRACE_ERROR ("btm_sec_pairing_timeout() BTM_PAIR_STATE_WAIT_DISCONNECT unknown BDA: %08x%04x\n", - (p_cb->pairing_bda[0]<<24) + (p_cb->pairing_bda[1]<<16) + (p_cb->pairing_bda[2]<<8) + p_cb->pairing_bda[3], - (p_cb->pairing_bda[4] << 8) + p_cb->pairing_bda[5]); - break; - } - btm_sec_send_hci_disconnect (p_dev_rec, HCI_ERR_AUTH_FAILURE, p_dev_rec->hci_handle); - btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); + case BTM_PAIR_STATE_WAIT_DISCONNECT: + /* simple pairing failed. Started a 1-sec timer at simple pairing complete. + * now it's time to tear down the ACL link*/ + if (p_dev_rec == NULL) { + BTM_TRACE_ERROR ("btm_sec_pairing_timeout() BTM_PAIR_STATE_WAIT_DISCONNECT unknown BDA: %08x%04x\n", + (p_cb->pairing_bda[0] << 24) + (p_cb->pairing_bda[1] << 16) + (p_cb->pairing_bda[2] << 8) + p_cb->pairing_bda[3], + (p_cb->pairing_bda[4] << 8) + p_cb->pairing_bda[5]); break; + } + btm_sec_send_hci_disconnect (p_dev_rec, HCI_ERR_AUTH_FAILURE, p_dev_rec->hci_handle); + btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); + break; - case BTM_PAIR_STATE_WAIT_AUTH_COMPLETE: - case BTM_PAIR_STATE_GET_REM_NAME: - /* We need to notify the UI that timeout has happened while waiting for authentication*/ - btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); - if (btm_cb.api.p_auth_complete_callback) - { - if (p_dev_rec == NULL) - { - name[0] = 0; - (*btm_cb.api.p_auth_complete_callback) (p_cb->pairing_bda, - NULL, - name, HCI_ERR_CONNECTION_TOUT); - } - else - (*btm_cb.api.p_auth_complete_callback) (p_dev_rec->bd_addr, - p_dev_rec->dev_class, - p_dev_rec->sec_bd_name, HCI_ERR_CONNECTION_TOUT); - } - break; + case BTM_PAIR_STATE_WAIT_AUTH_COMPLETE: + case BTM_PAIR_STATE_GET_REM_NAME: + /* We need to notify the UI that timeout has happened while waiting for authentication*/ + btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); + if (btm_cb.api.p_auth_complete_callback) { + if (p_dev_rec == NULL) { + name[0] = 0; + (*btm_cb.api.p_auth_complete_callback) (p_cb->pairing_bda, + NULL, + name, HCI_ERR_CONNECTION_TOUT); + } else + (*btm_cb.api.p_auth_complete_callback) (p_dev_rec->bd_addr, + p_dev_rec->dev_class, + p_dev_rec->sec_bd_name, HCI_ERR_CONNECTION_TOUT); + } + break; - default: - BTM_TRACE_WARNING ("btm_sec_pairing_timeout() not processed state: %s\n", btm_pair_state_descr(btm_cb.pairing_state)); - btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); - break; + default: + BTM_TRACE_WARNING ("btm_sec_pairing_timeout() not processed state: %s\n", btm_pair_state_descr(btm_cb.pairing_state)); + btm_sec_change_pairing_state (BTM_PAIR_STATE_IDLE); + break; } } @@ -5196,43 +4847,33 @@ void btm_sec_pin_code_request (UINT8 *p_bda) PIN_CODE default_pin_code = {0x30, 0x30, 0x30, 0x30}; #endif BTM_TRACE_EVENT ("btm_sec_pin_code_request() State: %s, BDA:%04x%08x\n", - btm_pair_state_descr(btm_cb.pairing_state), - (p_bda[0]<<8)+p_bda[1], (p_bda[2]<<24)+(p_bda[3]<<16)+(p_bda[4]<<8)+p_bda[5] ); + btm_pair_state_descr(btm_cb.pairing_state), + (p_bda[0] << 8) + p_bda[1], (p_bda[2] << 24) + (p_bda[3] << 16) + (p_bda[4] << 8) + p_bda[5] ); - if (btm_cb.pairing_state != BTM_PAIR_STATE_IDLE) - { + if (btm_cb.pairing_state != BTM_PAIR_STATE_IDLE) { if ( (memcmp (p_bda, btm_cb.pairing_bda, BD_ADDR_LEN) == 0) && - (btm_cb.pairing_state == BTM_PAIR_STATE_WAIT_AUTH_COMPLETE) ) - { - /* fake this out - porshe carkit issue - */ + (btm_cb.pairing_state == BTM_PAIR_STATE_WAIT_AUTH_COMPLETE) ) { + /* fake this out - porshe carkit issue - */ // btm_cb.pairing_state = BTM_PAIR_STATE_IDLE; - if(! btm_cb.pin_code_len_saved) - { - btsnd_hcic_pin_code_neg_reply (p_bda); - return; - } - else - { - btsnd_hcic_pin_code_req_reply (p_bda, btm_cb.pin_code_len_saved, p_cb->pin_code); - return; - } - } - else if ((btm_cb.pairing_state != BTM_PAIR_STATE_WAIT_PIN_REQ) - || memcmp (p_bda, btm_cb.pairing_bda, BD_ADDR_LEN) != 0) - { + if (! btm_cb.pin_code_len_saved) { + btsnd_hcic_pin_code_neg_reply (p_bda); + return; + } else { + btsnd_hcic_pin_code_req_reply (p_bda, btm_cb.pin_code_len_saved, p_cb->pin_code); + return; + } + } else if ((btm_cb.pairing_state != BTM_PAIR_STATE_WAIT_PIN_REQ) + || memcmp (p_bda, btm_cb.pairing_bda, BD_ADDR_LEN) != 0) { BTM_TRACE_WARNING ("btm_sec_pin_code_request() rejected - state: %s\n", - btm_pair_state_descr(btm_cb.pairing_state)); + btm_pair_state_descr(btm_cb.pairing_state)); #ifdef PORCHE_PAIRING_CONFLICT /* reply pin code again due to counter in_rand when local initiates pairing */ BTM_TRACE_EVENT ("btm_sec_pin_code_request from remote dev. for local initiated pairing\n"); - if(! btm_cb.pin_code_len_saved) - { + if (! btm_cb.pin_code_len_saved) { btm_sec_change_pairing_state (BTM_PAIR_STATE_WAIT_AUTH_COMPLETE); btsnd_hcic_pin_code_req_reply (p_bda, default_pin_code_len, default_pin_code); - } - else - { + } else { btm_sec_change_pairing_state (BTM_PAIR_STATE_WAIT_AUTH_COMPLETE); btsnd_hcic_pin_code_req_reply (p_bda, btm_cb.pin_code_len_saved, p_cb->pin_code); } @@ -5247,8 +4888,7 @@ void btm_sec_pin_code_request (UINT8 *p_bda) /* received PIN code request. must be non-sm4 */ p_dev_rec->sm4 = BTM_SM4_KNOWN; - if (btm_cb.pairing_state == BTM_PAIR_STATE_IDLE) - { + if (btm_cb.pairing_state == BTM_PAIR_STATE_IDLE) { memcpy (btm_cb.pairing_bda, p_bda, BD_ADDR_LEN); btm_cb.pairing_flags = BTM_PAIR_FLAGS_PEER_STARTED_DD; @@ -5256,8 +4896,7 @@ void btm_sec_pin_code_request (UINT8 *p_bda) BTM_SEC_CLR_TRUSTED_DEVICE(p_dev_rec->trusted_mask); } - if (!p_cb->pairing_disabled && (p_cb->cfg.pin_type == HCI_PIN_TYPE_FIXED)) - { + if (!p_cb->pairing_disabled && (p_cb->cfg.pin_type == HCI_PIN_TYPE_FIXED)) { BTM_TRACE_EVENT ("btm_sec_pin_code_request fixed pin replying\n"); btm_sec_change_pairing_state (BTM_PAIR_STATE_WAIT_AUTH_COMPLETE); btsnd_hcic_pin_code_req_reply (p_bda, p_cb->cfg.pin_code_len, p_cb->cfg.pin_code); @@ -5266,12 +4905,12 @@ void btm_sec_pin_code_request (UINT8 *p_bda) /* Use the connecting device's CoD for the connection */ if ( (!memcmp (p_bda, p_cb->connecting_bda, BD_ADDR_LEN)) - && (p_cb->connecting_dc[0] || p_cb->connecting_dc[1] || p_cb->connecting_dc[2]) ) + && (p_cb->connecting_dc[0] || p_cb->connecting_dc[1] || p_cb->connecting_dc[2]) ) { memcpy (p_dev_rec->dev_class, p_cb->connecting_dc, DEV_CLASS_LEN); + } /* We could have started connection after asking user for the PIN code */ - if (btm_cb.pin_code_len != 0) - { + if (btm_cb.pin_code_len != 0) { BTM_TRACE_EVENT ("btm_sec_pin_code_request bonding sending reply\n"); btsnd_hcic_pin_code_req_reply (p_bda, btm_cb.pin_code_len, p_cb->pin_code); @@ -5299,16 +4938,14 @@ void btm_sec_pin_code_request (UINT8 *p_bda) /* for keyboard bonding */ || (!p_dev_rec->is_originator && ((p_dev_rec->dev_class[1] & BTM_COD_MAJOR_CLASS_MASK) == BTM_COD_MAJOR_PERIPHERAL) - && (p_dev_rec->dev_class[2] & BTM_COD_MINOR_KEYBOARD)) ) - { + && (p_dev_rec->dev_class[2] & BTM_COD_MINOR_KEYBOARD)) ) { BTM_TRACE_WARNING("btm_sec_pin_code_request(): Pairing disabled:%d; PIN callback:%x, Dev Rec:%x!\n", - p_cb->pairing_disabled, p_cb->api.p_pin_callback, p_dev_rec); + p_cb->pairing_disabled, p_cb->api.p_pin_callback, p_dev_rec); btsnd_hcic_pin_code_neg_reply (p_bda); } /* Notify upper layer of PIN request and start expiration timer */ - else - { + else { btm_cb.pin_code_len_saved = 0; btm_sec_change_pairing_state (BTM_PAIR_STATE_WAIT_LOCAL_PIN); /* Pin code request can not come at the same time as connection request */ @@ -5320,20 +4957,17 @@ void btm_sec_pin_code_request (UINT8 *p_bda) /* this is the case when we are already getting something from the */ /* device, so HCI level is flow controlled */ /* Also cannot send remote name request while paging, i.e. connection is not completed */ - if (p_dev_rec->sec_flags & BTM_SEC_NAME_KNOWN) - { + if (p_dev_rec->sec_flags & BTM_SEC_NAME_KNOWN) { BTM_TRACE_EVENT ("btm_sec_pin_code_request going for callback\n"); btm_cb.pairing_flags |= BTM_PAIR_FLAGS_PIN_REQD; if (p_cb->api.p_pin_callback) { (*p_cb->api.p_pin_callback) (p_bda, p_dev_rec->dev_class, p_dev_rec->sec_bd_name, - (p_dev_rec->p_cur_service == NULL) ? FALSE - : (p_dev_rec->p_cur_service->security_flags - & BTM_SEC_IN_MIN_16_DIGIT_PIN)); + (p_dev_rec->p_cur_service == NULL) ? FALSE + : (p_dev_rec->p_cur_service->security_flags + & BTM_SEC_IN_MIN_16_DIGIT_PIN)); } - } - else - { + } else { BTM_TRACE_EVENT ("btm_sec_pin_code_request going for remote name\n"); /* We received PIN code request for the device with unknown name */ @@ -5341,8 +4975,7 @@ void btm_sec_pin_code_request (UINT8 *p_bda) /* try to get name at first */ if (!btsnd_hcic_rmt_name_req (p_dev_rec->bd_addr, HCI_PAGE_SCAN_REP_MODE_R1, - HCI_MANDATARY_PAGE_SCAN_MODE, 0)) - { + HCI_MANDATARY_PAGE_SCAN_MODE, 0)) { p_dev_rec->sec_flags |= BTM_SEC_NAME_KNOWN; p_dev_rec->sec_bd_name[0] = 'f'; p_dev_rec->sec_bd_name[1] = '0'; @@ -5351,9 +4984,9 @@ void btm_sec_pin_code_request (UINT8 *p_bda) btm_cb.pairing_flags |= BTM_PAIR_FLAGS_PIN_REQD; if (p_cb->api.p_pin_callback) (*p_cb->api.p_pin_callback) (p_bda, p_dev_rec->dev_class, - p_dev_rec->sec_bd_name, (p_dev_rec->p_cur_service == NULL) ? FALSE - : (p_dev_rec->p_cur_service->security_flags - & BTM_SEC_IN_MIN_16_DIGIT_PIN)); + p_dev_rec->sec_bd_name, (p_dev_rec->p_cur_service == NULL) ? FALSE + : (p_dev_rec->p_cur_service->security_flags + & BTM_SEC_IN_MIN_16_DIGIT_PIN)); } } } @@ -5375,13 +5008,15 @@ void btm_sec_update_clock_offset (UINT16 handle, UINT16 clock_offset) tBTM_SEC_DEV_REC *p_dev_rec; tBTM_INQ_INFO *p_inq_info; - if ((p_dev_rec = btm_find_dev_by_handle (handle)) == NULL) + if ((p_dev_rec = btm_find_dev_by_handle (handle)) == NULL) { return; + } p_dev_rec->clock_offset = clock_offset | BTM_CLOCK_OFFSET_VALID; - if ((p_inq_info = BTM_InqDbRead(p_dev_rec->bd_addr)) == NULL) + if ((p_inq_info = BTM_InqDbRead(p_dev_rec->bd_addr)) == NULL) { return; + } p_inq_info->results.clock_offset = clock_offset | BTM_CLOCK_OFFSET_VALID; } @@ -5409,34 +5044,32 @@ void btm_sec_update_clock_offset (UINT16 handle, UINT16 clock_offset) static tBTM_STATUS btm_sec_execute_procedure (tBTM_SEC_DEV_REC *p_dev_rec) { BTM_TRACE_EVENT ("btm_sec_execute_procedure: Required:0x%x Flags:0x%x State:%d\n", - p_dev_rec->security_required, p_dev_rec->sec_flags, p_dev_rec->sec_state); + p_dev_rec->security_required, p_dev_rec->sec_flags, p_dev_rec->sec_state); /* There is a chance that we are getting name. Wait until done. */ - if (p_dev_rec->sec_state != 0) - return(BTM_CMD_STARTED); + if (p_dev_rec->sec_state != 0) { + return (BTM_CMD_STARTED); + } /* If any security is required, get the name first */ if (!(p_dev_rec->sec_flags & BTM_SEC_NAME_KNOWN) - && (p_dev_rec->hci_handle != BTM_SEC_INVALID_HANDLE)) - { + && (p_dev_rec->hci_handle != BTM_SEC_INVALID_HANDLE)) { BTM_TRACE_EVENT ("Security Manager: Start get name\n"); - if (!btm_sec_start_get_name (p_dev_rec)) - { - return(BTM_NO_RESOURCES); + if (!btm_sec_start_get_name (p_dev_rec)) { + return (BTM_NO_RESOURCES); } - return(BTM_CMD_STARTED); + return (BTM_CMD_STARTED); } /* If connection is not authenticated and authentication is required */ /* start authentication and return PENDING to the caller */ if ((((!(p_dev_rec->sec_flags & BTM_SEC_AUTHENTICATED)) - && (( p_dev_rec->is_originator && (p_dev_rec->security_required & BTM_SEC_OUT_AUTHENTICATE)) - || (!p_dev_rec->is_originator && (p_dev_rec->security_required & BTM_SEC_IN_AUTHENTICATE)))) - || (!(p_dev_rec->sec_flags & BTM_SEC_16_DIGIT_PIN_AUTHED) - && (!p_dev_rec->is_originator + && (( p_dev_rec->is_originator && (p_dev_rec->security_required & BTM_SEC_OUT_AUTHENTICATE)) + || (!p_dev_rec->is_originator && (p_dev_rec->security_required & BTM_SEC_IN_AUTHENTICATE)))) + || (!(p_dev_rec->sec_flags & BTM_SEC_16_DIGIT_PIN_AUTHED) + && (!p_dev_rec->is_originator && (p_dev_rec->security_required & BTM_SEC_IN_MIN_16_DIGIT_PIN)))) - && (p_dev_rec->hci_handle != BTM_SEC_INVALID_HANDLE)) - { + && (p_dev_rec->hci_handle != BTM_SEC_INVALID_HANDLE)) { /* * We rely on BTM_SEC_16_DIGIT_PIN_AUTHED being set if MITM is in use, * as 16 DIGIT is only needed if MITM is not used. Unfortunately, the @@ -5446,8 +5079,9 @@ static tBTM_STATUS btm_sec_execute_procedure (tBTM_SEC_DEV_REC *p_dev_rec) #if (L2CAP_UCD_INCLUDED == TRUE) /* if incoming UCD packet, discard it */ - if ( !p_dev_rec->is_originator && (p_dev_rec->is_ucd == TRUE )) - return(BTM_FAILED_ON_SECURITY); + if ( !p_dev_rec->is_originator && (p_dev_rec->is_ucd == TRUE )) { + return (BTM_FAILED_ON_SECURITY); + } #endif BTM_TRACE_EVENT ("Security Manager: Start authentication\n"); @@ -5468,41 +5102,38 @@ static tBTM_STATUS btm_sec_execute_procedure (tBTM_SEC_DEV_REC *p_dev_rec) && (!p_dev_rec->is_originator && (p_dev_rec->security_required & BTM_SEC_IN_MIN_16_DIGIT_PIN)))) { p_dev_rec->sec_flags &= ~(BTM_SEC_LINK_KEY_KNOWN | BTM_SEC_LINK_KEY_AUTHED - | BTM_SEC_AUTHENTICATED); + | BTM_SEC_AUTHENTICATED); } - if (!btm_sec_start_authentication (p_dev_rec)) - { - return(BTM_NO_RESOURCES); + if (!btm_sec_start_authentication (p_dev_rec)) { + return (BTM_NO_RESOURCES); } - return(BTM_CMD_STARTED); + return (BTM_CMD_STARTED); } /* If connection is not encrypted and encryption is required */ /* start encryption and return PENDING to the caller */ if (!(p_dev_rec->sec_flags & BTM_SEC_ENCRYPTED) - && (( p_dev_rec->is_originator && (p_dev_rec->security_required & BTM_SEC_OUT_ENCRYPT)) - || (!p_dev_rec->is_originator && (p_dev_rec->security_required & BTM_SEC_IN_ENCRYPT))) - && (p_dev_rec->hci_handle != BTM_SEC_INVALID_HANDLE)) - { + && (( p_dev_rec->is_originator && (p_dev_rec->security_required & BTM_SEC_OUT_ENCRYPT)) + || (!p_dev_rec->is_originator && (p_dev_rec->security_required & BTM_SEC_IN_ENCRYPT))) + && (p_dev_rec->hci_handle != BTM_SEC_INVALID_HANDLE)) { #if (L2CAP_UCD_INCLUDED == TRUE) /* if incoming UCD packet, discard it */ - if ( !p_dev_rec->is_originator && (p_dev_rec->is_ucd == TRUE )) - return(BTM_FAILED_ON_SECURITY); + if ( !p_dev_rec->is_originator && (p_dev_rec->is_ucd == TRUE )) { + return (BTM_FAILED_ON_SECURITY); + } #endif BTM_TRACE_EVENT ("Security Manager: Start encryption\n"); - if (!btm_sec_start_encryption (p_dev_rec)) - { - return(BTM_NO_RESOURCES); + if (!btm_sec_start_encryption (p_dev_rec)) { + return (BTM_NO_RESOURCES); } - return(BTM_CMD_STARTED); + return (BTM_CMD_STARTED); } if ((p_dev_rec->security_required & BTM_SEC_MODE4_LEVEL4) && - (p_dev_rec->link_key_type != BTM_LKEY_TYPE_AUTH_COMB_P_256)) - { + (p_dev_rec->link_key_type != BTM_LKEY_TYPE_AUTH_COMB_P_256)) { BTM_TRACE_EVENT("%s: Security Manager: SC only service, but link key type is 0x%02x -" "security failure\n", __FUNCTION__, p_dev_rec->link_key_type); return (BTM_FAILED_ON_SECURITY); @@ -5511,20 +5142,18 @@ static tBTM_STATUS btm_sec_execute_procedure (tBTM_SEC_DEV_REC *p_dev_rec) /* If connection is not authorized and authorization is required */ /* start authorization and return PENDING to the caller */ if (!(p_dev_rec->sec_flags & BTM_SEC_AUTHORIZED) - && (( p_dev_rec->is_originator && (p_dev_rec->security_required & BTM_SEC_OUT_AUTHORIZE)) - || (!p_dev_rec->is_originator && (p_dev_rec->security_required & BTM_SEC_IN_AUTHORIZE)))) - { + && (( p_dev_rec->is_originator && (p_dev_rec->security_required & BTM_SEC_OUT_AUTHORIZE)) + || (!p_dev_rec->is_originator && (p_dev_rec->security_required & BTM_SEC_IN_AUTHORIZE)))) { BTM_TRACE_EVENT ("service id:%d, is trusted:%d\n", - p_dev_rec->p_cur_service->service_id, - (BTM_SEC_IS_SERVICE_TRUSTED(p_dev_rec->trusted_mask, - p_dev_rec->p_cur_service->service_id))); + p_dev_rec->p_cur_service->service_id, + (BTM_SEC_IS_SERVICE_TRUSTED(p_dev_rec->trusted_mask, + p_dev_rec->p_cur_service->service_id))); if ((btm_sec_are_all_trusted(p_dev_rec->trusted_mask) == FALSE) && - (p_dev_rec->p_cur_service->service_id < BTM_SEC_MAX_SERVICES) && - (BTM_SEC_IS_SERVICE_TRUSTED(p_dev_rec->trusted_mask, - p_dev_rec->p_cur_service->service_id) == FALSE)) - { + (p_dev_rec->p_cur_service->service_id < BTM_SEC_MAX_SERVICES) && + (BTM_SEC_IS_SERVICE_TRUSTED(p_dev_rec->trusted_mask, + p_dev_rec->p_cur_service->service_id) == FALSE)) { BTM_TRACE_EVENT ("Security Manager: Start authorization\n"); - return(btm_sec_start_authorization (p_dev_rec)); + return (btm_sec_start_authorization (p_dev_rec)); } } @@ -5538,7 +5167,7 @@ static tBTM_STATUS btm_sec_execute_procedure (tBTM_SEC_DEV_REC *p_dev_rec) BTM_TRACE_EVENT ("Security Manager: trusted:0x%04x%04x\n", p_dev_rec->trusted_mask[1], p_dev_rec->trusted_mask[0]); BTM_TRACE_EVENT ("Security Manager: access granted\n"); - return(BTM_SUCCESS); + return (BTM_SUCCESS); } @@ -5560,13 +5189,12 @@ static BOOLEAN btm_sec_start_get_name (tBTM_SEC_DEV_REC *p_dev_rec) /* Device should be connected, no need to provide correct page params */ /* 0 and NULL are as timeout and callback params because they are not used in security get name case */ if ((btm_initiate_rem_name (p_dev_rec->bd_addr, NULL, BTM_RMT_NAME_SEC, - 0, NULL)) != BTM_CMD_STARTED) - { + 0, NULL)) != BTM_CMD_STARTED) { p_dev_rec->sec_state = tempstate; - return(FALSE); + return (FALSE); } - return(TRUE); + return (TRUE); } /******************************************************************************* @@ -5582,7 +5210,7 @@ static BOOLEAN btm_sec_start_authentication (tBTM_SEC_DEV_REC *p_dev_rec) { p_dev_rec->sec_state = BTM_SEC_STATE_AUTHENTICATING; - return(btsnd_hcic_auth_request (p_dev_rec->hci_handle)); + return (btsnd_hcic_auth_request (p_dev_rec->hci_handle)); } /******************************************************************************* @@ -5596,11 +5224,12 @@ static BOOLEAN btm_sec_start_authentication (tBTM_SEC_DEV_REC *p_dev_rec) *******************************************************************************/ static BOOLEAN btm_sec_start_encryption (tBTM_SEC_DEV_REC *p_dev_rec) { - if (!btsnd_hcic_set_conn_encrypt (p_dev_rec->hci_handle, TRUE)) - return(FALSE); + if (!btsnd_hcic_set_conn_encrypt (p_dev_rec->hci_handle, TRUE)) { + return (FALSE); + } p_dev_rec->sec_state = BTM_SEC_STATE_ENCRYPTING; - return(TRUE); + return (TRUE); } @@ -5620,57 +5249,55 @@ static UINT8 btm_sec_start_authorization (tBTM_SEC_DEV_REC *p_dev_rec) UINT8 service_id; if ((p_dev_rec->sec_flags & BTM_SEC_NAME_KNOWN) - || (p_dev_rec->hci_handle == BTM_SEC_INVALID_HANDLE)) - { - if (!btm_cb.api.p_authorize_callback) - return(BTM_MODE_UNSUPPORTED); + || (p_dev_rec->hci_handle == BTM_SEC_INVALID_HANDLE)) { + if (!btm_cb.api.p_authorize_callback) { + return (BTM_MODE_UNSUPPORTED); + } - if (p_dev_rec->p_cur_service) - { + if (p_dev_rec->p_cur_service) { #if BTM_SEC_SERVICE_NAME_LEN > 0 - if (p_dev_rec->is_originator) + if (p_dev_rec->is_originator) { p_service_name = p_dev_rec->p_cur_service->orig_service_name; - else + } else { p_service_name = p_dev_rec->p_cur_service->term_service_name; + } #endif service_id = p_dev_rec->p_cur_service->service_id; - } - else + } else { service_id = 0; + } /* Send authorization request if not already sent during this service connection */ if (p_dev_rec->last_author_service_id == BTM_SEC_NO_LAST_SERVICE_ID - || p_dev_rec->last_author_service_id != service_id) - { + || p_dev_rec->last_author_service_id != service_id) { p_dev_rec->sec_state = BTM_SEC_STATE_AUTHORIZING; result = (*btm_cb.api.p_authorize_callback) (p_dev_rec->bd_addr, - p_dev_rec->dev_class, - p_dev_rec->sec_bd_name, - p_service_name, - service_id, - p_dev_rec->is_originator); + p_dev_rec->dev_class, + p_dev_rec->sec_bd_name, + p_service_name, + service_id, + p_dev_rec->is_originator); } - else /* Already authorized once for this L2CAP bringup */ - { + else { /* Already authorized once for this L2CAP bringup */ BTM_TRACE_DEBUG ("btm_sec_start_authorization: (Ignoring extra Authorization prompt for service %d)\n", service_id); return (BTM_SUCCESS); } - if (result == BTM_SUCCESS) - { + if (result == BTM_SUCCESS) { p_dev_rec->sec_flags |= BTM_SEC_AUTHORIZED; /* Save the currently authorized service in case we are asked again by another multiplexer layer */ - if (!p_dev_rec->is_originator) + if (!p_dev_rec->is_originator) { p_dev_rec->last_author_service_id = service_id; + } p_dev_rec->sec_state = BTM_SEC_STATE_IDLE; } - return(result); + return (result); } btm_sec_start_get_name (p_dev_rec); - return(BTM_CMD_STARTED); + return (BTM_CMD_STARTED); } /******************************************************************************* @@ -5685,13 +5312,13 @@ static UINT8 btm_sec_start_authorization (tBTM_SEC_DEV_REC *p_dev_rec) BOOLEAN btm_sec_are_all_trusted(UINT32 p_mask[]) { UINT32 trusted_inx; - for (trusted_inx = 0; trusted_inx < BTM_SEC_SERVICE_ARRAY_SIZE; trusted_inx++) - { - if (p_mask[trusted_inx] != BTM_SEC_TRUST_ALL) - return(FALSE); + for (trusted_inx = 0; trusted_inx < BTM_SEC_SERVICE_ARRAY_SIZE; trusted_inx++) { + if (p_mask[trusted_inx] != BTM_SEC_TRUST_ALL) { + return (FALSE); + } } - return(TRUE); + return (TRUE); } /******************************************************************************* @@ -5712,28 +5339,28 @@ static tBTM_SEC_SERV_REC *btm_sec_find_first_serv (CONNECTION_TYPE conn_type, UI #if (L2CAP_UCD_INCLUDED == TRUE) - if ( conn_type & CONNECTION_TYPE_ORIG_MASK ) + if ( conn_type & CONNECTION_TYPE_ORIG_MASK ) { is_originator = TRUE; - else + } else { is_originator = FALSE; + } #else is_originator = conn_type; #endif - if (is_originator && btm_cb.p_out_serv && btm_cb.p_out_serv->psm == psm) - { + if (is_originator && btm_cb.p_out_serv && btm_cb.p_out_serv->psm == psm) { /* If this is outgoing connection and the PSM matches p_out_serv, * use it as the current service */ return btm_cb.p_out_serv; } /* otherwise, just find the first record with the specified PSM */ - for (i = 0; i < BTM_SEC_MAX_SERVICE_RECORDS; i++, p_serv_rec++) - { - if ( (p_serv_rec->security_flags & BTM_SEC_IN_USE) && (p_serv_rec->psm == psm) ) - return(p_serv_rec); + for (i = 0; i < BTM_SEC_MAX_SERVICE_RECORDS; i++, p_serv_rec++) { + if ( (p_serv_rec->security_flags & BTM_SEC_IN_USE) && (p_serv_rec->psm == psm) ) { + return (p_serv_rec); + } } - return(NULL); + return (NULL); } @@ -5752,18 +5379,15 @@ static tBTM_SEC_SERV_REC *btm_sec_find_next_serv (tBTM_SEC_SERV_REC *p_cur) tBTM_SEC_SERV_REC *p_serv_rec = &btm_cb.sec_serv_rec[0]; int i; - for (i = 0; i < BTM_SEC_MAX_SERVICE_RECORDS; i++, p_serv_rec++) - { + for (i = 0; i < BTM_SEC_MAX_SERVICE_RECORDS; i++, p_serv_rec++) { if ((p_serv_rec->security_flags & BTM_SEC_IN_USE) - && (p_serv_rec->psm == p_cur->psm) ) - { - if (p_cur != p_serv_rec) - { - return(p_serv_rec); + && (p_serv_rec->psm == p_cur->psm) ) { + if (p_cur != p_serv_rec) { + return (p_serv_rec); } } } - return(NULL); + return (NULL); } @@ -5778,7 +5402,7 @@ static tBTM_SEC_SERV_REC *btm_sec_find_next_serv (tBTM_SEC_SERV_REC *p_cur) ** *******************************************************************************/ static tBTM_SEC_SERV_REC *btm_sec_find_mx_serv (UINT8 is_originator, UINT16 psm, - UINT32 mx_proto_id, UINT32 mx_chan_id) + UINT32 mx_proto_id, UINT32 mx_chan_id) { tBTM_SEC_SERV_REC *p_out_serv = btm_cb.p_out_serv; tBTM_SEC_SERV_REC *p_serv_rec = &btm_cb.sec_serv_rec[0]; @@ -5786,27 +5410,24 @@ static tBTM_SEC_SERV_REC *btm_sec_find_mx_serv (UINT8 is_originator, UINT16 psm, BTM_TRACE_DEBUG ("%s()\n", __func__); if (is_originator && p_out_serv && p_out_serv->psm == psm - && p_out_serv->mx_proto_id == mx_proto_id - && p_out_serv->orig_mx_chan_id == mx_chan_id) - { + && p_out_serv->mx_proto_id == mx_proto_id + && p_out_serv->orig_mx_chan_id == mx_chan_id) { /* If this is outgoing connection and the parameters match p_out_serv, * use it as the current service */ return btm_cb.p_out_serv; } /* otherwise, the old way */ - for (i = 0; i < BTM_SEC_MAX_SERVICE_RECORDS; i++, p_serv_rec++) - { + for (i = 0; i < BTM_SEC_MAX_SERVICE_RECORDS; i++, p_serv_rec++) { if ((p_serv_rec->security_flags & BTM_SEC_IN_USE) - && (p_serv_rec->psm == psm) - && (p_serv_rec->mx_proto_id == mx_proto_id) - && (( is_originator && (p_serv_rec->orig_mx_chan_id == mx_chan_id)) - || (!is_originator && (p_serv_rec->term_mx_chan_id == mx_chan_id)))) - { - return(p_serv_rec); + && (p_serv_rec->psm == psm) + && (p_serv_rec->mx_proto_id == mx_proto_id) + && (( is_originator && (p_serv_rec->orig_mx_chan_id == mx_chan_id)) + || (!is_originator && (p_serv_rec->term_mx_chan_id == mx_chan_id)))) { + return (p_serv_rec); } } - return(NULL); + return (NULL); } @@ -5830,8 +5451,7 @@ static void btm_sec_collision_timeout (TIMER_LIST_ENT *p_tle) tBTM_STATUS status = btm_sec_execute_procedure (btm_cb.p_collided_dev_rec); /* If result is pending reply from the user or from the device is pending */ - if (status != BTM_CMD_STARTED) - { + if (status != BTM_CMD_STARTED) { /* There is no next procedure or start of procedure failed, notify the waiting layer */ btm_sec_dev_rec_cback_event (btm_cb.p_collided_dev_rec, status, FALSE); } @@ -5866,11 +5486,12 @@ static void btm_send_link_key_notif (tBTM_SEC_DEV_REC *p_dev_rec) ** otherwise, the trusted mask ** *******************************************************************************/ -UINT32 * BTM_ReadTrustedMask (BD_ADDR bd_addr) +UINT32 *BTM_ReadTrustedMask (BD_ADDR bd_addr) { tBTM_SEC_DEV_REC *p_dev_rec = btm_find_dev (bd_addr); - if (p_dev_rec != NULL) - return(p_dev_rec->trusted_mask); + if (p_dev_rec != NULL) { + return (p_dev_rec->trusted_mask); + } return NULL; } @@ -5887,15 +5508,13 @@ UINT32 * BTM_ReadTrustedMask (BD_ADDR bd_addr) *******************************************************************************/ static void btm_restore_mode(void) { - if (btm_cb.security_mode_changed) - { + if (btm_cb.security_mode_changed) { btm_cb.security_mode_changed = FALSE; BTM_TRACE_DEBUG("%s() Auth enable -> %d\n", __func__, (btm_cb.security_mode == BTM_SEC_MODE_LINK)); btsnd_hcic_write_auth_enable ((UINT8)(btm_cb.security_mode == BTM_SEC_MODE_LINK)); } - if (btm_cb.pin_type_changed) - { + if (btm_cb.pin_type_changed) { btm_cb.pin_type_changed = FALSE; btsnd_hcic_write_pin_type (btm_cb.cfg.pin_type); } @@ -5916,13 +5535,13 @@ tBTM_SEC_DEV_REC *btm_sec_find_dev_by_sec_state (UINT8 state) { tBTM_SEC_DEV_REC *p_dev_rec = &btm_cb.sec_dev_rec[0]; - for (int i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i++, p_dev_rec++) - { + for (int i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i++, p_dev_rec++) { if ((p_dev_rec->sec_flags & BTM_SEC_IN_USE) - && (p_dev_rec->sec_state == state)) - return(p_dev_rec); + && (p_dev_rec->sec_state == state)) { + return (p_dev_rec); + } } - return(NULL); + return (NULL); } /******************************************************************************* @@ -5938,12 +5557,11 @@ static void btm_sec_change_pairing_state (tBTM_PAIRING_STATE new_state) BTM_TRACE_EVENT ("%s() Old: %s\n", __func__, btm_pair_state_descr(btm_cb.pairing_state)); BTM_TRACE_EVENT ("%s() New: %s pairing_flags:0x%x\n\n", __func__, - btm_pair_state_descr(new_state), btm_cb.pairing_flags); + btm_pair_state_descr(new_state), btm_cb.pairing_flags); btm_cb.pairing_state = new_state; - if (new_state == BTM_PAIR_STATE_IDLE) - { + if (new_state == BTM_PAIR_STATE_IDLE) { btu_stop_timer (&btm_cb.pairing_tle); btm_cb.pairing_flags = 0; @@ -5957,12 +5575,11 @@ static void btm_sec_change_pairing_state (tBTM_PAIRING_STATE new_state) btm_inq_clear_ssp(); memset (btm_cb.pairing_bda, 0xFF, BD_ADDR_LEN); - } - else - { + } else { /* If transitionng out of idle, mark the lcb as bonding */ - if (old_state == BTM_PAIR_STATE_IDLE) + if (old_state == BTM_PAIR_STATE_IDLE) { l2cu_update_lcb_4_bonding (btm_cb.pairing_bda, TRUE); + } btm_cb.pairing_tle.param = (TIMER_PARAM_TYPE)btm_sec_pairing_timeout; @@ -5982,26 +5599,25 @@ static void btm_sec_change_pairing_state (tBTM_PAIRING_STATE new_state) static char *btm_pair_state_descr (tBTM_PAIRING_STATE state) { #if (BT_TRACE_VERBOSE == TRUE) - switch (state) - { - case BTM_PAIR_STATE_IDLE: return("IDLE"); - case BTM_PAIR_STATE_GET_REM_NAME: return("GET_REM_NAME"); - case BTM_PAIR_STATE_WAIT_PIN_REQ: return("WAIT_PIN_REQ"); - case BTM_PAIR_STATE_WAIT_LOCAL_PIN: return("WAIT_LOCAL_PIN"); - case BTM_PAIR_STATE_WAIT_NUMERIC_CONFIRM: return("WAIT_NUM_CONFIRM"); - case BTM_PAIR_STATE_KEY_ENTRY: return("KEY_ENTRY"); - case BTM_PAIR_STATE_WAIT_LOCAL_OOB_RSP: return("WAIT_LOCAL_OOB_RSP"); - case BTM_PAIR_STATE_WAIT_LOCAL_IOCAPS: return("WAIT_LOCAL_IOCAPS"); - case BTM_PAIR_STATE_INCOMING_SSP: return("INCOMING_SSP"); - case BTM_PAIR_STATE_WAIT_AUTH_COMPLETE: return("WAIT_AUTH_COMPLETE"); - case BTM_PAIR_STATE_WAIT_DISCONNECT: return("WAIT_DISCONNECT"); + switch (state) { + case BTM_PAIR_STATE_IDLE: return ("IDLE"); + case BTM_PAIR_STATE_GET_REM_NAME: return ("GET_REM_NAME"); + case BTM_PAIR_STATE_WAIT_PIN_REQ: return ("WAIT_PIN_REQ"); + case BTM_PAIR_STATE_WAIT_LOCAL_PIN: return ("WAIT_LOCAL_PIN"); + case BTM_PAIR_STATE_WAIT_NUMERIC_CONFIRM: return ("WAIT_NUM_CONFIRM"); + case BTM_PAIR_STATE_KEY_ENTRY: return ("KEY_ENTRY"); + case BTM_PAIR_STATE_WAIT_LOCAL_OOB_RSP: return ("WAIT_LOCAL_OOB_RSP"); + case BTM_PAIR_STATE_WAIT_LOCAL_IOCAPS: return ("WAIT_LOCAL_IOCAPS"); + case BTM_PAIR_STATE_INCOMING_SSP: return ("INCOMING_SSP"); + case BTM_PAIR_STATE_WAIT_AUTH_COMPLETE: return ("WAIT_AUTH_COMPLETE"); + case BTM_PAIR_STATE_WAIT_DISCONNECT: return ("WAIT_DISCONNECT"); } - return("???"); + return ("???"); #else - sprintf(btm_cb.state_temp_buffer,"%d",state); + sprintf(btm_cb.state_temp_buffer, "%d", state); - return(btm_cb.state_temp_buffer); + return (btm_cb.state_temp_buffer); #endif } #endif @@ -6020,16 +5636,15 @@ void btm_sec_dev_rec_cback_event (tBTM_SEC_DEV_REC *p_dev_rec, UINT8 res, BOOLEA { tBTM_SEC_CALLBACK *p_callback = p_dev_rec->p_callback; - if (p_dev_rec->p_callback) - { + if (p_dev_rec->p_callback) { p_dev_rec->p_callback = NULL; #if BLE_INCLUDED == TRUE - if (is_le_transport) - (*p_callback) (p_dev_rec->ble.pseudo_addr, BT_TRANSPORT_LE, p_dev_rec->p_ref_data, res); - else + if (is_le_transport) { + (*p_callback) (p_dev_rec->ble.pseudo_addr, BT_TRANSPORT_LE, p_dev_rec->p_ref_data, res); + } else #endif - (*p_callback) (p_dev_rec->bd_addr, BT_TRANSPORT_BR_EDR, p_dev_rec->p_ref_data, res); + (*p_callback) (p_dev_rec->bd_addr, BT_TRANSPORT_BR_EDR, p_dev_rec->p_ref_data, res); } btm_sec_check_pending_reqs(); @@ -6043,13 +5658,12 @@ void btm_sec_dev_rec_cback_event (tBTM_SEC_DEV_REC *p_dev_rec, UINT8 res, BOOLEA ** *******************************************************************************/ static BOOLEAN btm_sec_queue_mx_request (BD_ADDR bd_addr, UINT16 psm, BOOLEAN is_orig, - UINT32 mx_proto_id, UINT32 mx_chan_id, - tBTM_SEC_CALLBACK *p_callback, void *p_ref_data) + UINT32 mx_proto_id, UINT32 mx_chan_id, + tBTM_SEC_CALLBACK *p_callback, void *p_ref_data) { tBTM_SEC_QUEUE_ENTRY *p_e = (tBTM_SEC_QUEUE_ENTRY *)GKI_getbuf (sizeof(tBTM_SEC_QUEUE_ENTRY)); - if (p_e) - { + if (p_e) { p_e->psm = psm; p_e->is_orig = is_orig; p_e->p_callback = p_callback; @@ -6061,14 +5675,14 @@ static BOOLEAN btm_sec_queue_mx_request (BD_ADDR bd_addr, UINT16 psm, BOOLEAN memcpy (p_e->bd_addr, bd_addr, BD_ADDR_LEN); BTM_TRACE_EVENT ("%s() PSM: 0x%04x Is_Orig: %u mx_proto_id: %u mx_chan_id: %u\n", - __func__, psm, is_orig, mx_proto_id, mx_chan_id); + __func__, psm, is_orig, mx_proto_id, mx_chan_id); GKI_enqueue (&btm_cb.sec_pending_q, p_e); - return(TRUE); + return (TRUE); } - return(FALSE); + return (FALSE); } static BOOLEAN btm_sec_check_prefetch_pin (tBTM_SEC_DEV_REC *p_dev_rec) @@ -6078,41 +5692,34 @@ static BOOLEAN btm_sec_check_prefetch_pin (tBTM_SEC_DEV_REC *p_dev_rec) BOOLEAN rv = FALSE; if ((major == BTM_COD_MAJOR_AUDIO) - && ((minor == BTM_COD_MINOR_CONFM_HANDSFREE) || (minor == BTM_COD_MINOR_CAR_AUDIO)) ) - { + && ((minor == BTM_COD_MINOR_CONFM_HANDSFREE) || (minor == BTM_COD_MINOR_CAR_AUDIO)) ) { BTM_TRACE_EVENT ("%s() Skipping pre-fetch PIN for carkit COD Major: 0x%02x Minor: 0x%02x\n", - __func__, major, minor); + __func__, major, minor); - if (btm_cb.security_mode_changed == FALSE) - { + if (btm_cb.security_mode_changed == FALSE) { btm_cb.security_mode_changed = TRUE; #ifdef APPL_AUTH_WRITE_EXCEPTION - if(!(APPL_AUTH_WRITE_EXCEPTION)(p_dev_rec->bd_addr)) + if (!(APPL_AUTH_WRITE_EXCEPTION)(p_dev_rec->bd_addr)) #endif btsnd_hcic_write_auth_enable (TRUE); } - } - else - { + } else { btm_sec_change_pairing_state (BTM_PAIR_STATE_WAIT_LOCAL_PIN); /* If we got a PIN, use that, else try to get one */ - if (btm_cb.pin_code_len) - { + if (btm_cb.pin_code_len) { BTM_PINCodeReply (p_dev_rec->bd_addr, BTM_SUCCESS, btm_cb.pin_code_len, btm_cb.pin_code, p_dev_rec->trusted_mask); - } - else - { + } else { /* pin was not supplied - pre-fetch pin code now */ - if (btm_cb.api.p_pin_callback && ((btm_cb.pairing_flags & BTM_PAIR_FLAGS_PIN_REQD) == 0)) - { + if (btm_cb.api.p_pin_callback && ((btm_cb.pairing_flags & BTM_PAIR_FLAGS_PIN_REQD) == 0)) { BTM_TRACE_DEBUG("%s() PIN code callback called\n", __func__); - if (btm_bda_to_acl(p_dev_rec->bd_addr, BT_TRANSPORT_BR_EDR) == NULL) - btm_cb.pairing_flags |= BTM_PAIR_FLAGS_PIN_REQD; + if (btm_bda_to_acl(p_dev_rec->bd_addr, BT_TRANSPORT_BR_EDR) == NULL) { + btm_cb.pairing_flags |= BTM_PAIR_FLAGS_PIN_REQD; + } (btm_cb.api.p_pin_callback) (p_dev_rec->bd_addr, p_dev_rec->dev_class, - p_dev_rec->sec_bd_name, (p_dev_rec->p_cur_service == NULL) ? FALSE - : (p_dev_rec->p_cur_service->security_flags - & BTM_SEC_IN_MIN_16_DIGIT_PIN)); + p_dev_rec->sec_bd_name, (p_dev_rec->p_cur_service == NULL) ? FALSE + : (p_dev_rec->p_cur_service->security_flags + & BTM_SEC_IN_MIN_16_DIGIT_PIN)); } } @@ -6153,13 +5760,12 @@ void btm_sec_auth_payload_tout (UINT8 *p, UINT16 hci_evt_len) ** *******************************************************************************/ static BOOLEAN btm_sec_queue_encrypt_request (BD_ADDR bd_addr, tBT_TRANSPORT transport, - tBTM_SEC_CALLBACK *p_callback, void *p_ref_data) + tBTM_SEC_CALLBACK *p_callback, void *p_ref_data) { tBTM_SEC_QUEUE_ENTRY *p_e; p_e = (tBTM_SEC_QUEUE_ENTRY *)GKI_getbuf(sizeof(tBTM_SEC_QUEUE_ENTRY) + 1); - if (p_e) - { + if (p_e) { p_e->psm = 0; /* if PSM 0, encryption request */ p_e->p_callback = p_callback; p_e->p_ref_data = (void *)(p_e + 1); @@ -6189,16 +5795,13 @@ void btm_sec_set_peer_sec_caps(tACL_CONN *p_acl_cb, tBTM_SEC_DEV_REC *p_dev_rec) UINT8 *p_rem_bd_addr; if ((btm_cb.security_mode == BTM_SEC_MODE_SP || - btm_cb.security_mode == BTM_SEC_MODE_SP_DEBUG || - btm_cb.security_mode == BTM_SEC_MODE_SC) && - HCI_SSP_HOST_SUPPORTED(p_acl_cb->peer_lmp_features[HCI_EXT_FEATURES_PAGE_1])) - { + btm_cb.security_mode == BTM_SEC_MODE_SP_DEBUG || + btm_cb.security_mode == BTM_SEC_MODE_SC) && + HCI_SSP_HOST_SUPPORTED(p_acl_cb->peer_lmp_features[HCI_EXT_FEATURES_PAGE_1])) { p_dev_rec->sm4 = BTM_SM4_TRUE; p_dev_rec->remote_supports_secure_connections = (HCI_SC_HOST_SUPPORTED(p_acl_cb->peer_lmp_features[HCI_EXT_FEATURES_PAGE_1])); - } - else - { + } else { p_dev_rec->sm4 = BTM_SM4_KNOWN; p_dev_rec->remote_supports_secure_connections = FALSE; } @@ -6207,13 +5810,12 @@ void btm_sec_set_peer_sec_caps(tACL_CONN *p_acl_cb, tBTM_SEC_DEV_REC *p_dev_rec) p_dev_rec->sm4, p_dev_rec->remote_supports_secure_connections); - if (p_dev_rec->remote_features_needed) - { + if (p_dev_rec->remote_features_needed) { BTM_TRACE_EVENT("%s: Now device in SC Only mode, waiting for peer remote features!\n", __FUNCTION__); - p_rem_bd_addr = (UINT8*) rem_bd_addr; + p_rem_bd_addr = (UINT8 *) rem_bd_addr; BDADDR_TO_STREAM(p_rem_bd_addr, p_dev_rec->bd_addr); - p_rem_bd_addr = (UINT8*) rem_bd_addr; + p_rem_bd_addr = (UINT8 *) rem_bd_addr; btm_io_capabilities_req(p_rem_bd_addr); p_dev_rec->remote_features_needed = FALSE; } @@ -6236,14 +5838,12 @@ static void btm_sec_clean_pending_req_queue (BD_ADDR remote_bda, tBT_TRANSPORT t p_e = (tBTM_SEC_QUEUE_ENTRY *)GKI_getfirst(bq); - if (p_e != NULL) - { + if (p_e != NULL) { if (memcmp(p_e->bd_addr, remote_bda, BD_ADDR_LEN) == 0 #if BLE_INCLUDED == TRUE - && p_e->transport == transport + && p_e->transport == transport #endif - ) - { + ) { (*p_e->p_callback) (remote_bda, transport, p_e->p_ref_data, BTM_ERR_PROCESSING); GKI_remove_from_queue(bq, (void *)p_e); } @@ -6263,8 +5863,7 @@ static void btm_sec_clean_pending_req_queue (BD_ADDR remote_bda, tBT_TRANSPORT t *******************************************************************************/ static BOOLEAN btm_sec_is_serv_level0(UINT16 psm) { - if (psm == BT_PSM_SDP) - { + if (psm == BT_PSM_SDP) { BTM_TRACE_DEBUG("%s: PSM: 0x%04x -> mode 4 level 0 service\n", __FUNCTION__, psm); return TRUE; } @@ -6282,7 +5881,7 @@ static BOOLEAN btm_sec_is_serv_level0(UINT16 psm) ** *******************************************************************************/ static void btm_sec_check_pending_enc_req (tBTM_SEC_DEV_REC *p_dev_rec, tBT_TRANSPORT transport, - UINT8 encr_enable) + UINT8 encr_enable) { tBTM_SEC_QUEUE_ENTRY *p_e; BUFFER_Q *bq = &btm_cb.sec_pending_q; @@ -6290,26 +5889,23 @@ static void btm_sec_check_pending_enc_req (tBTM_SEC_DEV_REC *p_dev_rec, tBT_TRA p_e = (tBTM_SEC_QUEUE_ENTRY *)GKI_getfirst(bq); - while (p_e != NULL) - { + while (p_e != NULL) { if (memcmp(p_e->bd_addr, p_dev_rec->bd_addr, BD_ADDR_LEN) == 0 && p_e->psm == 0 #if BLE_INCLUDED == TRUE - && p_e->transport == transport + && p_e->transport == transport #endif - ) - { + ) { #if BLE_INCLUDED == TRUE UINT8 sec_act = *(UINT8 *)(p_e->p_ref_data); #endif if (encr_enable == 0 || transport == BT_TRANSPORT_BR_EDR #if BLE_INCLUDED == TRUE - || (sec_act == BTM_BLE_SEC_ENCRYPT || sec_act == BTM_BLE_SEC_ENCRYPT_NO_MITM) - || (sec_act == BTM_BLE_SEC_ENCRYPT_MITM && p_dev_rec->sec_flags - & BTM_SEC_LE_AUTHENTICATED) + || (sec_act == BTM_BLE_SEC_ENCRYPT || sec_act == BTM_BLE_SEC_ENCRYPT_NO_MITM) + || (sec_act == BTM_BLE_SEC_ENCRYPT_MITM && p_dev_rec->sec_flags + & BTM_SEC_LE_AUTHENTICATED) #endif - ) - { + ) { (*p_e->p_callback) (p_dev_rec->bd_addr, transport, p_e->p_ref_data, res); GKI_remove_from_queue(bq, (void *)p_e); } @@ -6372,21 +5968,20 @@ void btm_sec_clear_ble_keys (tBTM_SEC_DEV_REC *p_dev_rec) BOOLEAN btm_sec_is_a_bonded_dev (BD_ADDR bda) { - tBTM_SEC_DEV_REC *p_dev_rec= btm_find_dev (bda); - BOOLEAN is_bonded= FALSE; + tBTM_SEC_DEV_REC *p_dev_rec = btm_find_dev (bda); + BOOLEAN is_bonded = FALSE; if (p_dev_rec && #if (SMP_INCLUDED == TRUE) - ((p_dev_rec->ble.key_type && (p_dev_rec->sec_flags & BTM_SEC_LE_LINK_KEY_KNOWN))|| + ((p_dev_rec->ble.key_type && (p_dev_rec->sec_flags & BTM_SEC_LE_LINK_KEY_KNOWN)) || #else - ( + ( #endif - (p_dev_rec->sec_flags & BTM_SEC_LINK_KEY_KNOWN))) - { + (p_dev_rec->sec_flags & BTM_SEC_LINK_KEY_KNOWN))) { is_bonded = TRUE; } BTM_TRACE_DEBUG ("%s() is_bonded=%d\n", __func__, is_bonded); - return(is_bonded); + return (is_bonded); } /******************************************************************************* @@ -6400,12 +5995,13 @@ BOOLEAN btm_sec_is_a_bonded_dev (BD_ADDR bda) *******************************************************************************/ BOOLEAN btm_sec_is_le_capable_dev (BD_ADDR bda) { - tBTM_SEC_DEV_REC *p_dev_rec= btm_find_dev (bda); + tBTM_SEC_DEV_REC *p_dev_rec = btm_find_dev (bda); BOOLEAN le_capable = FALSE; #if (BLE_INCLUDED== TRUE) - if (p_dev_rec && (p_dev_rec->device_type & BT_DEVICE_TYPE_BLE) == BT_DEVICE_TYPE_BLE) + if (p_dev_rec && (p_dev_rec->device_type & BT_DEVICE_TYPE_BLE) == BT_DEVICE_TYPE_BLE) { le_capable = TRUE; + } #endif return le_capable; } @@ -6421,22 +6017,19 @@ BOOLEAN btm_sec_is_le_capable_dev (BD_ADDR bda) *******************************************************************************/ BOOLEAN btm_sec_find_bonded_dev (UINT8 start_idx, UINT8 *p_found_idx, tBTM_SEC_DEV_REC **p_rec) { - BOOLEAN found= FALSE; + BOOLEAN found = FALSE; #if (SMP_INCLUDED== TRUE) tBTM_SEC_DEV_REC *p_dev_rec; int i; - if (start_idx >= BTM_SEC_MAX_DEVICE_RECORDS) - { + if (start_idx >= BTM_SEC_MAX_DEVICE_RECORDS) { BTM_TRACE_DEBUG ("LE bonded device not found\n"); return found; } p_dev_rec = &btm_cb.sec_dev_rec[start_idx]; - for (i = start_idx; i < BTM_SEC_MAX_DEVICE_RECORDS; i++, p_dev_rec++) - { - if (p_dev_rec->ble.key_type || (p_dev_rec->sec_flags & BTM_SEC_LINK_KEY_KNOWN)) - { + for (i = start_idx; i < BTM_SEC_MAX_DEVICE_RECORDS; i++, p_dev_rec++) { + if (p_dev_rec->ble.key_type || (p_dev_rec->sec_flags & BTM_SEC_LINK_KEY_KNOWN)) { *p_found_idx = i; *p_rec = p_dev_rec; break; @@ -6444,7 +6037,7 @@ BOOLEAN btm_sec_find_bonded_dev (UINT8 start_idx, UINT8 *p_found_idx, tBTM_SEC_D } BTM_TRACE_DEBUG ("%s() found=%d\n", __func__, found); #endif - return(found); + return (found); } /******************************************************************************* @@ -6467,17 +6060,20 @@ static BOOLEAN btm_sec_use_smp_br_chnl(tBTM_SEC_DEV_REC *p_dev_rec) UINT8 chnl_mask[L2CAP_FIXED_CHNL_ARRAY_SIZE]; BTM_TRACE_DEBUG ("%s() link_key_type = 0x%x\n", __func__, - p_dev_rec->link_key_type); + p_dev_rec->link_key_type); if ((p_dev_rec->link_key_type != BTM_LKEY_TYPE_UNAUTH_COMB_P_256) && - (p_dev_rec->link_key_type != BTM_LKEY_TYPE_AUTH_COMB_P_256)) - return FALSE; - - if (!L2CA_GetPeerFeatures (p_dev_rec->bd_addr, &ext_feat, chnl_mask)) + (p_dev_rec->link_key_type != BTM_LKEY_TYPE_AUTH_COMB_P_256)) { return FALSE; + } - if (!(chnl_mask[0] & L2CAP_FIXED_CHNL_SMP_BR_BIT)) + if (!L2CA_GetPeerFeatures (p_dev_rec->bd_addr, &ext_feat, chnl_mask)) { return FALSE; + } + + if (!(chnl_mask[0] & L2CAP_FIXED_CHNL_SMP_BR_BIT)) { + return FALSE; + } return TRUE; } @@ -6494,7 +6090,7 @@ static BOOLEAN btm_sec_use_smp_br_chnl(tBTM_SEC_DEV_REC *p_dev_rec) *******************************************************************************/ static BOOLEAN btm_sec_is_master(tBTM_SEC_DEV_REC *p_dev_rec) { - tACL_CONN *p= btm_bda_to_acl(p_dev_rec->bd_addr, BT_TRANSPORT_BR_EDR); + tACL_CONN *p = btm_bda_to_acl(p_dev_rec->bd_addr, BT_TRANSPORT_BR_EDR); return (p && (p->link_role == BTM_ROLE_MASTER)); } diff --git a/components/bt/bluedroid/stack/btu/btu_hcif.c b/components/bt/bluedroid/stack/btu/btu_hcif.c old mode 100755 new mode 100644 index 3e4f75bbf2..a3a4d9154f --- a/components/bt/bluedroid/stack/btu/btu_hcif.c +++ b/components/bt/bluedroid/stack/btu/btu_hcif.c @@ -150,199 +150,197 @@ void btu_hcif_process_event (UNUSED_ATTR UINT8 controller_id, BT_HDR *p_msg) STREAM_TO_UINT8 (hci_evt_code, p); STREAM_TO_UINT8 (hci_evt_len, p); - switch (hci_evt_code) - { - case HCI_INQUIRY_COMP_EVT: - btu_hcif_inquiry_comp_evt (p); - break; - case HCI_INQUIRY_RESULT_EVT: - btu_hcif_inquiry_result_evt (p); - break; - case HCI_INQUIRY_RSSI_RESULT_EVT: - btu_hcif_inquiry_rssi_result_evt (p); - break; - case HCI_EXTENDED_INQUIRY_RESULT_EVT: - btu_hcif_extended_inquiry_result_evt (p); - break; - case HCI_CONNECTION_COMP_EVT: - btu_hcif_connection_comp_evt (p); - break; - case HCI_CONNECTION_REQUEST_EVT: - btu_hcif_connection_request_evt (p); - break; - case HCI_DISCONNECTION_COMP_EVT: - btu_hcif_disconnection_comp_evt (p); - break; - case HCI_AUTHENTICATION_COMP_EVT: - btu_hcif_authentication_comp_evt (p); - break; - case HCI_RMT_NAME_REQUEST_COMP_EVT: - btu_hcif_rmt_name_request_comp_evt (p, hci_evt_len); - break; - case HCI_ENCRYPTION_CHANGE_EVT: - btu_hcif_encryption_change_evt (p); - break; + switch (hci_evt_code) { + case HCI_INQUIRY_COMP_EVT: + btu_hcif_inquiry_comp_evt (p); + break; + case HCI_INQUIRY_RESULT_EVT: + btu_hcif_inquiry_result_evt (p); + break; + case HCI_INQUIRY_RSSI_RESULT_EVT: + btu_hcif_inquiry_rssi_result_evt (p); + break; + case HCI_EXTENDED_INQUIRY_RESULT_EVT: + btu_hcif_extended_inquiry_result_evt (p); + break; + case HCI_CONNECTION_COMP_EVT: + btu_hcif_connection_comp_evt (p); + break; + case HCI_CONNECTION_REQUEST_EVT: + btu_hcif_connection_request_evt (p); + break; + case HCI_DISCONNECTION_COMP_EVT: + btu_hcif_disconnection_comp_evt (p); + break; + case HCI_AUTHENTICATION_COMP_EVT: + btu_hcif_authentication_comp_evt (p); + break; + case HCI_RMT_NAME_REQUEST_COMP_EVT: + btu_hcif_rmt_name_request_comp_evt (p, hci_evt_len); + break; + case HCI_ENCRYPTION_CHANGE_EVT: + btu_hcif_encryption_change_evt (p); + break; #if BLE_INCLUDED == TRUE - case HCI_ENCRYPTION_KEY_REFRESH_COMP_EVT: - btu_hcif_encryption_key_refresh_cmpl_evt(p); - break; + case HCI_ENCRYPTION_KEY_REFRESH_COMP_EVT: + btu_hcif_encryption_key_refresh_cmpl_evt(p); + break; #endif - case HCI_READ_RMT_FEATURES_COMP_EVT: - btu_hcif_read_rmt_features_comp_evt (p); - break; - case HCI_READ_RMT_EXT_FEATURES_COMP_EVT: - btu_hcif_read_rmt_ext_features_comp_evt (p); - break; - case HCI_READ_RMT_VERSION_COMP_EVT: - btu_hcif_read_rmt_version_comp_evt (p); - break; - case HCI_QOS_SETUP_COMP_EVT: - btu_hcif_qos_setup_comp_evt (p); - break; - case HCI_COMMAND_COMPLETE_EVT: - //HCI_TRACE_ERROR("%s should not have received a command complete event. " - // "Someone didn't go through the hci transmit_command function.", __func__); - break; - case HCI_COMMAND_STATUS_EVT: - //HCI_TRACE_ERROR("%s should not have received a command status event. " - // "Someone didn't go through the hci transmit_command function.", __func__); - break; - case HCI_HARDWARE_ERROR_EVT: - btu_hcif_hardware_error_evt (p); - break; - case HCI_FLUSH_OCCURED_EVT: - btu_hcif_flush_occured_evt (); - break; - case HCI_ROLE_CHANGE_EVT: - btu_hcif_role_change_evt (p); - break; - case HCI_NUM_COMPL_DATA_PKTS_EVT: - btu_hcif_num_compl_data_pkts_evt (p); - break; - case HCI_MODE_CHANGE_EVT: - btu_hcif_mode_change_evt (p); - break; - case HCI_PIN_CODE_REQUEST_EVT: - btu_hcif_pin_code_request_evt (p); - break; - case HCI_LINK_KEY_REQUEST_EVT: - btu_hcif_link_key_request_evt (p); - break; - case HCI_LINK_KEY_NOTIFICATION_EVT: - btu_hcif_link_key_notification_evt (p); - break; - case HCI_LOOPBACK_COMMAND_EVT: - btu_hcif_loopback_command_evt (); - break; - case HCI_DATA_BUF_OVERFLOW_EVT: - btu_hcif_data_buf_overflow_evt (); - break; - case HCI_MAX_SLOTS_CHANGED_EVT: - btu_hcif_max_slots_changed_evt (); - break; - case HCI_READ_CLOCK_OFF_COMP_EVT: - btu_hcif_read_clock_off_comp_evt (p); - break; - case HCI_CONN_PKT_TYPE_CHANGE_EVT: - btu_hcif_conn_pkt_type_change_evt (); - break; - case HCI_QOS_VIOLATION_EVT: - btu_hcif_qos_violation_evt (p); - break; - case HCI_PAGE_SCAN_MODE_CHANGE_EVT: - btu_hcif_page_scan_mode_change_evt (); - break; - case HCI_PAGE_SCAN_REP_MODE_CHNG_EVT: - btu_hcif_page_scan_rep_mode_chng_evt (); - break; - case HCI_ESCO_CONNECTION_COMP_EVT: - btu_hcif_esco_connection_comp_evt (p); - break; - case HCI_ESCO_CONNECTION_CHANGED_EVT: - btu_hcif_esco_connection_chg_evt (p); - break; + case HCI_READ_RMT_FEATURES_COMP_EVT: + btu_hcif_read_rmt_features_comp_evt (p); + break; + case HCI_READ_RMT_EXT_FEATURES_COMP_EVT: + btu_hcif_read_rmt_ext_features_comp_evt (p); + break; + case HCI_READ_RMT_VERSION_COMP_EVT: + btu_hcif_read_rmt_version_comp_evt (p); + break; + case HCI_QOS_SETUP_COMP_EVT: + btu_hcif_qos_setup_comp_evt (p); + break; + case HCI_COMMAND_COMPLETE_EVT: + //HCI_TRACE_ERROR("%s should not have received a command complete event. " + // "Someone didn't go through the hci transmit_command function.", __func__); + break; + case HCI_COMMAND_STATUS_EVT: + //HCI_TRACE_ERROR("%s should not have received a command status event. " + // "Someone didn't go through the hci transmit_command function.", __func__); + break; + case HCI_HARDWARE_ERROR_EVT: + btu_hcif_hardware_error_evt (p); + break; + case HCI_FLUSH_OCCURED_EVT: + btu_hcif_flush_occured_evt (); + break; + case HCI_ROLE_CHANGE_EVT: + btu_hcif_role_change_evt (p); + break; + case HCI_NUM_COMPL_DATA_PKTS_EVT: + btu_hcif_num_compl_data_pkts_evt (p); + break; + case HCI_MODE_CHANGE_EVT: + btu_hcif_mode_change_evt (p); + break; + case HCI_PIN_CODE_REQUEST_EVT: + btu_hcif_pin_code_request_evt (p); + break; + case HCI_LINK_KEY_REQUEST_EVT: + btu_hcif_link_key_request_evt (p); + break; + case HCI_LINK_KEY_NOTIFICATION_EVT: + btu_hcif_link_key_notification_evt (p); + break; + case HCI_LOOPBACK_COMMAND_EVT: + btu_hcif_loopback_command_evt (); + break; + case HCI_DATA_BUF_OVERFLOW_EVT: + btu_hcif_data_buf_overflow_evt (); + break; + case HCI_MAX_SLOTS_CHANGED_EVT: + btu_hcif_max_slots_changed_evt (); + break; + case HCI_READ_CLOCK_OFF_COMP_EVT: + btu_hcif_read_clock_off_comp_evt (p); + break; + case HCI_CONN_PKT_TYPE_CHANGE_EVT: + btu_hcif_conn_pkt_type_change_evt (); + break; + case HCI_QOS_VIOLATION_EVT: + btu_hcif_qos_violation_evt (p); + break; + case HCI_PAGE_SCAN_MODE_CHANGE_EVT: + btu_hcif_page_scan_mode_change_evt (); + break; + case HCI_PAGE_SCAN_REP_MODE_CHNG_EVT: + btu_hcif_page_scan_rep_mode_chng_evt (); + break; + case HCI_ESCO_CONNECTION_COMP_EVT: + btu_hcif_esco_connection_comp_evt (p); + break; + case HCI_ESCO_CONNECTION_CHANGED_EVT: + btu_hcif_esco_connection_chg_evt (p); + break; #if (BTM_SSR_INCLUDED == TRUE) - case HCI_SNIFF_SUB_RATE_EVT: - btu_hcif_ssr_evt (p, hci_evt_len); - break; + case HCI_SNIFF_SUB_RATE_EVT: + btu_hcif_ssr_evt (p, hci_evt_len); + break; #endif /* BTM_SSR_INCLUDED == TRUE */ - case HCI_RMT_HOST_SUP_FEAT_NOTIFY_EVT: - btu_hcif_host_support_evt (p); - break; - case HCI_IO_CAPABILITY_REQUEST_EVT: - btu_hcif_io_cap_request_evt (p); - break; - case HCI_IO_CAPABILITY_RESPONSE_EVT: - btu_hcif_io_cap_response_evt (p); - break; - case HCI_USER_CONFIRMATION_REQUEST_EVT: - btu_hcif_user_conf_request_evt (p); - break; - case HCI_USER_PASSKEY_REQUEST_EVT: - btu_hcif_user_passkey_request_evt (p); - break; + case HCI_RMT_HOST_SUP_FEAT_NOTIFY_EVT: + btu_hcif_host_support_evt (p); + break; + case HCI_IO_CAPABILITY_REQUEST_EVT: + btu_hcif_io_cap_request_evt (p); + break; + case HCI_IO_CAPABILITY_RESPONSE_EVT: + btu_hcif_io_cap_response_evt (p); + break; + case HCI_USER_CONFIRMATION_REQUEST_EVT: + btu_hcif_user_conf_request_evt (p); + break; + case HCI_USER_PASSKEY_REQUEST_EVT: + btu_hcif_user_passkey_request_evt (p); + break; #if BTM_OOB_INCLUDED == TRUE - case HCI_REMOTE_OOB_DATA_REQUEST_EVT: - btu_hcif_rem_oob_request_evt (p); - break; + case HCI_REMOTE_OOB_DATA_REQUEST_EVT: + btu_hcif_rem_oob_request_evt (p); + break; #endif - case HCI_SIMPLE_PAIRING_COMPLETE_EVT: - btu_hcif_simple_pair_complete_evt (p); - break; - case HCI_USER_PASSKEY_NOTIFY_EVT: - btu_hcif_user_passkey_notif_evt (p); - break; - case HCI_KEYPRESS_NOTIFY_EVT: - btu_hcif_keypress_notif_evt (p); - break; + case HCI_SIMPLE_PAIRING_COMPLETE_EVT: + btu_hcif_simple_pair_complete_evt (p); + break; + case HCI_USER_PASSKEY_NOTIFY_EVT: + btu_hcif_user_passkey_notif_evt (p); + break; + case HCI_KEYPRESS_NOTIFY_EVT: + btu_hcif_keypress_notif_evt (p); + break; #if L2CAP_NON_FLUSHABLE_PB_INCLUDED == TRUE - case HCI_ENHANCED_FLUSH_COMPLETE_EVT: - btu_hcif_enhanced_flush_complete_evt (); - break; + case HCI_ENHANCED_FLUSH_COMPLETE_EVT: + btu_hcif_enhanced_flush_complete_evt (); + break; #endif #if (BLE_INCLUDED == TRUE) - case HCI_BLE_EVENT: - STREAM_TO_UINT8 (ble_sub_code, p); + case HCI_BLE_EVENT: + STREAM_TO_UINT8 (ble_sub_code, p); - HCI_TRACE_DEBUG("BLE HCI(id=%d) event = 0x%02x)", hci_evt_code, ble_sub_code); + HCI_TRACE_DEBUG("BLE HCI(id=%d) event = 0x%02x)", hci_evt_code, ble_sub_code); - switch (ble_sub_code) - { - case HCI_BLE_ADV_PKT_RPT_EVT: /* result of inquiry */ - btu_ble_process_adv_pkt(p); - break; - case HCI_BLE_CONN_COMPLETE_EVT: - btu_ble_ll_conn_complete_evt(p, hci_evt_len); - break; - case HCI_BLE_LL_CONN_PARAM_UPD_EVT: - btu_ble_ll_conn_param_upd_evt(p, hci_evt_len); - break; - case HCI_BLE_READ_REMOTE_FEAT_CMPL_EVT: - btu_ble_read_remote_feat_evt(p); - break; - case HCI_BLE_LTK_REQ_EVT: /* received only at slave device */ - btu_ble_proc_ltk_req(p); - break; + switch (ble_sub_code) { + case HCI_BLE_ADV_PKT_RPT_EVT: /* result of inquiry */ + btu_ble_process_adv_pkt(p); + break; + case HCI_BLE_CONN_COMPLETE_EVT: + btu_ble_ll_conn_complete_evt(p, hci_evt_len); + break; + case HCI_BLE_LL_CONN_PARAM_UPD_EVT: + btu_ble_ll_conn_param_upd_evt(p, hci_evt_len); + break; + case HCI_BLE_READ_REMOTE_FEAT_CMPL_EVT: + btu_ble_read_remote_feat_evt(p); + break; + case HCI_BLE_LTK_REQ_EVT: /* received only at slave device */ + btu_ble_proc_ltk_req(p); + break; #if (defined BLE_PRIVACY_SPT && BLE_PRIVACY_SPT == TRUE) - case HCI_BLE_ENHANCED_CONN_COMPLETE_EVT: - btu_ble_proc_enhanced_conn_cmpl(p, hci_evt_len); - break; + case HCI_BLE_ENHANCED_CONN_COMPLETE_EVT: + btu_ble_proc_enhanced_conn_cmpl(p, hci_evt_len); + break; #endif #if (BLE_LLT_INCLUDED == TRUE) - case HCI_BLE_RC_PARAM_REQ_EVT: - btu_ble_rc_param_req_evt(p); - break; + case HCI_BLE_RC_PARAM_REQ_EVT: + btu_ble_rc_param_req_evt(p); + break; #endif - case HCI_BLE_DATA_LENGTH_CHANGE_EVT: - btu_ble_data_length_change_evt(p, hci_evt_len); - break; - } + case HCI_BLE_DATA_LENGTH_CHANGE_EVT: + btu_ble_data_length_change_evt(p, hci_evt_len); break; + } + break; #endif /* BLE_INCLUDED */ - case HCI_VENDOR_SPECIFIC_EVT: - btm_vendor_specific_evt (p, hci_evt_len); - break; + case HCI_VENDOR_SPECIFIC_EVT: + btm_vendor_specific_evt (p, hci_evt_len); + break; } } @@ -358,12 +356,13 @@ void btu_hcif_process_event (UNUSED_ATTR UINT8 controller_id, BT_HDR *p_msg) *******************************************************************************/ void btu_hcif_send_cmd (UNUSED_ATTR UINT8 controller_id, BT_HDR *p_buf) { - if (!p_buf) - return; + if (!p_buf) { + return; + } uint16_t opcode; uint8_t *stream = p_buf->data + p_buf->offset; - void * vsc_callback = NULL; + void *vsc_callback = NULL; STREAM_TO_UINT16(opcode, stream); @@ -371,18 +370,18 @@ void btu_hcif_send_cmd (UNUSED_ATTR UINT8 controller_id, BT_HDR *p_buf) /* If command was a VSC, then extract command_complete callback */ if ((opcode & HCI_GRP_VENDOR_SPECIFIC) == HCI_GRP_VENDOR_SPECIFIC #if BLE_INCLUDED == TRUE - || (opcode == HCI_BLE_RAND) - || (opcode == HCI_BLE_ENCRYPT) + || (opcode == HCI_BLE_RAND) + || (opcode == HCI_BLE_ENCRYPT) #endif ) { vsc_callback = *((void **)(p_buf + 1)); } hci_layer_get_interface()->transmit_command( - p_buf, - btu_hcif_command_complete_evt, - btu_hcif_command_status_evt, - vsc_callback); + p_buf, + btu_hcif_command_complete_evt, + btu_hcif_command_status_evt, + vsc_callback); #if (defined(HCILP_INCLUDED) && HCILP_INCLUDED == TRUE) btu_check_bt_sleep (); @@ -413,8 +412,7 @@ void btu_hcif_send_host_rdy_for_data(void) /* Get the SCO numbers */ /* No SCO for now ?? */ - if (num_ents) - { + if (num_ents) { btsnd_hcic_host_num_xmitted_pkts (num_ents, handles, num_pkts); } } @@ -512,15 +510,13 @@ static void btu_hcif_connection_comp_evt (UINT8 *p) handle = HCID_GET_HANDLE (handle); - if (link_type == HCI_LINK_TYPE_ACL) - { + if (link_type == HCI_LINK_TYPE_ACL) { btm_sec_connected (bda, handle, status, enc_mode); l2c_link_hci_conn_comp (status, handle, bda); } #if BTM_SCO_INCLUDED == TRUE - else - { + else { memset(&esco_data, 0, sizeof(tBTM_ESCO_DATA)); /* esco_data.link_type = HCI_LINK_TYPE_SCO; already zero */ memcpy (esco_data.bd_addr, bda, BD_ADDR_LEN); @@ -551,13 +547,11 @@ static void btu_hcif_connection_request_evt (UINT8 *p) /* Pass request to security manager to check connect filters before */ /* passing request to l2cap */ - if (link_type == HCI_LINK_TYPE_ACL) - { + if (link_type == HCI_LINK_TYPE_ACL) { btm_sec_conn_req (bda, dc); } #if BTM_SCO_INCLUDED == TRUE - else - { + else { btm_sco_conn_req (bda, dc, link_type); } #endif /* BTM_SCO_INCLUDED */ @@ -586,8 +580,9 @@ static void btu_hcif_disconnection_comp_evt (UINT8 *p) #if BTM_SCO_INCLUDED == TRUE /* If L2CAP doesn't know about it, send it to SCO */ - if (!l2c_link_hci_disc_comp (handle, reason)) + if (!l2c_link_hci_disc_comp (handle, reason)) { btm_sco_removed (handle, reason); + } #else l2c_link_hci_disc_comp (handle, reason); #endif /* BTM_SCO_INCLUDED */ @@ -696,10 +691,9 @@ static void btu_hcif_read_rmt_ext_features_comp_evt (UINT8 *p) STREAM_TO_UINT8 (status, p_cur); - if (status == HCI_SUCCESS) + if (status == HCI_SUCCESS) { btm_read_remote_ext_features_complete(p); - else - { + } else { STREAM_TO_UINT16 (handle, p_cur); btm_read_remote_ext_features_failed(status, handle); } @@ -824,118 +818,118 @@ static void btu_hcif_esco_connection_chg_evt (UINT8 *p) ** *******************************************************************************/ static void btu_hcif_hdl_command_complete (UINT16 opcode, UINT8 *p, UINT16 evt_len, - void *p_cplt_cback) + void *p_cplt_cback) { - switch (opcode) - { - case HCI_INQUIRY_CANCEL: - /* Tell inquiry processing that we are done */ - btm_process_cancel_complete(HCI_SUCCESS, BTM_BR_INQUIRY_MASK); - break; - case HCI_SET_EVENT_FILTER: - btm_event_filter_complete (p); - break; + switch (opcode) { + case HCI_INQUIRY_CANCEL: + /* Tell inquiry processing that we are done */ + btm_process_cancel_complete(HCI_SUCCESS, BTM_BR_INQUIRY_MASK); + break; + case HCI_SET_EVENT_FILTER: + btm_event_filter_complete (p); + break; - case HCI_DELETE_STORED_LINK_KEY: - btm_delete_stored_link_key_complete (p); - break; + case HCI_DELETE_STORED_LINK_KEY: + btm_delete_stored_link_key_complete (p); + break; - case HCI_READ_LOCAL_NAME: - btm_read_local_name_complete (p, evt_len); - break; + case HCI_READ_LOCAL_NAME: + btm_read_local_name_complete (p, evt_len); + break; - case HCI_GET_LINK_QUALITY: - btm_read_link_quality_complete (p); - break; + case HCI_GET_LINK_QUALITY: + btm_read_link_quality_complete (p); + break; - case HCI_READ_RSSI: - btm_read_rssi_complete (p); - break; + case HCI_READ_RSSI: + btm_read_rssi_complete (p); + break; - case HCI_READ_TRANSMIT_POWER_LEVEL: - btm_read_tx_power_complete(p, FALSE); - break; + case HCI_READ_TRANSMIT_POWER_LEVEL: + btm_read_tx_power_complete(p, FALSE); + break; - case HCI_CREATE_CONNECTION_CANCEL: - btm_create_conn_cancel_complete(p); - break; + case HCI_CREATE_CONNECTION_CANCEL: + btm_create_conn_cancel_complete(p); + break; - case HCI_READ_LOCAL_OOB_DATA: + case HCI_READ_LOCAL_OOB_DATA: #if BTM_OOB_INCLUDED == TRUE - btm_read_local_oob_complete(p); + btm_read_local_oob_complete(p); #endif - break; + break; - case HCI_READ_INQ_TX_POWER_LEVEL: - btm_read_linq_tx_power_complete (p); - break; + case HCI_READ_INQ_TX_POWER_LEVEL: + btm_read_linq_tx_power_complete (p); + break; #if (BLE_INCLUDED == TRUE) -/* BLE Commands sComplete*/ - case HCI_BLE_ADD_WHITE_LIST: - btm_ble_add_2_white_list_complete(*p); - break; + /* BLE Commands sComplete*/ + case HCI_BLE_ADD_WHITE_LIST: + btm_ble_add_2_white_list_complete(*p); + break; - case HCI_BLE_CLEAR_WHITE_LIST: - btm_ble_clear_white_list_complete(p, evt_len); - break; + case HCI_BLE_CLEAR_WHITE_LIST: + btm_ble_clear_white_list_complete(p, evt_len); + break; - case HCI_BLE_REMOVE_WHITE_LIST: - btm_ble_remove_from_white_list_complete(p, evt_len); - break; + case HCI_BLE_REMOVE_WHITE_LIST: + btm_ble_remove_from_white_list_complete(p, evt_len); + break; - case HCI_BLE_RAND: - case HCI_BLE_ENCRYPT: - btm_ble_rand_enc_complete (p, opcode, (tBTM_RAND_ENC_CB *)p_cplt_cback); - break; + case HCI_BLE_RAND: + case HCI_BLE_ENCRYPT: + btm_ble_rand_enc_complete (p, opcode, (tBTM_RAND_ENC_CB *)p_cplt_cback); + break; - case HCI_BLE_READ_ADV_CHNL_TX_POWER: - btm_read_tx_power_complete(p, TRUE); - break; + case HCI_BLE_READ_ADV_CHNL_TX_POWER: + btm_read_tx_power_complete(p, TRUE); + break; - case HCI_BLE_WRITE_ADV_ENABLE: - btm_ble_write_adv_enable_complete(p); - break; + case HCI_BLE_WRITE_ADV_ENABLE: + btm_ble_write_adv_enable_complete(p); + break; - case HCI_BLE_CREATE_LL_CONN: - btm_ble_create_ll_conn_complete(*p); - break; + case HCI_BLE_CREATE_LL_CONN: + btm_ble_create_ll_conn_complete(*p); + break; - case HCI_BLE_TRANSMITTER_TEST: - case HCI_BLE_RECEIVER_TEST: - case HCI_BLE_TEST_END: - btm_ble_test_command_complete(p); - break; + case HCI_BLE_TRANSMITTER_TEST: + case HCI_BLE_RECEIVER_TEST: + case HCI_BLE_TEST_END: + btm_ble_test_command_complete(p); + break; #if (defined BLE_PRIVACY_SPT && BLE_PRIVACY_SPT == TRUE) - case HCI_BLE_ADD_DEV_RESOLVING_LIST: - btm_ble_add_resolving_list_entry_complete(p, evt_len); - break; + case HCI_BLE_ADD_DEV_RESOLVING_LIST: + btm_ble_add_resolving_list_entry_complete(p, evt_len); + break; - case HCI_BLE_RM_DEV_RESOLVING_LIST: - btm_ble_remove_resolving_list_entry_complete(p, evt_len); - break; + case HCI_BLE_RM_DEV_RESOLVING_LIST: + btm_ble_remove_resolving_list_entry_complete(p, evt_len); + break; - case HCI_BLE_CLEAR_RESOLVING_LIST: - btm_ble_clear_resolving_list_complete(p, evt_len); - break; + case HCI_BLE_CLEAR_RESOLVING_LIST: + btm_ble_clear_resolving_list_complete(p, evt_len); + break; - case HCI_BLE_READ_RESOLVABLE_ADDR_PEER: - btm_ble_read_resolving_list_entry_complete(p, evt_len); - break; + case HCI_BLE_READ_RESOLVABLE_ADDR_PEER: + btm_ble_read_resolving_list_entry_complete(p, evt_len); + break; - case HCI_BLE_READ_RESOLVABLE_ADDR_LOCAL: - case HCI_BLE_SET_ADDR_RESOLUTION_ENABLE: - case HCI_BLE_SET_RAND_PRIV_ADDR_TIMOUT: - break; + case HCI_BLE_READ_RESOLVABLE_ADDR_LOCAL: + case HCI_BLE_SET_ADDR_RESOLUTION_ENABLE: + case HCI_BLE_SET_RAND_PRIV_ADDR_TIMOUT: + break; #endif #endif /* (BLE_INCLUDED == TRUE) */ - default: - if ((opcode & HCI_GRP_VENDOR_SPECIFIC) == HCI_GRP_VENDOR_SPECIFIC) - btm_vsc_complete (p, opcode, evt_len, (tBTM_CMPL_CB *)p_cplt_cback); - break; + default: + if ((opcode & HCI_GRP_VENDOR_SPECIFIC) == HCI_GRP_VENDOR_SPECIFIC) { + btm_vsc_complete (p, opcode, evt_len, (tBTM_CMPL_CB *)p_cplt_cback); + } + break; } } @@ -957,13 +951,13 @@ static void btu_hcif_command_complete_evt_on_task(BT_HDR *event) STREAM_TO_UINT16(opcode, stream); btu_hcif_hdl_command_complete( - opcode, - stream, - hack->response->len - 5, // 3 for the command complete headers, 2 for the event headers - hack->context); + opcode, + stream, + hack->response->len - 5, // 3 for the command complete headers, 2 for the event headers + hack->context); - GKI_freebuf(hack->response); - osi_free(event); + GKI_freebuf(hack->response); + osi_free(event); } static void btu_hcif_command_complete_evt(BT_HDR *response, void *context) @@ -980,7 +974,7 @@ static void btu_hcif_command_complete_evt(BT_HDR *response, void *context) event->event = BTU_POST_TO_TASK_NO_GOOD_HORRIBLE_HACK; fixed_queue_enqueue(btu_hci_msg_queue, event); - // ke_event_set(KE_EVENT_BTU_TASK_THREAD); + // ke_event_set(KE_EVENT_BTU_TASK_THREAD); btu_task_post(SIG_BTU_WORK); } @@ -995,7 +989,7 @@ static void btu_hcif_command_complete_evt(BT_HDR *response, void *context) ** *******************************************************************************/ static void btu_hcif_hdl_command_status (UINT16 opcode, UINT8 status, UINT8 *p_cmd, - void *p_vsc_status_cback) + void *p_vsc_status_cback) { BD_ADDR bd_addr; UINT16 handle; @@ -1003,141 +997,133 @@ static void btu_hcif_hdl_command_status (UINT16 opcode, UINT8 status, UINT8 *p_c tBTM_ESCO_DATA esco_data; #endif - switch (opcode) - { - case HCI_EXIT_SNIFF_MODE: - case HCI_EXIT_PARK_MODE: + switch (opcode) { + case HCI_EXIT_SNIFF_MODE: + case HCI_EXIT_PARK_MODE: #if BTM_SCO_WAKE_PARKED_LINK == TRUE - if (status != HCI_SUCCESS) - { - /* Allow SCO initiation to continue if waiting for change mode event */ - if (p_cmd != NULL) - { - p_cmd++; /* bypass length field */ - STREAM_TO_UINT16 (handle, p_cmd); - btm_sco_chk_pend_unpark (status, handle); - } + if (status != HCI_SUCCESS) { + /* Allow SCO initiation to continue if waiting for change mode event */ + if (p_cmd != NULL) { + p_cmd++; /* bypass length field */ + STREAM_TO_UINT16 (handle, p_cmd); + btm_sco_chk_pend_unpark (status, handle); } + } #endif - /* Case Falls Through */ + /* Case Falls Through */ - case HCI_HOLD_MODE: - case HCI_SNIFF_MODE: - case HCI_PARK_MODE: - btm_pm_proc_cmd_status(status); - break; + case HCI_HOLD_MODE: + case HCI_SNIFF_MODE: + case HCI_PARK_MODE: + btm_pm_proc_cmd_status(status); + break; - default: - /* If command failed to start, we may need to tell BTM */ - if (status != HCI_SUCCESS) - { - switch (opcode) - { - case HCI_INQUIRY: - /* Tell inquiry processing that we are done */ - btm_process_inq_complete(status, BTM_BR_INQUIRY_MASK); - break; + default: + /* If command failed to start, we may need to tell BTM */ + if (status != HCI_SUCCESS) { + switch (opcode) { + case HCI_INQUIRY: + /* Tell inquiry processing that we are done */ + btm_process_inq_complete(status, BTM_BR_INQUIRY_MASK); + break; - case HCI_RMT_NAME_REQUEST: - /* Tell inquiry processing that we are done */ - btm_process_remote_name (NULL, NULL, 0, status); + case HCI_RMT_NAME_REQUEST: + /* Tell inquiry processing that we are done */ + btm_process_remote_name (NULL, NULL, 0, status); - btm_sec_rmt_name_request_complete (NULL, NULL, status); - break; + btm_sec_rmt_name_request_complete (NULL, NULL, status); + break; - case HCI_QOS_SETUP_COMP_EVT: - /* Tell qos setup that we are done */ - btm_qos_setup_complete(status,0,NULL); - break; + case HCI_QOS_SETUP_COMP_EVT: + /* Tell qos setup that we are done */ + btm_qos_setup_complete(status, 0, NULL); + break; - case HCI_SWITCH_ROLE: - /* Tell BTM that the command failed */ - /* read bd addr out of stored command */ - if (p_cmd != NULL) - { - p_cmd++; - STREAM_TO_BDADDR (bd_addr, p_cmd); - btm_acl_role_changed(status, bd_addr, BTM_ROLE_UNDEFINED); - } - else - btm_acl_role_changed(status, NULL, BTM_ROLE_UNDEFINED); - l2c_link_role_changed (NULL, BTM_ROLE_UNDEFINED, HCI_ERR_COMMAND_DISALLOWED); - break; + case HCI_SWITCH_ROLE: + /* Tell BTM that the command failed */ + /* read bd addr out of stored command */ + if (p_cmd != NULL) { + p_cmd++; + STREAM_TO_BDADDR (bd_addr, p_cmd); + btm_acl_role_changed(status, bd_addr, BTM_ROLE_UNDEFINED); + } else { + btm_acl_role_changed(status, NULL, BTM_ROLE_UNDEFINED); + } + l2c_link_role_changed (NULL, BTM_ROLE_UNDEFINED, HCI_ERR_COMMAND_DISALLOWED); + break; - case HCI_CREATE_CONNECTION: - /* read bd addr out of stored command */ - if (p_cmd != NULL) - { - p_cmd++; - STREAM_TO_BDADDR (bd_addr, p_cmd); - btm_sec_connected (bd_addr, HCI_INVALID_HANDLE, status, 0); - l2c_link_hci_conn_comp (status, HCI_INVALID_HANDLE, bd_addr); - } - break; + case HCI_CREATE_CONNECTION: + /* read bd addr out of stored command */ + if (p_cmd != NULL) { + p_cmd++; + STREAM_TO_BDADDR (bd_addr, p_cmd); + btm_sec_connected (bd_addr, HCI_INVALID_HANDLE, status, 0); + l2c_link_hci_conn_comp (status, HCI_INVALID_HANDLE, bd_addr); + } + break; - case HCI_READ_RMT_EXT_FEATURES: - if (p_cmd != NULL) - { - p_cmd++; /* skip command length */ - STREAM_TO_UINT16 (handle, p_cmd); - } - else - handle = HCI_INVALID_HANDLE; + case HCI_READ_RMT_EXT_FEATURES: + if (p_cmd != NULL) { + p_cmd++; /* skip command length */ + STREAM_TO_UINT16 (handle, p_cmd); + } else { + handle = HCI_INVALID_HANDLE; + } - btm_read_remote_ext_features_failed(status, handle); - break; + btm_read_remote_ext_features_failed(status, handle); + break; - case HCI_AUTHENTICATION_REQUESTED: - /* Device refused to start authentication. That should be treated as authentication failure. */ - btm_sec_auth_complete (BTM_INVALID_HCI_HANDLE, status); - break; + case HCI_AUTHENTICATION_REQUESTED: + /* Device refused to start authentication. That should be treated as authentication failure. */ + btm_sec_auth_complete (BTM_INVALID_HCI_HANDLE, status); + break; - case HCI_SET_CONN_ENCRYPTION: - /* Device refused to start encryption. That should be treated as encryption failure. */ - btm_sec_encrypt_change (BTM_INVALID_HCI_HANDLE, status, FALSE); - break; + case HCI_SET_CONN_ENCRYPTION: + /* Device refused to start encryption. That should be treated as encryption failure. */ + btm_sec_encrypt_change (BTM_INVALID_HCI_HANDLE, status, FALSE); + break; #if BLE_INCLUDED == TRUE - case HCI_BLE_CREATE_LL_CONN: - btm_ble_create_ll_conn_complete(status); - break; + case HCI_BLE_CREATE_LL_CONN: + btm_ble_create_ll_conn_complete(status); + break; #endif #if BTM_SCO_INCLUDED == TRUE - case HCI_SETUP_ESCO_CONNECTION: - /* read handle out of stored command */ - if (p_cmd != NULL) - { - p_cmd++; - STREAM_TO_UINT16 (handle, p_cmd); + case HCI_SETUP_ESCO_CONNECTION: + /* read handle out of stored command */ + if (p_cmd != NULL) { + p_cmd++; + STREAM_TO_UINT16 (handle, p_cmd); - /* Determine if initial connection failed or is a change of setup */ - if (btm_is_sco_active(handle)) - btm_esco_proc_conn_chg (status, handle, 0, 0, 0, 0); - else - btm_sco_connected (status, NULL, handle, &esco_data); - } - break; -#endif - -/* This is commented out until an upper layer cares about returning event -#if L2CAP_NON_FLUSHABLE_PB_INCLUDED == TRUE - case HCI_ENHANCED_FLUSH: + /* Determine if initial connection failed or is a change of setup */ + if (btm_is_sco_active(handle)) { + btm_esco_proc_conn_chg (status, handle, 0, 0, 0, 0); + } else { + btm_sco_connected (status, NULL, handle, &esco_data); + } + } break; #endif -*/ - default: - if ((opcode & HCI_GRP_VENDOR_SPECIFIC) == HCI_GRP_VENDOR_SPECIFIC) - btm_vsc_complete (&status, opcode, 1, (tBTM_CMPL_CB *)p_vsc_status_cback); - break; - } - } - else - { - if ((opcode & HCI_GRP_VENDOR_SPECIFIC) == HCI_GRP_VENDOR_SPECIFIC) + /* This is commented out until an upper layer cares about returning event + #if L2CAP_NON_FLUSHABLE_PB_INCLUDED == TRUE + case HCI_ENHANCED_FLUSH: + break; + #endif + */ + default: + if ((opcode & HCI_GRP_VENDOR_SPECIFIC) == HCI_GRP_VENDOR_SPECIFIC) { btm_vsc_complete (&status, opcode, 1, (tBTM_CMPL_CB *)p_vsc_status_cback); + } + break; } + + } else { + if ((opcode & HCI_GRP_VENDOR_SPECIFIC) == HCI_GRP_VENDOR_SPECIFIC) { + btm_vsc_complete (&status, opcode, 1, (tBTM_CMPL_CB *)p_vsc_status_cback); + } + } } } @@ -1159,10 +1145,10 @@ static void btu_hcif_command_status_evt_on_task(BT_HDR *event) STREAM_TO_UINT16(opcode, stream); btu_hcif_hdl_command_status( - opcode, - hack->status, - stream, - hack->context); + opcode, + hack->status, + stream, + hack->context); GKI_freebuf(hack->command); osi_free(event); @@ -1202,8 +1188,9 @@ static void btu_hcif_hardware_error_evt (UINT8 *p) btm_report_device_status (BTM_DEV_STATUS_DOWN); /* Reset the controller */ - if (BTM_IsDeviceUp()) + if (BTM_IsDeviceUp()) { BTM_DeviceReset (NULL); + } } @@ -1289,11 +1276,11 @@ static void btu_hcif_mode_change_evt (UINT8 *p) #endif btm_pm_proc_mode_change (status, handle, current_mode, interval); -/* -#if (HID_DEV_INCLUDED == TRUE) && (HID_DEV_PM_INCLUDED == TRUE) - hidd_pm_proc_mode_change( status, current_mode, interval ) ; -#endif -*/ + /* + #if (HID_DEV_INCLUDED == TRUE) && (HID_DEV_PM_INCLUDED == TRUE) + hidd_pm_proc_mode_change( status, current_mode, interval ) ; + #endif + */ } /******************************************************************************* @@ -1305,12 +1292,12 @@ static void btu_hcif_mode_change_evt (UINT8 *p) ** Returns void ** *******************************************************************************/ - #if (BTM_SSR_INCLUDED == TRUE) +#if (BTM_SSR_INCLUDED == TRUE) static void btu_hcif_ssr_evt (UINT8 *p, UINT16 evt_len) { btm_pm_proc_ssr_evt(p, evt_len); } - #endif +#endif /******************************************************************************* ** @@ -1436,8 +1423,9 @@ static void btu_hcif_read_clock_off_comp_evt (UINT8 *p) STREAM_TO_UINT8 (status, p); /* If failed to get clock offset just drop the result */ - if (status != HCI_SUCCESS) + if (status != HCI_SUCCESS) { return; + } STREAM_TO_UINT16 (handle, p); STREAM_TO_UINT16 (clock_offset, p); @@ -1659,7 +1647,7 @@ static void btu_hcif_simple_pair_complete_evt (UINT8 *p) #if L2CAP_NON_FLUSHABLE_PB_INCLUDED == TRUE static void btu_hcif_enhanced_flush_complete_evt (void) { -/* This is empty until an upper layer cares about returning event */ + /* This is empty until an upper layer cares about returning event */ } #endif /********************************************** @@ -1680,7 +1668,9 @@ static void btu_hcif_encryption_key_refresh_cmpl_evt (UINT8 *p) STREAM_TO_UINT8 (status, p); STREAM_TO_UINT16 (handle, p); - if (status == HCI_SUCCESS) enc_enable = 1; + if (status == HCI_SUCCESS) { + enc_enable = 1; + } btm_sec_encrypt_change (handle, status, enc_enable); } @@ -1740,8 +1730,7 @@ static void btu_ble_data_length_change_evt(UINT8 *p, UINT16 evt_len) UINT16 tx_data_len; UINT16 rx_data_len; - if (!controller_get_interface()->supports_ble_packet_extension()) - { + if (!controller_get_interface()->supports_ble_packet_extension()) { HCI_TRACE_WARNING("%s, request not supported", __FUNCTION__); return; } diff --git a/components/bt/bluedroid/stack/btu/btu_init.c b/components/bt/bluedroid/stack/btu/btu_init.c old mode 100755 new mode 100644 index d8171aa912..4c59d6f75b --- a/components/bt/bluedroid/stack/btu/btu_init.c +++ b/components/bt/bluedroid/stack/btu/btu_init.c @@ -129,12 +129,12 @@ void btu_init_core(void) ******************************************************************************/ void btu_free_core(void) { - // Free the mandatory core stack components - l2c_free(); + // Free the mandatory core stack components + l2c_free(); #if BLE_INCLUDED == TRUE #if (defined(GATT_INCLUDED) && GATT_INCLUDED == true) - gatt_free(); + gatt_free(); #endif #endif } @@ -157,91 +157,99 @@ void BTU_StartUp(void) btu_cb.trace_level = HCI_INITIAL_TRACE_LEVEL; btu_bta_msg_queue = fixed_queue_new(SIZE_MAX); - if (btu_bta_msg_queue == NULL) + if (btu_bta_msg_queue == NULL) { goto error_exit; + } btu_general_alarm_hash_map = hash_map_new(BTU_GENERAL_ALARM_HASH_MAP_SIZE, - hash_function_pointer, NULL, (data_free_fn)osi_alarm_free, NULL); - if (btu_general_alarm_hash_map == NULL) + hash_function_pointer, NULL, (data_free_fn)osi_alarm_free, NULL); + if (btu_general_alarm_hash_map == NULL) { goto error_exit; + } pthread_mutex_init(&btu_general_alarm_lock, NULL); btu_general_alarm_queue = fixed_queue_new(SIZE_MAX); - if (btu_general_alarm_queue == NULL) + if (btu_general_alarm_queue == NULL) { goto error_exit; + } btu_oneshot_alarm_hash_map = hash_map_new(BTU_ONESHOT_ALARM_HASH_MAP_SIZE, - hash_function_pointer, NULL, (data_free_fn)osi_alarm_free, NULL); - if (btu_oneshot_alarm_hash_map == NULL) + hash_function_pointer, NULL, (data_free_fn)osi_alarm_free, NULL); + if (btu_oneshot_alarm_hash_map == NULL) { goto error_exit; + } pthread_mutex_init(&btu_oneshot_alarm_lock, NULL); btu_oneshot_alarm_queue = fixed_queue_new(SIZE_MAX); - if (btu_oneshot_alarm_queue == NULL) + if (btu_oneshot_alarm_queue == NULL) { goto error_exit; + } btu_l2cap_alarm_hash_map = hash_map_new(BTU_L2CAP_ALARM_HASH_MAP_SIZE, - hash_function_pointer, NULL, (data_free_fn)osi_alarm_free, NULL); - if (btu_l2cap_alarm_hash_map == NULL) + hash_function_pointer, NULL, (data_free_fn)osi_alarm_free, NULL); + if (btu_l2cap_alarm_hash_map == NULL) { goto error_exit; + } pthread_mutex_init(&btu_l2cap_alarm_lock, NULL); btu_l2cap_alarm_queue = fixed_queue_new(SIZE_MAX); - if (btu_l2cap_alarm_queue == NULL) - goto error_exit; + if (btu_l2cap_alarm_queue == NULL) { + goto error_exit; + } xBtuQueue = xQueueCreate(60, sizeof(BtTaskEvt_t)); xTaskCreate(btu_task_thread_handler, "BtuT", 8192, NULL, configMAX_PRIORITIES - 1, &xBtuTaskHandle); btu_task_post(SIG_BTU_START_UP); -/* - // Continue startup on bt workqueue thread. - thread_post(bt_workqueue_thread, btu_task_start_up, NULL); -*/ + /* + // Continue startup on bt workqueue thread. + thread_post(bt_workqueue_thread, btu_task_start_up, NULL); + */ return; - error_exit:; +error_exit:; LOG_ERROR("%s Unable to allocate resources for bt_workqueue", __func__); BTU_ShutDown(); } -void BTU_ShutDown(void) { - btu_task_shut_down(); -/* - fixed_queue_free(btu_bta_msg_queue, NULL); -*/ - hash_map_free(btu_general_alarm_hash_map); - pthread_mutex_destroy(&btu_general_alarm_lock); - fixed_queue_free(btu_general_alarm_queue, NULL); +void BTU_ShutDown(void) +{ + btu_task_shut_down(); + /* + fixed_queue_free(btu_bta_msg_queue, NULL); + */ + hash_map_free(btu_general_alarm_hash_map); + pthread_mutex_destroy(&btu_general_alarm_lock); + fixed_queue_free(btu_general_alarm_queue, NULL); - hash_map_free(btu_oneshot_alarm_hash_map); - pthread_mutex_destroy(&btu_oneshot_alarm_lock); - fixed_queue_free(btu_oneshot_alarm_queue, NULL); + hash_map_free(btu_oneshot_alarm_hash_map); + pthread_mutex_destroy(&btu_oneshot_alarm_lock); + fixed_queue_free(btu_oneshot_alarm_queue, NULL); - hash_map_free(btu_l2cap_alarm_hash_map); - pthread_mutex_destroy(&btu_l2cap_alarm_lock); - fixed_queue_free(btu_l2cap_alarm_queue, NULL); + hash_map_free(btu_l2cap_alarm_hash_map); + pthread_mutex_destroy(&btu_l2cap_alarm_lock); + fixed_queue_free(btu_l2cap_alarm_queue, NULL); - //thread_free(bt_workqueue_thread); - vTaskDelete(xBtuTaskHandle); - vQueueDelete(xBtuQueue); + //thread_free(bt_workqueue_thread); + vTaskDelete(xBtuTaskHandle); + vQueueDelete(xBtuQueue); - btu_bta_msg_queue = NULL; + btu_bta_msg_queue = NULL; - btu_general_alarm_hash_map = NULL; - btu_general_alarm_queue = NULL; + btu_general_alarm_hash_map = NULL; + btu_general_alarm_queue = NULL; - btu_oneshot_alarm_hash_map = NULL; - btu_oneshot_alarm_queue = NULL; + btu_oneshot_alarm_hash_map = NULL; + btu_oneshot_alarm_queue = NULL; - btu_l2cap_alarm_hash_map = NULL; - btu_l2cap_alarm_queue = NULL; + btu_l2cap_alarm_hash_map = NULL; + btu_l2cap_alarm_queue = NULL; // bt_workqueue_thread = NULL; - xBtuTaskHandle = NULL; - xBtuQueue = 0; + xBtuTaskHandle = NULL; + xBtuQueue = 0; } /***************************************************************************** diff --git a/components/bt/bluedroid/stack/btu/btu_task.c b/components/bt/bluedroid/stack/btu/btu_task.c old mode 100755 new mode 100644 index 9e7996cea6..690878d07c --- a/components/bt/bluedroid/stack/btu/btu_task.c +++ b/components/bt/bluedroid/stack/btu/btu_task.c @@ -137,7 +137,8 @@ static void btu_hci_msg_process(BT_HDR *p_msg); static void btu_bta_alarm_process(TIMER_LIST_ENT *p_tle); #endif -void btu_hci_msg_ready(fixed_queue_t *queue) { +void btu_hci_msg_ready(fixed_queue_t *queue) +{ BT_HDR *p_msg; while (!fixed_queue_is_empty(queue)) { @@ -146,7 +147,8 @@ void btu_hci_msg_ready(fixed_queue_t *queue) { } } -void btu_general_alarm_ready(fixed_queue_t *queue) { +void btu_general_alarm_ready(fixed_queue_t *queue) +{ TIMER_LIST_ENT *p_tle; while (!fixed_queue_is_empty(queue)) { @@ -155,7 +157,8 @@ void btu_general_alarm_ready(fixed_queue_t *queue) { } } -void btu_oneshot_alarm_ready(fixed_queue_t *queue) { +void btu_oneshot_alarm_ready(fixed_queue_t *queue) +{ TIMER_LIST_ENT *p_tle; while (!fixed_queue_is_empty(queue)) { @@ -168,12 +171,11 @@ void btu_oneshot_alarm_ready(fixed_queue_t *queue) { btm_ble_timeout(p_tle); break; #endif - case BTU_TTYPE_USER_FUNC: - { - tUSER_TIMEOUT_FUNC *p_uf = (tUSER_TIMEOUT_FUNC *)p_tle->param; - (*p_uf)(p_tle); - } - break; + case BTU_TTYPE_USER_FUNC: { + tUSER_TIMEOUT_FUNC *p_uf = (tUSER_TIMEOUT_FUNC *)p_tle->param; + (*p_uf)(p_tle); + } + break; default: // FAIL @@ -184,7 +186,8 @@ void btu_oneshot_alarm_ready(fixed_queue_t *queue) { } } -void btu_l2cap_alarm_ready(fixed_queue_t *queue) { +void btu_l2cap_alarm_ready(fixed_queue_t *queue) +{ TIMER_LIST_ENT *p_tle; while (!fixed_queue_is_empty(queue)) { @@ -194,7 +197,8 @@ void btu_l2cap_alarm_ready(fixed_queue_t *queue) { } #if (defined(BTA_INCLUDED) && BTA_INCLUDED == TRUE) -void btu_bta_msg_ready(fixed_queue_t *queue) { +void btu_bta_msg_ready(fixed_queue_t *queue) +{ BT_HDR *p_msg; while (!fixed_queue_is_empty(queue)) { @@ -203,7 +207,8 @@ void btu_bta_msg_ready(fixed_queue_t *queue) { } } -void btu_bta_alarm_ready(fixed_queue_t *queue) { +void btu_bta_alarm_ready(fixed_queue_t *queue) +{ TIMER_LIST_ENT *p_tle; while (!fixed_queue_is_empty(queue)) { @@ -213,74 +218,74 @@ void btu_bta_alarm_ready(fixed_queue_t *queue) { } #endif -static void btu_hci_msg_process(BT_HDR *p_msg) { +static void btu_hci_msg_process(BT_HDR *p_msg) +{ /* Determine the input message type. */ - switch (p_msg->event & BT_EVT_MASK) - { - case BTU_POST_TO_TASK_NO_GOOD_HORRIBLE_HACK: // TODO(zachoverflow): remove this - ((post_to_task_hack_t *)(&p_msg->data[0]))->callback(p_msg); - break; - case BT_EVT_TO_BTU_HCI_ACL: - /* All Acl Data goes to L2CAP */ - l2c_rcv_acl_data (p_msg); - break; + switch (p_msg->event & BT_EVT_MASK) { + case BTU_POST_TO_TASK_NO_GOOD_HORRIBLE_HACK: // TODO(zachoverflow): remove this + ((post_to_task_hack_t *)(&p_msg->data[0]))->callback(p_msg); + break; + case BT_EVT_TO_BTU_HCI_ACL: + /* All Acl Data goes to L2CAP */ + l2c_rcv_acl_data (p_msg); + break; - case BT_EVT_TO_BTU_L2C_SEG_XMIT: - /* L2CAP segment transmit complete */ - l2c_link_segments_xmitted (p_msg); - break; + case BT_EVT_TO_BTU_L2C_SEG_XMIT: + /* L2CAP segment transmit complete */ + l2c_link_segments_xmitted (p_msg); + break; - case BT_EVT_TO_BTU_HCI_SCO: + case BT_EVT_TO_BTU_HCI_SCO: #if BTM_SCO_INCLUDED == TRUE - btm_route_sco_data (p_msg); - break; + btm_route_sco_data (p_msg); + break; #endif - case BT_EVT_TO_BTU_HCI_EVT: - btu_hcif_process_event ((UINT8)(p_msg->event & BT_SUB_EVT_MASK), p_msg); - GKI_freebuf(p_msg); + case BT_EVT_TO_BTU_HCI_EVT: + btu_hcif_process_event ((UINT8)(p_msg->event & BT_SUB_EVT_MASK), p_msg); + GKI_freebuf(p_msg); #if (defined(HCILP_INCLUDED) && HCILP_INCLUDED == TRUE) - /* If host receives events which it doesn't response to, */ - /* host should start idle timer to enter sleep mode. */ - btu_check_bt_sleep (); + /* If host receives events which it doesn't response to, */ + /* host should start idle timer to enter sleep mode. */ + btu_check_bt_sleep (); #endif - break; + break; - case BT_EVT_TO_BTU_HCI_CMD: - btu_hcif_send_cmd ((UINT8)(p_msg->event & BT_SUB_EVT_MASK), p_msg); - break; + case BT_EVT_TO_BTU_HCI_CMD: + btu_hcif_send_cmd ((UINT8)(p_msg->event & BT_SUB_EVT_MASK), p_msg); + break; - default:; - int i = 0; - uint16_t mask = (UINT16) (p_msg->event & BT_EVT_MASK); - BOOLEAN handled = FALSE; + default:; + int i = 0; + uint16_t mask = (UINT16) (p_msg->event & BT_EVT_MASK); + BOOLEAN handled = FALSE; - for (; !handled && i < BTU_MAX_REG_EVENT; i++) - { - if (btu_cb.event_reg[i].event_cb == NULL) - continue; - - if (mask == btu_cb.event_reg[i].event_range) - { - if (btu_cb.event_reg[i].event_cb) - { - btu_cb.event_reg[i].event_cb(p_msg); - handled = TRUE; - } - } + for (; !handled && i < BTU_MAX_REG_EVENT; i++) { + if (btu_cb.event_reg[i].event_cb == NULL) { + continue; } - if (handled == FALSE) - GKI_freebuf (p_msg); + if (mask == btu_cb.event_reg[i].event_range) { + if (btu_cb.event_reg[i].event_cb) { + btu_cb.event_reg[i].event_cb(p_msg); + handled = TRUE; + } + } + } - break; + if (handled == FALSE) { + GKI_freebuf (p_msg); + } + + break; } } #if (defined(BTA_INCLUDED) && BTA_INCLUDED == TRUE) -static void btu_bta_alarm_process(TIMER_LIST_ENT *p_tle) { +static void btu_bta_alarm_process(TIMER_LIST_ENT *p_tle) +{ // call timer callback if (p_tle->p_cback) { (*p_tle->p_cback)(p_tle); @@ -318,8 +323,7 @@ void btu_task_thread_handler(void *arg) fixed_queue_process(btu_general_alarm_queue); fixed_queue_process(btu_oneshot_alarm_queue); fixed_queue_process(btu_l2cap_alarm_queue); - } - else if (e.sig == SIG_BTU_START_UP) { + } else if (e.sig == SIG_BTU_START_UP) { btu_task_start_up(); } } @@ -334,54 +338,57 @@ void btu_task_post(uint32_t sig) evt.sig = sig; evt.par = 0; - if (xQueueSend(xBtuQueue, &evt, 10/portTICK_RATE_MS) != pdTRUE) { - LOG_ERROR("xBtuQueue failed\n"); + if (xQueueSend(xBtuQueue, &evt, 10 / portTICK_RATE_MS) != pdTRUE) { + LOG_ERROR("xBtuQueue failed\n"); } } -void btu_task_start_up(void) { +void btu_task_start_up(void) +{ #if (defined(BTA_INCLUDED) && BTA_INCLUDED == TRUE) - fixed_queue_register_dequeue(btu_bta_msg_queue, btu_bta_msg_ready); + fixed_queue_register_dequeue(btu_bta_msg_queue, btu_bta_msg_ready); #endif - fixed_queue_register_dequeue(btu_hci_msg_queue, btu_hci_msg_ready); - fixed_queue_register_dequeue(btu_general_alarm_queue, btu_general_alarm_ready); - fixed_queue_register_dequeue(btu_oneshot_alarm_queue, btu_oneshot_alarm_ready); - fixed_queue_register_dequeue(btu_l2cap_alarm_queue, btu_l2cap_alarm_ready); + fixed_queue_register_dequeue(btu_hci_msg_queue, btu_hci_msg_ready); + fixed_queue_register_dequeue(btu_general_alarm_queue, btu_general_alarm_ready); + fixed_queue_register_dequeue(btu_oneshot_alarm_queue, btu_oneshot_alarm_ready); + fixed_queue_register_dequeue(btu_l2cap_alarm_queue, btu_l2cap_alarm_ready); - /* Initialize the mandatory core stack control blocks - (BTU, BTM, L2CAP, and SDP) - */ - btu_init_core(); + /* Initialize the mandatory core stack control blocks + (BTU, BTM, L2CAP, and SDP) + */ + btu_init_core(); - /* Initialize any optional stack components */ - BTE_InitStack(); + /* Initialize any optional stack components */ + BTE_InitStack(); #if (defined(BTA_INCLUDED) && BTA_INCLUDED == TRUE) - bta_sys_init(); + bta_sys_init(); #endif - // Inform the bt jni thread initialization is ok. - // btif_transfer_context(btif_init_ok, 0, NULL, 0, NULL); + // Inform the bt jni thread initialization is ok. + // btif_transfer_context(btif_init_ok, 0, NULL, 0, NULL); #if(defined(BT_APP_DEMO) && BT_APP_DEMO == TRUE) - if (bluedroid_init_done_cb) - bluedroid_init_done_cb(); + if (bluedroid_init_done_cb) { + bluedroid_init_done_cb(); + } #endif } -void btu_task_shut_down(void) { - fixed_queue_unregister_dequeue(btu_hci_msg_queue); - fixed_queue_unregister_dequeue(btu_general_alarm_queue); - fixed_queue_unregister_dequeue(btu_oneshot_alarm_queue); - fixed_queue_unregister_dequeue(btu_l2cap_alarm_queue); +void btu_task_shut_down(void) +{ + fixed_queue_unregister_dequeue(btu_hci_msg_queue); + fixed_queue_unregister_dequeue(btu_general_alarm_queue); + fixed_queue_unregister_dequeue(btu_oneshot_alarm_queue); + fixed_queue_unregister_dequeue(btu_l2cap_alarm_queue); #if (defined(BTA_INCLUDED) && BTA_INCLUDED == TRUE) - fixed_queue_unregister_dequeue(btu_bta_msg_queue); - bta_sys_free(); + fixed_queue_unregister_dequeue(btu_bta_msg_queue); + bta_sys_free(); #endif - btu_free_core(); + btu_free_core(); } /******************************************************************************* @@ -395,145 +402,146 @@ void btu_task_shut_down(void) { ** Returns void ** *******************************************************************************/ -static void btu_general_alarm_process(TIMER_LIST_ENT *p_tle) { +static void btu_general_alarm_process(TIMER_LIST_ENT *p_tle) +{ assert(p_tle != NULL); switch (p_tle->event) { - case BTU_TTYPE_BTM_DEV_CTL: - btm_dev_timeout(p_tle); - break; + case BTU_TTYPE_BTM_DEV_CTL: + btm_dev_timeout(p_tle); + break; - case BTU_TTYPE_L2CAP_LINK: - case BTU_TTYPE_L2CAP_CHNL: - case BTU_TTYPE_L2CAP_HOLD: - case BTU_TTYPE_L2CAP_INFO: - case BTU_TTYPE_L2CAP_FCR_ACK: - l2c_process_timeout (p_tle); - break; + case BTU_TTYPE_L2CAP_LINK: + case BTU_TTYPE_L2CAP_CHNL: + case BTU_TTYPE_L2CAP_HOLD: + case BTU_TTYPE_L2CAP_INFO: + case BTU_TTYPE_L2CAP_FCR_ACK: + l2c_process_timeout (p_tle); + break; #if (defined(SDP_INCLUDED) && SDP_INCLUDED == TRUE) - case BTU_TTYPE_SDP: - sdp_conn_timeout ((tCONN_CB *)p_tle->param); - break; + case BTU_TTYPE_SDP: + sdp_conn_timeout ((tCONN_CB *)p_tle->param); + break; #endif - case BTU_TTYPE_BTM_RMT_NAME: - btm_inq_rmt_name_failed(); - break; + case BTU_TTYPE_BTM_RMT_NAME: + btm_inq_rmt_name_failed(); + break; #if (defined(RFCOMM_INCLUDED) && RFCOMM_INCLUDED == TRUE) - case BTU_TTYPE_RFCOMM_MFC: - case BTU_TTYPE_RFCOMM_PORT: - rfcomm_process_timeout (p_tle); - break; + case BTU_TTYPE_RFCOMM_MFC: + case BTU_TTYPE_RFCOMM_PORT: + rfcomm_process_timeout (p_tle); + break; #endif #if ((defined(BNEP_INCLUDED) && BNEP_INCLUDED == TRUE)) - case BTU_TTYPE_BNEP: - bnep_process_timeout(p_tle); - break; + case BTU_TTYPE_BNEP: + bnep_process_timeout(p_tle); + break; #endif #if (defined(AVDT_INCLUDED) && AVDT_INCLUDED == TRUE) - case BTU_TTYPE_AVDT_CCB_RET: - case BTU_TTYPE_AVDT_CCB_RSP: - case BTU_TTYPE_AVDT_CCB_IDLE: - case BTU_TTYPE_AVDT_SCB_TC: - avdt_process_timeout(p_tle); - break; + case BTU_TTYPE_AVDT_CCB_RET: + case BTU_TTYPE_AVDT_CCB_RSP: + case BTU_TTYPE_AVDT_CCB_IDLE: + case BTU_TTYPE_AVDT_SCB_TC: + avdt_process_timeout(p_tle); + break; #endif #if (defined(HID_HOST_INCLUDED) && HID_HOST_INCLUDED == TRUE) - case BTU_TTYPE_HID_HOST_REPAGE_TO : - hidh_proc_repage_timeout(p_tle); - break; + case BTU_TTYPE_HID_HOST_REPAGE_TO : + hidh_proc_repage_timeout(p_tle); + break; #endif #if (defined(BLE_INCLUDED) && BLE_INCLUDED == TRUE) - case BTU_TTYPE_BLE_INQUIRY: - case BTU_TTYPE_BLE_GAP_LIM_DISC: - case BTU_TTYPE_BLE_RANDOM_ADDR: - case BTU_TTYPE_BLE_GAP_FAST_ADV: - case BTU_TTYPE_BLE_OBSERVE: - btm_ble_timeout(p_tle); - break; + case BTU_TTYPE_BLE_INQUIRY: + case BTU_TTYPE_BLE_GAP_LIM_DISC: + case BTU_TTYPE_BLE_RANDOM_ADDR: + case BTU_TTYPE_BLE_GAP_FAST_ADV: + case BTU_TTYPE_BLE_OBSERVE: + btm_ble_timeout(p_tle); + break; - case BTU_TTYPE_ATT_WAIT_FOR_RSP: - gatt_rsp_timeout(p_tle); - break; + case BTU_TTYPE_ATT_WAIT_FOR_RSP: + gatt_rsp_timeout(p_tle); + break; - case BTU_TTYPE_ATT_WAIT_FOR_IND_ACK: - gatt_ind_ack_timeout(p_tle); - break; + case BTU_TTYPE_ATT_WAIT_FOR_IND_ACK: + gatt_ind_ack_timeout(p_tle); + break; #if (defined(SMP_INCLUDED) && SMP_INCLUDED == TRUE) - case BTU_TTYPE_SMP_PAIRING_CMD: - smp_rsp_timeout(p_tle); - break; + case BTU_TTYPE_SMP_PAIRING_CMD: + smp_rsp_timeout(p_tle); + break; #endif #endif #if (MCA_INCLUDED == TRUE) - case BTU_TTYPE_MCA_CCB_RSP: - mca_process_timeout(p_tle); - break; + case BTU_TTYPE_MCA_CCB_RSP: + mca_process_timeout(p_tle); + break; #endif - case BTU_TTYPE_USER_FUNC: - { - tUSER_TIMEOUT_FUNC *p_uf = (tUSER_TIMEOUT_FUNC *)p_tle->param; - (*p_uf)(p_tle); + case BTU_TTYPE_USER_FUNC: { + tUSER_TIMEOUT_FUNC *p_uf = (tUSER_TIMEOUT_FUNC *)p_tle->param; + (*p_uf)(p_tle); + } + break; + + default:; + int i = 0; + BOOLEAN handled = FALSE; + + for (; !handled && i < BTU_MAX_REG_TIMER; i++) { + if (btu_cb.timer_reg[i].timer_cb == NULL) { + continue; } - break; - - default:; - int i = 0; - BOOLEAN handled = FALSE; - - for (; !handled && i < BTU_MAX_REG_TIMER; i++) - { - if (btu_cb.timer_reg[i].timer_cb == NULL) - continue; - if (btu_cb.timer_reg[i].p_tle == p_tle) - { - btu_cb.timer_reg[i].timer_cb(p_tle); - handled = TRUE; - } - } - break; + if (btu_cb.timer_reg[i].p_tle == p_tle) { + btu_cb.timer_reg[i].timer_cb(p_tle); + handled = TRUE; + } + } + break; } } -void btu_general_alarm_cb(void *data) { - assert(data != NULL); - TIMER_LIST_ENT *p_tle = (TIMER_LIST_ENT *)data; +void btu_general_alarm_cb(void *data) +{ + assert(data != NULL); + TIMER_LIST_ENT *p_tle = (TIMER_LIST_ENT *)data; - fixed_queue_enqueue(btu_general_alarm_queue, p_tle); - //ke_event_set(KE_EVENT_BTU_TASK_THREAD); - btu_task_post(SIG_BTU_WORK); + fixed_queue_enqueue(btu_general_alarm_queue, p_tle); + //ke_event_set(KE_EVENT_BTU_TASK_THREAD); + btu_task_post(SIG_BTU_WORK); } -void btu_start_timer(TIMER_LIST_ENT *p_tle, UINT16 type, UINT32 timeout_sec) { - osi_alarm_t *alarm = NULL; +void btu_start_timer(TIMER_LIST_ENT *p_tle, UINT16 type, UINT32 timeout_sec) +{ + osi_alarm_t *alarm = NULL; - assert(p_tle != NULL); + assert(p_tle != NULL); - // Get the alarm for the timer list entry. - pthread_mutex_lock(&btu_general_alarm_lock); - if (!hash_map_has_key(btu_general_alarm_hash_map, p_tle)) { - alarm = osi_alarm_new("btu_gen", btu_general_alarm_cb, (void *)p_tle, 0); - hash_map_set(btu_general_alarm_hash_map, p_tle, alarm); - } - pthread_mutex_unlock(&btu_general_alarm_lock); + // Get the alarm for the timer list entry. + pthread_mutex_lock(&btu_general_alarm_lock); + if (!hash_map_has_key(btu_general_alarm_hash_map, p_tle)) { + alarm = osi_alarm_new("btu_gen", btu_general_alarm_cb, (void *)p_tle, 0); + hash_map_set(btu_general_alarm_hash_map, p_tle, alarm); + } + pthread_mutex_unlock(&btu_general_alarm_lock); - alarm = hash_map_get(btu_general_alarm_hash_map, p_tle); - if (alarm == NULL) { - LOG_ERROR("%s Unable to create alarm", __func__); - return; - } - osi_alarm_cancel(alarm); + alarm = hash_map_get(btu_general_alarm_hash_map, p_tle); + if (alarm == NULL) { + LOG_ERROR("%s Unable to create alarm", __func__); + return; + } + osi_alarm_cancel(alarm); - p_tle->event = type; - // NOTE: This value is in seconds but stored in a ticks field. - p_tle->ticks = timeout_sec; - p_tle->in_use = TRUE; - osi_alarm_set(alarm, (period_ms_t)(timeout_sec * 1000)); + p_tle->event = type; + // NOTE: This value is in seconds but stored in a ticks field. + p_tle->ticks = timeout_sec; + p_tle->in_use = TRUE; + osi_alarm_set(alarm, (period_ms_t)(timeout_sec * 1000)); } /******************************************************************************* @@ -545,20 +553,22 @@ void btu_start_timer(TIMER_LIST_ENT *p_tle, UINT16 type, UINT32 timeout_sec) { ** Returns void ** *******************************************************************************/ -void btu_stop_timer(TIMER_LIST_ENT *p_tle) { - assert(p_tle != NULL); +void btu_stop_timer(TIMER_LIST_ENT *p_tle) +{ + assert(p_tle != NULL); - if (p_tle->in_use == FALSE) - return; - p_tle->in_use = FALSE; + if (p_tle->in_use == FALSE) { + return; + } + p_tle->in_use = FALSE; - // Get the alarm for the timer list entry. - osi_alarm_t *alarm = hash_map_get(btu_general_alarm_hash_map, p_tle); - if (alarm == NULL) { - LOG_WARN("%s Unable to find expected alarm in hashmap", __func__); - return; - } - osi_alarm_cancel(alarm); + // Get the alarm for the timer list entry. + osi_alarm_t *alarm = hash_map_get(btu_general_alarm_hash_map, p_tle); + if (alarm == NULL) { + LOG_WARN("%s Unable to find expected alarm in hashmap", __func__); + return; + } + osi_alarm_cancel(alarm); } #if defined(QUICK_TIMER_TICKS_PER_SEC) && (QUICK_TIMER_TICKS_PER_SEC > 0) @@ -571,54 +581,57 @@ void btu_stop_timer(TIMER_LIST_ENT *p_tle) { ** Returns void ** *******************************************************************************/ -static void btu_l2cap_alarm_process(TIMER_LIST_ENT *p_tle) { - assert(p_tle != NULL); +static void btu_l2cap_alarm_process(TIMER_LIST_ENT *p_tle) +{ + assert(p_tle != NULL); - switch (p_tle->event) { + switch (p_tle->event) { case BTU_TTYPE_L2CAP_CHNL: /* monitor or retransmission timer */ case BTU_TTYPE_L2CAP_FCR_ACK: /* ack timer */ - l2c_process_timeout (p_tle); - break; + l2c_process_timeout (p_tle); + break; default: - break; - } + break; + } } -static void btu_l2cap_alarm_cb(void *data) { - assert(data != NULL); - TIMER_LIST_ENT *p_tle = (TIMER_LIST_ENT *)data; +static void btu_l2cap_alarm_cb(void *data) +{ + assert(data != NULL); + TIMER_LIST_ENT *p_tle = (TIMER_LIST_ENT *)data; - fixed_queue_enqueue(btu_l2cap_alarm_queue, p_tle); - //ke_event_set(KE_EVENT_BTU_TASK_THREAD); - btu_task_post(SIG_BTU_WORK); + fixed_queue_enqueue(btu_l2cap_alarm_queue, p_tle); + //ke_event_set(KE_EVENT_BTU_TASK_THREAD); + btu_task_post(SIG_BTU_WORK); } -void btu_start_quick_timer(TIMER_LIST_ENT *p_tle, UINT16 type, UINT32 timeout_ticks) { - osi_alarm_t *alarm = NULL; +void btu_start_quick_timer(TIMER_LIST_ENT *p_tle, UINT16 type, UINT32 timeout_ticks) +{ + osi_alarm_t *alarm = NULL; - assert(p_tle != NULL); + assert(p_tle != NULL); - // Get the alarm for the timer list entry. - pthread_mutex_lock(&btu_l2cap_alarm_lock); - if (!hash_map_has_key(btu_l2cap_alarm_hash_map, p_tle)) { - alarm = osi_alarm_new("btu_l2cap", btu_l2cap_alarm_cb, (void *)p_tle, 0); - hash_map_set(btu_l2cap_alarm_hash_map, p_tle, (void *)alarm); - } - pthread_mutex_unlock(&btu_l2cap_alarm_lock); + // Get the alarm for the timer list entry. + pthread_mutex_lock(&btu_l2cap_alarm_lock); + if (!hash_map_has_key(btu_l2cap_alarm_hash_map, p_tle)) { + alarm = osi_alarm_new("btu_l2cap", btu_l2cap_alarm_cb, (void *)p_tle, 0); + hash_map_set(btu_l2cap_alarm_hash_map, p_tle, (void *)alarm); + } + pthread_mutex_unlock(&btu_l2cap_alarm_lock); - alarm = hash_map_get(btu_l2cap_alarm_hash_map, p_tle); - if (alarm == NULL) { - LOG_ERROR("%s Unable to create alarm", __func__); - return; - } - osi_alarm_cancel(alarm); + alarm = hash_map_get(btu_l2cap_alarm_hash_map, p_tle); + if (alarm == NULL) { + LOG_ERROR("%s Unable to create alarm", __func__); + return; + } + osi_alarm_cancel(alarm); - p_tle->event = type; - p_tle->ticks = timeout_ticks; - p_tle->in_use = TRUE; - // The quick timer ticks are 100ms long. - osi_alarm_set(alarm, (period_ms_t)(timeout_ticks * 100)); + p_tle->event = type; + p_tle->ticks = timeout_ticks; + p_tle->in_use = TRUE; + // The quick timer ticks are 100ms long. + osi_alarm_set(alarm, (period_ms_t)(timeout_ticks * 100)); } /******************************************************************************* @@ -630,78 +643,84 @@ void btu_start_quick_timer(TIMER_LIST_ENT *p_tle, UINT16 type, UINT32 timeout_ti ** Returns void ** *******************************************************************************/ -void btu_stop_quick_timer(TIMER_LIST_ENT *p_tle) { - assert(p_tle != NULL); +void btu_stop_quick_timer(TIMER_LIST_ENT *p_tle) +{ + assert(p_tle != NULL); - if (p_tle->in_use == FALSE) - return; - p_tle->in_use = FALSE; + if (p_tle->in_use == FALSE) { + return; + } + p_tle->in_use = FALSE; - // Get the alarm for the timer list entry. - osi_alarm_t *alarm = hash_map_get(btu_l2cap_alarm_hash_map, p_tle); - if (alarm == NULL) { - LOG_WARN("%s Unable to find expected alarm in hashmap", __func__); - return; - } - osi_alarm_cancel(alarm); + // Get the alarm for the timer list entry. + osi_alarm_t *alarm = hash_map_get(btu_l2cap_alarm_hash_map, p_tle); + if (alarm == NULL) { + LOG_WARN("%s Unable to find expected alarm in hashmap", __func__); + return; + } + osi_alarm_cancel(alarm); } #endif /* defined(QUICK_TIMER_TICKS_PER_SEC) && (QUICK_TIMER_TICKS_PER_SEC > 0) */ -void btu_oneshot_alarm_cb(void *data) { - assert(data != NULL); - TIMER_LIST_ENT *p_tle = (TIMER_LIST_ENT *)data; +void btu_oneshot_alarm_cb(void *data) +{ + assert(data != NULL); + TIMER_LIST_ENT *p_tle = (TIMER_LIST_ENT *)data; - btu_stop_timer_oneshot(p_tle); + btu_stop_timer_oneshot(p_tle); - fixed_queue_enqueue(btu_oneshot_alarm_queue, p_tle); - //ke_event_set(KE_EVENT_BTU_TASK_THREAD); - btu_task_post(SIG_BTU_WORK); + fixed_queue_enqueue(btu_oneshot_alarm_queue, p_tle); + //ke_event_set(KE_EVENT_BTU_TASK_THREAD); + btu_task_post(SIG_BTU_WORK); } /* * Starts a oneshot timer with a timeout in seconds. */ -void btu_start_timer_oneshot(TIMER_LIST_ENT *p_tle, UINT16 type, UINT32 timeout_sec) { - osi_alarm_t *alarm = NULL; +void btu_start_timer_oneshot(TIMER_LIST_ENT *p_tle, UINT16 type, UINT32 timeout_sec) +{ + osi_alarm_t *alarm = NULL; - assert(p_tle != NULL); + assert(p_tle != NULL); - // Get the alarm for the timer list entry. - pthread_mutex_lock(&btu_oneshot_alarm_lock); - if (!hash_map_has_key(btu_oneshot_alarm_hash_map, p_tle)) { - alarm = osi_alarm_new("btu_oneshot", btu_oneshot_alarm_cb, (void *)p_tle, 0); - hash_map_set(btu_oneshot_alarm_hash_map, p_tle, alarm); - } - pthread_mutex_unlock(&btu_oneshot_alarm_lock); + // Get the alarm for the timer list entry. + pthread_mutex_lock(&btu_oneshot_alarm_lock); + if (!hash_map_has_key(btu_oneshot_alarm_hash_map, p_tle)) { + alarm = osi_alarm_new("btu_oneshot", btu_oneshot_alarm_cb, (void *)p_tle, 0); + hash_map_set(btu_oneshot_alarm_hash_map, p_tle, alarm); + } + pthread_mutex_unlock(&btu_oneshot_alarm_lock); - alarm = hash_map_get(btu_oneshot_alarm_hash_map, p_tle); - if (alarm == NULL) { - LOG_ERROR("%s Unable to create alarm", __func__); - return; - } - osi_alarm_cancel(alarm); + alarm = hash_map_get(btu_oneshot_alarm_hash_map, p_tle); + if (alarm == NULL) { + LOG_ERROR("%s Unable to create alarm", __func__); + return; + } + osi_alarm_cancel(alarm); - p_tle->event = type; - p_tle->in_use = TRUE; - // NOTE: This value is in seconds but stored in a ticks field. - p_tle->ticks = timeout_sec; - osi_alarm_set(alarm, (period_ms_t)(timeout_sec * 1000)); + p_tle->event = type; + p_tle->in_use = TRUE; + // NOTE: This value is in seconds but stored in a ticks field. + p_tle->ticks = timeout_sec; + osi_alarm_set(alarm, (period_ms_t)(timeout_sec * 1000)); } -void btu_stop_timer_oneshot(TIMER_LIST_ENT *p_tle) { - assert(p_tle != NULL); +void btu_stop_timer_oneshot(TIMER_LIST_ENT *p_tle) +{ + assert(p_tle != NULL); - if (p_tle->in_use == FALSE) - return; - p_tle->in_use = FALSE; + if (p_tle->in_use == FALSE) { + return; + } + p_tle->in_use = FALSE; - // Get the alarm for the timer list entry. - osi_alarm_t *alarm = hash_map_get(btu_oneshot_alarm_hash_map, p_tle); - if (alarm == NULL) { - LOG_WARN("%s Unable to find expected alarm in hashmap", __func__); - return; - } - osi_alarm_cancel(alarm); + // Get the alarm for the timer list entry. + osi_alarm_t *alarm = hash_map_get(btu_oneshot_alarm_hash_map, p_tle); + if (alarm == NULL) { + LOG_WARN("%s Unable to find expected alarm in hashmap", __func__); + return; + } + osi_alarm_cancel(alarm); } #if (defined(HCILP_INCLUDED) && HCILP_INCLUDED == TRUE) @@ -717,8 +736,7 @@ void btu_stop_timer_oneshot(TIMER_LIST_ENT *p_tle) { void btu_check_bt_sleep (void) { // TODO(zachoverflow) take pending commands into account? - if (l2cb.controller_xmit_window == l2cb.num_lm_acl_bufs) - { + if (l2cb.controller_xmit_window == l2cb.num_lm_acl_bufs) { bte_main_lpm_allow_bt_device_sleep(); } } diff --git a/components/bt/bluedroid/stack/gap/gap_api.c b/components/bt/bluedroid/stack/gap/gap_api.c old mode 100755 new mode 100644 index 10c392ba50..aff689c340 --- a/components/bt/bluedroid/stack/gap/gap_api.c +++ b/components/bt/bluedroid/stack/gap/gap_api.c @@ -36,8 +36,9 @@ tGAP_CB gap_cb; *******************************************************************************/ UINT8 GAP_SetTraceLevel (UINT8 new_level) { - if (new_level != 0xFF) + if (new_level != 0xFF) { gap_cb.trace_level = new_level; + } return (gap_cb.trace_level); } diff --git a/components/bt/bluedroid/stack/gap/gap_ble.c b/components/bt/bluedroid/stack/gap/gap_ble.c old mode 100755 new mode 100644 index 690f6982b0..70c4a22f69 --- a/components/bt/bluedroid/stack/gap/gap_ble.c +++ b/components/bt/bluedroid/stack/gap/gap_ble.c @@ -44,11 +44,10 @@ static void gap_ble_s_attr_request_cback (UINT16 conn_id, UINT32 trans_id, tGATT /* client connection callback */ static void gap_ble_c_connect_cback (tGATT_IF gatt_if, BD_ADDR bda, UINT16 conn_id, BOOLEAN connected, - tGATT_DISCONN_REASON reason, tGATT_TRANSPORT transport); + tGATT_DISCONN_REASON reason, tGATT_TRANSPORT transport); static void gap_ble_c_cmpl_cback (UINT16 conn_id, tGATTC_OPTYPE op, tGATT_STATUS status, tGATT_CL_COMPLETE *p_data); -static tGATT_CBACK gap_cback = -{ +static tGATT_CBACK gap_cback = { gap_ble_c_connect_cback, gap_ble_c_cmpl_cback, NULL, @@ -74,10 +73,8 @@ tGAP_CLCB *gap_find_clcb_by_bd_addr(BD_ADDR bda) UINT8 i_clcb; tGAP_CLCB *p_clcb = NULL; - for (i_clcb = 0, p_clcb= gap_cb.clcb; i_clcb < GAP_MAX_CL; i_clcb++, p_clcb++) - { - if (p_clcb->in_use && !memcmp(p_clcb->bda, bda, BD_ADDR_LEN)) - { + for (i_clcb = 0, p_clcb = gap_cb.clcb; i_clcb < GAP_MAX_CL; i_clcb++, p_clcb++) { + if (p_clcb->in_use && !memcmp(p_clcb->bda, bda, BD_ADDR_LEN)) { return p_clcb; } } @@ -99,10 +96,8 @@ tGAP_CLCB *gap_ble_find_clcb_by_conn_id(UINT16 conn_id) UINT8 i_clcb; tGAP_CLCB *p_clcb = NULL; - for (i_clcb = 0, p_clcb= gap_cb.clcb; i_clcb < GAP_MAX_CL; i_clcb++, p_clcb++) - { - if (p_clcb->in_use && p_clcb->connected && p_clcb->conn_id == conn_id) - { + for (i_clcb = 0, p_clcb = gap_cb.clcb; i_clcb < GAP_MAX_CL; i_clcb++, p_clcb++) { + if (p_clcb->in_use && p_clcb->connected && p_clcb->conn_id == conn_id) { return p_clcb; } } @@ -124,10 +119,8 @@ tGAP_CLCB *gap_clcb_alloc (BD_ADDR bda) UINT8 i_clcb = 0; tGAP_CLCB *p_clcb = NULL; - for (i_clcb = 0, p_clcb= gap_cb.clcb; i_clcb < GAP_MAX_CL; i_clcb++, p_clcb++) - { - if (!p_clcb->in_use) - { + for (i_clcb = 0, p_clcb = gap_cb.clcb; i_clcb < GAP_MAX_CL; i_clcb++, p_clcb++) { + if (!p_clcb->in_use) { memset(p_clcb, 0, sizeof(tGAP_CLCB)); p_clcb->in_use = TRUE; memcpy (p_clcb->bda, bda, BD_ADDR_LEN); @@ -150,13 +143,13 @@ void gap_ble_dealloc_clcb(tGAP_CLCB *p_clcb) { tGAP_BLE_REQ *p_q; - while((p_q = (tGAP_BLE_REQ *)GKI_dequeue(&p_clcb->pending_req_q)) != NULL) - { - /* send callback to all pending requests if being removed*/ - if (p_q->p_cback != NULL) + while ((p_q = (tGAP_BLE_REQ *)GKI_dequeue(&p_clcb->pending_req_q)) != NULL) { + /* send callback to all pending requests if being removed*/ + if (p_q->p_cback != NULL) { (*p_q->p_cback)(FALSE, p_clcb->bda, 0, NULL); + } - GKI_freebuf (p_q); + GKI_freebuf (p_q); } memset(p_clcb, 0, sizeof(tGAP_CLCB)); @@ -175,8 +168,7 @@ BOOLEAN gap_ble_enqueue_request (tGAP_CLCB *p_clcb, UINT16 uuid, tGAP_BLE_CMPL_C { tGAP_BLE_REQ *p_q = (tGAP_BLE_REQ *)GKI_getbuf(sizeof(tGAP_BLE_REQ)); - if (p_q != NULL) - { + if (p_q != NULL) { p_q->p_cback = p_cback; p_q->uuid = uuid; GKI_enqueue(&p_clcb->pending_req_q, p_q); @@ -194,12 +186,11 @@ BOOLEAN gap_ble_enqueue_request (tGAP_CLCB *p_clcb, UINT16 uuid, tGAP_BLE_CMPL_C ** Returns TRUE is successul; FALSE otherwise ** *******************************************************************************/ -BOOLEAN gap_ble_dequeue_request (tGAP_CLCB *p_clcb, UINT16 * p_uuid, tGAP_BLE_CMPL_CBACK **p_cback) +BOOLEAN gap_ble_dequeue_request (tGAP_CLCB *p_clcb, UINT16 *p_uuid, tGAP_BLE_CMPL_CBACK **p_cback) { tGAP_BLE_REQ *p_q = (tGAP_BLE_REQ *)GKI_dequeue(&p_clcb->pending_req_q);; - if (p_q != NULL) - { + if (p_q != NULL) { *p_cback = p_q->p_cback; *p_uuid = p_q->uuid; GKI_freebuf((void *)p_q); @@ -219,52 +210,50 @@ tGATT_STATUS gap_read_attr_value (UINT16 handle, tGATT_VALUE *p_value, BOOLEAN i UINT16 offset = p_value->offset; UINT8 *p_dev_name = NULL; - for (i = 0; i < GAP_MAX_CHAR_NUM; i ++, p_db_attr ++) - { - if (handle == p_db_attr->handle) - { + for (i = 0; i < GAP_MAX_CHAR_NUM; i ++, p_db_attr ++) { + if (handle == p_db_attr->handle) { if (p_db_attr->uuid != GATT_UUID_GAP_DEVICE_NAME && - is_long == TRUE) + is_long == TRUE) { return GATT_NOT_LONG; + } - switch (p_db_attr->uuid) - { - case GATT_UUID_GAP_DEVICE_NAME: - BTM_ReadLocalDeviceName((char **)&p_dev_name); - if (strlen ((char *)p_dev_name) > GATT_MAX_ATTR_LEN) - p_value->len = GATT_MAX_ATTR_LEN; - else - p_value->len = (UINT16)strlen ((char *)p_dev_name); + switch (p_db_attr->uuid) { + case GATT_UUID_GAP_DEVICE_NAME: + BTM_ReadLocalDeviceName((char **)&p_dev_name); + if (strlen ((char *)p_dev_name) > GATT_MAX_ATTR_LEN) { + p_value->len = GATT_MAX_ATTR_LEN; + } else { + p_value->len = (UINT16)strlen ((char *)p_dev_name); + } - if (offset > p_value->len) - return GATT_INVALID_OFFSET; - else - { - p_value->len -= offset; - p_dev_name += offset; - ARRAY_TO_STREAM(p, p_dev_name, p_value->len); - GAP_TRACE_EVENT("GATT_UUID_GAP_DEVICE_NAME len=0x%04x", p_value->len); - } - break; + if (offset > p_value->len) { + return GATT_INVALID_OFFSET; + } else { + p_value->len -= offset; + p_dev_name += offset; + ARRAY_TO_STREAM(p, p_dev_name, p_value->len); + GAP_TRACE_EVENT("GATT_UUID_GAP_DEVICE_NAME len=0x%04x", p_value->len); + } + break; - case GATT_UUID_GAP_ICON: - UINT16_TO_STREAM(p, p_db_attr->attr_value.icon); - p_value->len = 2; - break; + case GATT_UUID_GAP_ICON: + UINT16_TO_STREAM(p, p_db_attr->attr_value.icon); + p_value->len = 2; + break; - case GATT_UUID_GAP_PREF_CONN_PARAM: - UINT16_TO_STREAM(p, p_db_attr->attr_value.conn_param.int_min); /* int_min */ - UINT16_TO_STREAM(p, p_db_attr->attr_value.conn_param.int_max); /* int_max */ - UINT16_TO_STREAM(p, p_db_attr->attr_value.conn_param.latency); /* latency */ - UINT16_TO_STREAM(p, p_db_attr->attr_value.conn_param.sp_tout); /* sp_tout */ - p_value->len =8; - break; + case GATT_UUID_GAP_PREF_CONN_PARAM: + UINT16_TO_STREAM(p, p_db_attr->attr_value.conn_param.int_min); /* int_min */ + UINT16_TO_STREAM(p, p_db_attr->attr_value.conn_param.int_max); /* int_max */ + UINT16_TO_STREAM(p, p_db_attr->attr_value.conn_param.latency); /* latency */ + UINT16_TO_STREAM(p, p_db_attr->attr_value.conn_param.sp_tout); /* sp_tout */ + p_value->len = 8; + break; - /* address resolution */ - case GATT_UUID_GAP_CENTRAL_ADDR_RESOL: - UINT8_TO_STREAM(p, p_db_attr->attr_value.addr_resolution); - p_value->len =1; - break; + /* address resolution */ + case GATT_UUID_GAP_CENTRAL_ADDR_RESOL: + UINT8_TO_STREAM(p, p_db_attr->attr_value.addr_resolution); + p_value->len = 1; + break; } return GATT_SUCCESS; } @@ -280,8 +269,9 @@ tGATT_STATUS gap_proc_read (tGATTS_REQ_TYPE type, tGATT_READ_REQ *p_data, tGATTS tGATT_STATUS status = GATT_NO_RESOURCES; UNUSED(type); - if (p_data->is_long) + if (p_data->is_long) { p_rsp->attr_value.offset = p_data->offset; + } p_rsp->attr_value.handle = p_data->handle; @@ -305,11 +295,9 @@ UINT8 gap_proc_write_req( tGATTS_REQ_TYPE type, tGATT_WRITE_REQ *p_data) UINT8 i; UNUSED(type); - for (i = 0; i < GAP_MAX_CHAR_NUM; i ++, p_db_attr ++) - { - if (p_data-> handle == p_db_attr->handle) - { - return GATT_WRITE_NOT_PERMIT; + for (i = 0; i < GAP_MAX_CHAR_NUM; i ++, p_db_attr ++) { + if (p_data-> handle == p_db_attr->handle) { + return GATT_WRITE_NOT_PERMIT; } } return GATT_NOT_FOUND; @@ -336,36 +324,37 @@ void gap_ble_s_attr_request_cback (UINT16 conn_id, UINT32 trans_id, memset(&rsp_msg, 0, sizeof(tGATTS_RSP)); - switch (type) - { - case GATTS_REQ_TYPE_READ: - status = gap_proc_read(type, &p_data->read_req, &rsp_msg); - break; + switch (type) { + case GATTS_REQ_TYPE_READ: + status = gap_proc_read(type, &p_data->read_req, &rsp_msg); + break; - case GATTS_REQ_TYPE_WRITE: - if (!p_data->write_req.need_rsp) - ignore = TRUE; - - status = gap_proc_write_req(type, &p_data->write_req); - break; - - case GATTS_REQ_TYPE_WRITE_EXEC: + case GATTS_REQ_TYPE_WRITE: + if (!p_data->write_req.need_rsp) { ignore = TRUE; - GAP_TRACE_EVENT("Ignore GATTS_REQ_TYPE_WRITE_EXEC" ); - break; + } - case GATTS_REQ_TYPE_MTU: - GAP_TRACE_EVENT("Get MTU exchange new mtu size: %d", p_data->mtu); - ignore = TRUE; - break; + status = gap_proc_write_req(type, &p_data->write_req); + break; - default: - GAP_TRACE_EVENT("Unknown/unexpected LE GAP ATT request: 0x%02x", type); - break; + case GATTS_REQ_TYPE_WRITE_EXEC: + ignore = TRUE; + GAP_TRACE_EVENT("Ignore GATTS_REQ_TYPE_WRITE_EXEC" ); + break; + + case GATTS_REQ_TYPE_MTU: + GAP_TRACE_EVENT("Get MTU exchange new mtu size: %d", p_data->mtu); + ignore = TRUE; + break; + + default: + GAP_TRACE_EVENT("Unknown/unexpected LE GAP ATT request: 0x%02x", type); + break; } - if (!ignore) + if (!ignore) { GATTS_SendRsp (conn_id, trans_id, status, &rsp_msg); + } } /******************************************************************************* @@ -379,8 +368,8 @@ void gap_ble_s_attr_request_cback (UINT16 conn_id, UINT32 trans_id, *******************************************************************************/ void gap_attr_db_init(void) { - tBT_UUID app_uuid = {LEN_UUID_128,{0}}; - tBT_UUID uuid = {LEN_UUID_16,{UUID_SERVCLASS_GAP_SERVER}}; + tBT_UUID app_uuid = {LEN_UUID_128, {0}}; + tBT_UUID uuid = {LEN_UUID_16, {UUID_SERVCLASS_GAP_SERVER}}; UINT16 service_handle; tGAP_ATTR *p_db_attr = &gap_cb.gatt_attr[0]; tGATT_STATUS status; @@ -409,9 +398,9 @@ void gap_attr_db_init(void) */ uuid.uu.uuid16 = p_db_attr->uuid = GATT_UUID_GAP_ICON; p_db_attr->handle = GATTS_AddCharacteristic(service_handle, - &uuid, - GATT_PERM_READ, - GATT_CHAR_PROP_BIT_READ); + &uuid, + GATT_PERM_READ, + GATT_CHAR_PROP_BIT_READ); p_db_attr ++; #if ((defined BTM_PERIPHERAL_ENABLED) && (BTM_PERIPHERAL_ENABLED == TRUE)) @@ -424,9 +413,9 @@ void gap_attr_db_init(void) p_db_attr->attr_value.conn_param.latency = GAP_PREFER_CONN_LATENCY; /* 0 */ p_db_attr->attr_value.conn_param.sp_tout = GAP_PREFER_CONN_SP_TOUT; /* 2000 */ p_db_attr->handle = GATTS_AddCharacteristic(service_handle, - &uuid, - GATT_PERM_READ, - GATT_CHAR_PROP_BIT_READ); + &uuid, + GATT_PERM_READ, + GATT_CHAR_PROP_BIT_READ); p_db_attr ++; #endif @@ -434,7 +423,7 @@ void gap_attr_db_init(void) uuid.len = LEN_UUID_16; uuid.uu.uuid16 = p_db_attr->uuid = GATT_UUID_GAP_CENTRAL_ADDR_RESOL; p_db_attr->handle = GATTS_AddCharacteristic(service_handle, &uuid, - GATT_PERM_READ, GATT_CHAR_PROP_BIT_READ); + GATT_PERM_READ, GATT_CHAR_PROP_BIT_READ); p_db_attr->attr_value.addr_resolution = 0; p_db_attr++; @@ -444,7 +433,7 @@ void gap_attr_db_init(void) status = GATTS_StartService(gap_cb.gatt_if, service_handle, GAP_TRANSPORT_SUPPORTED ); GAP_TRACE_EVENT ("GAP App gatt_if: %d s_hdl = %d start_status=%d", - gap_cb.gatt_if, service_handle, status); + gap_cb.gatt_if, service_handle, status); @@ -466,14 +455,11 @@ void GAP_BleAttrDBUpdate(UINT16 attr_uuid, tGAP_BLE_ATTR_VALUE *p_value) GAP_TRACE_EVENT("GAP_BleAttrDBUpdate attr_uuid=0x%04x\n", attr_uuid); - for (i = 0; i < GAP_MAX_CHAR_NUM; i ++, p_db_attr ++) - { - if (p_db_attr->uuid == attr_uuid) - { + for (i = 0; i < GAP_MAX_CHAR_NUM; i ++, p_db_attr ++) { + if (p_db_attr->uuid == attr_uuid) { GAP_TRACE_EVENT("Found attr_uuid=0x%04x\n", attr_uuid); - switch (attr_uuid) - { + switch (attr_uuid) { case GATT_UUID_GAP_ICON: p_db_attr->attr_value.icon = p_value->icon; break; @@ -514,8 +500,7 @@ BOOLEAN gap_ble_send_cl_read_request(tGAP_CLCB *p_clcb) UINT16 uuid = 0; BOOLEAN started = FALSE; - if (gap_ble_dequeue_request(p_clcb, &uuid, &p_clcb->p_cback)) - { + if (gap_ble_dequeue_request(p_clcb, &uuid, &p_clcb->p_cback)) { memset(¶m, 0, sizeof(tGATT_READ_PARAM)); param.service.uuid.len = LEN_UUID_16; @@ -524,8 +509,7 @@ BOOLEAN gap_ble_send_cl_read_request(tGAP_CLCB *p_clcb) param.service.e_handle = 0xFFFF; param.service.auth_req = 0; - if (GATTC_Read(p_clcb->conn_id, GATT_READ_BY_TYPE, ¶m) == GATT_SUCCESS) - { + if (GATTC_Read(p_clcb->conn_id, GATT_READ_BY_TYPE, ¶m) == GATT_SUCCESS) { p_clcb->cl_op_uuid = uuid; started = TRUE; } @@ -551,19 +535,16 @@ void gap_ble_cl_op_cmpl(tGAP_CLCB *p_clcb, BOOLEAN status, UINT16 len, UINT8 *p_ GAP_TRACE_EVENT("gap_ble_cl_op_cmpl status: %d", status); p_clcb->cl_op_uuid = 0; - p_clcb->p_cback=NULL; + p_clcb->p_cback = NULL; - if (p_cback && op) - { + if (p_cback && op) { GAP_TRACE_EVENT("calling gap_ble_cl_op_cmpl"); (* p_cback)(status, p_clcb->bda, len, (char *)p_name); } /* if no further activity is requested in callback, drop the link */ - if (p_clcb->connected) - { - if (!gap_ble_send_cl_read_request(p_clcb)) - { + if (p_clcb->connected) { + if (!gap_ble_send_cl_read_request(p_clcb)) { GATT_Disconnect(p_clcb->conn_id); gap_ble_dealloc_clcb(p_clcb); } @@ -588,17 +569,13 @@ static void gap_ble_c_connect_cback (tGATT_IF gatt_if, BD_ADDR bda, UINT16 conn_ UNUSED(gatt_if); UNUSED(transport); - if (p_clcb != NULL) - { - if (connected) - { + if (p_clcb != NULL) { + if (connected) { p_clcb->conn_id = conn_id; p_clcb->connected = TRUE; /* start operation is pending */ gap_ble_send_cl_read_request(p_clcb); - } - else - { + } else { p_clcb->connected = FALSE; gap_ble_cl_op_cmpl(p_clcb, FALSE, 0, NULL); /* clean up clcb */ @@ -625,51 +602,52 @@ static void gap_ble_c_cmpl_cback (UINT16 conn_id, tGATTC_OPTYPE op, tGATT_STATUS UINT16 len; UINT8 *pp; - if (p_clcb == NULL) + if (p_clcb == NULL) { return; + } op_type = p_clcb->cl_op_uuid; GAP_TRACE_EVENT ("gap_ble_c_cmpl_cback() - op_code: 0x%02x status: 0x%02x read_type: 0x%04x\n", op, status, op_type); /* Currently we only issue read commands */ - if (op != GATTC_OPTYPE_READ) + if (op != GATTC_OPTYPE_READ) { return; + } - if (status != GATT_SUCCESS) - { + if (status != GATT_SUCCESS) { gap_ble_cl_op_cmpl(p_clcb, FALSE, 0, NULL); return; } pp = p_data->att_value.value; - switch (op_type) - { - case GATT_UUID_GAP_PREF_CONN_PARAM: - GAP_TRACE_EVENT ("GATT_UUID_GAP_PREF_CONN_PARAM"); - /* Extract the peripheral preferred connection parameters and save them */ + switch (op_type) { + case GATT_UUID_GAP_PREF_CONN_PARAM: + GAP_TRACE_EVENT ("GATT_UUID_GAP_PREF_CONN_PARAM"); + /* Extract the peripheral preferred connection parameters and save them */ - STREAM_TO_UINT16 (min, pp); - STREAM_TO_UINT16 (max, pp); - STREAM_TO_UINT16 (latency, pp); - STREAM_TO_UINT16 (tout, pp); + STREAM_TO_UINT16 (min, pp); + STREAM_TO_UINT16 (max, pp); + STREAM_TO_UINT16 (latency, pp); + STREAM_TO_UINT16 (tout, pp); - BTM_BleSetPrefConnParams (p_clcb->bda, min, max, latency, tout); - /* release the connection here */ - gap_ble_cl_op_cmpl(p_clcb, TRUE, 0, NULL); - break; + BTM_BleSetPrefConnParams (p_clcb->bda, min, max, latency, tout); + /* release the connection here */ + gap_ble_cl_op_cmpl(p_clcb, TRUE, 0, NULL); + break; - case GATT_UUID_GAP_DEVICE_NAME: - GAP_TRACE_EVENT ("GATT_UUID_GAP_DEVICE_NAME\n"); - len = (UINT16)strlen((char *)pp); - if (len > GAP_CHAR_DEV_NAME_SIZE) - len = GAP_CHAR_DEV_NAME_SIZE; - gap_ble_cl_op_cmpl(p_clcb, TRUE, len, pp); - break; + case GATT_UUID_GAP_DEVICE_NAME: + GAP_TRACE_EVENT ("GATT_UUID_GAP_DEVICE_NAME\n"); + len = (UINT16)strlen((char *)pp); + if (len > GAP_CHAR_DEV_NAME_SIZE) { + len = GAP_CHAR_DEV_NAME_SIZE; + } + gap_ble_cl_op_cmpl(p_clcb, TRUE, len, pp); + break; - case GATT_UUID_GAP_CENTRAL_ADDR_RESOL: - gap_ble_cl_op_cmpl(p_clcb, TRUE, 1, pp); - break; + case GATT_UUID_GAP_CENTRAL_ADDR_RESOL: + gap_ble_cl_op_cmpl(p_clcb, TRUE, 1, pp); + break; } } @@ -688,39 +666,41 @@ BOOLEAN gap_ble_accept_cl_operation(BD_ADDR peer_bda, UINT16 uuid, tGAP_BLE_CMPL tGAP_CLCB *p_clcb; BOOLEAN started = FALSE; - if (p_cback == NULL && uuid != GATT_UUID_GAP_PREF_CONN_PARAM) - return(started); + if (p_cback == NULL && uuid != GATT_UUID_GAP_PREF_CONN_PARAM) { + return (started); + } - if ((p_clcb = gap_find_clcb_by_bd_addr (peer_bda)) == NULL) - { - if ((p_clcb = gap_clcb_alloc(peer_bda)) == NULL) - { + if ((p_clcb = gap_find_clcb_by_bd_addr (peer_bda)) == NULL) { + if ((p_clcb = gap_clcb_alloc(peer_bda)) == NULL) { GAP_TRACE_ERROR("gap_ble_accept_cl_operation max connection reached"); return started; } } GAP_TRACE_EVENT ("%s() - BDA: %08x%04x cl_op_uuid: 0x%04x", - __FUNCTION__, - (peer_bda[0]<<24)+(peer_bda[1]<<16)+(peer_bda[2]<<8)+peer_bda[3], - (peer_bda[4]<<8)+peer_bda[5], uuid); + __FUNCTION__, + (peer_bda[0] << 24) + (peer_bda[1] << 16) + (peer_bda[2] << 8) + peer_bda[3], + (peer_bda[4] << 8) + peer_bda[5], uuid); - if (GATT_GetConnIdIfConnected(gap_cb.gatt_if, peer_bda, &p_clcb->conn_id, BT_TRANSPORT_LE)) + if (GATT_GetConnIdIfConnected(gap_cb.gatt_if, peer_bda, &p_clcb->conn_id, BT_TRANSPORT_LE)) { p_clcb->connected = TRUE; + } /* hold the link here */ - if (!GATT_Connect(gap_cb.gatt_if, p_clcb->bda, TRUE, BT_TRANSPORT_LE)) + if (!GATT_Connect(gap_cb.gatt_if, p_clcb->bda, TRUE, BT_TRANSPORT_LE)) { return started; + } /* enqueue the request */ gap_ble_enqueue_request(p_clcb, uuid, p_cback); - if (p_clcb->connected && p_clcb->cl_op_uuid == 0) + if (p_clcb->connected && p_clcb->cl_op_uuid == 0) { started = gap_ble_send_cl_read_request(p_clcb); - else /* wait for connection up or pending operation to finish */ + } else { /* wait for connection up or pending operation to finish */ started = TRUE; + } - return started; + return started; } /******************************************************************************* ** @@ -779,19 +759,16 @@ BOOLEAN GAP_BleCancelReadPeerDevName (BD_ADDR peer_bda) tGAP_CLCB *p_clcb = gap_find_clcb_by_bd_addr (peer_bda); GAP_TRACE_EVENT ("GAP_BleCancelReadPeerDevName() - BDA: %08x%04x cl_op_uuid: 0x%04x", - (peer_bda[0]<<24)+(peer_bda[1]<<16)+(peer_bda[2]<<8)+peer_bda[3], - (peer_bda[4]<<8)+peer_bda[5], (p_clcb == NULL)? 0 : p_clcb->cl_op_uuid); + (peer_bda[0] << 24) + (peer_bda[1] << 16) + (peer_bda[2] << 8) + peer_bda[3], + (peer_bda[4] << 8) + peer_bda[5], (p_clcb == NULL) ? 0 : p_clcb->cl_op_uuid); - if (p_clcb == NULL) - { + if (p_clcb == NULL) { GAP_TRACE_ERROR ("Cannot cancel current op is not get dev name"); return FALSE; } - if (!p_clcb->connected) - { - if (!GATT_CancelConnect(gap_cb.gatt_if, peer_bda, TRUE)) - { + if (!p_clcb->connected) { + if (!GATT_CancelConnect(gap_cb.gatt_if, peer_bda, TRUE)) { GAP_TRACE_ERROR ("Cannot cancel where No connection id"); return FALSE; } @@ -799,7 +776,7 @@ BOOLEAN GAP_BleCancelReadPeerDevName (BD_ADDR peer_bda) gap_ble_cl_op_cmpl(p_clcb, FALSE, 0, NULL); - return(TRUE); + return (TRUE); } #endif /* BLE_INCLUDED */ diff --git a/components/bt/bluedroid/stack/gap/gap_conn.c b/components/bt/bluedroid/stack/gap/gap_conn.c old mode 100755 new mode 100644 index 213baa5f60..5ae8a81dc9 --- a/components/bt/bluedroid/stack/gap/gap_conn.c +++ b/components/bt/bluedroid/stack/gap/gap_conn.c @@ -132,55 +132,55 @@ UINT16 GAP_ConnOpen (char *p_serv_name, UINT8 service_id, BOOLEAN is_server, GAP_TRACE_EVENT ("GAP_CONN - Open Request"); /* Allocate a new CCB. Return if none available. */ - if ((p_ccb = gap_allocate_ccb()) == NULL) + if ((p_ccb = gap_allocate_ccb()) == NULL) { return (GAP_INVALID_HANDLE); + } /* If caller specified a BD address, save it */ - if (p_rem_bda) - { + if (p_rem_bda) { /* the bd addr is not BT_BD_ANY, then a bd address was specified */ - if (memcmp (p_rem_bda, BT_BD_ANY, BD_ADDR_LEN)) + if (memcmp (p_rem_bda, BT_BD_ANY, BD_ADDR_LEN)) { p_ccb->rem_addr_specified = TRUE; + } memcpy (&p_ccb->rem_dev_address[0], p_rem_bda, BD_ADDR_LEN); - } - else if (!is_server) - { + } else if (!is_server) { /* remore addr is not specified and is not a server -> bad */ return (GAP_INVALID_HANDLE); } /* A client MUST have specified a bd addr to connect with */ - if (!p_ccb->rem_addr_specified && !is_server) - { + if (!p_ccb->rem_addr_specified && !is_server) { gap_release_ccb (p_ccb); GAP_TRACE_ERROR ("GAP ERROR: Client must specify a remote BD ADDR to connect to!"); return (GAP_INVALID_HANDLE); } /* Check if configuration was specified */ - if (p_cfg) + if (p_cfg) { p_ccb->cfg = *p_cfg; + } p_ccb->p_callback = p_cb; /* If originator, use a dynamic PSM */ #if ((defined AMP_INCLUDED) && (AMP_INCLUDED == TRUE)) - if (!is_server) + if (!is_server) { gap_cb.conn.reg_info.pAMP_ConnectInd_Cb = NULL; - else + } else { gap_cb.conn.reg_info.pAMP_ConnectInd_Cb = gap_connect_ind; + } #else - if (!is_server) + if (!is_server) { gap_cb.conn.reg_info.pL2CA_ConnectInd_Cb = NULL; - else + } else { gap_cb.conn.reg_info.pL2CA_ConnectInd_Cb = gap_connect_ind; + } #endif /* Register the PSM with L2CAP */ if ((p_ccb->psm = L2CA_REGISTER (psm, &gap_cb.conn.reg_info, - AMP_AUTOSWITCH_ALLOWED|AMP_USE_AMP_IF_POSSIBLE)) == 0) - { + AMP_AUTOSWITCH_ALLOWED | AMP_USE_AMP_IF_POSSIBLE)) == 0) { GAP_TRACE_ERROR ("GAP_ConnOpen: Failure registering PSM 0x%04x", psm); gap_release_ccb (p_ccb); return (GAP_INVALID_HANDLE); @@ -189,17 +189,15 @@ UINT16 GAP_ConnOpen (char *p_serv_name, UINT8 service_id, BOOLEAN is_server, /* Register with Security Manager for the specific security level */ p_ccb->service_id = service_id; if (!BTM_SetSecurityLevel ((UINT8)!is_server, p_serv_name, - p_ccb->service_id, security, p_ccb->psm, 0, 0)) - { + p_ccb->service_id, security, p_ccb->psm, 0, 0)) { GAP_TRACE_ERROR ("GAP_CONN - Security Error"); gap_release_ccb (p_ccb); return (GAP_INVALID_HANDLE); } /* Fill in eL2CAP parameter data */ - if( p_ccb->cfg.fcr_present ) - { - if(ertm_info == NULL) { + if ( p_ccb->cfg.fcr_present ) { + if (ertm_info == NULL) { p_ccb->ertm_info.preferred_mode = p_ccb->cfg.fcr.mode; p_ccb->ertm_info.user_rx_pool_id = GAP_DATA_POOL_ID; p_ccb->ertm_info.user_tx_pool_id = GAP_DATA_POOL_ID; @@ -211,19 +209,16 @@ UINT16 GAP_ConnOpen (char *p_serv_name, UINT8 service_id, BOOLEAN is_server, } /* optional FCR channel modes */ - if(ertm_info != NULL) { + if (ertm_info != NULL) { p_ccb->ertm_info.allowed_modes = (chan_mode_mask) ? chan_mode_mask : (UINT8)L2CAP_FCR_CHAN_OPT_BASIC; } - if (is_server) - { + if (is_server) { p_ccb->con_flags |= GAP_CCB_FLAGS_SEC_DONE; /* assume btm/l2cap would handle it */ p_ccb->con_state = GAP_CCB_STATE_LISTENING; return (p_ccb->gap_handle); - } - else - { + } else { /* We are the originator of this connection */ p_ccb->con_flags = GAP_CCB_FLAGS_IS_ORIG; @@ -231,17 +226,15 @@ UINT16 GAP_ConnOpen (char *p_serv_name, UINT8 service_id, BOOLEAN is_server, p_ccb->con_state = GAP_CCB_STATE_CONN_SETUP; /* mark security done flag, when security is not required */ - if ((security & (BTM_SEC_OUT_AUTHORIZE | BTM_SEC_OUT_AUTHENTICATE | BTM_SEC_OUT_ENCRYPT) ) == 0) + if ((security & (BTM_SEC_OUT_AUTHORIZE | BTM_SEC_OUT_AUTHENTICATE | BTM_SEC_OUT_ENCRYPT) ) == 0) { p_ccb->con_flags |= GAP_CCB_FLAGS_SEC_DONE; + } /* Check if L2CAP started the connection process */ - if (p_rem_bda && ((cid = L2CA_CONNECT_REQ (p_ccb->psm, p_rem_bda, &p_ccb->ertm_info, &bt_uuid)) != 0)) - { + if (p_rem_bda && ((cid = L2CA_CONNECT_REQ (p_ccb->psm, p_rem_bda, &p_ccb->ertm_info, &bt_uuid)) != 0)) { p_ccb->connection_id = cid; return (p_ccb->gap_handle); - } - else - { + } else { gap_release_ccb (p_ccb); return (GAP_INVALID_HANDLE); } @@ -267,11 +260,11 @@ UINT16 GAP_ConnClose (UINT16 gap_handle) GAP_TRACE_EVENT ("GAP_CONN - close handle: 0x%x", gap_handle); - if (p_ccb) - { + if (p_ccb) { /* Check if we have a connection ID */ - if (p_ccb->con_state != GAP_CCB_STATE_LISTENING) + if (p_ccb->con_state != GAP_CCB_STATE_LISTENING) { L2CA_DISCONNECT_REQ (p_ccb->connection_id); + } gap_release_ccb (p_ccb); @@ -306,38 +299,34 @@ UINT16 GAP_ConnReadData (UINT16 gap_handle, UINT8 *p_data, UINT16 max_len, UINT1 BT_HDR *p_buf; UINT16 copy_len; - if (!p_ccb) + if (!p_ccb) { return (GAP_ERR_BAD_HANDLE); + } *p_len = 0; p_buf = (BT_HDR *)GKI_getfirst (&p_ccb->rx_queue); - if (!p_buf) + if (!p_buf) { return (GAP_NO_DATA_AVAIL); + } GKI_disable(); - while (max_len && p_buf) - { - copy_len = (p_buf->len > max_len)?max_len:p_buf->len; + while (max_len && p_buf) { + copy_len = (p_buf->len > max_len) ? max_len : p_buf->len; max_len -= copy_len; *p_len += copy_len; - if (p_data) - { + if (p_data) { memcpy (p_data, (UINT8 *)(p_buf + 1) + p_buf->offset, copy_len); p_data += copy_len; } - if (p_buf->len > copy_len) - { + if (p_buf->len > copy_len) { p_buf->offset += copy_len; p_buf->len -= copy_len; break; - } - else - { - if (max_len) - { + } else { + if (max_len) { p_buf = (BT_HDR *)GKI_getnext (p_buf); } GKI_freebuf (GKI_dequeue (&p_ccb->rx_queue)); @@ -349,7 +338,7 @@ UINT16 GAP_ConnReadData (UINT16 gap_handle, UINT8 *p_data, UINT16 max_len, UINT1 GKI_enable(); GAP_TRACE_EVENT ("GAP_ConnReadData - rx_queue_size left=%d, *p_len=%d", - p_ccb->rx_queue_size, *p_len); + p_ccb->rx_queue_size, *p_len); return (BT_PASS); } @@ -371,22 +360,20 @@ int GAP_GetRxQueueCnt (UINT16 handle, UINT32 *p_rx_queue_count) int rc = BT_PASS; /* Check that handle is valid */ - if (handle < GAP_MAX_CONNECTIONS) - { + if (handle < GAP_MAX_CONNECTIONS) { p_ccb = &gap_cb.conn.ccb_pool[handle]; - if (p_ccb->con_state == GAP_CCB_STATE_CONNECTED) - { + if (p_ccb->con_state == GAP_CCB_STATE_CONNECTED) { *p_rx_queue_count = p_ccb->rx_queue_size; - } - else + } else { rc = GAP_INVALID_HANDLE; - } - else + } + } else { rc = GAP_INVALID_HANDLE; + } GAP_TRACE_EVENT ("GAP_GetRxQueueCnt - rc = 0x%04x, rx_queue_count=%d", - rc , *p_rx_queue_count); + rc , *p_rx_queue_count); return (rc); } @@ -411,20 +398,18 @@ UINT16 GAP_ConnBTRead (UINT16 gap_handle, BT_HDR **pp_buf) tGAP_CCB *p_ccb = gap_find_ccb_by_handle (gap_handle); BT_HDR *p_buf; - if (!p_ccb) + if (!p_ccb) { return (GAP_ERR_BAD_HANDLE); + } p_buf = (BT_HDR *)GKI_dequeue (&p_ccb->rx_queue); - if (p_buf) - { + if (p_buf) { *pp_buf = p_buf; p_ccb->rx_queue_size -= p_buf->len; return (BT_PASS); - } - else - { + } else { *pp_buf = NULL; return (GAP_NO_DATA_AVAIL); } @@ -449,28 +434,24 @@ UINT16 GAP_ConnBTWrite (UINT16 gap_handle, BT_HDR *p_buf) { tGAP_CCB *p_ccb = gap_find_ccb_by_handle (gap_handle); - if (!p_ccb) - { + if (!p_ccb) { GKI_freebuf (p_buf); return (GAP_ERR_BAD_HANDLE); } - if (p_ccb->con_state != GAP_CCB_STATE_CONNECTED) - { + if (p_ccb->con_state != GAP_CCB_STATE_CONNECTED) { GKI_freebuf (p_buf); return (GAP_ERR_BAD_STATE); } - if (p_buf->offset < L2CAP_MIN_OFFSET) - { + if (p_buf->offset < L2CAP_MIN_OFFSET) { GKI_freebuf (p_buf); return (GAP_ERR_BUF_OFFSET); } GKI_enqueue (&p_ccb->tx_queue, p_buf); - if (p_ccb->is_congested) - { + if (p_ccb->is_congested) { return (BT_PASS); } @@ -478,17 +459,15 @@ UINT16 GAP_ConnBTWrite (UINT16 gap_handle, BT_HDR *p_buf) #if (GAP_CONN_POST_EVT_INCLUDED == TRUE) gap_send_event (gap_handle); #else - while ((p_buf = (BT_HDR *)GKI_dequeue (&p_ccb->tx_queue)) != NULL) - { + while ((p_buf = (BT_HDR *)GKI_dequeue (&p_ccb->tx_queue)) != NULL) { UINT8 status = L2CA_DATA_WRITE (p_ccb->connection_id, p_buf); - if (status == L2CAP_DW_CONGESTED) - { + if (status == L2CAP_DW_CONGESTED) { p_ccb->is_congested = TRUE; break; - } - else if (status != L2CAP_DW_SUCCESS) + } else if (status != L2CAP_DW_SUCCESS) { return (GAP_ERR_BAD_STATE); + } } #endif return (BT_PASS); @@ -520,23 +499,23 @@ UINT16 GAP_ConnWriteData (UINT16 gap_handle, UINT8 *p_data, UINT16 max_len, UINT *p_len = 0; - if (!p_ccb) + if (!p_ccb) { return (GAP_ERR_BAD_HANDLE); + } - if (p_ccb->con_state != GAP_CCB_STATE_CONNECTED) + if (p_ccb->con_state != GAP_CCB_STATE_CONNECTED) { return (GAP_ERR_BAD_STATE); + } - while (max_len) - { - if (p_ccb->cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) - { - if ((p_buf = (BT_HDR *)GKI_getpoolbuf (p_ccb->ertm_info.user_tx_pool_id)) == NULL) + while (max_len) { + if (p_ccb->cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) { + if ((p_buf = (BT_HDR *)GKI_getpoolbuf (p_ccb->ertm_info.user_tx_pool_id)) == NULL) { return (GAP_ERR_CONGESTED); - } - else - { - if ((p_buf = (BT_HDR *)GKI_getpoolbuf (GAP_DATA_POOL_ID)) == NULL) + } + } else { + if ((p_buf = (BT_HDR *)GKI_getpoolbuf (GAP_DATA_POOL_ID)) == NULL) { return (GAP_ERR_CONGESTED); + } } p_buf->offset = L2CAP_MIN_OFFSET; @@ -554,8 +533,7 @@ UINT16 GAP_ConnWriteData (UINT16 gap_handle, UINT8 *p_data, UINT16 max_len, UINT GKI_enqueue (&p_ccb->tx_queue, p_buf); } - if (p_ccb->is_congested) - { + if (p_ccb->is_congested) { return (BT_PASS); } @@ -563,17 +541,15 @@ UINT16 GAP_ConnWriteData (UINT16 gap_handle, UINT8 *p_data, UINT16 max_len, UINT #if (GAP_CONN_POST_EVT_INCLUDED == TRUE) gap_send_event (gap_handle); #else - while ((p_buf = (BT_HDR *)GKI_dequeue (&p_ccb->tx_queue)) != NULL) - { + while ((p_buf = (BT_HDR *)GKI_dequeue (&p_ccb->tx_queue)) != NULL) { UINT8 status = L2CA_DATA_WRITE (p_ccb->connection_id, p_buf); - if (status == L2CAP_DW_CONGESTED) - { + if (status == L2CAP_DW_CONGESTED) { p_ccb->is_congested = TRUE; break; - } - else if (status != L2CAP_DW_SUCCESS) + } else if (status != L2CAP_DW_SUCCESS) { return (GAP_ERR_BAD_STATE); + } } #endif return (BT_PASS); @@ -597,13 +573,15 @@ UINT16 GAP_ConnReconfig (UINT16 gap_handle, tL2CAP_CFG_INFO *p_cfg) { tGAP_CCB *p_ccb = gap_find_ccb_by_handle (gap_handle); - if (!p_ccb) + if (!p_ccb) { return (GAP_ERR_BAD_HANDLE); + } p_ccb->cfg = *p_cfg; - if (p_ccb->con_state == GAP_CCB_STATE_CONNECTED) + if (p_ccb->con_state == GAP_CCB_STATE_CONNECTED) { L2CA_CONFIG_REQ (p_ccb->connection_id, p_cfg); + } return (BT_PASS); } @@ -635,13 +613,15 @@ UINT16 GAP_ConnSetIdleTimeout (UINT16 gap_handle, UINT16 timeout) { tGAP_CCB *p_ccb; - if ((p_ccb = gap_find_ccb_by_handle (gap_handle)) == NULL) + if ((p_ccb = gap_find_ccb_by_handle (gap_handle)) == NULL) { return (GAP_ERR_BAD_HANDLE); + } - if (L2CA_SetIdleTimeout (p_ccb->connection_id, timeout, FALSE)) + if (L2CA_SetIdleTimeout (p_ccb->connection_id, timeout, FALSE)) { return (BT_PASS); - else + } else { return (GAP_ERR_BAD_HANDLE); + } } @@ -665,15 +645,12 @@ UINT8 *GAP_ConnGetRemoteAddr (UINT16 gap_handle) GAP_TRACE_EVENT ("GAP_ConnGetRemoteAddr gap_handle = %d", gap_handle); - if ((p_ccb) && (p_ccb->con_state > GAP_CCB_STATE_LISTENING)) - { + if ((p_ccb) && (p_ccb->con_state > GAP_CCB_STATE_LISTENING)) { GAP_TRACE_EVENT("GAP_ConnGetRemoteAddr bda :0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x\n", \ - p_ccb->rem_dev_address[0],p_ccb->rem_dev_address[1],p_ccb->rem_dev_address[2], - p_ccb->rem_dev_address[3],p_ccb->rem_dev_address[4],p_ccb->rem_dev_address[5]); + p_ccb->rem_dev_address[0], p_ccb->rem_dev_address[1], p_ccb->rem_dev_address[2], + p_ccb->rem_dev_address[3], p_ccb->rem_dev_address[4], p_ccb->rem_dev_address[5]); return (p_ccb->rem_dev_address); - } - else - { + } else { GAP_TRACE_EVENT ("GAP_ConnGetRemoteAddr return Error "); return (NULL); } @@ -695,8 +672,9 @@ UINT16 GAP_ConnGetRemMtuSize (UINT16 gap_handle) { tGAP_CCB *p_ccb; - if ((p_ccb = gap_find_ccb_by_handle (gap_handle)) == NULL) + if ((p_ccb = gap_find_ccb_by_handle (gap_handle)) == NULL) { return (0); + } return (p_ccb->rem_mtu_size); } @@ -717,8 +695,9 @@ UINT16 GAP_ConnGetL2CAPCid (UINT16 gap_handle) { tGAP_CCB *p_ccb; - if ((p_ccb = gap_find_ccb_by_handle (gap_handle)) == NULL) + if ((p_ccb = gap_find_ccb_by_handle (gap_handle)) == NULL) { return (0); + } return (p_ccb->connection_id); } @@ -742,17 +721,16 @@ static void gap_connect_ind (BD_ADDR bd_addr, UINT16 l2cap_cid, UINT16 psm, UIN tBT_UUID bt_uuid = {2, {GAP_PROTOCOL_ID}}; /* See if we have a CCB listening for the connection */ - for (xx = 0, p_ccb = gap_cb.conn.ccb_pool; xx < GAP_MAX_CONNECTIONS; xx++, p_ccb++) - { + for (xx = 0, p_ccb = gap_cb.conn.ccb_pool; xx < GAP_MAX_CONNECTIONS; xx++, p_ccb++) { if ((p_ccb->con_state == GAP_CCB_STATE_LISTENING) - && (p_ccb->psm == psm) - && ((p_ccb->rem_addr_specified == FALSE) - || (!memcmp (bd_addr, p_ccb->rem_dev_address, BD_ADDR_LEN)))) + && (p_ccb->psm == psm) + && ((p_ccb->rem_addr_specified == FALSE) + || (!memcmp (bd_addr, p_ccb->rem_dev_address, BD_ADDR_LEN)))) { break; + } } - if (xx == GAP_MAX_CONNECTIONS) - { + if (xx == GAP_MAX_CONNECTIONS) { GAP_TRACE_WARNING("*******"); GAP_TRACE_WARNING("WARNING: GAP Conn Indication for Unexpected Bd Addr...Disconnecting"); GAP_TRACE_WARNING("*******"); @@ -792,8 +770,7 @@ static void gap_checks_con_flags (tGAP_CCB *p_ccb) { GAP_TRACE_EVENT ("gap_checks_con_flags conn_flags:0x%x, ", p_ccb->con_flags); /* if all the required con_flags are set, report the OPEN event now */ - if ((p_ccb->con_flags & GAP_CCB_FLAGS_CONN_DONE) == GAP_CCB_FLAGS_CONN_DONE) - { + if ((p_ccb->con_flags & GAP_CCB_FLAGS_CONN_DONE) == GAP_CCB_FLAGS_CONN_DONE) { p_ccb->con_state = GAP_CCB_STATE_CONNECTED; p_ccb->p_callback (p_ccb->gap_handle, GAP_EVT_CONN_OPENED); @@ -817,17 +794,15 @@ static void gap_sec_check_complete (BD_ADDR bd_addr, tBT_TRANSPORT transport, vo UNUSED (transport); GAP_TRACE_EVENT ("gap_sec_check_complete conn_state:%d, conn_flags:0x%x, status:%d", - p_ccb->con_state, p_ccb->con_flags, res); - if (p_ccb->con_state == GAP_CCB_STATE_IDLE) + p_ccb->con_state, p_ccb->con_flags, res); + if (p_ccb->con_state == GAP_CCB_STATE_IDLE) { return; + } - if (res == BTM_SUCCESS) - { + if (res == BTM_SUCCESS) { p_ccb->con_flags |= GAP_CCB_FLAGS_SEC_DONE; gap_checks_con_flags (p_ccb); - } - else - { + } else { /* security failed - disconnect the channel */ L2CA_DISCONNECT_REQ (p_ccb->connection_id); } @@ -849,30 +824,28 @@ static void gap_connect_cfm (UINT16 l2cap_cid, UINT16 result) tGAP_CCB *p_ccb; /* Find CCB based on CID */ - if ((p_ccb = gap_find_ccb_by_cid (l2cap_cid)) == NULL) + if ((p_ccb = gap_find_ccb_by_cid (l2cap_cid)) == NULL) { return; + } /* initiate security process, if needed */ - if ( (p_ccb->con_flags & GAP_CCB_FLAGS_SEC_DONE) == 0) - { + if ( (p_ccb->con_flags & GAP_CCB_FLAGS_SEC_DONE) == 0) { btm_sec_mx_access_request (p_ccb->rem_dev_address, p_ccb->psm, TRUE, 0, 0, &gap_sec_check_complete, p_ccb); } /* If the connection response contains success status, then */ /* Transition to the next state and startup the timer. */ - if ((result == L2CAP_CONN_OK) && (p_ccb->con_state == GAP_CCB_STATE_CONN_SETUP)) - { + if ((result == L2CAP_CONN_OK) && (p_ccb->con_state == GAP_CCB_STATE_CONN_SETUP)) { p_ccb->con_state = GAP_CCB_STATE_CFG_SETUP; /* Send a Configuration Request. */ L2CA_CONFIG_REQ (l2cap_cid, &p_ccb->cfg); - } - else - { + } else { /* Tell the user if he has a callback */ - if (p_ccb->p_callback) + if (p_ccb->p_callback) { (*p_ccb->p_callback) (p_ccb->gap_handle, GAP_EVT_CONN_CLOSED); + } gap_release_ccb (p_ccb); } @@ -894,25 +867,24 @@ static void gap_config_ind (UINT16 l2cap_cid, tL2CAP_CFG_INFO *p_cfg) UINT16 local_mtu_size; /* Find CCB based on CID */ - if ((p_ccb = gap_find_ccb_by_cid (l2cap_cid)) == NULL) + if ((p_ccb = gap_find_ccb_by_cid (l2cap_cid)) == NULL) { return; + } /* Remember the remote MTU size */ - if (p_ccb->cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) - { + if (p_ccb->cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) { local_mtu_size = GKI_get_pool_bufsize (p_ccb->ertm_info.user_tx_pool_id) - - sizeof(BT_HDR) - L2CAP_MIN_OFFSET; - } - else + - sizeof(BT_HDR) - L2CAP_MIN_OFFSET; + } else { local_mtu_size = L2CAP_MTU_SIZE; - - if ((!p_cfg->mtu_present)||(p_cfg->mtu > local_mtu_size)) - { - p_ccb->rem_mtu_size = local_mtu_size; } - else + + if ((!p_cfg->mtu_present) || (p_cfg->mtu > local_mtu_size)) { + p_ccb->rem_mtu_size = local_mtu_size; + } else { p_ccb->rem_mtu_size = p_cfg->mtu; + } /* For now, always accept configuration from the other side */ p_cfg->flush_to_present = FALSE; @@ -943,23 +915,22 @@ static void gap_config_cfm (UINT16 l2cap_cid, tL2CAP_CFG_INFO *p_cfg) tGAP_CCB *p_ccb; /* Find CCB based on CID */ - if ((p_ccb = gap_find_ccb_by_cid (l2cap_cid)) == NULL) + if ((p_ccb = gap_find_ccb_by_cid (l2cap_cid)) == NULL) { return; + } - if (p_cfg->result == L2CAP_CFG_OK) - { + if (p_cfg->result == L2CAP_CFG_OK) { p_ccb->con_flags |= GAP_CCB_FLAGS_MY_CFG_DONE; - if (p_ccb->cfg.fcr_present) + if (p_ccb->cfg.fcr_present) { p_ccb->cfg.fcr.mode = p_cfg->fcr.mode; - else + } else { p_ccb->cfg.fcr.mode = L2CAP_FCR_BASIC_MODE; + } gap_checks_con_flags (p_ccb); - } - else - { + } else { p_ccb->p_callback (p_ccb->gap_handle, GAP_EVT_CONN_CLOSED); gap_release_ccb (p_ccb); } @@ -983,11 +954,13 @@ static void gap_disconnect_ind (UINT16 l2cap_cid, BOOLEAN ack_needed) GAP_TRACE_EVENT ("GAP_CONN - Rcvd L2CAP disc, CID: 0x%x", l2cap_cid); /* Find CCB based on CID */ - if ((p_ccb = gap_find_ccb_by_cid (l2cap_cid)) == NULL) + if ((p_ccb = gap_find_ccb_by_cid (l2cap_cid)) == NULL) { return; + } - if (ack_needed) + if (ack_needed) { L2CA_DISCONNECT_RSP (l2cap_cid); + } p_ccb->p_callback (p_ccb->gap_handle, GAP_EVT_CONN_CLOSED); gap_release_ccb (p_ccb); @@ -1008,14 +981,12 @@ static void gap_data_ind (UINT16 l2cap_cid, BT_HDR *p_msg) tGAP_CCB *p_ccb; /* Find CCB based on CID */ - if ((p_ccb = gap_find_ccb_by_cid (l2cap_cid)) == NULL) - { + if ((p_ccb = gap_find_ccb_by_cid (l2cap_cid)) == NULL) { GKI_freebuf (p_msg); return; } - if (p_ccb->con_state == GAP_CCB_STATE_CONNECTED) - { + if (p_ccb->con_state == GAP_CCB_STATE_CONNECTED) { GKI_enqueue (&p_ccb->rx_queue, p_msg); p_ccb->rx_queue_size += p_msg->len; @@ -1025,9 +996,7 @@ static void gap_data_ind (UINT16 l2cap_cid, BT_HDR *p_msg) */ p_ccb->p_callback (p_ccb->gap_handle, GAP_EVT_CONN_DATA_AVAIL); - } - else - { + } else { GKI_freebuf (p_msg); } } @@ -1049,30 +1018,28 @@ static void gap_congestion_ind (UINT16 lcid, BOOLEAN is_congested) UINT8 status; GAP_TRACE_EVENT ("GAP_CONN - Rcvd L2CAP Is Congested (%d), CID: 0x%x", - is_congested, lcid); + is_congested, lcid); /* Find CCB based on CID */ - if ((p_ccb = gap_find_ccb_by_cid (lcid)) == NULL) + if ((p_ccb = gap_find_ccb_by_cid (lcid)) == NULL) { return; + } p_ccb->is_congested = is_congested; event = (is_congested) ? GAP_EVT_CONN_CONGESTED : GAP_EVT_CONN_UNCONGESTED; p_ccb->p_callback (p_ccb->gap_handle, event); - if (!is_congested) - { - while ((p_buf = (BT_HDR *)GKI_dequeue (&p_ccb->tx_queue)) != NULL) - { + if (!is_congested) { + while ((p_buf = (BT_HDR *)GKI_dequeue (&p_ccb->tx_queue)) != NULL) { status = L2CA_DATA_WRITE (p_ccb->connection_id, p_buf); - if (status == L2CAP_DW_CONGESTED) - { + if (status == L2CAP_DW_CONGESTED) { p_ccb->is_congested = TRUE; break; - } - else if (status != L2CAP_DW_SUCCESS) + } else if (status != L2CAP_DW_SUCCESS) { break; + } } } } @@ -1094,10 +1061,10 @@ static tGAP_CCB *gap_find_ccb_by_cid (UINT16 cid) tGAP_CCB *p_ccb; /* Look through each connection control block */ - for (xx = 0, p_ccb = gap_cb.conn.ccb_pool; xx < GAP_MAX_CONNECTIONS; xx++, p_ccb++) - { - if ((p_ccb->con_state != GAP_CCB_STATE_IDLE) && (p_ccb->connection_id == cid)) + for (xx = 0, p_ccb = gap_cb.conn.ccb_pool; xx < GAP_MAX_CONNECTIONS; xx++, p_ccb++) { + if ((p_ccb->con_state != GAP_CCB_STATE_IDLE) && (p_ccb->connection_id == cid)) { return (p_ccb); + } } /* If here, not found */ @@ -1120,12 +1087,12 @@ static tGAP_CCB *gap_find_ccb_by_handle (UINT16 handle) tGAP_CCB *p_ccb; /* Check that handle is valid */ - if (handle < GAP_MAX_CONNECTIONS) - { + if (handle < GAP_MAX_CONNECTIONS) { p_ccb = &gap_cb.conn.ccb_pool[handle]; - if (p_ccb->con_state != GAP_CCB_STATE_IDLE) + if (p_ccb->con_state != GAP_CCB_STATE_IDLE) { return (p_ccb); + } } /* If here, handle points to invalid connection */ @@ -1148,10 +1115,8 @@ static tGAP_CCB *gap_allocate_ccb (void) tGAP_CCB *p_ccb; /* Look through each connection control block for a free one */ - for (xx = 0, p_ccb = gap_cb.conn.ccb_pool; xx < GAP_MAX_CONNECTIONS; xx++, p_ccb++) - { - if (p_ccb->con_state == GAP_CCB_STATE_IDLE) - { + for (xx = 0, p_ccb = gap_cb.conn.ccb_pool; xx < GAP_MAX_CONNECTIONS; xx++, p_ccb++) { + if (p_ccb->con_state == GAP_CCB_STATE_IDLE) { memset (p_ccb, 0, sizeof (tGAP_CCB)); p_ccb->gap_handle = xx; @@ -1184,19 +1149,21 @@ static void gap_release_ccb (tGAP_CCB *p_ccb) /* Drop any buffers we may be holding */ p_ccb->rx_queue_size = 0; - while (p_ccb->rx_queue._p_first) + while (p_ccb->rx_queue._p_first) { GKI_freebuf (GKI_dequeue (&p_ccb->rx_queue)); + } - while (p_ccb->tx_queue._p_first) + while (p_ccb->tx_queue._p_first) { GKI_freebuf (GKI_dequeue (&p_ccb->tx_queue)); + } p_ccb->con_state = GAP_CCB_STATE_IDLE; /* If no-one else is using the PSM, deregister from L2CAP */ - for (xx = 0, p_ccb = gap_cb.conn.ccb_pool; xx < GAP_MAX_CONNECTIONS; xx++, p_ccb++) - { - if ((p_ccb->con_state != GAP_CCB_STATE_IDLE) && (p_ccb->psm == psm)) + for (xx = 0, p_ccb = gap_cb.conn.ccb_pool; xx < GAP_MAX_CONNECTIONS; xx++, p_ccb++) { + if ((p_ccb->con_state != GAP_CCB_STATE_IDLE) && (p_ccb->psm == psm)) { return; + } } /* Free the security record for this PSM */ @@ -1219,17 +1186,14 @@ void gap_send_event (UINT16 gap_handle) { BT_HDR *p_msg; - if ((p_msg = (BT_HDR*)GKI_getbuf(BT_HDR_SIZE)) != NULL) - { + if ((p_msg = (BT_HDR *)GKI_getbuf(BT_HDR_SIZE)) != NULL) { p_msg->event = BT_EVT_TO_GAP_MSG; p_msg->len = 0; p_msg->offset = 0; p_msg->layer_specific = gap_handle; GKI_send_msg(BTU_TASK, BTU_HCI_RCV_MBOX, p_msg); - } - else - { + } else { GAP_TRACE_ERROR("Unable to allocate message buffer for event."); } } @@ -1249,34 +1213,29 @@ void gap_proc_btu_event(BT_HDR *p_msg) UINT8 status; BT_HDR *p_buf; - if (!p_ccb) - { + if (!p_ccb) { return; } - if (p_ccb->con_state != GAP_CCB_STATE_CONNECTED) - { + if (p_ccb->con_state != GAP_CCB_STATE_CONNECTED) { return; } - if (p_ccb->is_congested) - { + if (p_ccb->is_congested) { return; } /* Send the buffer through L2CAP */ - while ((p_buf = (BT_HDR *)GKI_dequeue (&p_ccb->tx_queue)) != NULL) - { + while ((p_buf = (BT_HDR *)GKI_dequeue (&p_ccb->tx_queue)) != NULL) { status = L2CA_DATA_WRITE (p_ccb->connection_id, p_buf); - if (status == L2CAP_DW_CONGESTED) - { + if (status == L2CAP_DW_CONGESTED) { p_ccb->is_congested = TRUE; break; - } - else if (status != L2CAP_DW_SUCCESS) + } else if (status != L2CAP_DW_SUCCESS) { break; + } } } diff --git a/components/bt/bluedroid/stack/gap/gap_utils.c b/components/bt/bluedroid/stack/gap/gap_utils.c old mode 100755 new mode 100644 index 16f1571072..d441fa11ec --- a/components/bt/bluedroid/stack/gap/gap_utils.c +++ b/components/bt/bluedroid/stack/gap/gap_utils.c @@ -35,10 +35,8 @@ tGAP_INFO *gap_allocate_cb (void) tGAP_INFO *p_cb = &gap_cb.blk[0]; UINT8 x; - for (x = 0; x < GAP_MAX_BLOCKS; x++, p_cb++) - { - if (!p_cb->in_use) - { + for (x = 0; x < GAP_MAX_BLOCKS; x++, p_cb++) { + if (!p_cb->in_use) { memset (p_cb, 0, sizeof (tGAP_INFO)); p_cb->in_use = TRUE; @@ -64,8 +62,7 @@ tGAP_INFO *gap_allocate_cb (void) *******************************************************************************/ void gap_free_cb (tGAP_INFO *p_cb) { - if (p_cb) - { + if (p_cb) { p_cb->gap_cback = NULL; p_cb->in_use = FALSE; } @@ -89,10 +86,10 @@ BOOLEAN gap_is_service_busy (UINT16 request) tGAP_INFO *p_cb = &gap_cb.blk[0]; UINT8 x; - for (x = 0; x < GAP_MAX_BLOCKS; x++, p_cb++) - { - if (p_cb->in_use && p_cb->event == request) + for (x = 0; x < GAP_MAX_BLOCKS; x++, p_cb++) { + if (p_cb->in_use && p_cb->event == request) { return (TRUE); + } } /* If here, service is not busy */ @@ -112,8 +109,7 @@ BOOLEAN gap_is_service_busy (UINT16 request) *******************************************************************************/ UINT16 gap_convert_btm_status (tBTM_STATUS btm_status) { - switch (btm_status) - { + switch (btm_status) { case BTM_SUCCESS: return (BT_PASS); diff --git a/components/bt/bluedroid/stack/gap/include/gap_int.h b/components/bt/bluedroid/stack/gap/include/gap_int.h old mode 100755 new mode 100644 index 36064c657b..fbddf67c96 --- a/components/bt/bluedroid/stack/gap/include/gap_int.h +++ b/components/bt/bluedroid/stack/gap/include/gap_int.h @@ -26,8 +26,7 @@ #include "gatt_api.h" #define GAP_MAX_BLOCKS 2 /* Concurrent GAP commands pending at a time*/ /* Define the Generic Access Profile control structure */ -typedef struct -{ +typedef struct { void *p_data; /* Pointer to any data returned in callback */ tGAP_CALLBACK *gap_cback; /* Pointer to users callback function */ tGAP_CALLBACK *gap_inq_rslt_cback; /* Used for inquiry results */ @@ -37,8 +36,7 @@ typedef struct } tGAP_INFO; /* Define the control block for the FindAddrByName operation (Only 1 active at a time) */ -typedef struct -{ +typedef struct { tGAP_CALLBACK *p_cback; tBTM_INQ_INFO *p_cur_inq; /* Pointer to the current inquiry database entry */ tGAP_FINDADDR_RESULTS results; @@ -47,8 +45,7 @@ typedef struct /* Define the GAP Connection Control Block. */ -typedef struct -{ +typedef struct { #define GAP_CCB_STATE_IDLE 0 #define GAP_CCB_STATE_LISTENING 1 #define GAP_CCB_STATE_CONN_SETUP 2 @@ -85,8 +82,7 @@ typedef struct tL2CAP_ERTM_INFO ertm_info; /* Pools and modes for ertm */ } tGAP_CCB; -typedef struct -{ +typedef struct { #if ((defined AMP_INCLUDED) && (AMP_INCLUDED == TRUE)) tAMP_APPL_INFO reg_info; #else @@ -99,12 +95,11 @@ typedef struct #if BLE_INCLUDED == TRUE #define GAP_MAX_CHAR_NUM 4 -typedef struct -{ +typedef struct { UINT16 handle; UINT16 uuid; tGAP_BLE_ATTR_VALUE attr_value; -}tGAP_ATTR; +} tGAP_ATTR; #endif /********************************************************************** ** M A I N C O N T R O L B L O C K @@ -112,14 +107,12 @@ typedef struct #define GAP_MAX_CL GATT_CL_MAX_LCB -typedef struct -{ +typedef struct { UINT16 uuid; tGAP_BLE_CMPL_CBACK *p_cback; } tGAP_BLE_REQ; -typedef struct -{ +typedef struct { BD_ADDR bda; tGAP_BLE_CMPL_CBACK *p_cback; UINT16 conn_id; @@ -128,10 +121,9 @@ typedef struct BOOLEAN connected; BUFFER_Q pending_req_q; -}tGAP_CLCB; +} tGAP_CLCB; -typedef struct -{ +typedef struct { tGAP_INFO blk[GAP_MAX_BLOCKS]; tBTM_CMPL_CB *btm_cback[GAP_MAX_BLOCKS]; UINT8 trace_level; @@ -153,10 +145,10 @@ typedef struct extern tGAP_CB gap_cb; #if (GAP_CONN_INCLUDED == TRUE) - extern void gap_conn_init(void); +extern void gap_conn_init(void); #endif #if (BLE_INCLUDED == TRUE) - extern void gap_attr_db_init(void); +extern void gap_attr_db_init(void); #endif #endif diff --git a/components/bt/bluedroid/stack/gatt/att_protocol.c b/components/bt/bluedroid/stack/gatt/att_protocol.c old mode 100755 new mode 100644 index 00512e2c99..48ccfd49da --- a/components/bt/bluedroid/stack/gatt/att_protocol.c +++ b/components/bt/bluedroid/stack/gatt/att_protocol.c @@ -48,8 +48,7 @@ BT_HDR *attp_build_mtu_cmd(UINT8 op_code, UINT16 rx_mtu) BT_HDR *p_buf = NULL; UINT8 *p; - if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + GATT_HDR_SIZE + L2CAP_MIN_OFFSET)) != NULL) - { + if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + GATT_HDR_SIZE + L2CAP_MIN_OFFSET)) != NULL) { p = (UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; UINT8_TO_STREAM (p, op_code); @@ -74,8 +73,7 @@ BT_HDR *attp_build_exec_write_cmd (UINT8 op_code, UINT8 flag) BT_HDR *p_buf = NULL; UINT8 *p; - if ((p_buf = (BT_HDR *)GKI_getpoolbuf(GATT_BUF_POOL_ID)) != NULL) - { + if ((p_buf = (BT_HDR *)GKI_getpoolbuf(GATT_BUF_POOL_ID)) != NULL) { p = (UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; p_buf->offset = L2CAP_MIN_OFFSET; @@ -83,8 +81,7 @@ BT_HDR *attp_build_exec_write_cmd (UINT8 op_code, UINT8 flag) UINT8_TO_STREAM (p, op_code); - if (op_code == GATT_REQ_EXEC_WRITE) - { + if (op_code == GATT_REQ_EXEC_WRITE) { flag &= GATT_PREP_WRITE_EXEC; UINT8_TO_STREAM (p, flag); p_buf->len += 1; @@ -109,8 +106,7 @@ BT_HDR *attp_build_err_cmd(UINT8 cmd_code, UINT16 err_handle, UINT8 reason) BT_HDR *p_buf = NULL; UINT8 *p; - if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + L2CAP_MIN_OFFSET + 5)) != NULL) - { + if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + L2CAP_MIN_OFFSET + 5)) != NULL) { p = (UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; UINT8_TO_STREAM (p, GATT_RSP_ERROR); @@ -138,8 +134,7 @@ BT_HDR *attp_build_browse_cmd(UINT8 op_code, UINT16 s_hdl, UINT16 e_hdl, tBT_UUI BT_HDR *p_buf = NULL; UINT8 *p; - if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + 8 + L2CAP_MIN_OFFSET)) != NULL) - { + if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + 8 + L2CAP_MIN_OFFSET)) != NULL) { p = (UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; /* Describe the built message location and size */ p_buf->offset = L2CAP_MIN_OFFSET; @@ -168,8 +163,7 @@ BT_HDR *attp_build_read_by_type_value_cmd (UINT16 payload_size, tGATT_FIND_TYPE_ UINT8 *p; UINT16 len = p_value_type->value_len; - if ((p_buf = (BT_HDR *)GKI_getbuf((UINT16)(sizeof(BT_HDR) + payload_size + L2CAP_MIN_OFFSET))) != NULL) - { + if ((p_buf = (BT_HDR *)GKI_getbuf((UINT16)(sizeof(BT_HDR) + payload_size + L2CAP_MIN_OFFSET))) != NULL) { p = (UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; p_buf->offset = L2CAP_MIN_OFFSET; @@ -181,8 +175,9 @@ BT_HDR *attp_build_read_by_type_value_cmd (UINT16 payload_size, tGATT_FIND_TYPE_ p_buf->len += gatt_build_uuid_to_stream(&p, p_value_type->uuid); - if (p_value_type->value_len + p_buf->len > payload_size ) + if (p_value_type->value_len + p_buf->len > payload_size ) { len = payload_size - p_buf->len; + } memcpy (p, p_value_type->value, len); p_buf->len += len; @@ -204,8 +199,7 @@ BT_HDR *attp_build_read_multi_cmd(UINT16 payload_size, UINT16 num_handle, UINT16 BT_HDR *p_buf = NULL; UINT8 *p, i = 0; - if ((p_buf = (BT_HDR *)GKI_getbuf((UINT16)(sizeof(BT_HDR) + num_handle * 2 + 1 + L2CAP_MIN_OFFSET))) != NULL) - { + if ((p_buf = (BT_HDR *)GKI_getbuf((UINT16)(sizeof(BT_HDR) + num_handle * 2 + 1 + L2CAP_MIN_OFFSET))) != NULL) { p = (UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; p_buf->offset = L2CAP_MIN_OFFSET; @@ -213,8 +207,7 @@ BT_HDR *attp_build_read_multi_cmd(UINT16 payload_size, UINT16 num_handle, UINT16 UINT8_TO_STREAM (p, GATT_REQ_READ_MULTI); - for (i = 0; i < num_handle && p_buf->len + 2 <= payload_size; i ++) - { + for (i = 0; i < num_handle && p_buf->len + 2 <= payload_size; i ++) { UINT16_TO_STREAM (p, *(p_handle + i)); p_buf->len += 2; } @@ -236,8 +229,7 @@ BT_HDR *attp_build_handle_cmd(UINT8 op_code, UINT16 handle, UINT16 offset) BT_HDR *p_buf = NULL; UINT8 *p; - if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + 5 + L2CAP_MIN_OFFSET)) != NULL) - { + if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + 5 + L2CAP_MIN_OFFSET)) != NULL) { p = (UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; p_buf->offset = L2CAP_MIN_OFFSET; @@ -248,8 +240,7 @@ BT_HDR *attp_build_handle_cmd(UINT8 op_code, UINT16 handle, UINT16 offset) UINT16_TO_STREAM (p, handle); p_buf->len += 2; - if (op_code == GATT_REQ_READ_BLOB) - { + if (op_code == GATT_REQ_READ_BLOB) { UINT16_TO_STREAM (p, offset); p_buf->len += 2; } @@ -272,8 +263,7 @@ BT_HDR *attp_build_opcode_cmd(UINT8 op_code) BT_HDR *p_buf = NULL; UINT8 *p; - if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + 1 + L2CAP_MIN_OFFSET)) != NULL) - { + if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + 1 + L2CAP_MIN_OFFSET)) != NULL) { p = (UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; p_buf->offset = L2CAP_MIN_OFFSET; @@ -298,42 +288,37 @@ BT_HDR *attp_build_value_cmd (UINT16 payload_size, UINT8 op_code, UINT16 handle, BT_HDR *p_buf = NULL; UINT8 *p, *pp, pair_len, *p_pair_len; - if ((p_buf = (BT_HDR *)GKI_getbuf((UINT16)(sizeof(BT_HDR) + payload_size + L2CAP_MIN_OFFSET))) != NULL) - { - p = pp =(UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; + if ((p_buf = (BT_HDR *)GKI_getbuf((UINT16)(sizeof(BT_HDR) + payload_size + L2CAP_MIN_OFFSET))) != NULL) { + p = pp = (UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; UINT8_TO_STREAM (p, op_code); p_buf->offset = L2CAP_MIN_OFFSET; p_buf->len = 1; - if (op_code == GATT_RSP_READ_BY_TYPE) - { + if (op_code == GATT_RSP_READ_BY_TYPE) { p_pair_len = p; pair_len = len + 2; UINT8_TO_STREAM (p, pair_len); p_buf->len += 1; } - if (op_code != GATT_RSP_READ_BLOB && op_code != GATT_RSP_READ) - { + if (op_code != GATT_RSP_READ_BLOB && op_code != GATT_RSP_READ) { UINT16_TO_STREAM (p, handle); p_buf->len += 2; } - if (op_code == GATT_REQ_PREPARE_WRITE ||op_code == GATT_RSP_PREPARE_WRITE ) - { + if (op_code == GATT_REQ_PREPARE_WRITE || op_code == GATT_RSP_PREPARE_WRITE ) { UINT16_TO_STREAM (p, offset); p_buf->len += 2; } - if (len > 0 && p_data != NULL) - { + if (len > 0 && p_data != NULL) { /* ensure data not exceed MTU size */ - if (payload_size - p_buf->len < len) - { + if (payload_size - p_buf->len < len) { len = payload_size - p_buf->len; /* update handle value pair length */ - if (op_code == GATT_RSP_READ_BY_TYPE) + if (op_code == GATT_RSP_READ_BY_TYPE) { *p_pair_len = (len + 2); + } GATT_TRACE_WARNING("attribute value too long, to be truncated to %d", len); } @@ -357,19 +342,17 @@ tGATT_STATUS attp_send_msg_to_l2cap(tGATT_TCB *p_tcb, BT_HDR *p_toL2CAP) UINT16 l2cap_ret; - if (p_tcb->att_lcid == L2CAP_ATT_CID) + if (p_tcb->att_lcid == L2CAP_ATT_CID) { l2cap_ret = L2CA_SendFixedChnlData (L2CAP_ATT_CID, p_tcb->peer_bda, p_toL2CAP); - else + } else { l2cap_ret = (UINT16) L2CA_DataWrite (p_tcb->att_lcid, p_toL2CAP); - - if (l2cap_ret == L2CAP_DW_FAILED) - { - GATT_TRACE_ERROR("ATT failed to pass msg:0x%0x to L2CAP", - *((UINT8 *)(p_toL2CAP + 1) + p_toL2CAP->offset)); - return GATT_INTERNAL_ERROR; } - else if (l2cap_ret == L2CAP_DW_CONGESTED) - { + + if (l2cap_ret == L2CAP_DW_FAILED) { + GATT_TRACE_ERROR("ATT failed to pass msg:0x%0x to L2CAP", + *((UINT8 *)(p_toL2CAP + 1) + p_toL2CAP->offset)); + return GATT_INTERNAL_ERROR; + } else if (l2cap_ret == L2CAP_DW_CONGESTED) { GATT_TRACE_DEBUG("ATT congested, message accepted"); return GATT_CONGESTED; } @@ -388,16 +371,15 @@ BT_HDR *attp_build_sr_msg(tGATT_TCB *p_tcb, UINT8 op_code, tGATT_SR_MSG *p_msg) BT_HDR *p_cmd = NULL; UINT16 offset = 0; - switch (op_code) - { + switch (op_code) { case GATT_RSP_READ_BLOB: case GATT_RSP_PREPARE_WRITE: GATT_TRACE_EVENT ("ATT_RSP_READ_BLOB/GATT_RSP_PREPARE_WRITE: len = %d offset = %d", - p_msg->attr_value.len, p_msg->attr_value.offset); + p_msg->attr_value.len, p_msg->attr_value.offset); offset = p_msg->attr_value.offset; -/* Coverity: [FALSE-POSITIVE error] intended fall through */ -/* Missing break statement between cases in switch statement */ - /* fall through */ + /* Coverity: [FALSE-POSITIVE error] intended fall through */ + /* Missing break statement between cases in switch statement */ + /* fall through */ case GATT_RSP_READ_BY_TYPE: case GATT_RSP_READ: case GATT_HANDLE_VALUE_NOTIF: @@ -431,8 +413,9 @@ BT_HDR *attp_build_sr_msg(tGATT_TCB *p_tcb, UINT8 op_code, tGATT_SR_MSG *p_msg) break; } - if (!p_cmd) + if (!p_cmd) { GATT_TRACE_ERROR("No resources"); + } return p_cmd; } @@ -455,10 +438,8 @@ tGATT_STATUS attp_send_sr_msg (tGATT_TCB *p_tcb, BT_HDR *p_msg) { tGATT_STATUS cmd_sent = GATT_NO_RESOURCES; - if (p_tcb != NULL) - { - if (p_msg != NULL) - { + if (p_tcb != NULL) { + if (p_msg != NULL) { p_msg->offset = L2CAP_MIN_OFFSET; cmd_sent = attp_send_msg_to_l2cap (p_tcb, p_msg); } @@ -482,35 +463,29 @@ tGATT_STATUS attp_cl_send_cmd(tGATT_TCB *p_tcb, UINT16 clcb_idx, UINT8 cmd_code, { tGATT_STATUS att_ret = GATT_SUCCESS; - if (p_tcb != NULL) - { + if (p_tcb != NULL) { cmd_code &= ~GATT_AUTH_SIGN_MASK; /* no pending request or value confirmation */ if (p_tcb->pending_cl_req == p_tcb->next_slot_inq || - cmd_code == GATT_HANDLE_VALUE_CONF) - { + cmd_code == GATT_HANDLE_VALUE_CONF) { att_ret = attp_send_msg_to_l2cap(p_tcb, p_cmd); - if (att_ret == GATT_CONGESTED || att_ret == GATT_SUCCESS) - { + if (att_ret == GATT_CONGESTED || att_ret == GATT_SUCCESS) { /* do not enq cmd if handle value confirmation or set request */ - if (cmd_code != GATT_HANDLE_VALUE_CONF && cmd_code != GATT_CMD_WRITE) - { + if (cmd_code != GATT_HANDLE_VALUE_CONF && cmd_code != GATT_CMD_WRITE) { gatt_start_rsp_timer (clcb_idx); gatt_cmd_enq(p_tcb, clcb_idx, FALSE, cmd_code, NULL); } - } - else + } else { att_ret = GATT_INTERNAL_ERROR; - } - else - { + } + } else { att_ret = GATT_CMD_STARTED; gatt_cmd_enq(p_tcb, clcb_idx, TRUE, cmd_code, p_cmd); } - } - else + } else { att_ret = GATT_ERROR; + } return att_ret; } @@ -536,48 +511,43 @@ tGATT_STATUS attp_send_cl_msg (tGATT_TCB *p_tcb, UINT16 clcb_idx, UINT8 op_code, BT_HDR *p_cmd = NULL; UINT16 offset = 0, handle; - if (p_tcb != NULL) - { - switch (op_code) - { + if (p_tcb != NULL) { + switch (op_code) { case GATT_REQ_MTU: - if (p_msg->mtu <= GATT_MAX_MTU_SIZE) - { + if (p_msg->mtu <= GATT_MAX_MTU_SIZE) { p_tcb->payload_size = p_msg->mtu; p_cmd = attp_build_mtu_cmd(GATT_REQ_MTU, p_msg->mtu); - } - else + } else { status = GATT_ILLEGAL_PARAMETER; + } break; case GATT_REQ_FIND_INFO: case GATT_REQ_READ_BY_TYPE: case GATT_REQ_READ_BY_GRP_TYPE: if (GATT_HANDLE_IS_VALID (p_msg->browse.s_handle) && - GATT_HANDLE_IS_VALID (p_msg->browse.e_handle) && - p_msg->browse.s_handle <= p_msg->browse.e_handle) - { + GATT_HANDLE_IS_VALID (p_msg->browse.e_handle) && + p_msg->browse.s_handle <= p_msg->browse.e_handle) { p_cmd = attp_build_browse_cmd(op_code, - p_msg->browse.s_handle, - p_msg->browse.e_handle, - p_msg->browse.uuid); - } - else + p_msg->browse.s_handle, + p_msg->browse.e_handle, + p_msg->browse.uuid); + } else { status = GATT_ILLEGAL_PARAMETER; + } break; case GATT_REQ_READ_BLOB: offset = p_msg->read_blob.offset; - /* fall through */ + /* fall through */ case GATT_REQ_READ: - handle = (op_code == GATT_REQ_READ) ? p_msg->handle: p_msg->read_blob.handle; + handle = (op_code == GATT_REQ_READ) ? p_msg->handle : p_msg->read_blob.handle; /* handle checking */ - if (GATT_HANDLE_IS_VALID (handle)) - { + if (GATT_HANDLE_IS_VALID (handle)) { p_cmd = attp_build_handle_cmd(op_code, handle, offset); - } - else + } else { status = GATT_ILLEGAL_PARAMETER; + } break; case GATT_HANDLE_VALUE_CONF: @@ -586,20 +556,19 @@ tGATT_STATUS attp_send_cl_msg (tGATT_TCB *p_tcb, UINT16 clcb_idx, UINT8 op_code, case GATT_REQ_PREPARE_WRITE: offset = p_msg->attr_value.offset; - /* fall through */ + /* fall through */ case GATT_REQ_WRITE: case GATT_CMD_WRITE: case GATT_SIGN_CMD_WRITE: - if (GATT_HANDLE_IS_VALID (p_msg->attr_value.handle)) - { + if (GATT_HANDLE_IS_VALID (p_msg->attr_value.handle)) { p_cmd = attp_build_value_cmd (p_tcb->payload_size, op_code, p_msg->attr_value.handle, offset, p_msg->attr_value.len, p_msg->attr_value.value); - } - else + } else { status = GATT_ILLEGAL_PARAMETER; + } break; case GATT_REQ_EXEC_WRITE: @@ -620,12 +589,11 @@ tGATT_STATUS attp_send_cl_msg (tGATT_TCB *p_tcb, UINT16 clcb_idx, UINT8 op_code, break; } - if (p_cmd != NULL) + if (p_cmd != NULL) { status = attp_cl_send_cmd(p_tcb, clcb_idx, op_code, p_cmd); + } - } - else - { + } else { GATT_TRACE_ERROR("Peer device not connected"); } diff --git a/components/bt/bluedroid/stack/gatt/gatt_api.c b/components/bt/bluedroid/stack/gatt/gatt_api.c old mode 100755 new mode 100644 index 72f9dfd227..1a61d60b14 --- a/components/bt/bluedroid/stack/gatt/gatt_api.c +++ b/components/bt/bluedroid/stack/gatt/gatt_api.c @@ -57,10 +57,11 @@ *******************************************************************************/ UINT8 GATT_SetTraceLevel (UINT8 new_level) { - if (new_level != 0xFF) + if (new_level != 0xFF) { gatt_cb.trace_level = new_level; + } - return(gatt_cb.trace_level); + return (gatt_cb.trace_level); } /***************************************************************************** @@ -84,10 +85,9 @@ UINT8 GATT_SetTraceLevel (UINT8 new_level) BOOLEAN GATTS_AddHandleRange(tGATTS_HNDL_RANGE *p_hndl_range) { tGATT_HDL_LIST_ELEM *p_buf; - BOOLEAN status= FALSE; + BOOLEAN status = FALSE; - if ((p_buf = gatt_alloc_hdl_buffer()) != NULL) - { + if ((p_buf = gatt_alloc_hdl_buffer()) != NULL) { p_buf->asgn_range = *p_hndl_range; status = gatt_add_an_item_to_list(&gatt_cb.hdl_list_info, p_buf); } @@ -110,9 +110,8 @@ BOOLEAN GATTS_AddHandleRange(tGATTS_HNDL_RANGE *p_hndl_range) *******************************************************************************/ BOOLEAN GATTS_NVRegister (tGATT_APPL_INFO *p_cb_info) { - BOOLEAN status= FALSE; - if (p_cb_info) - { + BOOLEAN status = FALSE; + if (p_cb_info) { gatt_cb.cb_info = *p_cb_info; status = TRUE; gatt_init_srv_chg(); @@ -142,123 +141,107 @@ UINT16 GATTS_CreateService (tGATT_IF gatt_if, tBT_UUID *p_svc_uuid, UINT16 svc_inst, UINT16 num_handles, BOOLEAN is_pri) { - tGATT_HDL_LIST_INFO *p_list_info= &gatt_cb.hdl_list_info; - tGATT_HDL_LIST_ELEM *p_list=NULL; - UINT16 s_hdl=0; - BOOLEAN save_hdl=FALSE; - tGATTS_PENDING_NEW_SRV_START *p_buf=NULL; + tGATT_HDL_LIST_INFO *p_list_info = &gatt_cb.hdl_list_info; + tGATT_HDL_LIST_ELEM *p_list = NULL; + UINT16 s_hdl = 0; + BOOLEAN save_hdl = FALSE; + tGATTS_PENDING_NEW_SRV_START *p_buf = NULL; tGATT_REG *p_reg = gatt_get_regcb(gatt_if); tBT_UUID *p_app_uuid128; GATT_TRACE_API ("GATTS_CreateService" ); - if (p_reg == NULL) - { + if (p_reg == NULL) { GATT_TRACE_ERROR ("Inavlid gatt_if=%d", gatt_if); - return(0); + return (0); } p_app_uuid128 = &p_reg->app_uuid128; - if ((p_list = gatt_find_hdl_buffer_by_app_id(p_app_uuid128, p_svc_uuid, svc_inst)) != NULL) - { + if ((p_list = gatt_find_hdl_buffer_by_app_id(p_app_uuid128, p_svc_uuid, svc_inst)) != NULL) { s_hdl = p_list->asgn_range.s_handle; GATT_TRACE_DEBUG ("Service already been created!!"); - } - else - { - if ( (p_svc_uuid->len == LEN_UUID_16) && (p_svc_uuid->uu.uuid16 == UUID_SERVCLASS_GATT_SERVER)) - { - s_hdl= gatt_cb.hdl_cfg.gatt_start_hdl; - } - else if ((p_svc_uuid->len == LEN_UUID_16) && (p_svc_uuid->uu.uuid16 == UUID_SERVCLASS_GAP_SERVER)) - { - s_hdl= gatt_cb.hdl_cfg.gap_start_hdl; - } - else - { + } else { + if ( (p_svc_uuid->len == LEN_UUID_16) && (p_svc_uuid->uu.uuid16 == UUID_SERVCLASS_GATT_SERVER)) { + s_hdl = gatt_cb.hdl_cfg.gatt_start_hdl; + } else if ((p_svc_uuid->len == LEN_UUID_16) && (p_svc_uuid->uu.uuid16 == UUID_SERVCLASS_GAP_SERVER)) { + s_hdl = gatt_cb.hdl_cfg.gap_start_hdl; + } else { p_list = p_list_info->p_first; - if (p_list) - { + if (p_list) { s_hdl = p_list->asgn_range.e_handle + 1; } - if (s_hdl < gatt_cb.hdl_cfg.app_start_hdl) - { + if (s_hdl < gatt_cb.hdl_cfg.app_start_hdl) { - s_hdl= gatt_cb.hdl_cfg.app_start_hdl; + s_hdl = gatt_cb.hdl_cfg.app_start_hdl; } save_hdl = TRUE; } /* check for space */ - if (num_handles > (0xFFFF - s_hdl + 1)) - { + if (num_handles > (0xFFFF - s_hdl + 1)) { GATT_TRACE_ERROR ("GATTS_ReserveHandles: no handles, s_hdl: %u needed: %u", s_hdl, num_handles); - return(0); + return (0); } - if ( (p_list = gatt_alloc_hdl_buffer()) == NULL) - { + if ( (p_list = gatt_alloc_hdl_buffer()) == NULL) { /* No free entry */ GATT_TRACE_ERROR ("GATTS_ReserveHandles: no free handle blocks"); - return(0); + return (0); } p_list->asgn_range.app_uuid128 = *p_app_uuid128; p_list->asgn_range.svc_uuid = *p_svc_uuid; p_list->asgn_range.svc_inst = svc_inst; p_list->asgn_range.s_handle = s_hdl; - p_list->asgn_range.e_handle = s_hdl+num_handles-1; + p_list->asgn_range.e_handle = s_hdl + num_handles - 1; p_list->asgn_range.is_primary = is_pri; gatt_add_an_item_to_list(p_list_info, p_list); - if (save_hdl) - { - if (gatt_cb.cb_info.p_nv_save_callback) + if (save_hdl) { + if (gatt_cb.cb_info.p_nv_save_callback) { (*gatt_cb.cb_info.p_nv_save_callback)(TRUE, &p_list->asgn_range); + } /* add a pending new service change item to the list */ - if ( (p_buf = gatt_add_pending_new_srv_start(&p_list->asgn_range)) == NULL) - { + if ( (p_buf = gatt_add_pending_new_srv_start(&p_list->asgn_range)) == NULL) { /* No free entry */ GATT_TRACE_ERROR ("gatt_add_pending_new_srv_start: no free blocks"); - if (p_list) - { + if (p_list) { gatt_remove_an_item_from_list(p_list_info, p_list); gatt_free_hdl_buffer(p_list); } - return(0); + return (0); } GATT_TRACE_DEBUG ("Add a new srv chg item"); } } - if (!gatts_init_service_db(&p_list->svc_db, p_svc_uuid, is_pri, s_hdl , num_handles)) - { + if (!gatts_init_service_db(&p_list->svc_db, p_svc_uuid, is_pri, s_hdl , num_handles)) { GATT_TRACE_ERROR ("GATTS_ReserveHandles: service DB initialization failed"); - if (p_list) - { + if (p_list) { gatt_remove_an_item_from_list(p_list_info, p_list); gatt_free_hdl_buffer(p_list); } - if (p_buf) + if (p_buf) { GKI_freebuf (GKI_remove_from_queue (&gatt_cb.pending_new_srv_start_q, p_buf)); - return(0); + } + return (0); } GATT_TRACE_DEBUG ("GATTS_CreateService(success): handles needed:%u s_hdl=%u e_hdl=%u %s[%x] is_primary=%d", - num_handles, p_list->asgn_range.s_handle , p_list->asgn_range.e_handle, - ((p_list->asgn_range.svc_uuid.len == 2) ? "uuid16": "uuid128" ), - p_list->asgn_range.svc_uuid.uu.uuid16, - p_list->asgn_range.is_primary); + num_handles, p_list->asgn_range.s_handle , p_list->asgn_range.e_handle, + ((p_list->asgn_range.svc_uuid.len == 2) ? "uuid16" : "uuid128" ), + p_list->asgn_range.svc_uuid.uu.uuid16, + p_list->asgn_range.is_primary); - return(s_hdl); + return (s_hdl); } /******************************************************************************* @@ -279,13 +262,11 @@ UINT16 GATTS_AddIncludeService (UINT16 service_handle, UINT16 include_svc_handle { tGATT_HDL_LIST_ELEM *p_decl, *p_incl_decl; - if ((p_decl = gatt_find_hdl_buffer_by_handle(service_handle)) == NULL) - { + if ((p_decl = gatt_find_hdl_buffer_by_handle(service_handle)) == NULL) { GATT_TRACE_DEBUG("Service not created"); return 0; } - if ((p_incl_decl = gatt_find_hdl_buffer_by_handle(include_svc_handle)) == NULL) - { + if ((p_incl_decl = gatt_find_hdl_buffer_by_handle(include_svc_handle)) == NULL) { GATT_TRACE_DEBUG("Included Service not created"); return 0; } @@ -313,19 +294,17 @@ UINT16 GATTS_AddIncludeService (UINT16 service_handle, UINT16 include_svc_handle ** *******************************************************************************/ UINT16 GATTS_AddCharacteristic (UINT16 service_handle, tBT_UUID *p_char_uuid, - tGATT_PERM perm,tGATT_CHAR_PROP property) + tGATT_PERM perm, tGATT_CHAR_PROP property) { tGATT_HDL_LIST_ELEM *p_decl; - if ((p_decl = gatt_find_hdl_buffer_by_handle(service_handle)) == NULL) - { + if ((p_decl = gatt_find_hdl_buffer_by_handle(service_handle)) == NULL) { GATT_TRACE_DEBUG("Service not created"); return 0; } /* data validity checking */ if ( ((property & GATT_CHAR_PROP_BIT_AUTH) && !(perm & GATT_WRITE_SIGNED_PERM)) || - ((perm & GATT_WRITE_SIGNED_PERM) && !(property & GATT_CHAR_PROP_BIT_AUTH)) ) - { + ((perm & GATT_WRITE_SIGNED_PERM) && !(property & GATT_CHAR_PROP_BIT_AUTH)) ) { GATT_TRACE_DEBUG("Invalid configuration property=0x%x perm=0x%x ", property, perm); return 0; } @@ -355,20 +334,18 @@ UINT16 GATTS_AddCharacteristic (UINT16 service_handle, tBT_UUID *p_char_uuid, ** *******************************************************************************/ UINT16 GATTS_AddCharDescriptor (UINT16 service_handle, - tGATT_PERM perm, - tBT_UUID * p_descr_uuid) + tGATT_PERM perm, + tBT_UUID *p_descr_uuid) { tGATT_HDL_LIST_ELEM *p_decl; - if ((p_decl = gatt_find_hdl_buffer_by_handle(service_handle)) == NULL) - { + if ((p_decl = gatt_find_hdl_buffer_by_handle(service_handle)) == NULL) { GATT_TRACE_DEBUG("Service not created"); return 0; } if (p_descr_uuid == NULL || - (p_descr_uuid->len != LEN_UUID_128 && p_descr_uuid->len != LEN_UUID_16 - && p_descr_uuid->len != LEN_UUID_32)) - { + (p_descr_uuid->len != LEN_UUID_128 && p_descr_uuid->len != LEN_UUID_16 + && p_descr_uuid->len != LEN_UUID_32)) { GATT_TRACE_DEBUG("Illegal parameter"); return 0; } @@ -394,8 +371,8 @@ UINT16 GATTS_AddCharDescriptor (UINT16 service_handle, BOOLEAN GATTS_DeleteService (tGATT_IF gatt_if, tBT_UUID *p_svc_uuid, UINT16 svc_inst) { - tGATT_HDL_LIST_INFO *p_list_info= &gatt_cb.hdl_list_info; - tGATT_HDL_LIST_ELEM *p_list=NULL; + tGATT_HDL_LIST_INFO *p_list_info = &gatt_cb.hdl_list_info; + tGATT_HDL_LIST_ELEM *p_list = NULL; UINT8 i_sreg; tGATTS_PENDING_NEW_SRV_START *p_buf; tGATT_REG *p_reg = gatt_get_regcb(gatt_if); @@ -403,49 +380,44 @@ BOOLEAN GATTS_DeleteService (tGATT_IF gatt_if, tBT_UUID *p_svc_uuid, UINT16 svc_ GATT_TRACE_DEBUG ("GATTS_DeleteService"); - if (p_reg == NULL) - { + if (p_reg == NULL) { GATT_TRACE_ERROR ("Applicaiton not foud"); - return(FALSE); + return (FALSE); } p_app_uuid128 = &p_reg->app_uuid128; - if ((p_list = gatt_find_hdl_buffer_by_app_id(p_app_uuid128, p_svc_uuid, svc_inst)) == NULL) - { + if ((p_list = gatt_find_hdl_buffer_by_app_id(p_app_uuid128, p_svc_uuid, svc_inst)) == NULL) { GATT_TRACE_ERROR ("No Service found"); - return(FALSE); + return (FALSE); } if ( (p_buf = gatt_sr_is_new_srv_chg(&p_list->asgn_range.app_uuid128, &p_list->asgn_range.svc_uuid, - p_list->asgn_range.svc_inst)) != NULL) - { + p_list->asgn_range.svc_inst)) != NULL) { GATT_TRACE_DEBUG ("Delete a new service changed item - the service has not yet started"); GKI_freebuf (GKI_remove_from_queue (&gatt_cb.pending_new_srv_start_q, p_buf)); - } - else - { + } else { gatt_proc_srv_chg(); } if ((i_sreg = gatt_sr_find_i_rcb_by_app_id (p_app_uuid128, - p_svc_uuid, - svc_inst)) != GATT_MAX_SR_PROFILES) - { + p_svc_uuid, + svc_inst)) != GATT_MAX_SR_PROFILES) { GATTS_StopService(gatt_cb.sr_reg[i_sreg].s_hdl); } GATT_TRACE_DEBUG ("released handles s_hdl=%u e_hdl=%u", - p_list->asgn_range.s_handle , p_list->asgn_range.e_handle ); + p_list->asgn_range.s_handle , p_list->asgn_range.e_handle ); if ( (p_list->asgn_range.s_handle >= gatt_cb.hdl_cfg.app_start_hdl) - && gatt_cb.cb_info.p_nv_save_callback) + && gatt_cb.cb_info.p_nv_save_callback) { (*gatt_cb.cb_info.p_nv_save_callback)(FALSE, &p_list->asgn_range); + } gatt_remove_an_item_from_list(p_list_info, p_list); gatt_free_hdl_buffer(p_list); - return(TRUE); + return (TRUE); } /******************************************************************************* @@ -465,7 +437,7 @@ tGATT_STATUS GATTS_StartService (tGATT_IF gatt_if, UINT16 service_handle, tGATT_TRANSPORT sup_transport) { tGATT_SR_REG *p_sreg; - tGATT_HDL_LIST_ELEM *p_list=NULL; + tGATT_HDL_LIST_ELEM *p_list = NULL; UINT8 i_sreg; tBT_UUID *p_uuid; tGATT_REG *p_reg = gatt_get_regcb(gatt_if); @@ -474,15 +446,13 @@ tGATT_STATUS GATTS_StartService (tGATT_IF gatt_if, UINT16 service_handle, GATT_TRACE_API ("GATTS_StartService"); - if (p_reg == NULL) - { + if (p_reg == NULL) { /* Not found */ GATT_TRACE_ERROR ("Applicaiton not found "); return GATT_NOT_FOUND; } - if ((p_list = gatt_find_hdl_buffer_by_handle(service_handle)) == NULL) - { + if ((p_list = gatt_find_hdl_buffer_by_handle(service_handle)) == NULL) { /* Not found */ GATT_TRACE_ERROR ("no service found"); return GATT_NOT_FOUND; @@ -490,15 +460,13 @@ tGATT_STATUS GATTS_StartService (tGATT_IF gatt_if, UINT16 service_handle, if (gatt_sr_find_i_rcb_by_app_id (&p_list->asgn_range.app_uuid128, &p_list->asgn_range.svc_uuid, - p_list->asgn_range.svc_inst) != GATT_MAX_SR_PROFILES) - { + p_list->asgn_range.svc_inst) != GATT_MAX_SR_PROFILES) { GATT_TRACE_ERROR ("Duplicate Service start - Service already started"); return GATT_SERVICE_STARTED; } /*this is a new application servoce start */ - if ((i_sreg = gatt_sr_alloc_rcb(p_list)) == GATT_MAX_SR_PROFILES) - { + if ((i_sreg = gatt_sr_alloc_rcb(p_list)) == GATT_MAX_SR_PROFILES) { GATT_TRACE_ERROR ("GATTS_StartService: no free server registration block"); return GATT_NO_RESOURCES; } @@ -506,19 +474,17 @@ tGATT_STATUS GATTS_StartService (tGATT_IF gatt_if, UINT16 service_handle, p_sreg = &gatt_cb.sr_reg[i_sreg]; p_sreg->gatt_if = gatt_if; - switch (sup_transport) - { - case GATT_TRANSPORT_BR_EDR: - case GATT_TRANSPORT_LE_BR_EDR: - if (p_sreg->type == GATT_UUID_PRI_SERVICE) - { - p_uuid = gatts_get_service_uuid (p_sreg->p_db); + switch (sup_transport) { + case GATT_TRANSPORT_BR_EDR: + case GATT_TRANSPORT_LE_BR_EDR: + if (p_sreg->type == GATT_UUID_PRI_SERVICE) { + p_uuid = gatts_get_service_uuid (p_sreg->p_db); - p_sreg->sdp_handle = gatt_add_sdp_record(p_uuid, p_sreg->s_hdl, p_sreg->e_hdl); - } - break; - default: - break; + p_sreg->sdp_handle = gatt_add_sdp_record(p_uuid, p_sreg->s_hdl, p_sreg->e_hdl); + } + break; + default: + break; } gatts_update_srv_list_elem(i_sreg, p_sreg->s_hdl, @@ -526,18 +492,17 @@ tGATT_STATUS GATTS_StartService (tGATT_IF gatt_if, UINT16 service_handle, gatt_add_a_srv_to_list(&gatt_cb.srv_list_info, &gatt_cb.srv_list[i_sreg]); - GATT_TRACE_DEBUG ("allocated i_sreg=%d ",i_sreg); + GATT_TRACE_DEBUG ("allocated i_sreg=%d ", i_sreg); GATT_TRACE_DEBUG ("s_hdl=%d e_hdl=%d type=0x%x svc_inst=%d sdp_hdl=0x%x", - p_sreg->s_hdl,p_sreg->e_hdl, - p_sreg->type, p_sreg->service_instance, - p_sreg->sdp_handle); + p_sreg->s_hdl, p_sreg->e_hdl, + p_sreg->type, p_sreg->service_instance, + p_sreg->sdp_handle); if ( (p_buf = gatt_sr_is_new_srv_chg(&p_list->asgn_range.app_uuid128, &p_list->asgn_range.svc_uuid, - p_list->asgn_range.svc_inst)) != NULL) - { + p_list->asgn_range.svc_inst)) != NULL) { gatt_proc_srv_chg(); /* remove the new service element after the srv changed processing is completed*/ @@ -564,18 +529,14 @@ void GATTS_StopService (UINT16 service_handle) GATT_TRACE_API("GATTS_StopService %u", service_handle); /* Index 0 is reserved for GATT, and is never stopped */ - if ( (ii > 0) && (ii < GATT_MAX_SR_PROFILES) && (gatt_cb.sr_reg[ii].in_use) ) - { - if (gatt_cb.sr_reg[ii].sdp_handle) - { + if ( (ii > 0) && (ii < GATT_MAX_SR_PROFILES) && (gatt_cb.sr_reg[ii].in_use) ) { + if (gatt_cb.sr_reg[ii].sdp_handle) { SDP_DeleteRecord(gatt_cb.sr_reg[ii].sdp_handle); } gatt_remove_a_srv_from_list(&gatt_cb.srv_list_info, &gatt_cb.srv_list[ii]); gatt_cb.srv_list[ii].in_use = FALSE; memset (&gatt_cb.sr_reg[ii], 0, sizeof(tGATT_SR_REG)); - } - else - { + } else { GATT_TRACE_ERROR("GATTS_StopService service_handle: %u is not in use", service_handle); } } @@ -607,14 +568,14 @@ tGATT_STATUS GATTS_HandleValueIndication (UINT16 conn_id, UINT16 attr_handle, U GATT_TRACE_API ("GATTS_HandleValueIndication"); - if ( (p_reg == NULL) || (p_tcb == NULL)) - { + if ( (p_reg == NULL) || (p_tcb == NULL)) { GATT_TRACE_ERROR ("GATTS_HandleValueIndication Unknown conn_id: %u ", conn_id); - return(tGATT_STATUS) GATT_INVALID_CONN_ID; + return (tGATT_STATUS) GATT_INVALID_CONN_ID; } - if (! GATT_HANDLE_IS_VALID (attr_handle)) + if (! GATT_HANDLE_IS_VALID (attr_handle)) { return GATT_ILLEGAL_PARAMETER; + } indication.conn_id = conn_id; indication.handle = attr_handle; @@ -622,27 +583,19 @@ tGATT_STATUS GATTS_HandleValueIndication (UINT16 conn_id, UINT16 attr_handle, U memcpy (indication.value, p_val, val_len); indication.auth_req = GATT_AUTH_REQ_NONE; - if (GATT_HANDLE_IS_VALID(p_tcb->indicate_handle)) - { + if (GATT_HANDLE_IS_VALID(p_tcb->indicate_handle)) { GATT_TRACE_DEBUG ("Add a pending indication"); - if ((p_buf = gatt_add_pending_ind(p_tcb, &indication)) !=NULL) - { + if ((p_buf = gatt_add_pending_ind(p_tcb, &indication)) != NULL) { cmd_status = GATT_SUCCESS; - } - else - { + } else { cmd_status = GATT_NO_RESOURCES; } - } - else - { + } else { - if ( (p_msg = attp_build_sr_msg (p_tcb, GATT_HANDLE_VALUE_IND, (tGATT_SR_MSG *)&indication)) != NULL) - { + if ( (p_msg = attp_build_sr_msg (p_tcb, GATT_HANDLE_VALUE_IND, (tGATT_SR_MSG *)&indication)) != NULL) { cmd_status = attp_send_sr_msg (p_tcb, p_msg); - if (cmd_status == GATT_SUCCESS || cmd_status == GATT_CONGESTED) - { + if (cmd_status == GATT_SUCCESS || cmd_status == GATT_CONGESTED) { p_tcb->indicate_handle = indication.handle; gatt_start_conf_timer(p_tcb); } @@ -666,7 +619,7 @@ tGATT_STATUS GATTS_HandleValueIndication (UINT16 conn_id, UINT16 attr_handle, U ** *******************************************************************************/ tGATT_STATUS GATTS_HandleValueNotification (UINT16 conn_id, UINT16 attr_handle, - UINT16 val_len, UINT8 *p_val) + UINT16 val_len, UINT8 *p_val) { tGATT_STATUS cmd_sent = GATT_ILLEGAL_PARAMETER; BT_HDR *p_buf; @@ -678,26 +631,23 @@ tGATT_STATUS GATTS_HandleValueNotification (UINT16 conn_id, UINT16 attr_handle, GATT_TRACE_API ("GATTS_HandleValueNotification"); - if ( (p_reg == NULL) || (p_tcb == NULL)) - { + if ( (p_reg == NULL) || (p_tcb == NULL)) { GATT_TRACE_ERROR ("GATTS_HandleValueNotification Unknown conn_id: %u \n", conn_id); - return(tGATT_STATUS) GATT_INVALID_CONN_ID; + return (tGATT_STATUS) GATT_INVALID_CONN_ID; } - if (GATT_HANDLE_IS_VALID (attr_handle)) - { + if (GATT_HANDLE_IS_VALID (attr_handle)) { notif.handle = attr_handle; notif.len = val_len; memcpy (notif.value, p_val, val_len); notif.auth_req = GATT_AUTH_REQ_NONE; if ((p_buf = attp_build_sr_msg (p_tcb, GATT_HANDLE_VALUE_NOTIF, (tGATT_SR_MSG *)¬if)) - != NULL) - { + != NULL) { cmd_sent = attp_send_sr_msg (p_tcb, p_buf); - } - else + } else { cmd_sent = GATT_NO_RESOURCES; + } } return cmd_sent; } @@ -726,20 +676,18 @@ tGATT_STATUS GATTS_SendRsp (UINT16 conn_id, UINT32 trans_id, tGATT_TCB *p_tcb = gatt_get_tcb_by_idx(tcb_idx); GATT_TRACE_API ("GATTS_SendRsp: conn_id: %u trans_id: %u Status: 0x%04x", - conn_id, trans_id, status); + conn_id, trans_id, status); - if ( (p_reg == NULL) || (p_tcb == NULL)) - { + if ( (p_reg == NULL) || (p_tcb == NULL)) { GATT_TRACE_ERROR ("GATTS_SendRsp Unknown conn_id: %u ", conn_id); - return(tGATT_STATUS) GATT_INVALID_CONN_ID; + return (tGATT_STATUS) GATT_INVALID_CONN_ID; } - if (p_tcb->sr_cmd.trans_id != trans_id) - { + if (p_tcb->sr_cmd.trans_id != trans_id) { GATT_TRACE_ERROR ("GATTS_SendRsp conn_id: %u waiting for op_code = %02x", - conn_id, p_tcb->sr_cmd.op_code); + conn_id, p_tcb->sr_cmd.op_code); - return(GATT_WRONG_STATE); + return (GATT_WRONG_STATE); } /* Process App response */ cmd_sent = gatt_sr_process_app_rsp (p_tcb, gatt_if, trans_id, p_tcb->sr_cmd.op_code, status, p_msg); @@ -773,7 +721,7 @@ tGATT_STATUS GATTS_SendRsp (UINT16 conn_id, UINT32 trans_id, tGATT_STATUS GATTC_ConfigureMTU (UINT16 conn_id, UINT16 mtu) { UINT8 ret = GATT_NO_RESOURCES; - tGATT_IF gatt_if=GATT_GET_GATT_IF(conn_id); + tGATT_IF gatt_if = GATT_GET_GATT_IF(conn_id); UINT8 tcb_idx = GATT_GET_TCB_IDX(conn_id); tGATT_TCB *p_tcb = gatt_get_tcb_by_idx(tcb_idx); tGATT_REG *p_reg = gatt_get_regcb(gatt_if); @@ -783,24 +731,20 @@ tGATT_STATUS GATTC_ConfigureMTU (UINT16 conn_id, UINT16 mtu) GATT_TRACE_API ("GATTC_ConfigureMTU conn_id=%d mtu=%d", conn_id, mtu ); /* Validate that the link is BLE, not BR/EDR */ - if (p_tcb->transport != BT_TRANSPORT_LE) - { + if (p_tcb->transport != BT_TRANSPORT_LE) { return GATT_ERROR; } - if ( (p_tcb == NULL) || (p_reg==NULL) || (mtu < GATT_DEF_BLE_MTU_SIZE) || (mtu > GATT_MAX_MTU_SIZE)) - { + if ( (p_tcb == NULL) || (p_reg == NULL) || (mtu < GATT_DEF_BLE_MTU_SIZE) || (mtu > GATT_MAX_MTU_SIZE)) { return GATT_ILLEGAL_PARAMETER; } - if (gatt_is_clcb_allocated(conn_id)) - { + if (gatt_is_clcb_allocated(conn_id)) { GATT_TRACE_ERROR("GATTC_ConfigureMTU GATT_BUSY conn_id = %d", conn_id); return GATT_BUSY; } - if ((p_clcb = gatt_clcb_alloc(conn_id)) != NULL) - { + if ((p_clcb = gatt_clcb_alloc(conn_id)) != NULL) { p_clcb->p_tcb->payload_size = mtu; p_clcb->operation = GATTC_OPTYPE_CONFIG; @@ -828,37 +772,33 @@ tGATT_STATUS GATTC_Discover (UINT16 conn_id, tGATT_DISC_TYPE disc_type, { tGATT_STATUS status = GATT_SUCCESS; tGATT_CLCB *p_clcb; - tGATT_IF gatt_if=GATT_GET_GATT_IF(conn_id); + tGATT_IF gatt_if = GATT_GET_GATT_IF(conn_id); UINT8 tcb_idx = GATT_GET_TCB_IDX(conn_id); tGATT_TCB *p_tcb = gatt_get_tcb_by_idx(tcb_idx); tGATT_REG *p_reg = gatt_get_regcb(gatt_if); - GATT_TRACE_API ("GATTC_Discover conn_id=%d disc_type=%d",conn_id, disc_type); + GATT_TRACE_API ("GATTC_Discover conn_id=%d disc_type=%d", conn_id, disc_type); - if ( (p_tcb == NULL) || (p_reg==NULL) ||(p_param == NULL) || - (disc_type >= GATT_DISC_MAX)) - { + if ( (p_tcb == NULL) || (p_reg == NULL) || (p_param == NULL) || + (disc_type >= GATT_DISC_MAX)) { GATT_TRACE_ERROR("GATTC_Discover Illegal param: disc_type %d conn_id = %d", disc_type, conn_id); return GATT_ILLEGAL_PARAMETER; } - if (gatt_is_clcb_allocated(conn_id)) - { + if (gatt_is_clcb_allocated(conn_id)) { GATT_TRACE_ERROR("GATTC_Discover GATT_BUSY conn_id = %d", conn_id); return GATT_BUSY; } - if ((p_clcb = gatt_clcb_alloc(conn_id)) != NULL ) - { + if ((p_clcb = gatt_clcb_alloc(conn_id)) != NULL ) { if (!GATT_HANDLE_IS_VALID(p_param->s_handle) || - !GATT_HANDLE_IS_VALID(p_param->e_handle) || - /* search by type does not have a valid UUID param */ - (disc_type == GATT_DISC_SRVC_BY_UUID && - p_param->service.len == 0)) - { + !GATT_HANDLE_IS_VALID(p_param->e_handle) || + /* search by type does not have a valid UUID param */ + (disc_type == GATT_DISC_SRVC_BY_UUID && + p_param->service.len == 0)) { gatt_clcb_dealloc(p_clcb); return GATT_ILLEGAL_PARAMETER; } @@ -870,9 +810,7 @@ tGATT_STATUS GATTC_Discover (UINT16 conn_id, tGATT_DISC_TYPE disc_type, p_clcb->uuid = p_param->service; gatt_act_discovery(p_clcb); - } - else - { + } else { status = GATT_NO_RESOURCES; } return status; @@ -897,7 +835,7 @@ tGATT_STATUS GATTC_Read (UINT16 conn_id, tGATT_READ_TYPE type, tGATT_READ_PARAM tGATT_STATUS status = GATT_SUCCESS; tGATT_CLCB *p_clcb; tGATT_READ_MULTI *p_read_multi; - tGATT_IF gatt_if=GATT_GET_GATT_IF(conn_id); + tGATT_IF gatt_if = GATT_GET_GATT_IF(conn_id); UINT8 tcb_idx = GATT_GET_TCB_IDX(conn_id); tGATT_TCB *p_tcb = gatt_get_tcb_by_idx(tcb_idx); tGATT_REG *p_reg = gatt_get_regcb(gatt_if); @@ -905,62 +843,54 @@ tGATT_STATUS GATTC_Read (UINT16 conn_id, tGATT_READ_TYPE type, tGATT_READ_PARAM GATT_TRACE_API ("GATTC_Read conn_id=%d type=%d", conn_id, type); - if ( (p_tcb == NULL) || (p_reg==NULL) || (p_read == NULL) || ((type >= GATT_READ_MAX) || (type == 0))) - { + if ( (p_tcb == NULL) || (p_reg == NULL) || (p_read == NULL) || ((type >= GATT_READ_MAX) || (type == 0))) { GATT_TRACE_ERROR("GATT_Read Illegal param: conn_id %d, type 0%d,", conn_id, type); return GATT_ILLEGAL_PARAMETER; } - if (gatt_is_clcb_allocated(conn_id)) - { + if (gatt_is_clcb_allocated(conn_id)) { GATT_TRACE_ERROR("GATTC_Read GATT_BUSY conn_id = %d", conn_id); return GATT_BUSY; } - if ( (p_clcb = gatt_clcb_alloc(conn_id)) != NULL ) - { + if ( (p_clcb = gatt_clcb_alloc(conn_id)) != NULL ) { p_clcb->operation = GATTC_OPTYPE_READ; p_clcb->op_subtype = type; p_clcb->auth_req = p_read->by_handle.auth_req; p_clcb->counter = 0; - switch (type) - { - case GATT_READ_BY_TYPE: - case GATT_READ_CHAR_VALUE: - p_clcb->s_handle = p_read->service.s_handle; - p_clcb->e_handle = p_read->service.e_handle; - memcpy(&p_clcb->uuid, &p_read->service.uuid, sizeof(tBT_UUID)); - break; - case GATT_READ_MULTIPLE: - p_clcb->s_handle = 0; - /* copy multiple handles in CB */ - p_read_multi = (tGATT_READ_MULTI *)GKI_getbuf(sizeof(tGATT_READ_MULTI)); - p_clcb->p_attr_buf = (UINT8*)p_read_multi; - memcpy (p_read_multi, &p_read->read_multiple, sizeof(tGATT_READ_MULTI)); - case GATT_READ_BY_HANDLE: - case GATT_READ_PARTIAL: - memset(&p_clcb->uuid, 0, sizeof(tBT_UUID)); - p_clcb->s_handle = p_read->by_handle.handle; + switch (type) { + case GATT_READ_BY_TYPE: + case GATT_READ_CHAR_VALUE: + p_clcb->s_handle = p_read->service.s_handle; + p_clcb->e_handle = p_read->service.e_handle; + memcpy(&p_clcb->uuid, &p_read->service.uuid, sizeof(tBT_UUID)); + break; + case GATT_READ_MULTIPLE: + p_clcb->s_handle = 0; + /* copy multiple handles in CB */ + p_read_multi = (tGATT_READ_MULTI *)GKI_getbuf(sizeof(tGATT_READ_MULTI)); + p_clcb->p_attr_buf = (UINT8 *)p_read_multi; + memcpy (p_read_multi, &p_read->read_multiple, sizeof(tGATT_READ_MULTI)); + case GATT_READ_BY_HANDLE: + case GATT_READ_PARTIAL: + memset(&p_clcb->uuid, 0, sizeof(tBT_UUID)); + p_clcb->s_handle = p_read->by_handle.handle; - if (type == GATT_READ_PARTIAL) - { - p_clcb->counter = p_read->partial.offset; - } + if (type == GATT_READ_PARTIAL) { + p_clcb->counter = p_read->partial.offset; + } - break; - default: - break; + break; + default: + break; } /* start security check */ - if (gatt_security_check_start(p_clcb) == FALSE) - { + if (gatt_security_check_start(p_clcb) == FALSE) { status = GATT_NO_RESOURCES; gatt_clcb_dealloc(p_clcb); } - } - else - { + } else { status = GATT_NO_RESOURCES; } return status; @@ -985,56 +915,47 @@ tGATT_STATUS GATTC_Write (UINT16 conn_id, tGATT_WRITE_TYPE type, tGATT_VALUE *p_ tGATT_STATUS status = GATT_SUCCESS; tGATT_CLCB *p_clcb; tGATT_VALUE *p; - tGATT_IF gatt_if=GATT_GET_GATT_IF(conn_id); + tGATT_IF gatt_if = GATT_GET_GATT_IF(conn_id); UINT8 tcb_idx = GATT_GET_TCB_IDX(conn_id); tGATT_TCB *p_tcb = gatt_get_tcb_by_idx(tcb_idx); tGATT_REG *p_reg = gatt_get_regcb(gatt_if); - if ( (p_tcb == NULL) || (p_reg==NULL) || (p_write == NULL) || - ((type != GATT_WRITE) && (type != GATT_WRITE_PREPARE) && (type != GATT_WRITE_NO_RSP)) ) - { + if ( (p_tcb == NULL) || (p_reg == NULL) || (p_write == NULL) || + ((type != GATT_WRITE) && (type != GATT_WRITE_PREPARE) && (type != GATT_WRITE_NO_RSP)) ) { GATT_TRACE_ERROR("GATT_Write Illegal param: conn_id %d, type 0%d,", conn_id, type); return GATT_ILLEGAL_PARAMETER; } - if (gatt_is_clcb_allocated(conn_id)) - { + if (gatt_is_clcb_allocated(conn_id)) { GATT_TRACE_ERROR("GATTC_Write GATT_BUSY conn_id = %d", conn_id); return GATT_BUSY; } - if ((p_clcb = gatt_clcb_alloc(conn_id)) != NULL ) - { + if ((p_clcb = gatt_clcb_alloc(conn_id)) != NULL ) { p_clcb->operation = GATTC_OPTYPE_WRITE; p_clcb->op_subtype = type; p_clcb->auth_req = p_write->auth_req; - if (( p_clcb->p_attr_buf = (UINT8 *)GKI_getbuf((UINT16)sizeof(tGATT_VALUE))) != NULL) - { + if (( p_clcb->p_attr_buf = (UINT8 *)GKI_getbuf((UINT16)sizeof(tGATT_VALUE))) != NULL) { memcpy(p_clcb->p_attr_buf, (void *)p_write, sizeof(tGATT_VALUE)); p = (tGATT_VALUE *)p_clcb->p_attr_buf; - if (type == GATT_WRITE_PREPARE) - { + if (type == GATT_WRITE_PREPARE) { p_clcb->start_offset = p_write->offset; p->offset = 0; } - if (gatt_security_check_start(p_clcb) == FALSE) - { + if (gatt_security_check_start(p_clcb) == FALSE) { status = GATT_NO_RESOURCES; } - } - else - { + } else { status = GATT_NO_RESOURCES; } - if (status == GATT_NO_RESOURCES) + if (status == GATT_NO_RESOURCES) { gatt_clcb_dealloc(p_clcb); - } - else - { + } + } else { status = GATT_NO_RESOURCES; } return status; @@ -1059,33 +980,28 @@ tGATT_STATUS GATTC_ExecuteWrite (UINT16 conn_id, BOOLEAN is_execute) tGATT_STATUS status = GATT_SUCCESS; tGATT_CLCB *p_clcb; tGATT_EXEC_FLAG flag; - tGATT_IF gatt_if=GATT_GET_GATT_IF(conn_id); + tGATT_IF gatt_if = GATT_GET_GATT_IF(conn_id); UINT8 tcb_idx = GATT_GET_TCB_IDX(conn_id); tGATT_TCB *p_tcb = gatt_get_tcb_by_idx(tcb_idx); tGATT_REG *p_reg = gatt_get_regcb(gatt_if); GATT_TRACE_API ("GATTC_ExecuteWrite conn_id=%d is_execute=%d", conn_id, is_execute); - if ( (p_tcb == NULL) || (p_reg==NULL) ) - { + if ( (p_tcb == NULL) || (p_reg == NULL) ) { GATT_TRACE_ERROR("GATTC_ExecuteWrite Illegal param: conn_id %d", conn_id); return GATT_ILLEGAL_PARAMETER; } - if (gatt_is_clcb_allocated(conn_id)) - { + if (gatt_is_clcb_allocated(conn_id)) { GATT_TRACE_ERROR("GATTC_Write GATT_BUSY conn_id = %d", conn_id); return GATT_BUSY; } - if ((p_clcb = gatt_clcb_alloc(conn_id)) != NULL) - { + if ((p_clcb = gatt_clcb_alloc(conn_id)) != NULL) { p_clcb->operation = GATTC_OPTYPE_EXE_WRITE; flag = is_execute ? GATT_PREP_WRITE_EXEC : GATT_PREP_WRITE_CANCEL; gatt_send_queue_write_cancel (p_clcb->p_tcb, p_clcb, flag); - } - else - { + } else { GATT_TRACE_ERROR("Unable to allocate client CB for conn_id %d ", conn_id); status = GATT_NO_RESOURCES; } @@ -1108,14 +1024,12 @@ tGATT_STATUS GATTC_ExecuteWrite (UINT16 conn_id, BOOLEAN is_execute) tGATT_STATUS GATTC_SendHandleValueConfirm (UINT16 conn_id, UINT16 handle) { tGATT_STATUS ret = GATT_ILLEGAL_PARAMETER; - tGATT_TCB *p_tcb=gatt_get_tcb_by_idx(GATT_GET_TCB_IDX(conn_id)); + tGATT_TCB *p_tcb = gatt_get_tcb_by_idx(GATT_GET_TCB_IDX(conn_id)); GATT_TRACE_API ("GATTC_SendHandleValueConfirm conn_id=%d handle=0x%x", conn_id, handle); - if (p_tcb) - { - if (p_tcb->ind_count > 0 ) - { + if (p_tcb) { + if (p_tcb->ind_count > 0 ) { btu_stop_timer (&p_tcb->ind_ack_timer_ent); GATT_TRACE_DEBUG ("notif_count=%d ", p_tcb->ind_count); @@ -1124,15 +1038,11 @@ tGATT_STATUS GATTC_SendHandleValueConfirm (UINT16 conn_id, UINT16 handle) p_tcb->ind_count = 0; - } - else - { + } else { GATT_TRACE_DEBUG ("GATTC_SendHandleValueConfirm - conn_id: %u - ignored not waiting for indicaiton ack", conn_id); ret = GATT_SUCCESS; } - } - else - { + } else { GATT_TRACE_ERROR ("GATTC_SendHandleValueConfirm - Unknown conn_id: %u", conn_id); } return ret; @@ -1162,18 +1072,14 @@ void GATT_SetIdleTimeout (BD_ADDR bd_addr, UINT16 idle_tout, tBT_TRANSPORT trans tGATT_TCB *p_tcb; BOOLEAN status = FALSE; - if ((p_tcb = gatt_find_tcb_by_addr (bd_addr, transport)) != NULL) - { - if (p_tcb->att_lcid == L2CAP_ATT_CID) - { + if ((p_tcb = gatt_find_tcb_by_addr (bd_addr, transport)) != NULL) { + if (p_tcb->att_lcid == L2CAP_ATT_CID) { status = L2CA_SetFixedChannelTout (bd_addr, L2CAP_ATT_CID, idle_tout); if (idle_tout == GATT_LINK_IDLE_TIMEOUT_WHEN_NO_APP) L2CA_SetIdleTimeoutByBdAddr(p_tcb->peer_bda, GATT_LINK_IDLE_TIMEOUT_WHEN_NO_APP, BT_TRANSPORT_LE); - } - else - { + } else { status = L2CA_SetIdleTimeout (p_tcb->att_lcid, idle_tout, FALSE); } } @@ -1199,30 +1105,26 @@ void GATT_SetIdleTimeout (BD_ADDR bd_addr, UINT16 idle_tout, tBT_TRANSPORT trans tGATT_IF GATT_Register (tBT_UUID *p_app_uuid128, tGATT_CBACK *p_cb_info) { tGATT_REG *p_reg; - UINT8 i_gatt_if=0; - tGATT_IF gatt_if=0; + UINT8 i_gatt_if = 0; + tGATT_IF gatt_if = 0; GATT_TRACE_API ("GATT_Register"); gatt_dbg_display_uuid(*p_app_uuid128); - for (i_gatt_if = 0, p_reg = gatt_cb.cl_rcb; i_gatt_if < GATT_MAX_APPS; i_gatt_if++, p_reg++) - { - if (p_reg->in_use && !memcmp(p_app_uuid128->uu.uuid128, p_reg->app_uuid128.uu.uuid128, LEN_UUID_128)) - { + for (i_gatt_if = 0, p_reg = gatt_cb.cl_rcb; i_gatt_if < GATT_MAX_APPS; i_gatt_if++, p_reg++) { + if (p_reg->in_use && !memcmp(p_app_uuid128->uu.uuid128, p_reg->app_uuid128.uu.uuid128, LEN_UUID_128)) { GATT_TRACE_ERROR("application already registered."); return 0; } } - for (i_gatt_if = 0, p_reg = gatt_cb.cl_rcb; i_gatt_if < GATT_MAX_APPS; i_gatt_if++, p_reg++) - { - if (!p_reg->in_use) - { + for (i_gatt_if = 0, p_reg = gatt_cb.cl_rcb; i_gatt_if < GATT_MAX_APPS; i_gatt_if++, p_reg++) { + if (!p_reg->in_use) { memset(p_reg, 0 , sizeof(tGATT_REG)); i_gatt_if++; /* one based number */ p_reg->app_uuid128 = *p_app_uuid128; gatt_if = - p_reg->gatt_if = (tGATT_IF)i_gatt_if; + p_reg->gatt_if = (tGATT_IF)i_gatt_if; p_reg->app_cb = *p_cb_info; p_reg->in_use = TRUE; @@ -1255,8 +1157,7 @@ void GATT_Deregister (tGATT_IF gatt_if) GATT_TRACE_API ("GATT_Deregister gatt_if=%d", gatt_if); /* Index 0 is GAP and is never deregistered */ - if ( (gatt_if == 0) || (p_reg == NULL) ) - { + if ( (gatt_if == 0) || (p_reg == NULL) ) { GATT_TRACE_ERROR ("GATT_Deregister with invalid gatt_if: %u", gatt_if); return; } @@ -1266,10 +1167,8 @@ void GATT_Deregister (tGATT_IF gatt_if) deregisteration need to bed performed in an orderly fashion no check for now */ - for (ii = 0, p_sreg = gatt_cb.sr_reg; ii < GATT_MAX_SR_PROFILES; ii++, p_sreg++) - { - if (p_sreg->in_use && (p_sreg->gatt_if == gatt_if)) - { + for (ii = 0, p_sreg = gatt_cb.sr_reg; ii < GATT_MAX_SR_PROFILES; ii++, p_sreg++) { + if (p_sreg->in_use && (p_sreg->gatt_if == gatt_if)) { GATTS_StopService(p_sreg->s_hdl); } } @@ -1279,26 +1178,20 @@ void GATT_Deregister (tGATT_IF gatt_if) /* When an application deregisters, check remove the link associated with the app */ - for (i=0, p_tcb = gatt_cb.tcb; i < GATT_MAX_PHY_CHANNEL; i++, p_tcb++) - { - if (p_tcb->in_use) - { - if (gatt_get_ch_state(p_tcb) != GATT_CH_CLOSE) - { + for (i = 0, p_tcb = gatt_cb.tcb; i < GATT_MAX_PHY_CHANNEL; i++, p_tcb++) { + if (p_tcb->in_use) { + if (gatt_get_ch_state(p_tcb) != GATT_CH_CLOSE) { gatt_update_app_use_link_flag(gatt_if, p_tcb, FALSE, FALSE); - if (!gatt_num_apps_hold_link(p_tcb)) - { + if (!gatt_num_apps_hold_link(p_tcb)) { /* this will disconnect the link or cancel the pending connect request at lower layer*/ gatt_disconnect(p_tcb); } } - for (j = 0, p_clcb= &gatt_cb.clcb[j]; j < GATT_CL_MAX_LCB; j++, p_clcb++) - { + for (j = 0, p_clcb = &gatt_cb.clcb[j]; j < GATT_CL_MAX_LCB; j++, p_clcb++) { if (p_clcb->in_use && - (p_clcb->p_reg->gatt_if == gatt_if) && - (p_clcb->p_tcb->tcb_idx == p_tcb->tcb_idx)) - { + (p_clcb->p_reg->gatt_if == gatt_if) && + (p_clcb->p_tcb->tcb_idx == p_tcb->tcb_idx)) { btu_stop_timer(&p_clcb->rsp_timer_ent); gatt_clcb_dealloc (p_clcb); break; @@ -1340,14 +1233,11 @@ void GATT_StartIf (tGATT_IF gatt_if) tGATT_TRANSPORT transport ; GATT_TRACE_API ("GATT_StartIf gatt_if=%d", gatt_if); - if ((p_reg = gatt_get_regcb(gatt_if)) != NULL) - { + if ((p_reg = gatt_get_regcb(gatt_if)) != NULL) { start_idx = 0; - while (gatt_find_the_connected_bda(start_idx, bda, &found_idx, &transport)) - { + while (gatt_find_the_connected_bda(start_idx, bda, &found_idx, &transport)) { p_tcb = gatt_find_tcb_by_addr(bda, transport); - if (p_reg->app_cb.p_conn_cb && p_tcb) - { + if (p_reg->app_cb.p_conn_cb && p_tcb) { conn_id = GATT_CREATE_CONN_ID(p_tcb->tcb_idx, gatt_if); (*p_reg->app_cb.p_conn_cb)(gatt_if, bda, conn_id, TRUE, 0, transport); } @@ -1379,20 +1269,17 @@ BOOLEAN GATT_Connect (tGATT_IF gatt_if, BD_ADDR bd_addr, BOOLEAN is_direct, tBT_ GATT_TRACE_API ("GATT_Connect gatt_if=%d", gatt_if); /* Make sure app is registered */ - if ((p_reg = gatt_get_regcb(gatt_if)) == NULL) - { + if ((p_reg = gatt_get_regcb(gatt_if)) == NULL) { GATT_TRACE_ERROR("GATT_Connect - gatt_if =%d is not registered", gatt_if); - return(FALSE); + return (FALSE); } - if (is_direct) + if (is_direct) { status = gatt_act_connect (p_reg, bd_addr, transport); - else - { - if (transport == BT_TRANSPORT_LE) - status = gatt_update_auto_connect_dev(gatt_if,TRUE, bd_addr, TRUE); - else - { + } else { + if (transport == BT_TRANSPORT_LE) { + status = gatt_update_auto_connect_dev(gatt_if, TRUE, bd_addr, TRUE); + } else { GATT_TRACE_ERROR("Unsupported transport for background connection"); } } @@ -1415,7 +1302,8 @@ BOOLEAN GATT_Connect (tGATT_IF gatt_if, BD_ADDR bd_addr, BOOLEAN is_direct, tBT_ ** Returns TRUE if connection started; FALSE if connection start failure. ** *******************************************************************************/ -BOOLEAN GATT_CancelConnect (tGATT_IF gatt_if, BD_ADDR bd_addr, BOOLEAN is_direct){ +BOOLEAN GATT_CancelConnect (tGATT_IF gatt_if, BD_ADDR bd_addr, BOOLEAN is_direct) +{ tGATT_REG *p_reg; tGATT_TCB *p_tcb; BOOLEAN status = TRUE; @@ -1424,56 +1312,40 @@ BOOLEAN GATT_CancelConnect (tGATT_IF gatt_if, BD_ADDR bd_addr, BOOLEAN is_direct GATT_TRACE_API ("GATT_CancelConnect gatt_if=%d", gatt_if); - if ((gatt_if != 0) && ((p_reg = gatt_get_regcb(gatt_if)) == NULL)) - { + if ((gatt_if != 0) && ((p_reg = gatt_get_regcb(gatt_if)) == NULL)) { GATT_TRACE_ERROR("GATT_CancelConnect - gatt_if =%d is not registered", gatt_if); - return(FALSE); + return (FALSE); } - if (is_direct) - { - if (!gatt_if) - { + if (is_direct) { + if (!gatt_if) { GATT_TRACE_DEBUG("GATT_CancelConnect - unconditional"); start_idx = 0; /* only LE connection can be cancelled */ p_tcb = gatt_find_tcb_by_addr(bd_addr, BT_TRANSPORT_LE); - if (p_tcb && gatt_num_apps_hold_link(p_tcb)) - { - while (status && gatt_find_app_hold_link(p_tcb, start_idx, &found_idx, &temp_gatt_if)) - { + if (p_tcb && gatt_num_apps_hold_link(p_tcb)) { + while (status && gatt_find_app_hold_link(p_tcb, start_idx, &found_idx, &temp_gatt_if)) { status = gatt_cancel_open(temp_gatt_if, bd_addr); start_idx = ++found_idx; } - } - else - { + } else { GATT_TRACE_ERROR("GATT_CancelConnect - no app found"); status = FALSE; } - } - else - { + } else { status = gatt_cancel_open(gatt_if, bd_addr); } - } - else - { - if (!gatt_if) - { - if (gatt_get_num_apps_for_bg_dev(bd_addr)) - { - while (gatt_find_app_for_bg_dev(bd_addr, &temp_gatt_if)) + } else { + if (!gatt_if) { + if (gatt_get_num_apps_for_bg_dev(bd_addr)) { + while (gatt_find_app_for_bg_dev(bd_addr, &temp_gatt_if)) { gatt_remove_bg_dev_for_app(temp_gatt_if, bd_addr); - } - else - { + } + } else { GATT_TRACE_ERROR("GATT_CancelConnect -no app associated with the bg device for unconditional removal"); status = FALSE; } - } - else - { + } else { status = gatt_remove_bg_dev_for_app(gatt_if, bd_addr); } } @@ -1496,19 +1368,17 @@ BOOLEAN GATT_CancelConnect (tGATT_IF gatt_if, BD_ADDR bd_addr, BOOLEAN is_direct tGATT_STATUS GATT_Disconnect (UINT16 conn_id) { tGATT_STATUS ret = GATT_ILLEGAL_PARAMETER; - tGATT_TCB *p_tcb=NULL; - tGATT_IF gatt_if=GATT_GET_GATT_IF(conn_id); + tGATT_TCB *p_tcb = NULL; + tGATT_IF gatt_if = GATT_GET_GATT_IF(conn_id); UINT8 tcb_idx = GATT_GET_TCB_IDX(conn_id); GATT_TRACE_API ("GATT_Disconnect conn_id=%d ", conn_id); p_tcb = gatt_get_tcb_by_idx(tcb_idx); - if (p_tcb) - { + if (p_tcb) { gatt_update_app_use_link_flag(gatt_if, p_tcb, FALSE, FALSE); - if (!gatt_num_apps_hold_link(p_tcb)) - { + if (!gatt_num_apps_hold_link(p_tcb)) { gatt_disconnect(p_tcb); } ret = GATT_SUCCESS; @@ -1538,13 +1408,12 @@ BOOLEAN GATT_GetConnectionInfor(UINT16 conn_id, tGATT_IF *p_gatt_if, BD_ADDR bd_ tGATT_IF gatt_if = GATT_GET_GATT_IF(conn_id); tGATT_REG *p_reg = gatt_get_regcb(gatt_if); UINT8 tcb_idx = GATT_GET_TCB_IDX(conn_id); - tGATT_TCB *p_tcb= gatt_get_tcb_by_idx(tcb_idx); - BOOLEAN status=FALSE; + tGATT_TCB *p_tcb = gatt_get_tcb_by_idx(tcb_idx); + BOOLEAN status = FALSE; GATT_TRACE_API ("GATT_GetConnectionInfor conn_id=%d", conn_id); - if (p_tcb && p_reg ) - { + if (p_tcb && p_reg ) { memcpy(bd_addr, p_tcb->peer_bda, BD_ADDR_LEN); *p_gatt_if = gatt_if; *p_transport = p_tcb->transport; @@ -1573,11 +1442,10 @@ BOOLEAN GATT_GetConnIdIfConnected(tGATT_IF gatt_if, BD_ADDR bd_addr, UINT16 *p_c tBT_TRANSPORT transport) { tGATT_REG *p_reg = gatt_get_regcb(gatt_if); - tGATT_TCB *p_tcb= gatt_find_tcb_by_addr(bd_addr, transport); - BOOLEAN status=FALSE; + tGATT_TCB *p_tcb = gatt_find_tcb_by_addr(bd_addr, transport); + BOOLEAN status = FALSE; - if (p_reg && p_tcb && (gatt_get_ch_state(p_tcb) == GATT_CH_OPEN) ) - { + if (p_reg && p_tcb && (gatt_get_ch_state(p_tcb) == GATT_CH_OPEN) ) { *p_conn_id = GATT_CREATE_CONN_ID(p_tcb->tcb_idx, gatt_if); status = TRUE; } @@ -1609,18 +1477,14 @@ BOOLEAN GATT_Listen (tGATT_IF gatt_if, BOOLEAN start, BD_ADDR_PTR bd_addr) GATT_TRACE_API ("GATT_Listen gatt_if=%d", gatt_if); /* Make sure app is registered */ - if ((p_reg = gatt_get_regcb(gatt_if)) == NULL) - { + if ((p_reg = gatt_get_regcb(gatt_if)) == NULL) { GATT_TRACE_ERROR("GATT_Listen - gatt_if =%d is not registered", gatt_if); - return(FALSE); + return (FALSE); } - if (bd_addr != NULL) - { - gatt_update_auto_connect_dev(gatt_if,start, bd_addr, FALSE); - } - else - { + if (bd_addr != NULL) { + gatt_update_auto_connect_dev(gatt_if, start, bd_addr, FALSE); + } else { p_reg->listening = start ? GATT_LISTEN_TO_ALL : GATT_LISTEN_TO_NONE; } diff --git a/components/bt/bluedroid/stack/gatt/gatt_attr.c b/components/bt/bluedroid/stack/gatt/gatt_attr.c old mode 100755 new mode 100644 index a6cc271aed..b7a87192b4 --- a/components/bt/bluedroid/stack/gatt/gatt_attr.c +++ b/components/bt/bluedroid/stack/gatt/gatt_attr.c @@ -42,17 +42,16 @@ static void gatt_request_cback(UINT16 conn_id, UINT32 trans_id, UINT8 op_code, tGATTS_DATA *p_data); static void gatt_connect_cback(tGATT_IF gatt_if, BD_ADDR bda, UINT16 conn_id, BOOLEAN connected, - tGATT_DISCONN_REASON reason, tBT_TRANSPORT transport); + tGATT_DISCONN_REASON reason, tBT_TRANSPORT transport); static void gatt_disc_res_cback(UINT16 conn_id, tGATT_DISC_TYPE disc_type, tGATT_DISC_RES *p_data); static void gatt_disc_cmpl_cback(UINT16 conn_id, tGATT_DISC_TYPE disc_type, tGATT_STATUS status); static void gatt_cl_op_cmpl_cback(UINT16 conn_id, tGATTC_OPTYPE op, tGATT_STATUS status, - tGATT_CL_COMPLETE *p_data); + tGATT_CL_COMPLETE *p_data); static void gatt_cl_start_config_ccc(tGATT_PROFILE_CLCB *p_clcb); -static tGATT_CBACK gatt_profile_cback = -{ +static tGATT_CBACK gatt_profile_cback = { gatt_connect_cback, gatt_cl_op_cmpl_cback, gatt_disc_res_cback, @@ -92,10 +91,10 @@ static tGATT_PROFILE_CLCB *gatt_profile_find_clcb_by_conn_id(UINT16 conn_id) UINT8 i_clcb; tGATT_PROFILE_CLCB *p_clcb = NULL; - for (i_clcb = 0, p_clcb= gatt_cb.profile_clcb; i_clcb < GATT_MAX_APPS; i_clcb++, p_clcb++) - { - if (p_clcb->in_use && p_clcb->conn_id == conn_id) + for (i_clcb = 0, p_clcb = gatt_cb.profile_clcb; i_clcb < GATT_MAX_APPS; i_clcb++, p_clcb++) { + if (p_clcb->in_use && p_clcb->conn_id == conn_id) { return p_clcb; + } } return NULL; @@ -115,11 +114,11 @@ static tGATT_PROFILE_CLCB *gatt_profile_find_clcb_by_bd_addr(BD_ADDR bda, tBT_TR UINT8 i_clcb; tGATT_PROFILE_CLCB *p_clcb = NULL; - for (i_clcb = 0, p_clcb= gatt_cb.profile_clcb; i_clcb < GATT_MAX_APPS; i_clcb++, p_clcb++) - { + for (i_clcb = 0, p_clcb = gatt_cb.profile_clcb; i_clcb < GATT_MAX_APPS; i_clcb++, p_clcb++) { if (p_clcb->in_use && p_clcb->transport == transport && - p_clcb->connected && !memcmp(p_clcb->bda, bda, BD_ADDR_LEN)) + p_clcb->connected && !memcmp(p_clcb->bda, bda, BD_ADDR_LEN)) { return p_clcb; + } } return NULL; @@ -139,10 +138,8 @@ tGATT_PROFILE_CLCB *gatt_profile_clcb_alloc (UINT16 conn_id, BD_ADDR bda, tBT_TR UINT8 i_clcb = 0; tGATT_PROFILE_CLCB *p_clcb = NULL; - for (i_clcb = 0, p_clcb= gatt_cb.profile_clcb; i_clcb < GATT_MAX_APPS; i_clcb++, p_clcb++) - { - if (!p_clcb->in_use) - { + for (i_clcb = 0, p_clcb = gatt_cb.profile_clcb; i_clcb < GATT_MAX_APPS; i_clcb++, p_clcb++) { + if (!p_clcb->in_use) { p_clcb->in_use = TRUE; p_clcb->conn_id = conn_id; p_clcb->connected = TRUE; @@ -151,8 +148,9 @@ tGATT_PROFILE_CLCB *gatt_profile_clcb_alloc (UINT16 conn_id, BD_ADDR bda, tBT_TR break; } } - if(i_clcb < GATT_MAX_APPS) + if (i_clcb < GATT_MAX_APPS) { return p_clcb; + } return NULL; } @@ -181,7 +179,7 @@ void gatt_profile_clcb_dealloc (tGATT_PROFILE_CLCB *p_clcb) ** *******************************************************************************/ static void gatt_request_cback (UINT16 conn_id, UINT32 trans_id, tGATTS_REQ_TYPE type, - tGATTS_DATA *p_data) + tGATTS_DATA *p_data) { UINT8 status = GATT_INVALID_PDU; tGATTS_RSP rsp_msg ; @@ -189,34 +187,34 @@ static void gatt_request_cback (UINT16 conn_id, UINT32 trans_id, tGATTS_REQ_TYPE memset(&rsp_msg, 0, sizeof(tGATTS_RSP)); - switch (type) - { - case GATTS_REQ_TYPE_READ: - status = GATT_READ_NOT_PERMIT; - break; + switch (type) { + case GATTS_REQ_TYPE_READ: + status = GATT_READ_NOT_PERMIT; + break; - case GATTS_REQ_TYPE_WRITE: - status = GATT_WRITE_NOT_PERMIT; - break; + case GATTS_REQ_TYPE_WRITE: + status = GATT_WRITE_NOT_PERMIT; + break; - case GATTS_REQ_TYPE_WRITE_EXEC: - case GATT_CMD_WRITE: - ignore = TRUE; - GATT_TRACE_EVENT("Ignore GATT_REQ_EXEC_WRITE/WRITE_CMD" ); - break; + case GATTS_REQ_TYPE_WRITE_EXEC: + case GATT_CMD_WRITE: + ignore = TRUE; + GATT_TRACE_EVENT("Ignore GATT_REQ_EXEC_WRITE/WRITE_CMD" ); + break; - case GATTS_REQ_TYPE_MTU: - GATT_TRACE_EVENT("Get MTU exchange new mtu size: %d", p_data->mtu); - ignore = TRUE; - break; + case GATTS_REQ_TYPE_MTU: + GATT_TRACE_EVENT("Get MTU exchange new mtu size: %d", p_data->mtu); + ignore = TRUE; + break; - default: - GATT_TRACE_EVENT("Unknown/unexpected LE GAP ATT request: 0x%02x", type); - break; + default: + GATT_TRACE_EVENT("Unknown/unexpected LE GAP ATT request: 0x%02x", type); + break; } - if (!ignore) + if (!ignore) { GATTS_SendRsp (conn_id, trans_id, status, &rsp_msg); + } } @@ -230,26 +228,25 @@ static void gatt_request_cback (UINT16 conn_id, UINT32 trans_id, tGATTS_REQ_TYPE ** *******************************************************************************/ static void gatt_connect_cback (tGATT_IF gatt_if, BD_ADDR bda, UINT16 conn_id, - BOOLEAN connected, tGATT_DISCONN_REASON reason, - tBT_TRANSPORT transport) + BOOLEAN connected, tGATT_DISCONN_REASON reason, + tBT_TRANSPORT transport) { UNUSED(gatt_if); GATT_TRACE_EVENT ("%s: from %08x%04x connected:%d conn_id=%d reason = 0x%04x", __FUNCTION__, - (bda[0]<<24)+(bda[1]<<16)+(bda[2]<<8)+bda[3], - (bda[4]<<8)+bda[5], connected, conn_id, reason); + (bda[0] << 24) + (bda[1] << 16) + (bda[2] << 8) + bda[3], + (bda[4] << 8) + bda[5], connected, conn_id, reason); tGATT_PROFILE_CLCB *p_clcb = gatt_profile_find_clcb_by_bd_addr(bda, transport); - if (p_clcb == NULL) + if (p_clcb == NULL) { return; + } - if (connected) - { + if (connected) { p_clcb->conn_id = conn_id; p_clcb->connected = TRUE; - if (p_clcb->ccc_stage == GATT_SVC_CHANGED_CONNECTING) - { + if (p_clcb->ccc_stage == GATT_SVC_CHANGED_CONNECTING) { p_clcb->ccc_stage ++; gatt_cl_start_config_ccc(p_clcb); } @@ -286,17 +283,17 @@ void gatt_profile_db_init (void) uuid.uu.uuid16 = gatt_cb.gattp_attr.uuid = GATT_UUID_GATT_SRV_CHGD; gatt_cb.gattp_attr.service_change = 0; gatt_cb.gattp_attr.handle = - gatt_cb.handle_of_h_r = GATTS_AddCharacteristic(service_handle, &uuid, 0, GATT_CHAR_PROP_BIT_INDICATE); + gatt_cb.handle_of_h_r = GATTS_AddCharacteristic(service_handle, &uuid, 0, GATT_CHAR_PROP_BIT_INDICATE); GATT_TRACE_DEBUG ("gatt_profile_db_init: handle of service changed%d", - gatt_cb.handle_of_h_r ); + gatt_cb.handle_of_h_r ); /* start service */ status = GATTS_StartService (gatt_cb.gatt_if, service_handle, GATTP_TRANSPORT_SUPPORTED ); GATT_TRACE_DEBUG ("gatt_profile_db_init: gatt_if=%d start status%d", - gatt_cb.gatt_if, status); + gatt_cb.gatt_if, status); } /******************************************************************************* @@ -327,11 +324,11 @@ static void gatt_disc_res_cback (UINT16 conn_id, tGATT_DISC_TYPE disc_type, tGAT { tGATT_PROFILE_CLCB *p_clcb = gatt_profile_find_clcb_by_conn_id(conn_id); - if (p_clcb == NULL) + if (p_clcb == NULL) { return; + } - switch (disc_type) - { + switch (disc_type) { case GATT_DISC_SRVC_BY_UUID:/* stage 1 */ p_clcb->e_handle = p_data->value.group_value.e_handle; p_clcb->ccc_result ++; @@ -343,8 +340,7 @@ static void gatt_disc_res_cback (UINT16 conn_id, tGATT_DISC_TYPE disc_type, tGAT break; case GATT_DISC_CHAR_DSCPT: /* stage 3 */ - if (p_data->type.uu.uuid16 == GATT_UUID_CHAR_CLIENT_CONFIG) - { + if (p_data->type.uu.uuid16 == GATT_UUID_CHAR_CLIENT_CONFIG) { p_clcb->s_handle = p_data->handle; p_clcb->ccc_result ++; } @@ -365,11 +361,11 @@ static void gatt_disc_cmpl_cback (UINT16 conn_id, tGATT_DISC_TYPE disc_type, tGA { tGATT_PROFILE_CLCB *p_clcb = gatt_profile_find_clcb_by_conn_id(conn_id); - if (p_clcb == NULL) + if (p_clcb == NULL) { return; + } - if (status == GATT_SUCCESS && p_clcb->ccc_result > 0) - { + if (status == GATT_SUCCESS && p_clcb->ccc_result > 0) { p_clcb->ccc_result = 0; p_clcb->ccc_stage ++; gatt_cl_start_config_ccc(p_clcb); @@ -390,15 +386,15 @@ static void gatt_disc_cmpl_cback (UINT16 conn_id, tGATT_DISC_TYPE disc_type, tGA ** *******************************************************************************/ static void gatt_cl_op_cmpl_cback (UINT16 conn_id, tGATTC_OPTYPE op, - tGATT_STATUS status, tGATT_CL_COMPLETE *p_data) + tGATT_STATUS status, tGATT_CL_COMPLETE *p_data) { tGATT_PROFILE_CLCB *p_clcb = gatt_profile_find_clcb_by_conn_id(conn_id); - if (p_clcb == NULL) + if (p_clcb == NULL) { return; + } - if (op == GATTC_OPTYPE_WRITE) - { + if (op == GATTC_OPTYPE_WRITE) { GATT_TRACE_DEBUG("%s() - ccc write status : %d", __FUNCTION__, status); } @@ -425,15 +421,13 @@ static void gatt_cl_start_config_ccc(tGATT_PROFILE_CLCB *p_clcb) memset (&srvc_disc_param, 0 , sizeof(tGATT_DISC_PARAM)); memset (&ccc_value, 0 , sizeof(tGATT_VALUE)); - switch(p_clcb->ccc_stage) - { + switch (p_clcb->ccc_stage) { case GATT_SVC_CHANGED_SERVICE: /* discover GATT service */ srvc_disc_param.s_handle = 1; srvc_disc_param.e_handle = 0xffff; srvc_disc_param.service.len = 2; srvc_disc_param.service.uu.uuid16 = UUID_SERVCLASS_GATT_SERVER; - if (GATTC_Discover (p_clcb->conn_id, GATT_DISC_SRVC_BY_UUID, &srvc_disc_param) != GATT_SUCCESS) - { + if (GATTC_Discover (p_clcb->conn_id, GATT_DISC_SRVC_BY_UUID, &srvc_disc_param) != GATT_SUCCESS) { GATT_TRACE_ERROR("%s() - ccc service error", __FUNCTION__); gatt_config_ccc_complete(p_clcb); } @@ -444,8 +438,7 @@ static void gatt_cl_start_config_ccc(tGATT_PROFILE_CLCB *p_clcb) srvc_disc_param.e_handle = p_clcb->e_handle; srvc_disc_param.service.len = 2; srvc_disc_param.service.uu.uuid16 = GATT_UUID_GATT_SRV_CHGD; - if (GATTC_Discover (p_clcb->conn_id, GATT_DISC_CHAR, &srvc_disc_param) != GATT_SUCCESS) - { + if (GATTC_Discover (p_clcb->conn_id, GATT_DISC_CHAR, &srvc_disc_param) != GATT_SUCCESS) { GATT_TRACE_ERROR("%s() - ccc char error", __FUNCTION__); gatt_config_ccc_complete(p_clcb); } @@ -454,8 +447,7 @@ static void gatt_cl_start_config_ccc(tGATT_PROFILE_CLCB *p_clcb) case GATT_SVC_CHANGED_DESCRIPTOR: /* discover service change ccc */ srvc_disc_param.s_handle = p_clcb->s_handle; srvc_disc_param.e_handle = p_clcb->e_handle; - if (GATTC_Discover (p_clcb->conn_id, GATT_DISC_CHAR_DSCPT, &srvc_disc_param) != GATT_SUCCESS) - { + if (GATTC_Discover (p_clcb->conn_id, GATT_DISC_CHAR_DSCPT, &srvc_disc_param) != GATT_SUCCESS) { GATT_TRACE_ERROR("%s() - ccc char descriptor error", __FUNCTION__); gatt_config_ccc_complete(p_clcb); } @@ -465,8 +457,7 @@ static void gatt_cl_start_config_ccc(tGATT_PROFILE_CLCB *p_clcb) ccc_value.handle = p_clcb->s_handle; ccc_value.len = 2; ccc_value.value[0] = GATT_CLT_CONFIG_INDICATION; - if (GATTC_Write (p_clcb->conn_id, GATT_WRITE, &ccc_value) != GATT_SUCCESS) - { + if (GATTC_Write (p_clcb->conn_id, GATT_WRITE, &ccc_value) != GATT_SUCCESS) { GATT_TRACE_ERROR("%s() - write ccc error", __FUNCTION__); gatt_config_ccc_complete(p_clcb); } @@ -488,22 +479,22 @@ void GATT_ConfigServiceChangeCCC (BD_ADDR remote_bda, BOOLEAN enable, tBT_TRANSP UINT16 conn_id = GATT_INVALID_CONN_ID; tGATT_PROFILE_CLCB *p_clcb = gatt_profile_find_clcb_by_bd_addr (remote_bda, transport); - if (p_clcb == NULL) + if (p_clcb == NULL) { p_clcb = gatt_profile_clcb_alloc (0, remote_bda, transport); + } - if (p_clcb == NULL) + if (p_clcb == NULL) { return; + } - if (GATT_GetConnIdIfConnected (gatt_cb.gatt_if, remote_bda, &p_clcb->conn_id, transport)) - { + if (GATT_GetConnIdIfConnected (gatt_cb.gatt_if, remote_bda, &p_clcb->conn_id, transport)) { p_clcb->connected = TRUE; } /* hold the link here */ GATT_Connect(gatt_cb.gatt_if, remote_bda, TRUE, transport); p_clcb->ccc_stage = GATT_SVC_CHANGED_CONNECTING; - if (!p_clcb->connected) - { + if (!p_clcb->connected) { /* wait for connection */ return; } diff --git a/components/bt/bluedroid/stack/gatt/gatt_auth.c b/components/bt/bluedroid/stack/gatt/gatt_auth.c old mode 100755 new mode 100644 index 42a19939db..c7bdc13cdf --- a/components/bt/bluedroid/stack/gatt/gatt_auth.c +++ b/components/bt/bluedroid/stack/gatt/gatt_auth.c @@ -54,29 +54,26 @@ static BOOLEAN gatt_sign_data (tGATT_CLCB *p_clcb) p_data = (UINT8 *)GKI_getbuf((UINT16)(p_attr->len + 3)); /* 3 = 2 byte handle + opcode */ - if (p_data != NULL) - { + if (p_data != NULL) { p = p_data; UINT8_TO_STREAM(p, GATT_SIGN_CMD_WRITE); UINT16_TO_STREAM(p, p_attr->handle); ARRAY_TO_STREAM(p, p_attr->value, p_attr->len); /* sign data length should be attribulte value length plus 2B handle + 1B op code */ - if ((payload_size - GATT_AUTH_SIGN_LEN - 3) < p_attr->len) + if ((payload_size - GATT_AUTH_SIGN_LEN - 3) < p_attr->len) { p_attr->len = payload_size - GATT_AUTH_SIGN_LEN - 3; + } p_signature = p_attr->value + p_attr->len; if (BTM_BleDataSignature(p_clcb->p_tcb->peer_bda, - p_data, - (UINT16)(p_attr->len + 3), /* 3 = 2 byte handle + opcode */ - p_signature)) - { + p_data, + (UINT16)(p_attr->len + 3), /* 3 = 2 byte handle + opcode */ + p_signature)) { p_attr->len += BTM_BLE_AUTH_SIGN_LEN; gatt_set_ch_state(p_clcb->p_tcb, GATT_CH_OPEN); gatt_act_write(p_clcb, GATT_SEC_SIGN_DATA); - } - else - { + } else { gatt_end_operation(p_clcb, GATT_INTERNAL_ERROR, NULL); } @@ -112,13 +109,10 @@ void gatt_verify_signature(tGATT_TCB *p_tcb, BT_HDR *p_buf) p = p_orig + cmd_len - 4; STREAM_TO_UINT32(counter, p); - if (BTM_BleVerifySignature(p_tcb->peer_bda, p_orig, cmd_len, counter, p)) - { + if (BTM_BleVerifySignature(p_tcb->peer_bda, p_orig, cmd_len, counter, p)) { STREAM_TO_UINT8(op_code, p_orig); gatt_server_handle_client_req (p_tcb, op_code, (UINT16)(p_buf->len - 1), p_orig); - } - else - { + } else { /* if this is a bad signature, assume from attacker, ignore it */ GATT_TRACE_ERROR("Signature Verification Failed, data ignored"); } @@ -136,19 +130,15 @@ void gatt_verify_signature(tGATT_TCB *p_tcb, BT_HDR *p_buf) *******************************************************************************/ void gatt_sec_check_complete(BOOLEAN sec_check_ok, tGATT_CLCB *p_clcb, UINT8 sec_act) { - if (p_clcb && p_clcb->p_tcb && GKI_queue_is_empty(&p_clcb->p_tcb->pending_enc_clcb)) + if (p_clcb && p_clcb->p_tcb && GKI_queue_is_empty(&p_clcb->p_tcb->pending_enc_clcb)) { gatt_set_sec_act(p_clcb->p_tcb, GATT_SEC_NONE); + } - if (!sec_check_ok) - { + if (!sec_check_ok) { gatt_end_operation(p_clcb, GATT_AUTH_FAIL, NULL); - } - else if (p_clcb->operation == GATTC_OPTYPE_WRITE) - { + } else if (p_clcb->operation == GATTC_OPTYPE_WRITE) { gatt_act_write(p_clcb, sec_act); - } - else if (p_clcb->operation == GATTC_OPTYPE_READ) - { + } else if (p_clcb->operation == GATTC_OPTYPE_READ) { gatt_act_read(p_clcb, p_clcb->counter); } } @@ -171,26 +161,20 @@ void gatt_enc_cmpl_cback(BD_ADDR bd_addr, tBT_TRANSPORT transport, void *p_ref_d UNUSED(p_ref_data); GATT_TRACE_DEBUG("gatt_enc_cmpl_cback"); - if ((p_tcb = gatt_find_tcb_by_addr(bd_addr, transport)) != NULL) - { - if (gatt_get_sec_act(p_tcb) == GATT_SEC_ENC_PENDING) + if ((p_tcb = gatt_find_tcb_by_addr(bd_addr, transport)) != NULL) { + if (gatt_get_sec_act(p_tcb) == GATT_SEC_ENC_PENDING) { return; + } - if ((p_buf = (tGATT_PENDING_ENC_CLCB *)GKI_dequeue (&p_tcb->pending_enc_clcb)) != NULL) - { - if (result == BTM_SUCCESS) - { - if (gatt_get_sec_act(p_tcb) == GATT_SEC_ENCRYPT_MITM ) - { + if ((p_buf = (tGATT_PENDING_ENC_CLCB *)GKI_dequeue (&p_tcb->pending_enc_clcb)) != NULL) { + if (result == BTM_SUCCESS) { + if (gatt_get_sec_act(p_tcb) == GATT_SEC_ENCRYPT_MITM ) { BTM_GetSecurityFlagsByTransport(bd_addr, &sec_flag, transport); - if (sec_flag & BTM_SEC_FLAG_LKEY_AUTHED) - { + if (sec_flag & BTM_SEC_FLAG_LKEY_AUTHED) { status = TRUE; } - } - else - { + } else { status = TRUE; } } @@ -198,24 +182,18 @@ void gatt_enc_cmpl_cback(BD_ADDR bd_addr, tBT_TRANSPORT transport, void *p_ref_d GKI_freebuf(p_buf); /* start all other pending operation in queue */ count = GKI_queue_length(&p_tcb->pending_enc_clcb); - for (; count > 0; count --) - { - if ((p_buf = (tGATT_PENDING_ENC_CLCB *)GKI_dequeue (&p_tcb->pending_enc_clcb)) != NULL) - { + for (; count > 0; count --) { + if ((p_buf = (tGATT_PENDING_ENC_CLCB *)GKI_dequeue (&p_tcb->pending_enc_clcb)) != NULL) { gatt_security_check_start(p_buf->p_clcb); GKI_freebuf(p_buf); - } - else + } else { break; + } } - } - else - { + } else { GATT_TRACE_ERROR("Unknown operation encryption completed"); } - } - else - { + } else { GATT_TRACE_ERROR("enc callback for unknown bd_addr"); } } @@ -237,36 +215,28 @@ void gatt_notify_enc_cmpl(BD_ADDR bd_addr) UINT16 count; UINT8 i = 0; - if ((p_tcb = gatt_find_tcb_by_addr(bd_addr, BT_TRANSPORT_LE)) != NULL) - { - for (i = 0; i < GATT_MAX_APPS; i++) - { - if (gatt_cb.cl_rcb[i].in_use && gatt_cb.cl_rcb[i].app_cb.p_enc_cmpl_cb) - { + if ((p_tcb = gatt_find_tcb_by_addr(bd_addr, BT_TRANSPORT_LE)) != NULL) { + for (i = 0; i < GATT_MAX_APPS; i++) { + if (gatt_cb.cl_rcb[i].in_use && gatt_cb.cl_rcb[i].app_cb.p_enc_cmpl_cb) { (*gatt_cb.cl_rcb[i].app_cb.p_enc_cmpl_cb)(gatt_cb.cl_rcb[i].gatt_if, bd_addr); } } - if (gatt_get_sec_act(p_tcb) == GATT_SEC_ENC_PENDING) - { + if (gatt_get_sec_act(p_tcb) == GATT_SEC_ENC_PENDING) { gatt_set_sec_act(p_tcb, GATT_SEC_NONE); count = GKI_queue_length(&p_tcb->pending_enc_clcb); - for (; count > 0; count --) - { - if ((p_buf = (tGATT_PENDING_ENC_CLCB *)GKI_dequeue (&p_tcb->pending_enc_clcb)) != NULL) - { + for (; count > 0; count --) { + if ((p_buf = (tGATT_PENDING_ENC_CLCB *)GKI_dequeue (&p_tcb->pending_enc_clcb)) != NULL) { gatt_security_check_start(p_buf->p_clcb); GKI_freebuf(p_buf); - } - else + } else { break; + } } } - } - else - { + } else { GATT_TRACE_DEBUG("notify GATT for encryption completion of unknown device"); } return; @@ -282,8 +252,7 @@ void gatt_notify_enc_cmpl(BD_ADDR bd_addr) *******************************************************************************/ void gatt_set_sec_act(tGATT_TCB *p_tcb, tGATT_SEC_ACTION sec_act) { - if (p_tcb) - { + if (p_tcb) { p_tcb->sec_act = sec_act; } } @@ -299,8 +268,7 @@ void gatt_set_sec_act(tGATT_TCB *p_tcb, tGATT_SEC_ACTION sec_act) tGATT_SEC_ACTION gatt_get_sec_act(tGATT_TCB *p_tcb) { tGATT_SEC_ACTION sec_act = GATT_SEC_NONE; - if (p_tcb) - { + if (p_tcb) { sec_act = p_tcb->sec_act; } return sec_act; @@ -321,14 +289,15 @@ tGATT_SEC_ACTION gatt_determine_sec_act(tGATT_CLCB *p_clcb ) UINT8 sec_flag; tGATT_TCB *p_tcb = p_clcb->p_tcb; tGATT_AUTH_REQ auth_req = p_clcb->auth_req; - BOOLEAN is_link_encrypted= FALSE; - BOOLEAN is_link_key_known=FALSE; - BOOLEAN is_key_mitm=FALSE; + BOOLEAN is_link_encrypted = FALSE; + BOOLEAN is_link_key_known = FALSE; + BOOLEAN is_key_mitm = FALSE; UINT8 key_type; tBTM_BLE_SEC_REQ_ACT sec_act = BTM_LE_SEC_NONE; - if (auth_req == GATT_AUTH_REQ_NONE ) + if (auth_req == GATT_AUTH_REQ_NONE ) { return act; + } BTM_GetSecurityFlagsByTransport(p_tcb->peer_bda, &sec_flag, p_clcb->p_tcb->transport); @@ -336,67 +305,61 @@ tGATT_SEC_ACTION gatt_determine_sec_act(tGATT_CLCB *p_clcb ) /* if a encryption is pending, need to wait */ if (sec_act == BTM_BLE_SEC_REQ_ACT_DISCARD && - auth_req != GATT_AUTH_REQ_NONE) + auth_req != GATT_AUTH_REQ_NONE) { return GATT_SEC_ENC_PENDING; + } - if (sec_flag & (BTM_SEC_FLAG_ENCRYPTED| BTM_SEC_FLAG_LKEY_KNOWN)) - { - if (sec_flag & BTM_SEC_FLAG_ENCRYPTED) + if (sec_flag & (BTM_SEC_FLAG_ENCRYPTED | BTM_SEC_FLAG_LKEY_KNOWN)) { + if (sec_flag & BTM_SEC_FLAG_ENCRYPTED) { is_link_encrypted = TRUE; + } is_link_key_known = TRUE; - if (sec_flag & BTM_SEC_FLAG_LKEY_AUTHED) + if (sec_flag & BTM_SEC_FLAG_LKEY_AUTHED) { is_key_mitm = TRUE; + } } /* first check link key upgrade required or not */ - switch (auth_req) - { - case GATT_AUTH_REQ_MITM: - case GATT_AUTH_REQ_SIGNED_MITM: - if (!is_key_mitm) - act = GATT_SEC_ENCRYPT_MITM; - break; + switch (auth_req) { + case GATT_AUTH_REQ_MITM: + case GATT_AUTH_REQ_SIGNED_MITM: + if (!is_key_mitm) { + act = GATT_SEC_ENCRYPT_MITM; + } + break; - case GATT_AUTH_REQ_NO_MITM: - case GATT_AUTH_REQ_SIGNED_NO_MITM: - if (!is_link_key_known) - act = GATT_SEC_ENCRYPT_NO_MITM; - break; - default: - break; + case GATT_AUTH_REQ_NO_MITM: + case GATT_AUTH_REQ_SIGNED_NO_MITM: + if (!is_link_key_known) { + act = GATT_SEC_ENCRYPT_NO_MITM; + } + break; + default: + break; } /* now check link needs to be encrypted or not if the link key upgrade is not required */ - if (act == GATT_SEC_OK) - { + if (act == GATT_SEC_OK) { if (p_tcb->transport == BT_TRANSPORT_LE && - (p_clcb->operation == GATTC_OPTYPE_WRITE) && - (p_clcb->op_subtype == GATT_WRITE_NO_RSP)) - { + (p_clcb->operation == GATTC_OPTYPE_WRITE) && + (p_clcb->op_subtype == GATT_WRITE_NO_RSP)) { /* this is a write command request check data signing required or not */ - if (!is_link_encrypted) - { + if (!is_link_encrypted) { btm_ble_get_enc_key_type(p_tcb->peer_bda, &key_type); if ( (key_type & BTM_LE_KEY_LCSRK) && - ((auth_req == GATT_AUTH_REQ_SIGNED_NO_MITM) || - (auth_req == GATT_AUTH_REQ_SIGNED_MITM))) - { + ((auth_req == GATT_AUTH_REQ_SIGNED_NO_MITM) || + (auth_req == GATT_AUTH_REQ_SIGNED_MITM))) { act = GATT_SEC_SIGN_DATA; - } - else - { + } else { act = GATT_SEC_ENCRYPT; } } - } - else - { - if (!is_link_encrypted) - { + } else { + if (!is_link_encrypted) { act = GATT_SEC_ENCRYPT; } } @@ -422,18 +385,18 @@ tGATT_SEC_ACTION gatt_determine_sec_act(tGATT_CLCB *p_clcb ) tGATT_STATUS gatt_get_link_encrypt_status(tGATT_TCB *p_tcb) { tGATT_STATUS encrypt_status = GATT_NOT_ENCRYPTED; - UINT8 sec_flag=0; + UINT8 sec_flag = 0; BTM_GetSecurityFlagsByTransport(p_tcb->peer_bda, &sec_flag, p_tcb->transport); - if ((sec_flag & BTM_SEC_FLAG_ENCRYPTED) && (sec_flag & BTM_SEC_FLAG_LKEY_KNOWN)) - { + if ((sec_flag & BTM_SEC_FLAG_ENCRYPTED) && (sec_flag & BTM_SEC_FLAG_LKEY_KNOWN)) { encrypt_status = GATT_ENCRYPED_NO_MITM; - if (sec_flag & BTM_SEC_FLAG_LKEY_AUTHED) + if (sec_flag & BTM_SEC_FLAG_LKEY_AUTHED) { encrypt_status = GATT_ENCRYPED_MITM; + } } - GATT_TRACE_DEBUG("gatt_get_link_encrypt_status status=0x%x",encrypt_status); + GATT_TRACE_DEBUG("gatt_get_link_encrypt_status status=0x%x", encrypt_status); return encrypt_status ; } @@ -450,20 +413,19 @@ tGATT_STATUS gatt_get_link_encrypt_status(tGATT_TCB *p_tcb) static BOOLEAN gatt_convert_sec_action(tGATT_SEC_ACTION gatt_sec_act, tBTM_BLE_SEC_ACT *p_btm_sec_act ) { BOOLEAN status = TRUE; - switch (gatt_sec_act) - { - case GATT_SEC_ENCRYPT: - *p_btm_sec_act = BTM_BLE_SEC_ENCRYPT; - break; - case GATT_SEC_ENCRYPT_NO_MITM: - *p_btm_sec_act = BTM_BLE_SEC_ENCRYPT_NO_MITM; - break; - case GATT_SEC_ENCRYPT_MITM: - *p_btm_sec_act = BTM_BLE_SEC_ENCRYPT_MITM; - break; - default: - status = FALSE; - break; + switch (gatt_sec_act) { + case GATT_SEC_ENCRYPT: + *p_btm_sec_act = BTM_BLE_SEC_ENCRYPT; + break; + case GATT_SEC_ENCRYPT_NO_MITM: + *p_btm_sec_act = BTM_BLE_SEC_ENCRYPT_NO_MITM; + break; + case GATT_SEC_ENCRYPT_MITM: + *p_btm_sec_act = BTM_BLE_SEC_ENCRYPT_MITM; + break; + default: + status = FALSE; + break; } return status; @@ -488,43 +450,41 @@ BOOLEAN gatt_security_check_start(tGATT_CLCB *p_clcb) gatt_sec_act = gatt_determine_sec_act(p_clcb); - if (sec_act_old == GATT_SEC_NONE) + if (sec_act_old == GATT_SEC_NONE) { gatt_set_sec_act(p_tcb, gatt_sec_act); - - switch (gatt_sec_act ) - { - case GATT_SEC_SIGN_DATA: - GATT_TRACE_DEBUG("gatt_security_check_start: Do data signing"); - gatt_sign_data(p_clcb); - break; - case GATT_SEC_ENCRYPT: - case GATT_SEC_ENCRYPT_NO_MITM: - case GATT_SEC_ENCRYPT_MITM: - if (sec_act_old < GATT_SEC_ENCRYPT) - { - GATT_TRACE_DEBUG("gatt_security_check_start: Encrypt now or key upgreade first"); - gatt_convert_sec_action(gatt_sec_act, &btm_ble_sec_act); - btm_status = BTM_SetEncryption(p_tcb->peer_bda, p_tcb->transport , gatt_enc_cmpl_cback, &btm_ble_sec_act); - if ( (btm_status != BTM_SUCCESS) && (btm_status != BTM_CMD_STARTED)) - { - GATT_TRACE_ERROR("gatt_security_check_start BTM_SetEncryption failed btm_status=%d", btm_status); - status = FALSE; - } - } - if (status) - gatt_add_pending_enc_channel_clcb (p_tcb, p_clcb); - break; - case GATT_SEC_ENC_PENDING: - gatt_add_pending_enc_channel_clcb (p_tcb, p_clcb); - /* wait for link encrypotion to finish */ - break; - default: - gatt_sec_check_complete(TRUE, p_clcb, gatt_sec_act); - break; } - if (status == FALSE) - { + switch (gatt_sec_act ) { + case GATT_SEC_SIGN_DATA: + GATT_TRACE_DEBUG("gatt_security_check_start: Do data signing"); + gatt_sign_data(p_clcb); + break; + case GATT_SEC_ENCRYPT: + case GATT_SEC_ENCRYPT_NO_MITM: + case GATT_SEC_ENCRYPT_MITM: + if (sec_act_old < GATT_SEC_ENCRYPT) { + GATT_TRACE_DEBUG("gatt_security_check_start: Encrypt now or key upgreade first"); + gatt_convert_sec_action(gatt_sec_act, &btm_ble_sec_act); + btm_status = BTM_SetEncryption(p_tcb->peer_bda, p_tcb->transport , gatt_enc_cmpl_cback, &btm_ble_sec_act); + if ( (btm_status != BTM_SUCCESS) && (btm_status != BTM_CMD_STARTED)) { + GATT_TRACE_ERROR("gatt_security_check_start BTM_SetEncryption failed btm_status=%d", btm_status); + status = FALSE; + } + } + if (status) { + gatt_add_pending_enc_channel_clcb (p_tcb, p_clcb); + } + break; + case GATT_SEC_ENC_PENDING: + gatt_add_pending_enc_channel_clcb (p_tcb, p_clcb); + /* wait for link encrypotion to finish */ + break; + default: + gatt_sec_check_complete(TRUE, p_clcb, gatt_sec_act); + break; + } + + if (status == FALSE) { gatt_set_sec_act(p_tcb, GATT_SEC_NONE); gatt_set_ch_state(p_tcb, GATT_CH_OPEN); } diff --git a/components/bt/bluedroid/stack/gatt/gatt_cl.c b/components/bt/bluedroid/stack/gatt/gatt_cl.c old mode 100755 new mode 100644 index 5db6969f7e..095b87deee --- a/components/bt/bluedroid/stack/gatt/gatt_cl.c +++ b/components/bt/bluedroid/stack/gatt/gatt_cl.c @@ -48,8 +48,7 @@ *********************************************************************************/ void gatt_send_prepare_write(tGATT_TCB *p_tcb, tGATT_CLCB *p_clcb); -UINT8 disc_type_to_att_opcode[GATT_DISC_MAX] = -{ +UINT8 disc_type_to_att_opcode[GATT_DISC_MAX] = { 0, GATT_REQ_READ_BY_GRP_TYPE, /* GATT_DISC_SRVC_ALL = 1, */ GATT_REQ_FIND_TYPE_VALUE, /* GATT_DISC_SRVC_BY_UUID, */ @@ -58,8 +57,7 @@ UINT8 disc_type_to_att_opcode[GATT_DISC_MAX] = GATT_REQ_FIND_INFO /* GATT_DISC_CHAR_DSCPT, */ }; -UINT16 disc_type_to_uuid[GATT_DISC_MAX] = -{ +UINT16 disc_type_to_uuid[GATT_DISC_MAX] = { 0, /* reserved */ GATT_UUID_PRI_SERVICE, /* DISC_SRVC_ALL */ GATT_UUID_PRI_SERVICE, /* for DISC_SERVC_BY_UUID */ @@ -84,45 +82,40 @@ void gatt_act_discovery(tGATT_CLCB *p_clcb) tGATT_CL_MSG cl_req; tGATT_STATUS st; - if (p_clcb->s_handle <= p_clcb->e_handle && p_clcb->s_handle != 0) - { + if (p_clcb->s_handle <= p_clcb->e_handle && p_clcb->s_handle != 0) { memset(&cl_req, 0, sizeof(tGATT_CL_MSG)); cl_req.browse.s_handle = p_clcb->s_handle; cl_req.browse.e_handle = p_clcb->e_handle; - if (disc_type_to_uuid[p_clcb->op_subtype] != 0) - { + if (disc_type_to_uuid[p_clcb->op_subtype] != 0) { cl_req.browse.uuid.len = 2; cl_req.browse.uuid.uu.uuid16 = disc_type_to_uuid[p_clcb->op_subtype]; } - if (p_clcb->op_subtype == GATT_DISC_SRVC_BY_UUID) /* fill in the FindByTypeValue request info*/ - { + if (p_clcb->op_subtype == GATT_DISC_SRVC_BY_UUID) { /* fill in the FindByTypeValue request info*/ cl_req.find_type_value.uuid.len = 2; cl_req.find_type_value.uuid.uu.uuid16 = disc_type_to_uuid[p_clcb->op_subtype]; cl_req.find_type_value.s_handle = p_clcb->s_handle; cl_req.find_type_value.e_handle = p_clcb->e_handle; cl_req.find_type_value.value_len = p_clcb->uuid.len; /* if service type is 32 bits UUID, convert it now */ - if (p_clcb->uuid.len == LEN_UUID_32) - { + if (p_clcb->uuid.len == LEN_UUID_32) { cl_req.find_type_value.value_len = LEN_UUID_128; gatt_convert_uuid32_to_uuid128(cl_req.find_type_value.value, p_clcb->uuid.uu.uuid32); + } else { + memcpy (cl_req.find_type_value.value, &p_clcb->uuid.uu, p_clcb->uuid.len); } - else - memcpy (cl_req.find_type_value.value, &p_clcb->uuid.uu, p_clcb->uuid.len); } st = attp_send_cl_msg(p_clcb->p_tcb, p_clcb->clcb_idx, op_code, &cl_req); - if (st != GATT_SUCCESS && st != GATT_CMD_STARTED) - { + if (st != GATT_SUCCESS && st != GATT_CMD_STARTED) { gatt_end_operation(p_clcb, GATT_ERROR, NULL); } - } - else /* end of handle range */ + } else { /* end of handle range */ gatt_end_operation(p_clcb, GATT_SUCCESS, NULL); + } } /******************************************************************************* @@ -143,72 +136,68 @@ void gatt_act_read (tGATT_CLCB *p_clcb, UINT16 offset) memset (&msg, 0, sizeof(tGATT_CL_MSG)); - switch (p_clcb->op_subtype) - { - case GATT_READ_CHAR_VALUE: - case GATT_READ_BY_TYPE: - op_code = GATT_REQ_READ_BY_TYPE; - msg.browse.s_handle = p_clcb->s_handle; - msg.browse.e_handle = p_clcb->e_handle; - if (p_clcb->op_subtype == GATT_READ_BY_TYPE) - memcpy(&msg.browse.uuid, &p_clcb->uuid, sizeof(tBT_UUID)); - else - { - msg.browse.uuid.len = LEN_UUID_16; - msg.browse.uuid.uu.uuid16 = GATT_UUID_CHAR_DECLARE; - } - break; + switch (p_clcb->op_subtype) { + case GATT_READ_CHAR_VALUE: + case GATT_READ_BY_TYPE: + op_code = GATT_REQ_READ_BY_TYPE; + msg.browse.s_handle = p_clcb->s_handle; + msg.browse.e_handle = p_clcb->e_handle; + if (p_clcb->op_subtype == GATT_READ_BY_TYPE) { + memcpy(&msg.browse.uuid, &p_clcb->uuid, sizeof(tBT_UUID)); + } else { + msg.browse.uuid.len = LEN_UUID_16; + msg.browse.uuid.uu.uuid16 = GATT_UUID_CHAR_DECLARE; + } + break; - case GATT_READ_CHAR_VALUE_HDL: - case GATT_READ_BY_HANDLE: - if (!p_clcb->counter) - { - op_code = GATT_REQ_READ; - msg.handle = p_clcb->s_handle; - } - else - { - if (!p_clcb->first_read_blob_after_read) - p_clcb->first_read_blob_after_read = TRUE; - else - p_clcb->first_read_blob_after_read = FALSE; - - GATT_TRACE_DEBUG("gatt_act_read first_read_blob_after_read=%d", - p_clcb->first_read_blob_after_read); - op_code = GATT_REQ_READ_BLOB; - msg.read_blob.offset = offset; - msg.read_blob.handle = p_clcb->s_handle; - } - p_clcb->op_subtype &= ~ 0x80; - break; - - case GATT_READ_PARTIAL: - op_code = GATT_REQ_READ_BLOB; - msg.read_blob.handle = p_clcb->s_handle; - msg.read_blob.offset = offset; - break; - - case GATT_READ_MULTIPLE: - op_code = GATT_REQ_READ_MULTI; - memcpy (&msg.read_multi, p_clcb->p_attr_buf, sizeof(tGATT_READ_MULTI)); - break; - - case GATT_READ_INC_SRV_UUID128: + case GATT_READ_CHAR_VALUE_HDL: + case GATT_READ_BY_HANDLE: + if (!p_clcb->counter) { op_code = GATT_REQ_READ; msg.handle = p_clcb->s_handle; - p_clcb->op_subtype &= ~ 0x90; - break; + } else { + if (!p_clcb->first_read_blob_after_read) { + p_clcb->first_read_blob_after_read = TRUE; + } else { + p_clcb->first_read_blob_after_read = FALSE; + } - default: - GATT_TRACE_ERROR("Unknown read type: %d", p_clcb->op_subtype); - break; + GATT_TRACE_DEBUG("gatt_act_read first_read_blob_after_read=%d", + p_clcb->first_read_blob_after_read); + op_code = GATT_REQ_READ_BLOB; + msg.read_blob.offset = offset; + msg.read_blob.handle = p_clcb->s_handle; + } + p_clcb->op_subtype &= ~ 0x80; + break; + + case GATT_READ_PARTIAL: + op_code = GATT_REQ_READ_BLOB; + msg.read_blob.handle = p_clcb->s_handle; + msg.read_blob.offset = offset; + break; + + case GATT_READ_MULTIPLE: + op_code = GATT_REQ_READ_MULTI; + memcpy (&msg.read_multi, p_clcb->p_attr_buf, sizeof(tGATT_READ_MULTI)); + break; + + case GATT_READ_INC_SRV_UUID128: + op_code = GATT_REQ_READ; + msg.handle = p_clcb->s_handle; + p_clcb->op_subtype &= ~ 0x90; + break; + + default: + GATT_TRACE_ERROR("Unknown read type: %d", p_clcb->op_subtype); + break; } - if (op_code != 0) + if (op_code != 0) { rt = attp_send_cl_msg(p_tcb, p_clcb->clcb_idx, op_code, &msg); + } - if ( op_code == 0 || (rt != GATT_SUCCESS && rt != GATT_CMD_STARTED)) - { + if ( op_code == 0 || (rt != GATT_SUCCESS && rt != GATT_CMD_STARTED)) { gatt_end_operation(p_clcb, rt, NULL); } } @@ -228,59 +217,52 @@ void gatt_act_write (tGATT_CLCB *p_clcb, UINT8 sec_act) UINT8 rt = GATT_SUCCESS, op_code = 0; tGATT_VALUE *p_attr = (tGATT_VALUE *)p_clcb->p_attr_buf; - if (p_attr) - { - switch (p_clcb->op_subtype) - { - case GATT_WRITE_NO_RSP: + if (p_attr) { + switch (p_clcb->op_subtype) { + case GATT_WRITE_NO_RSP: + p_clcb->s_handle = p_attr->handle; + op_code = (sec_act == GATT_SEC_SIGN_DATA) ? GATT_SIGN_CMD_WRITE : GATT_CMD_WRITE; + rt = gatt_send_write_msg(p_tcb, + p_clcb->clcb_idx, + op_code, + p_attr->handle, + p_attr->len, + 0, + p_attr->value); + break; + + case GATT_WRITE: + if (p_attr->len <= (p_tcb->payload_size - GATT_HDR_SIZE)) { p_clcb->s_handle = p_attr->handle; - op_code = (sec_act == GATT_SEC_SIGN_DATA) ? GATT_SIGN_CMD_WRITE : GATT_CMD_WRITE; + rt = gatt_send_write_msg(p_tcb, p_clcb->clcb_idx, - op_code, + GATT_REQ_WRITE, p_attr->handle, p_attr->len, 0, p_attr->value); - break; - - case GATT_WRITE: - if (p_attr->len <= (p_tcb->payload_size - GATT_HDR_SIZE)) - { - p_clcb->s_handle = p_attr->handle; - - rt = gatt_send_write_msg(p_tcb, - p_clcb->clcb_idx, - GATT_REQ_WRITE, - p_attr->handle, - p_attr->len, - 0, - p_attr->value); - } - else /* prepare write for long attribute */ - { - gatt_send_prepare_write(p_tcb, p_clcb); - } - break; - - case GATT_WRITE_PREPARE: + } else { /* prepare write for long attribute */ gatt_send_prepare_write(p_tcb, p_clcb); - break; + } + break; - default: - rt = GATT_INTERNAL_ERROR; - GATT_TRACE_ERROR("Unknown write type: %d", p_clcb->op_subtype); - break; + case GATT_WRITE_PREPARE: + gatt_send_prepare_write(p_tcb, p_clcb); + break; + + default: + rt = GATT_INTERNAL_ERROR; + GATT_TRACE_ERROR("Unknown write type: %d", p_clcb->op_subtype); + break; } - } - else + } else { rt = GATT_INTERNAL_ERROR; + } if ((rt != GATT_SUCCESS && rt != GATT_CMD_STARTED && rt != GATT_CONGESTED) - || (rt != GATT_CMD_STARTED && p_clcb->op_subtype == GATT_WRITE_NO_RSP)) - { - if (rt != GATT_SUCCESS) - { + || (rt != GATT_CMD_STARTED && p_clcb->op_subtype == GATT_WRITE_NO_RSP)) { + if (rt != GATT_SUCCESS) { GATT_TRACE_ERROR("gatt_act_write() failed op_code=0x%x rt=%d", op_code, rt); } gatt_end_operation(p_clcb, rt, NULL); @@ -303,8 +285,7 @@ void gatt_send_queue_write_cancel (tGATT_TCB *p_tcb, tGATT_CLCB *p_clcb, tGATT_E rt = attp_send_cl_msg(p_tcb, p_clcb->clcb_idx, GATT_REQ_EXEC_WRITE, (tGATT_CL_MSG *)&flag); - if (rt != GATT_SUCCESS) - { + if (rt != GATT_SUCCESS) { gatt_end_operation(p_clcb, rt, NULL); } } @@ -325,27 +306,23 @@ BOOLEAN gatt_check_write_long_terminate(tGATT_TCB *p_tcb, tGATT_CLCB *p_clcb, t GATT_TRACE_DEBUG("gatt_check_write_long_terminate "); /* check the first write response status */ - if (p_rsp_value != NULL) - { + if (p_rsp_value != NULL) { if (p_rsp_value->handle != p_attr->handle || - p_rsp_value->len != p_clcb->counter || - memcmp(p_rsp_value->value, p_attr->value + p_attr->offset, p_rsp_value->len)) - { + p_rsp_value->len != p_clcb->counter || + memcmp(p_rsp_value->value, p_attr->value + p_attr->offset, p_rsp_value->len)) { /* data does not match */ p_clcb->status = GATT_ERROR; flag = GATT_PREP_WRITE_CANCEL; exec = TRUE; - } - else /* response checking is good */ - { + } else { /* response checking is good */ p_clcb->status = GATT_SUCCESS; /* update write offset and check if end of attribute value */ - if ((p_attr->offset += p_rsp_value->len) >= p_attr->len) + if ((p_attr->offset += p_rsp_value->len) >= p_attr->len) { exec = TRUE; + } } } - if (exec) - { + if (exec) { gatt_send_queue_write_cancel (p_tcb, p_clcb, flag); return TRUE; } @@ -370,14 +347,14 @@ void gatt_send_prepare_write(tGATT_TCB *p_tcb, tGATT_CLCB *p_clcb) GATT_TRACE_DEBUG("gatt_send_prepare_write type=0x%x", type ); to_send = p_attr->len - p_attr->offset; - if (to_send > (p_tcb->payload_size - GATT_WRITE_LONG_HDR_SIZE)) /* 2 = UINT16 offset bytes */ + if (to_send > (p_tcb->payload_size - GATT_WRITE_LONG_HDR_SIZE)) { /* 2 = UINT16 offset bytes */ to_send = p_tcb->payload_size - GATT_WRITE_LONG_HDR_SIZE; + } p_clcb->s_handle = p_attr->handle; offset = p_attr->offset; - if (type == GATT_WRITE_PREPARE) - { + if (type == GATT_WRITE_PREPARE) { offset += p_clcb->start_offset; } @@ -394,8 +371,7 @@ void gatt_send_prepare_write(tGATT_TCB *p_tcb, tGATT_CLCB *p_clcb) /* remember the write long attribute length */ p_clcb->counter = to_send; - if (rt != GATT_SUCCESS && rt != GATT_CMD_STARTED) - { + if (rt != GATT_SUCCESS && rt != GATT_CMD_STARTED) { gatt_end_operation(p_clcb, rt, NULL); } } @@ -420,24 +396,25 @@ void gatt_process_find_type_value_rsp (tGATT_TCB *p_tcb, tGATT_CLCB *p_clcb, UIN GATT_TRACE_DEBUG("gatt_process_find_type_value_rsp "); /* unexpected response */ - if (p_clcb->operation != GATTC_OPTYPE_DISCOVERY || p_clcb->op_subtype != GATT_DISC_SRVC_BY_UUID) + if (p_clcb->operation != GATTC_OPTYPE_DISCOVERY || p_clcb->op_subtype != GATT_DISC_SRVC_BY_UUID) { return; + } memset (&result, 0, sizeof(tGATT_DISC_RES)); result.type.len = 2; result.type.uu.uuid16 = GATT_UUID_PRI_SERVICE; /* returns a series of handle ranges */ - while (len >= 4) - { + while (len >= 4) { STREAM_TO_UINT16 (result.handle, p); STREAM_TO_UINT16 (result.value.group_value.e_handle, p); memcpy (&result.value.group_value.service_type, &p_clcb->uuid, sizeof(tBT_UUID)); len -= 4; - if (p_clcb->p_reg->app_cb.p_disc_res_cb) + if (p_clcb->p_reg->app_cb.p_disc_res_cb) { (*p_clcb->p_reg->app_cb.p_disc_res_cb)(p_clcb->conn_id, p_clcb->op_subtype, &result); + } } /* last handle + 1 */ @@ -465,43 +442,44 @@ void gatt_process_read_info_rsp(tGATT_TCB *p_tcb, tGATT_CLCB *p_clcb, UINT8 op_c UNUSED(p_tcb); UNUSED(op_code); - if (len < GATT_INFO_RSP_MIN_LEN) - { + if (len < GATT_INFO_RSP_MIN_LEN) { GATT_TRACE_ERROR("invalid Info Response PDU received, discard."); gatt_end_operation(p_clcb, GATT_INVALID_PDU, NULL); return; } /* unexpected response */ - if (p_clcb->operation != GATTC_OPTYPE_DISCOVERY || p_clcb->op_subtype != GATT_DISC_CHAR_DSCPT) + if (p_clcb->operation != GATTC_OPTYPE_DISCOVERY || p_clcb->op_subtype != GATT_DISC_CHAR_DSCPT) { return; + } STREAM_TO_UINT8(type, p); len -= 1; - if (type == GATT_INFO_TYPE_PAIR_16) + if (type == GATT_INFO_TYPE_PAIR_16) { uuid_len = LEN_UUID_16; - else if (type == GATT_INFO_TYPE_PAIR_128) + } else if (type == GATT_INFO_TYPE_PAIR_128) { uuid_len = LEN_UUID_128; + } - while (len >= uuid_len + 2) - { + while (len >= uuid_len + 2) { STREAM_TO_UINT16 (result.handle, p); - if (uuid_len > 0) - { - if (!gatt_parse_uuid_from_cmd(&result.type, uuid_len, &p)) + if (uuid_len > 0) { + if (!gatt_parse_uuid_from_cmd(&result.type, uuid_len, &p)) { break; - } - else + } + } else { memcpy (&result.type, &p_clcb->uuid, sizeof(tBT_UUID)); + } len -= (uuid_len + 2); - if (p_clcb->p_reg->app_cb.p_disc_res_cb) + if (p_clcb->p_reg->app_cb.p_disc_res_cb) { (*p_clcb->p_reg->app_cb.p_disc_res_cb)(p_clcb->conn_id, p_clcb->op_subtype, &result); + } } - p_clcb->s_handle = (result.handle == 0) ? 0 :(result.handle + 1); + p_clcb->s_handle = (result.handle == 0) ? 0 : (result.handle + 1); /* initiate another request */ gatt_act_discovery(p_clcb) ; } @@ -525,21 +503,19 @@ void gatt_proc_disc_error_rsp(tGATT_TCB *p_tcb, tGATT_CLCB *p_clcb, UINT8 opcode GATT_TRACE_DEBUG("gatt_proc_disc_error_rsp reason: %02x cmd_code %04x", reason, opcode); - switch (opcode) - { - case GATT_REQ_READ_BY_GRP_TYPE: - case GATT_REQ_FIND_TYPE_VALUE: - case GATT_REQ_READ_BY_TYPE: - case GATT_REQ_FIND_INFO: - if (reason == GATT_NOT_FOUND) - { - status = GATT_SUCCESS; - GATT_TRACE_DEBUG("Discovery completed"); - } - break; - default: - GATT_TRACE_ERROR("Incorrect discovery opcode %04x", opcode); - break; + switch (opcode) { + case GATT_REQ_READ_BY_GRP_TYPE: + case GATT_REQ_FIND_TYPE_VALUE: + case GATT_REQ_READ_BY_TYPE: + case GATT_REQ_FIND_INFO: + if (reason == GATT_NOT_FOUND) { + status = GATT_SUCCESS; + GATT_TRACE_DEBUG("Discovery completed"); + } + break; + default: + GATT_TRACE_ERROR("Incorrect discovery opcode %04x", opcode); + break; } gatt_end_operation(p_clcb, status, NULL); @@ -558,7 +534,7 @@ void gatt_proc_disc_error_rsp(tGATT_TCB *p_tcb, tGATT_CLCB *p_clcb, UINT8 opcode void gatt_process_error_rsp(tGATT_TCB *p_tcb, tGATT_CLCB *p_clcb, UINT8 op_code, UINT16 len, UINT8 *p_data) { - UINT8 opcode, reason, * p= p_data; + UINT8 opcode, reason, * p = p_data; UINT16 handle; tGATT_VALUE *p_attr = (tGATT_VALUE *)p_clcb->p_attr_buf; @@ -570,32 +546,26 @@ void gatt_process_error_rsp(tGATT_TCB *p_tcb, tGATT_CLCB *p_clcb, UINT8 op_code, STREAM_TO_UINT16(handle, p); STREAM_TO_UINT8(reason, p); - if (p_clcb->operation == GATTC_OPTYPE_DISCOVERY) - { + if (p_clcb->operation == GATTC_OPTYPE_DISCOVERY) { gatt_proc_disc_error_rsp(p_tcb, p_clcb, opcode, handle, reason); - } - else - { + } else { if ( (p_clcb->operation == GATTC_OPTYPE_WRITE) && - (p_clcb->op_subtype == GATT_WRITE) && - (opcode == GATT_REQ_PREPARE_WRITE) && - (p_attr) && - (handle == p_attr->handle) ) - { + (p_clcb->op_subtype == GATT_WRITE) && + (opcode == GATT_REQ_PREPARE_WRITE) && + (p_attr) && + (handle == p_attr->handle) ) { p_clcb->status = reason; gatt_send_queue_write_cancel(p_tcb, p_clcb, GATT_PREP_WRITE_CANCEL); - } - else if ((p_clcb->operation == GATTC_OPTYPE_READ) && - ((p_clcb->op_subtype == GATT_READ_CHAR_VALUE_HDL) || - (p_clcb->op_subtype == GATT_READ_BY_HANDLE)) && - (opcode == GATT_REQ_READ_BLOB) && - p_clcb->first_read_blob_after_read && - (reason == GATT_NOT_LONG)) - { + } else if ((p_clcb->operation == GATTC_OPTYPE_READ) && + ((p_clcb->op_subtype == GATT_READ_CHAR_VALUE_HDL) || + (p_clcb->op_subtype == GATT_READ_BY_HANDLE)) && + (opcode == GATT_REQ_READ_BLOB) && + p_clcb->first_read_blob_after_read && + (reason == GATT_NOT_LONG)) { gatt_end_operation(p_clcb, GATT_SUCCESS, (void *)p_clcb->p_attr_buf); - } - else + } else { gatt_end_operation(p_clcb, reason, NULL); + } } } /******************************************************************************* @@ -612,12 +582,11 @@ void gatt_process_prep_write_rsp (tGATT_TCB *p_tcb, tGATT_CLCB *p_clcb, UINT8 op UINT16 len, UINT8 *p_data) { tGATT_VALUE value = {0}; - UINT8 *p= p_data; + UINT8 *p = p_data; GATT_TRACE_ERROR("value resp op_code = %s len = %d", gatt_dbg_op_name(op_code), len); - if (len < GATT_PREP_WRITE_RSP_MIN_LEN) - { + if (len < GATT_PREP_WRITE_RSP_MIN_LEN) { GATT_TRACE_ERROR("illegal prepare write response length, discard"); gatt_end_operation(p_clcb, GATT_INVALID_PDU, &value); return; @@ -630,18 +599,16 @@ void gatt_process_prep_write_rsp (tGATT_TCB *p_tcb, tGATT_CLCB *p_clcb, UINT8 op memcpy (value.value, p, value.len); - if (p_clcb->op_subtype == GATT_WRITE_PREPARE) - { + if (p_clcb->op_subtype == GATT_WRITE_PREPARE) { p_clcb->status = GATT_SUCCESS; /* application should verify handle offset and value are matched or not */ gatt_end_operation(p_clcb, p_clcb->status, &value); - } - else if (p_clcb->op_subtype == GATT_WRITE ) - { - if (!gatt_check_write_long_terminate(p_tcb, p_clcb, &value)) + } else if (p_clcb->op_subtype == GATT_WRITE ) { + if (!gatt_check_write_long_terminate(p_tcb, p_clcb, &value)) { gatt_send_prepare_write(p_tcb, p_clcb); + } } } @@ -663,13 +630,12 @@ void gatt_process_notification(tGATT_TCB *p_tcb, UINT8 op_code, tGATT_REG *p_reg; UINT16 conn_id; tGATT_STATUS encrypt_status; - UINT8 *p= p_data, i, - event = (op_code == GATT_HANDLE_VALUE_NOTIF) ? GATTC_OPTYPE_NOTIFICATION : GATTC_OPTYPE_INDICATION; + UINT8 *p = p_data, i, + event = (op_code == GATT_HANDLE_VALUE_NOTIF) ? GATTC_OPTYPE_NOTIFICATION : GATTC_OPTYPE_INDICATION; GATT_TRACE_DEBUG("gatt_process_notification "); - if (len < GATT_NOTIFICATION_MIN_LEN) - { + if (len < GATT_NOTIFICATION_MIN_LEN) { GATT_TRACE_ERROR("illegal notification PDU length, discard"); return; } @@ -678,18 +644,16 @@ void gatt_process_notification(tGATT_TCB *p_tcb, UINT8 op_code, value.len = len - 2; memcpy (value.value, p, value.len); - if (!GATT_HANDLE_IS_VALID(value.handle)) - { + if (!GATT_HANDLE_IS_VALID(value.handle)) { /* illegal handle, send ack now */ - if (op_code == GATT_HANDLE_VALUE_IND) + if (op_code == GATT_HANDLE_VALUE_IND) { attp_send_cl_msg(p_tcb, 0, GATT_HANDLE_VALUE_CONF, NULL); + } return; } - if (event == GATTC_OPTYPE_INDICATION) - { - if (p_tcb->ind_count) - { + if (event == GATTC_OPTYPE_INDICATION) { + if (p_tcb->ind_count) { /* this is an error case that receiving an indication but we still has an indication not being acked yet. For now, just log the error reset the counter. @@ -704,26 +668,24 @@ void gatt_process_notification(tGATT_TCB *p_tcb, UINT8 op_code, Note: need to do the indication count and start timer first then do callback */ - for (i = 0, p_reg = gatt_cb.cl_rcb; i < GATT_MAX_APPS; i++, p_reg++) - { - if (p_reg->in_use && p_reg->app_cb.p_cmpl_cb && (event == GATTC_OPTYPE_INDICATION)) + for (i = 0, p_reg = gatt_cb.cl_rcb; i < GATT_MAX_APPS; i++, p_reg++) { + if (p_reg->in_use && p_reg->app_cb.p_cmpl_cb && (event == GATTC_OPTYPE_INDICATION)) { p_tcb->ind_count++; + } } - if (event == GATTC_OPTYPE_INDICATION) - { + if (event == GATTC_OPTYPE_INDICATION) { /* start a timer for app confirmation */ - if (p_tcb->ind_count > 0) + if (p_tcb->ind_count > 0) { gatt_start_ind_ack_timer(p_tcb); - else /* no app to indicate, or invalid handle */ + } else { /* no app to indicate, or invalid handle */ attp_send_cl_msg(p_tcb, 0, GATT_HANDLE_VALUE_CONF, NULL); + } } encrypt_status = gatt_get_link_encrypt_status(p_tcb); - for (i = 0, p_reg = gatt_cb.cl_rcb; i < GATT_MAX_APPS; i++, p_reg++) - { - if (p_reg->in_use && p_reg->app_cb.p_cmpl_cb) - { + for (i = 0, p_reg = gatt_cb.cl_rcb; i < GATT_MAX_APPS; i++, p_reg++) { + if (p_reg->in_use && p_reg->app_cb.p_cmpl_cb) { conn_id = GATT_CREATE_CONN_ID(p_tcb->tcb_idx, p_reg->gatt_if); (*p_reg->app_cb.p_cmpl_cb) (conn_id, event, encrypt_status, (tGATT_CL_COMPLETE *)&value); } @@ -751,11 +713,11 @@ void gatt_process_read_by_type_rsp (tGATT_TCB *p_tcb, tGATT_CLCB *p_clcb, UINT8 UINT16 handle = 0; /* discovery procedure and no callback function registered */ - if (((!p_clcb->p_reg) || (!p_clcb->p_reg->app_cb.p_disc_res_cb)) && (p_clcb->operation == GATTC_OPTYPE_DISCOVERY)) + if (((!p_clcb->p_reg) || (!p_clcb->p_reg->app_cb.p_disc_res_cb)) && (p_clcb->operation == GATTC_OPTYPE_DISCOVERY)) { return; + } - if (len < GATT_READ_BY_TYPE_RSP_MIN_LEN) - { + if (len < GATT_READ_BY_TYPE_RSP_MIN_LEN) { GATT_TRACE_ERROR("Illegal ReadByType/ReadByGroupType Response length, discard"); gatt_end_operation(p_clcb, GATT_INVALID_PDU, NULL); return; @@ -763,28 +725,26 @@ void gatt_process_read_by_type_rsp (tGATT_TCB *p_tcb, tGATT_CLCB *p_clcb, UINT8 STREAM_TO_UINT8(value_len, p); - if ((value_len > (p_tcb->payload_size - 2)) || (value_len > (len-1)) ) - { + if ((value_len > (p_tcb->payload_size - 2)) || (value_len > (len - 1)) ) { /* this is an error case that server's response containing a value length which is larger than MTU-2 or value_len > message total length -1 */ GATT_TRACE_ERROR("gatt_process_read_by_type_rsp: Discard response op_code=%d vale_len=%d > (MTU-2=%d or msg_len-1=%d)", - op_code, value_len, (p_tcb->payload_size - 2), (len-1)); + op_code, value_len, (p_tcb->payload_size - 2), (len - 1)); gatt_end_operation(p_clcb, GATT_ERROR, NULL); return; } - if (op_code == GATT_RSP_READ_BY_GRP_TYPE) + if (op_code == GATT_RSP_READ_BY_GRP_TYPE) { handle_len = 4; + } value_len -= handle_len; /* substract the handle pairs bytes */ len -= 1; - while (len >= (handle_len + value_len)) - { + while (len >= (handle_len + value_len)) { STREAM_TO_UINT16(handle, p); - if (!GATT_HANDLE_IS_VALID(handle)) - { + if (!GATT_HANDLE_IS_VALID(handle)) { gatt_end_operation(p_clcb, GATT_INVALID_HANDLE, NULL); return; } @@ -798,46 +758,36 @@ void gatt_process_read_by_type_rsp (tGATT_TCB *p_tcb, tGATT_CLCB *p_clcb, UINT8 /* discover all services */ if (p_clcb->operation == GATTC_OPTYPE_DISCOVERY && - p_clcb->op_subtype == GATT_DISC_SRVC_ALL && - op_code == GATT_RSP_READ_BY_GRP_TYPE) - { + p_clcb->op_subtype == GATT_DISC_SRVC_ALL && + op_code == GATT_RSP_READ_BY_GRP_TYPE) { STREAM_TO_UINT16(handle, p); - if (!GATT_HANDLE_IS_VALID(handle)) - { + if (!GATT_HANDLE_IS_VALID(handle)) { gatt_end_operation(p_clcb, GATT_INVALID_HANDLE, NULL); return; - } - else - { + } else { record_value.group_value.e_handle = handle; - if (!gatt_parse_uuid_from_cmd(&record_value.group_value.service_type, value_len, &p)) - { + if (!gatt_parse_uuid_from_cmd(&record_value.group_value.service_type, value_len, &p)) { GATT_TRACE_ERROR("discover all service response parsing failure"); break; } } } /* discover included service */ - else if (p_clcb->operation == GATTC_OPTYPE_DISCOVERY && p_clcb->op_subtype == GATT_DISC_INC_SRVC) - { + else if (p_clcb->operation == GATTC_OPTYPE_DISCOVERY && p_clcb->op_subtype == GATT_DISC_INC_SRVC) { STREAM_TO_UINT16(record_value.incl_service.s_handle, p); STREAM_TO_UINT16(record_value.incl_service.e_handle, p); if (!GATT_HANDLE_IS_VALID(record_value.incl_service.s_handle) || - !GATT_HANDLE_IS_VALID(record_value.incl_service.e_handle)) - { + !GATT_HANDLE_IS_VALID(record_value.incl_service.e_handle)) { gatt_end_operation(p_clcb, GATT_INVALID_HANDLE, NULL); return; } - if(value_len == 6) - { + if (value_len == 6) { STREAM_TO_UINT16(record_value.incl_service.service_type.uu.uuid16, p); record_value.incl_service.service_type.len = LEN_UUID_16; - } - else if (value_len == 4) - { + } else if (value_len == 4) { p_clcb->s_handle = record_value.incl_service.s_handle; p_clcb->read_uuid128.wait_for_read_rsp = TRUE; p_clcb->read_uuid128.next_disc_start_hdl = handle + 1; @@ -846,62 +796,50 @@ void gatt_process_read_by_type_rsp (tGATT_TCB *p_tcb, tGATT_CLCB *p_clcb, UINT8 p_clcb->op_subtype |= 0x90; gatt_act_read(p_clcb, 0); return; - } - else - { - GATT_TRACE_ERROR("gatt_process_read_by_type_rsp INCL_SRVC failed with invalid data value_len=%d", value_len); - gatt_end_operation(p_clcb, GATT_INVALID_PDU, (void *)p); - return; + } else { + GATT_TRACE_ERROR("gatt_process_read_by_type_rsp INCL_SRVC failed with invalid data value_len=%d", value_len); + gatt_end_operation(p_clcb, GATT_INVALID_PDU, (void *)p); + return; } } /* read by type */ - else if (p_clcb->operation == GATTC_OPTYPE_READ && p_clcb->op_subtype == GATT_READ_BY_TYPE) - { + else if (p_clcb->operation == GATTC_OPTYPE_READ && p_clcb->op_subtype == GATT_READ_BY_TYPE) { p_clcb->counter = len - 2; p_clcb->s_handle = handle; - if ( p_clcb->counter == (p_clcb->p_tcb->payload_size -4)) - { + if ( p_clcb->counter == (p_clcb->p_tcb->payload_size - 4)) { p_clcb->op_subtype = GATT_READ_BY_HANDLE; - if (!p_clcb->p_attr_buf) + if (!p_clcb->p_attr_buf) { p_clcb->p_attr_buf = (UINT8 *)GKI_getbuf(GATT_MAX_ATTR_LEN); - if (p_clcb->p_attr_buf && p_clcb->counter <= GATT_MAX_ATTR_LEN) - { + } + if (p_clcb->p_attr_buf && p_clcb->counter <= GATT_MAX_ATTR_LEN) { memcpy(p_clcb->p_attr_buf, p, p_clcb->counter); gatt_act_read(p_clcb, p_clcb->counter); + } else { + gatt_end_operation(p_clcb, GATT_INTERNAL_ERROR, (void *)p); } - else - gatt_end_operation(p_clcb, GATT_INTERNAL_ERROR, (void *)p); - } - else - { - gatt_end_operation(p_clcb, GATT_SUCCESS, (void *)p); + } else { + gatt_end_operation(p_clcb, GATT_SUCCESS, (void *)p); } return; - } - else /* discover characterisitic */ - { + } else { /* discover characterisitic */ STREAM_TO_UINT8 (record_value.dclr_value.char_prop, p); STREAM_TO_UINT16(record_value.dclr_value.val_handle, p); - if (!GATT_HANDLE_IS_VALID(record_value.dclr_value.val_handle)) - { + if (!GATT_HANDLE_IS_VALID(record_value.dclr_value.val_handle)) { gatt_end_operation(p_clcb, GATT_INVALID_HANDLE, NULL); return; } - if (!gatt_parse_uuid_from_cmd(&record_value.dclr_value.char_uuid, (UINT16)(value_len - 3), &p)) - { + if (!gatt_parse_uuid_from_cmd(&record_value.dclr_value.char_uuid, (UINT16)(value_len - 3), &p)) { gatt_end_operation(p_clcb, GATT_SUCCESS, NULL); /* invalid format, and skip the result */ return; } /* UUID not matching */ - if (!gatt_uuid_compare(record_value.dclr_value.char_uuid, p_clcb->uuid)) - { + if (!gatt_uuid_compare(record_value.dclr_value.char_uuid, p_clcb->uuid)) { len -= (value_len + 2); continue; /* skip the result, and look for next one */ - } - else if (p_clcb->operation == GATTC_OPTYPE_READ) - /* UUID match for read characteristic value */ + } else if (p_clcb->operation == GATTC_OPTYPE_READ) + /* UUID match for read characteristic value */ { /* only read the first matching UUID characteristic value, and discard the rest results */ @@ -917,19 +855,17 @@ void gatt_process_read_by_type_rsp (tGATT_TCB *p_tcb, tGATT_CLCB *p_clcb, UINT8 memcpy (&result.value, &record_value, sizeof (result.value)); /* send callback if is discover procedure */ - if (p_clcb->operation == GATTC_OPTYPE_DISCOVERY && p_clcb->p_reg->app_cb.p_disc_res_cb) + if (p_clcb->operation == GATTC_OPTYPE_DISCOVERY && p_clcb->p_reg->app_cb.p_disc_res_cb) { (*p_clcb->p_reg->app_cb.p_disc_res_cb)(p_clcb->conn_id, p_clcb->op_subtype, &result); + } } p_clcb->s_handle = (handle == 0) ? 0 : (handle + 1); - if (p_clcb->operation == GATTC_OPTYPE_DISCOVERY) - { + if (p_clcb->operation == GATTC_OPTYPE_DISCOVERY) { /* initiate another request */ gatt_act_discovery(p_clcb) ; - } - else /* read characteristic value */ - { + } else { /* read characteristic value */ gatt_act_read(p_clcb, 0); } } @@ -948,29 +884,26 @@ void gatt_process_read_rsp(tGATT_TCB *p_tcb, tGATT_CLCB *p_clcb, UINT8 op_code, UINT16 len, UINT8 *p_data) { UINT16 offset = p_clcb->counter; - UINT8 * p= p_data; + UINT8 *p = p_data; UNUSED(op_code); - if (p_clcb->operation == GATTC_OPTYPE_READ) - { - if (p_clcb->op_subtype != GATT_READ_BY_HANDLE) - { + if (p_clcb->operation == GATTC_OPTYPE_READ) { + if (p_clcb->op_subtype != GATT_READ_BY_HANDLE) { p_clcb->counter = len; gatt_end_operation(p_clcb, GATT_SUCCESS, (void *)p); - } - else - { + } else { /* allocate GKI buffer holding up long attribute value */ - if (!p_clcb->p_attr_buf) + if (!p_clcb->p_attr_buf) { p_clcb->p_attr_buf = (UINT8 *)GKI_getbuf(GATT_MAX_ATTR_LEN); + } /* copy attrobute value into cb buffer */ - if (p_clcb->p_attr_buf && offset < GATT_MAX_ATTR_LEN) - { - if ((len + offset) > GATT_MAX_ATTR_LEN) + if (p_clcb->p_attr_buf && offset < GATT_MAX_ATTR_LEN) { + if ((len + offset) > GATT_MAX_ATTR_LEN) { len = GATT_MAX_ATTR_LEN - offset; + } p_clcb->counter += len; @@ -979,43 +912,33 @@ void gatt_process_read_rsp(tGATT_TCB *p_tcb, tGATT_CLCB *p_clcb, UINT8 op_code, /* send next request if needed */ if (len == (p_tcb->payload_size - 1) && /* full packet for read or read blob rsp */ - len + offset < GATT_MAX_ATTR_LEN) - { + len + offset < GATT_MAX_ATTR_LEN) { GATT_TRACE_DEBUG("full pkt issue read blob for remianing bytes old offset=%d len=%d new offset=%d", - offset, len, p_clcb->counter); + offset, len, p_clcb->counter); gatt_act_read(p_clcb, p_clcb->counter); - } - else /* end of request, send callback */ - { + } else { /* end of request, send callback */ gatt_end_operation(p_clcb, GATT_SUCCESS, (void *)p_clcb->p_attr_buf); } - } - else /* exception, should not happen */ - { + } else { /* exception, should not happen */ GATT_TRACE_ERROR("attr offset = %d p_attr_buf = %d ", offset, p_clcb->p_attr_buf); gatt_end_operation(p_clcb, GATT_NO_RESOURCES, (void *)p_clcb->p_attr_buf); } } - } - else - { + } else { if (p_clcb->operation == GATTC_OPTYPE_DISCOVERY && - p_clcb->op_subtype == GATT_DISC_INC_SRVC && - p_clcb->read_uuid128.wait_for_read_rsp ) - { + p_clcb->op_subtype == GATT_DISC_INC_SRVC && + p_clcb->read_uuid128.wait_for_read_rsp ) { p_clcb->s_handle = p_clcb->read_uuid128.next_disc_start_hdl; p_clcb->read_uuid128.wait_for_read_rsp = FALSE; - if (len == LEN_UUID_128) - { + if (len == LEN_UUID_128) { memcpy(p_clcb->read_uuid128.result.value.incl_service.service_type.uu.uuid128, p, len); p_clcb->read_uuid128.result.value.incl_service.service_type.len = LEN_UUID_128; - if ( p_clcb->p_reg->app_cb.p_disc_res_cb) + if ( p_clcb->p_reg->app_cb.p_disc_res_cb) { (*p_clcb->p_reg->app_cb.p_disc_res_cb)(p_clcb->conn_id, p_clcb->op_subtype, &p_clcb->read_uuid128.result); + } gatt_act_discovery(p_clcb) ; - } - else - { + } else { gatt_end_operation(p_clcb, GATT_INVALID_PDU, (void *)p); } } @@ -1053,17 +976,15 @@ void gatt_process_mtu_rsp(tGATT_TCB *p_tcb, tGATT_CLCB *p_clcb, UINT16 len, UINT UINT16 mtu; tGATT_STATUS status = GATT_SUCCESS; - if (len < GATT_MTU_RSP_MIN_LEN) - { + if (len < GATT_MTU_RSP_MIN_LEN) { GATT_TRACE_ERROR("invalid MTU response PDU received, discard."); status = GATT_INVALID_PDU; - } - else - { - STREAM_TO_UINT16(mtu, p_data); + } else { + STREAM_TO_UINT16(mtu, p_data); - if (mtu < p_tcb->payload_size && mtu >= GATT_DEF_BLE_MTU_SIZE) - p_tcb->payload_size = mtu; + if (mtu < p_tcb->payload_size && mtu >= GATT_DEF_BLE_MTU_SIZE) { + p_tcb->payload_size = mtu; + } } l2cble_set_fixed_channel_tx_data_length(p_tcb->peer_bda, L2CAP_ATT_CID, p_tcb->payload_size); @@ -1083,8 +1004,7 @@ UINT8 gatt_cmd_to_rsp_code (UINT8 cmd_code) { UINT8 rsp_code = 0; - if (cmd_code > 1 && cmd_code != GATT_CMD_WRITE) - { + if (cmd_code > 1 && cmd_code != GATT_CMD_WRITE) { rsp_code = cmd_code + 1; } return rsp_code; @@ -1107,37 +1027,31 @@ BOOLEAN gatt_cl_send_next_cmd_inq(tGATT_TCB *p_tcb) tGATT_STATUS att_ret = GATT_SUCCESS; while (!sent && - p_tcb->pending_cl_req != p_tcb->next_slot_inq && - p_cmd->to_send && p_cmd->p_cmd != NULL) - { + p_tcb->pending_cl_req != p_tcb->next_slot_inq && + p_cmd->to_send && p_cmd->p_cmd != NULL) { att_ret = attp_send_msg_to_l2cap(p_tcb, p_cmd->p_cmd); - if (att_ret == GATT_SUCCESS || att_ret == GATT_CONGESTED) - { + if (att_ret == GATT_SUCCESS || att_ret == GATT_CONGESTED) { sent = TRUE; p_cmd->to_send = FALSE; p_cmd->p_cmd = NULL; /* dequeue the request if is write command or sign write */ - if (p_cmd->op_code != GATT_CMD_WRITE && p_cmd->op_code != GATT_SIGN_CMD_WRITE) - { + if (p_cmd->op_code != GATT_CMD_WRITE && p_cmd->op_code != GATT_SIGN_CMD_WRITE) { gatt_start_rsp_timer (p_cmd->clcb_idx); - } - else - { + } else { p_clcb = gatt_cmd_dequeue(p_tcb, &rsp_code); /* if no ack needed, keep sending */ - if (att_ret == GATT_SUCCESS) + if (att_ret == GATT_SUCCESS) { sent = FALSE; + } p_cmd = &p_tcb->cl_cmd_q[p_tcb->pending_cl_req]; /* send command complete callback here */ gatt_end_operation(p_clcb, att_ret, NULL); } - } - else - { + } else { GATT_TRACE_ERROR("gatt_cl_send_next_cmd_inq: L2CAP sent error"); memset(p_cmd, 0, sizeof(tGATT_CMD_Q)); @@ -1166,90 +1080,82 @@ void gatt_client_handle_server_rsp (tGATT_TCB *p_tcb, UINT8 op_code, tGATT_CLCB *p_clcb = NULL; UINT8 rsp_code; - if (op_code != GATT_HANDLE_VALUE_IND && op_code != GATT_HANDLE_VALUE_NOTIF) - { + if (op_code != GATT_HANDLE_VALUE_IND && op_code != GATT_HANDLE_VALUE_NOTIF) { p_clcb = gatt_cmd_dequeue(p_tcb, &rsp_code); rsp_code = gatt_cmd_to_rsp_code(rsp_code); - if (p_clcb == NULL || (rsp_code != op_code && op_code != GATT_RSP_ERROR)) - { + if (p_clcb == NULL || (rsp_code != op_code && op_code != GATT_RSP_ERROR)) { GATT_TRACE_WARNING ("ATT - Ignore wrong response. Receives (%02x) \ Request(%02x) Ignored", op_code, rsp_code); return; - } - else - { + } else { btu_stop_timer (&p_clcb->rsp_timer_ent); p_clcb->retry_count = 0; } } /* the size of the message may not be bigger than the local max PDU size*/ /* The message has to be smaller than the agreed MTU, len does not count op_code */ - if (len >= p_tcb->payload_size) - { + if (len >= p_tcb->payload_size) { GATT_TRACE_ERROR("invalid response/indicate pkt size: %d, PDU size: %d", len + 1, p_tcb->payload_size); if (op_code != GATT_HANDLE_VALUE_NOTIF && - op_code != GATT_HANDLE_VALUE_IND) + op_code != GATT_HANDLE_VALUE_IND) { gatt_end_operation(p_clcb, GATT_ERROR, NULL); - } - else - { - switch (op_code) - { - case GATT_RSP_ERROR: - gatt_process_error_rsp(p_tcb, p_clcb, op_code, len, p_data); - break; + } + } else { + switch (op_code) { + case GATT_RSP_ERROR: + gatt_process_error_rsp(p_tcb, p_clcb, op_code, len, p_data); + break; - case GATT_RSP_MTU: /* 2 bytes mtu */ - gatt_process_mtu_rsp(p_tcb, p_clcb, len ,p_data); - break; + case GATT_RSP_MTU: /* 2 bytes mtu */ + gatt_process_mtu_rsp(p_tcb, p_clcb, len , p_data); + break; - case GATT_RSP_FIND_INFO: - gatt_process_read_info_rsp(p_tcb, p_clcb, op_code, len, p_data); - break; + case GATT_RSP_FIND_INFO: + gatt_process_read_info_rsp(p_tcb, p_clcb, op_code, len, p_data); + break; - case GATT_RSP_READ_BY_TYPE: - case GATT_RSP_READ_BY_GRP_TYPE: - gatt_process_read_by_type_rsp(p_tcb, p_clcb, op_code, len, p_data); - break; + case GATT_RSP_READ_BY_TYPE: + case GATT_RSP_READ_BY_GRP_TYPE: + gatt_process_read_by_type_rsp(p_tcb, p_clcb, op_code, len, p_data); + break; - case GATT_RSP_READ: - case GATT_RSP_READ_BLOB: - case GATT_RSP_READ_MULTI: - gatt_process_read_rsp(p_tcb, p_clcb, op_code, len, p_data); - break; + case GATT_RSP_READ: + case GATT_RSP_READ_BLOB: + case GATT_RSP_READ_MULTI: + gatt_process_read_rsp(p_tcb, p_clcb, op_code, len, p_data); + break; - case GATT_RSP_FIND_TYPE_VALUE: /* disc service with UUID */ - gatt_process_find_type_value_rsp(p_tcb, p_clcb, len, p_data); - break; + case GATT_RSP_FIND_TYPE_VALUE: /* disc service with UUID */ + gatt_process_find_type_value_rsp(p_tcb, p_clcb, len, p_data); + break; - case GATT_RSP_WRITE: - gatt_process_handle_rsp(p_clcb); - break; + case GATT_RSP_WRITE: + gatt_process_handle_rsp(p_clcb); + break; - case GATT_RSP_PREPARE_WRITE: - gatt_process_prep_write_rsp(p_tcb, p_clcb, op_code, len, p_data); - break; + case GATT_RSP_PREPARE_WRITE: + gatt_process_prep_write_rsp(p_tcb, p_clcb, op_code, len, p_data); + break; - case GATT_RSP_EXEC_WRITE: - gatt_end_operation(p_clcb, p_clcb->status, NULL); - break; + case GATT_RSP_EXEC_WRITE: + gatt_end_operation(p_clcb, p_clcb->status, NULL); + break; - case GATT_HANDLE_VALUE_NOTIF: - case GATT_HANDLE_VALUE_IND: - gatt_process_notification(p_tcb, op_code, len, p_data); - break; + case GATT_HANDLE_VALUE_NOTIF: + case GATT_HANDLE_VALUE_IND: + gatt_process_notification(p_tcb, op_code, len, p_data); + break; - default: - GATT_TRACE_ERROR("Unknown opcode = %d", op_code); - break; + default: + GATT_TRACE_ERROR("Unknown opcode = %d", op_code); + break; } } - if (op_code != GATT_HANDLE_VALUE_IND && op_code != GATT_HANDLE_VALUE_NOTIF) - { + if (op_code != GATT_HANDLE_VALUE_IND && op_code != GATT_HANDLE_VALUE_NOTIF) { gatt_cl_send_next_cmd_inq(p_tcb); } diff --git a/components/bt/bluedroid/stack/gatt/gatt_db.c b/components/bt/bluedroid/stack/gatt/gatt_db.c old mode 100755 new mode 100644 index 0efee48985..2e74c7d2df --- a/components/bt/bluedroid/stack/gatt/gatt_db.c +++ b/components/bt/bluedroid/stack/gatt/gatt_db.c @@ -45,7 +45,7 @@ static BOOLEAN copy_extra_byte_in_db(tGATT_SVC_DB *p_db, void **p_dst, UINT16 le static BOOLEAN gatts_db_add_service_declaration(tGATT_SVC_DB *p_db, tBT_UUID *p_service, BOOLEAN is_pri); static tGATT_STATUS gatts_send_app_read_request(tGATT_TCB *p_tcb, UINT8 op_code, - UINT16 handle, UINT16 offset, UINT32 trans_id); + UINT16 handle, UINT16 offset, UINT32 trans_id); /******************************************************************************* ** @@ -64,8 +64,7 @@ BOOLEAN gatts_init_service_db (tGATT_SVC_DB *p_db, tBT_UUID *p_service, BOOLEAN { GKI_init_q(&p_db->svc_buffer); - if (!allocate_svc_db_buf(p_db)) - { + if (!allocate_svc_db_buf(p_db)) { GATT_TRACE_ERROR("gatts_init_service_db failed, no resources"); return FALSE; } @@ -92,16 +91,13 @@ BOOLEAN gatts_init_service_db (tGATT_SVC_DB *p_db, tBT_UUID *p_service, BOOLEAN ** Returns Status of te operation. ** *******************************************************************************/ -tBT_UUID * gatts_get_service_uuid (tGATT_SVC_DB *p_db) +tBT_UUID *gatts_get_service_uuid (tGATT_SVC_DB *p_db) { - if (!p_db || !p_db->p_attr_list) - { + if (!p_db || !p_db->p_attr_list) { GATT_TRACE_ERROR("service DB empty"); return NULL; - } - else - { + } else { return &((tGATT_ATTR16 *)p_db->p_attr_list)->p_value->uuid; } } @@ -116,70 +112,62 @@ tBT_UUID * gatts_get_service_uuid (tGATT_SVC_DB *p_db) ** *******************************************************************************/ static tGATT_STATUS gatts_check_attr_readability(tGATT_ATTR16 *p_attr, - UINT16 offset, - BOOLEAN read_long, - tGATT_SEC_FLAG sec_flag, - UINT8 key_size) + UINT16 offset, + BOOLEAN read_long, + tGATT_SEC_FLAG sec_flag, + UINT8 key_size) { UINT16 min_key_size; tGATT_PERM perm = p_attr->permission; UNUSED(offset); min_key_size = (((perm & GATT_ENCRYPT_KEY_SIZE_MASK) >> 12)); - if (min_key_size != 0 ) - { - min_key_size +=6; + if (min_key_size != 0 ) { + min_key_size += 6; } - if (!(perm & GATT_READ_ALLOWED)) - { + if (!(perm & GATT_READ_ALLOWED)) { GATT_TRACE_ERROR( "GATT_READ_NOT_PERMIT"); return GATT_READ_NOT_PERMIT; } if ((perm & GATT_READ_AUTH_REQUIRED ) && !(sec_flag & GATT_SEC_FLAG_LKEY_UNAUTHED) && - !(sec_flag & BTM_SEC_FLAG_ENCRYPTED)) - { + !(sec_flag & BTM_SEC_FLAG_ENCRYPTED)) { GATT_TRACE_ERROR( "GATT_INSUF_AUTHENTICATION"); return GATT_INSUF_AUTHENTICATION; } - if ((perm & GATT_READ_MITM_REQUIRED ) && !(sec_flag & GATT_SEC_FLAG_LKEY_AUTHED)) - { + if ((perm & GATT_READ_MITM_REQUIRED ) && !(sec_flag & GATT_SEC_FLAG_LKEY_AUTHED)) { GATT_TRACE_ERROR( "GATT_INSUF_AUTHENTICATION: MITM Required"); return GATT_INSUF_AUTHENTICATION; } - if ((perm & GATT_READ_ENCRYPTED_REQUIRED ) && !(sec_flag & GATT_SEC_FLAG_ENCRYPTED)) - { + if ((perm & GATT_READ_ENCRYPTED_REQUIRED ) && !(sec_flag & GATT_SEC_FLAG_ENCRYPTED)) { GATT_TRACE_ERROR( "GATT_INSUF_ENCRYPTION"); return GATT_INSUF_ENCRYPTION; } - if ( (perm & GATT_READ_ENCRYPTED_REQUIRED) && (sec_flag & GATT_SEC_FLAG_ENCRYPTED) && (key_size < min_key_size)) - { + if ( (perm & GATT_READ_ENCRYPTED_REQUIRED) && (sec_flag & GATT_SEC_FLAG_ENCRYPTED) && (key_size < min_key_size)) { GATT_TRACE_ERROR( "GATT_INSUF_KEY_SIZE"); return GATT_INSUF_KEY_SIZE; } - if (read_long) - { - switch (p_attr->uuid) - { - case GATT_UUID_PRI_SERVICE: - case GATT_UUID_SEC_SERVICE: - case GATT_UUID_CHAR_DECLARE: - case GATT_UUID_INCLUDE_SERVICE: - case GATT_UUID_CHAR_EXT_PROP: - case GATT_UUID_CHAR_CLIENT_CONFIG: - case GATT_UUID_CHAR_SRVR_CONFIG: - case GATT_UUID_CHAR_PRESENT_FORMAT: - GATT_TRACE_ERROR("GATT_NOT_LONG"); - return GATT_NOT_LONG; + if (read_long) { + switch (p_attr->uuid) { + case GATT_UUID_PRI_SERVICE: + case GATT_UUID_SEC_SERVICE: + case GATT_UUID_CHAR_DECLARE: + case GATT_UUID_INCLUDE_SERVICE: + case GATT_UUID_CHAR_EXT_PROP: + case GATT_UUID_CHAR_CLIENT_CONFIG: + case GATT_UUID_CHAR_SRVR_CONFIG: + case GATT_UUID_CHAR_PRESENT_FORMAT: + GATT_TRACE_ERROR("GATT_NOT_LONG"); + return GATT_NOT_LONG; - default: - break; + default: + break; } } @@ -216,82 +204,70 @@ static tGATT_STATUS read_attr_value (void *p_attr, UINT16 len = 0, uuid16 = 0; UINT8 *p = *p_data; tGATT_STATUS status; - tGATT_ATTR16 *p_attr16 = (tGATT_ATTR16 *)p_attr; + tGATT_ATTR16 *p_attr16 = (tGATT_ATTR16 *)p_attr; GATT_TRACE_DEBUG("read_attr_value uuid=0x%04x perm=0x%0x sec_flag=0x%x offset=%d read_long=%d", - p_attr16->uuid, - p_attr16->permission, - sec_flag, - offset, - read_long); + p_attr16->uuid, + p_attr16->permission, + sec_flag, + offset, + read_long); status = gatts_check_attr_readability((tGATT_ATTR16 *)p_attr, offset, read_long, sec_flag, key_size); - if (status != GATT_SUCCESS) + if (status != GATT_SUCCESS) { return status; + } - if (p_attr16->uuid_type == GATT_ATTR_UUID_TYPE_16) + if (p_attr16->uuid_type == GATT_ATTR_UUID_TYPE_16) { uuid16 = p_attr16->uuid; + } status = GATT_NO_RESOURCES; - if (uuid16 == GATT_UUID_PRI_SERVICE || uuid16 == GATT_UUID_SEC_SERVICE) - { + if (uuid16 == GATT_UUID_PRI_SERVICE || uuid16 == GATT_UUID_SEC_SERVICE) { len = p_attr16->p_value->uuid.len; - if (mtu >= p_attr16->p_value->uuid.len) - { + if (mtu >= p_attr16->p_value->uuid.len) { gatt_build_uuid_to_stream(&p, p_attr16->p_value->uuid); status = GATT_SUCCESS; } - } - else if (uuid16 == GATT_UUID_CHAR_DECLARE) - { - len = (((tGATT_ATTR16 *)(p_attr16->p_next))->uuid_type == GATT_ATTR_UUID_TYPE_16) ? 5 :19; + } else if (uuid16 == GATT_UUID_CHAR_DECLARE) { + len = (((tGATT_ATTR16 *)(p_attr16->p_next))->uuid_type == GATT_ATTR_UUID_TYPE_16) ? 5 : 19; - if (mtu >= len) - { + if (mtu >= len) { UINT8_TO_STREAM(p, p_attr16->p_value->char_decl.property); UINT16_TO_STREAM(p, p_attr16->p_value->char_decl.char_val_handle); - if (((tGATT_ATTR16 *)(p_attr16->p_next))->uuid_type == GATT_ATTR_UUID_TYPE_16) - { + if (((tGATT_ATTR16 *)(p_attr16->p_next))->uuid_type == GATT_ATTR_UUID_TYPE_16) { UINT16_TO_STREAM(p, ((tGATT_ATTR16 *)(p_attr16->p_next))->uuid); } /* convert a 32bits UUID to 128 bits */ - else if (((tGATT_ATTR32 *)(p_attr16->p_next))->uuid_type == GATT_ATTR_UUID_TYPE_32) - { + else if (((tGATT_ATTR32 *)(p_attr16->p_next))->uuid_type == GATT_ATTR_UUID_TYPE_32) { gatt_convert_uuid32_to_uuid128 (p, ((tGATT_ATTR32 *)(p_attr16->p_next))->uuid); p += LEN_UUID_128; - } - else - { + } else { ARRAY_TO_STREAM (p, ((tGATT_ATTR128 *)(p_attr16->p_next))->uuid, LEN_UUID_128); } status = GATT_SUCCESS; } - } - else if (uuid16 == GATT_UUID_INCLUDE_SERVICE) - { - if (p_attr16->p_value->incl_handle.service_type.len == LEN_UUID_16) + } else if (uuid16 == GATT_UUID_INCLUDE_SERVICE) { + if (p_attr16->p_value->incl_handle.service_type.len == LEN_UUID_16) { len = 6; - else + } else { len = 4; + } - if (mtu >= len) - { + if (mtu >= len) { UINT16_TO_STREAM(p, p_attr16->p_value->incl_handle.s_handle); UINT16_TO_STREAM(p, p_attr16->p_value->incl_handle.e_handle); - if (p_attr16->p_value->incl_handle.service_type.len == LEN_UUID_16) - { + if (p_attr16->p_value->incl_handle.service_type.len == LEN_UUID_16) { UINT16_TO_STREAM(p, p_attr16->p_value->incl_handle.service_type.uu.uuid16); } status = GATT_SUCCESS; } - } - else /* characteristic description or characteristic value */ - { + } else { /* characteristic description or characteristic value */ status = GATT_PENDING; } @@ -319,17 +295,17 @@ static tGATT_STATUS read_attr_value (void *p_attr, ** *******************************************************************************/ tGATT_STATUS gatts_db_read_attr_value_by_type (tGATT_TCB *p_tcb, - tGATT_SVC_DB *p_db, - UINT8 op_code, - BT_HDR *p_rsp, - UINT16 s_handle, - UINT16 e_handle, - tBT_UUID type, - UINT16 *p_len, - tGATT_SEC_FLAG sec_flag, - UINT8 key_size, - UINT32 trans_id, - UINT16 *p_cur_handle) + tGATT_SVC_DB *p_db, + UINT8 op_code, + BT_HDR *p_rsp, + UINT16 s_handle, + UINT16 e_handle, + tBT_UUID type, + UINT16 *p_len, + tGATT_SEC_FLAG sec_flag, + UINT8 key_size, + UINT32 trans_id, + UINT16 *p_cur_handle) { tGATT_STATUS status = GATT_NOT_FOUND; tGATT_ATTR16 *p_attr; @@ -340,66 +316,50 @@ tGATT_STATUS gatts_db_read_attr_value_by_type (tGATT_TCB *p_tcb, UINT8 flag; #endif - if (p_db && p_db->p_attr_list) - { + if (p_db && p_db->p_attr_list) { p_attr = (tGATT_ATTR16 *)p_db->p_attr_list; - while (p_attr && p_attr->handle <= e_handle) - { - if (p_attr->uuid_type == GATT_ATTR_UUID_TYPE_16) - { + while (p_attr && p_attr->handle <= e_handle) { + if (p_attr->uuid_type == GATT_ATTR_UUID_TYPE_16) { attr_uuid.len = LEN_UUID_16; attr_uuid.uu.uuid16 = p_attr->uuid; - } - else if (p_attr->uuid_type == GATT_ATTR_UUID_TYPE_32) - { + } else if (p_attr->uuid_type == GATT_ATTR_UUID_TYPE_32) { attr_uuid.len = LEN_UUID_32; attr_uuid.uu.uuid32 = ((tGATT_ATTR32 *)p_attr)->uuid; - } - else - { + } else { attr_uuid.len = LEN_UUID_128; memcpy(attr_uuid.uu.uuid128, ((tGATT_ATTR128 *)p_attr)->uuid, LEN_UUID_128); } - if (p_attr->handle >= s_handle && gatt_uuid_compare(type, attr_uuid)) - { - if (*p_len <= 2) - { + if (p_attr->handle >= s_handle && gatt_uuid_compare(type, attr_uuid)) { + if (*p_len <= 2) { status = GATT_NO_RESOURCES; break; } UINT16_TO_STREAM (p, p_attr->handle); - status = read_attr_value ((void *)p_attr, 0, &p, FALSE, (UINT16)(*p_len -2), &len, sec_flag, key_size); + status = read_attr_value ((void *)p_attr, 0, &p, FALSE, (UINT16)(*p_len - 2), &len, sec_flag, key_size); - if (status == GATT_PENDING) - { + if (status == GATT_PENDING) { status = gatts_send_app_read_request(p_tcb, op_code, p_attr->handle, 0, trans_id); /* one callback at a time */ break; - } - else if (status == GATT_SUCCESS) - { - if (p_rsp->offset == 0) + } else if (status == GATT_SUCCESS) { + if (p_rsp->offset == 0) { p_rsp->offset = len + 2; + } - if (p_rsp->offset == len + 2) - { + if (p_rsp->offset == len + 2) { p_rsp->len += (len + 2); *p_len -= (len + 2); - } - else - { + } else { GATT_TRACE_ERROR("format mismatch"); status = GATT_NO_RESOURCES; break; } - } - else - { + } else { *p_cur_handle = p_attr->handle; break; } @@ -409,18 +369,14 @@ tGATT_STATUS gatts_db_read_attr_value_by_type (tGATT_TCB *p_tcb, } #if (defined(BLE_DELAY_REQUEST_ENC) && (BLE_DELAY_REQUEST_ENC == TRUE)) - if (BTM_GetSecurityFlags(p_tcb->peer_bda, &flag)) - { + if (BTM_GetSecurityFlags(p_tcb->peer_bda, &flag)) { if ((p_tcb->att_lcid == L2CAP_ATT_CID) && (status == GATT_PENDING) && - (type.uu.uuid16 == GATT_UUID_GAP_DEVICE_NAME)) - { + (type.uu.uuid16 == GATT_UUID_GAP_DEVICE_NAME)) { if ((flag & (BTM_SEC_LINK_KEY_KNOWN | BTM_SEC_FLAG_ENCRYPTED)) == - BTM_SEC_LINK_KEY_KNOWN) - { + BTM_SEC_LINK_KEY_KNOWN) { tACL_CONN *p; p = btm_bda_to_acl(p_tcb->peer_bda, BT_TRANSPORT_LE); - if ((p != NULL) && (p->link_role == BTM_ROLE_MASTER)) - { + if ((p != NULL) && (p->link_role == BTM_ROLE_MASTER)) { tBTM_BLE_SEC_ACT sec_act = BTM_BLE_SEC_ENCRYPT; btm_ble_set_encryption(p_tcb->peer_bda, &sec_act, p->link_role); } @@ -450,26 +406,21 @@ UINT16 gatts_add_included_service (tGATT_SVC_DB *p_db, UINT16 s_handle, UINT16 e tBT_UUID uuid = {LEN_UUID_16, {GATT_UUID_INCLUDE_SERVICE}}; GATT_TRACE_DEBUG("gatts_add_included_service: s_hdl = 0x%04x e_hdl = 0x%04x uuid = 0x%04x", - s_handle, e_handle, service.uu.uuid16); + s_handle, e_handle, service.uu.uuid16); - if (service.len == 0 || s_handle == 0 || e_handle == 0) - { + if (service.len == 0 || s_handle == 0 || e_handle == 0) { GATT_TRACE_ERROR("gatts_add_included_service Illegal Params."); return 0; } - if ((p_attr = (tGATT_ATTR16 *) allocate_attr_in_db(p_db, &uuid, GATT_PERM_READ)) != NULL) - { - if (copy_extra_byte_in_db(p_db, (void **)&p_attr->p_value, sizeof(tGATT_INCL_SRVC))) - { + if ((p_attr = (tGATT_ATTR16 *) allocate_attr_in_db(p_db, &uuid, GATT_PERM_READ)) != NULL) { + if (copy_extra_byte_in_db(p_db, (void **)&p_attr->p_value, sizeof(tGATT_INCL_SRVC))) { p_attr->p_value->incl_handle.s_handle = s_handle; p_attr->p_value->incl_handle.e_handle = e_handle; memcpy(&p_attr->p_value->incl_handle.service_type, &service, sizeof(tBT_UUID)); return p_attr->handle; - } - else - { + } else { deallocate_attr_in_db(p_db, p_attr); } } @@ -494,25 +445,22 @@ UINT16 gatts_add_included_service (tGATT_SVC_DB *p_db, UINT16 s_handle, UINT16 e *******************************************************************************/ UINT16 gatts_add_characteristic (tGATT_SVC_DB *p_db, tGATT_PERM perm, tGATT_CHAR_PROP property, - tBT_UUID * p_char_uuid) + tBT_UUID *p_char_uuid) { tGATT_ATTR16 *p_char_decl, *p_char_val; tBT_UUID uuid = {LEN_UUID_16, {GATT_UUID_CHAR_DECLARE}}; GATT_TRACE_DEBUG("gatts_add_characteristic perm=0x%0x property=0x%0x", perm, property); - if ((p_char_decl = (tGATT_ATTR16 *)allocate_attr_in_db(p_db, &uuid, GATT_PERM_READ)) != NULL) - { - if (!copy_extra_byte_in_db(p_db, (void **)&p_char_decl->p_value, sizeof(tGATT_CHAR_DECL))) - { + if ((p_char_decl = (tGATT_ATTR16 *)allocate_attr_in_db(p_db, &uuid, GATT_PERM_READ)) != NULL) { + if (!copy_extra_byte_in_db(p_db, (void **)&p_char_decl->p_value, sizeof(tGATT_CHAR_DECL))) { deallocate_attr_in_db(p_db, p_char_decl); return 0; } p_char_val = (tGATT_ATTR16 *)allocate_attr_in_db(p_db, p_char_uuid, perm); - if (p_char_val == NULL) - { + if (p_char_val == NULL) { deallocate_attr_in_db(p_db, p_char_decl); return 0; } @@ -541,32 +489,39 @@ UINT8 gatt_convertchar_descr_type(tBT_UUID *p_descr_uuid) { tBT_UUID std_descr = {LEN_UUID_16, {GATT_UUID_CHAR_EXT_PROP}}; - if (gatt_uuid_compare(std_descr, * p_descr_uuid)) + if (gatt_uuid_compare(std_descr, * p_descr_uuid)) { return GATT_DESCR_EXT_DSCPTOR; + } std_descr.uu.uuid16 ++; - if (gatt_uuid_compare(std_descr, * p_descr_uuid)) + if (gatt_uuid_compare(std_descr, * p_descr_uuid)) { return GATT_DESCR_USER_DSCPTOR; + } std_descr.uu.uuid16 ++; - if (gatt_uuid_compare(std_descr, * p_descr_uuid)) + if (gatt_uuid_compare(std_descr, * p_descr_uuid)) { return GATT_DESCR_CLT_CONFIG; + } std_descr.uu.uuid16 ++; - if (gatt_uuid_compare(std_descr, * p_descr_uuid)) + if (gatt_uuid_compare(std_descr, * p_descr_uuid)) { return GATT_DESCR_SVR_CONFIG; + } std_descr.uu.uuid16 ++; - if (gatt_uuid_compare(std_descr, * p_descr_uuid)) + if (gatt_uuid_compare(std_descr, * p_descr_uuid)) { return GATT_DESCR_PRES_FORMAT; + } std_descr.uu.uuid16 ++; - if (gatt_uuid_compare(std_descr, * p_descr_uuid)) + if (gatt_uuid_compare(std_descr, * p_descr_uuid)) { return GATT_DESCR_AGGR_FORMAT; + } std_descr.uu.uuid16 ++; - if (gatt_uuid_compare(std_descr, * p_descr_uuid)) + if (gatt_uuid_compare(std_descr, * p_descr_uuid)) { return GATT_DESCR_VALID_RANGE; + } return GATT_DESCR_UNKNOWN; @@ -587,7 +542,7 @@ UINT8 gatt_convertchar_descr_type(tBT_UUID *p_descr_uuid) ** *******************************************************************************/ UINT16 gatts_add_char_descr (tGATT_SVC_DB *p_db, tGATT_PERM perm, - tBT_UUID * p_descr_uuid) + tBT_UUID *p_descr_uuid) { tGATT_ATTR16 *p_char_dscptr; @@ -595,15 +550,12 @@ UINT16 gatts_add_char_descr (tGATT_SVC_DB *p_db, tGATT_PERM perm, /* Add characteristic descriptors */ if ((p_char_dscptr = (tGATT_ATTR16 *)allocate_attr_in_db(p_db, - p_descr_uuid, - perm)) - == NULL) - { + p_descr_uuid, + perm)) + == NULL) { GATT_TRACE_DEBUG("gatts_add_char_descr Fail for adding char descriptors."); return 0; - } - else - { + } else { return p_char_dscptr->handle; } } @@ -631,33 +583,29 @@ UINT16 gatts_add_char_descr (tGATT_SVC_DB *p_db, tGATT_PERM perm, ** *******************************************************************************/ tGATT_STATUS gatts_read_attr_value_by_handle(tGATT_TCB *p_tcb, - tGATT_SVC_DB *p_db, - UINT8 op_code, - UINT16 handle, UINT16 offset, - UINT8 *p_value, UINT16 *p_len, - UINT16 mtu, - tGATT_SEC_FLAG sec_flag, - UINT8 key_size, - UINT32 trans_id) + tGATT_SVC_DB *p_db, + UINT8 op_code, + UINT16 handle, UINT16 offset, + UINT8 *p_value, UINT16 *p_len, + UINT16 mtu, + tGATT_SEC_FLAG sec_flag, + UINT8 key_size, + UINT32 trans_id) { tGATT_STATUS status = GATT_NOT_FOUND; tGATT_ATTR16 *p_attr; UINT8 *pp = p_value; - if (p_db && p_db->p_attr_list) - { + if (p_db && p_db->p_attr_list) { p_attr = (tGATT_ATTR16 *)p_db->p_attr_list; - while (p_attr && handle >= p_attr->handle) - { - if (p_attr->handle == handle) - { + while (p_attr && handle >= p_attr->handle) { + if (p_attr->handle == handle) { status = read_attr_value (p_attr, offset, &pp, (BOOLEAN)(op_code == GATT_REQ_READ_BLOB), mtu, p_len, sec_flag, key_size); - if (status == GATT_PENDING) - { + if (status == GATT_PENDING) { status = gatts_send_app_read_request(p_tcb, op_code, p_attr->handle, offset, trans_id); } break; @@ -697,14 +645,11 @@ tGATT_STATUS gatts_read_attr_perm_check(tGATT_SVC_DB *p_db, tGATT_STATUS status = GATT_NOT_FOUND; tGATT_ATTR16 *p_attr; - if (p_db && p_db->p_attr_list) - { + if (p_db && p_db->p_attr_list) { p_attr = (tGATT_ATTR16 *)p_db->p_attr_list; - while (p_attr && handle >= p_attr->handle) - { - if (p_attr->handle == handle) - { + while (p_attr && handle >= p_attr->handle) { + if (p_attr->handle == handle) { status = gatts_check_attr_readability (p_attr, 0, is_long, sec_flag, key_size); @@ -735,8 +680,8 @@ tGATT_STATUS gatts_read_attr_perm_check(tGATT_SVC_DB *p_db, ** *******************************************************************************/ tGATT_STATUS gatts_write_attr_perm_check (tGATT_SVC_DB *p_db, UINT8 op_code, - UINT16 handle, UINT16 offset, UINT8 *p_data, - UINT16 len, tGATT_SEC_FLAG sec_flag, UINT8 key_size) + UINT16 handle, UINT16 offset, UINT8 *p_data, + UINT16 len, tGATT_SEC_FLAG sec_flag, UINT8 key_size) { tGATT_STATUS status = GATT_NOT_FOUND; tGATT_ATTR16 *p_attr; @@ -745,106 +690,83 @@ tGATT_STATUS gatts_write_attr_perm_check (tGATT_SVC_DB *p_db, UINT8 op_code, UINT16 min_key_size; GATT_TRACE_DEBUG( "gatts_write_attr_perm_check op_code=0x%0x handle=0x%04x offset=%d len=%d sec_flag=0x%0x key_size=%d", - op_code, handle, offset, len, sec_flag, key_size); + op_code, handle, offset, len, sec_flag, key_size); - if (p_db != NULL) - { + if (p_db != NULL) { p_attr = (tGATT_ATTR16 *) p_db->p_attr_list; - while (p_attr != NULL) - { - if (p_attr->handle == handle) - { + while (p_attr != NULL) { + if (p_attr->handle == handle) { perm = p_attr->permission; min_key_size = (((perm & GATT_ENCRYPT_KEY_SIZE_MASK) >> 12)); - if (min_key_size != 0 ) - { - min_key_size +=6; + if (min_key_size != 0 ) { + min_key_size += 6; } GATT_TRACE_DEBUG( "gatts_write_attr_perm_check p_attr->permission =0x%04x min_key_size==0x%04x", - p_attr->permission, - min_key_size); + p_attr->permission, + min_key_size); if ((op_code == GATT_CMD_WRITE || op_code == GATT_REQ_WRITE) - && (perm & GATT_WRITE_SIGNED_PERM)) - { + && (perm & GATT_WRITE_SIGNED_PERM)) { /* use the rules for the mixed security see section 10.2.3*/ /* use security mode 1 level 2 when the following condition follows */ /* LE security mode 2 level 1 and LE security mode 1 level 2 */ - if ((perm & GATT_PERM_WRITE_SIGNED) && (perm & GATT_PERM_WRITE_ENCRYPTED)) - { + if ((perm & GATT_PERM_WRITE_SIGNED) && (perm & GATT_PERM_WRITE_ENCRYPTED)) { perm = GATT_PERM_WRITE_ENCRYPTED; } /* use security mode 1 level 3 when the following condition follows */ /* LE security mode 2 level 2 and security mode 1 and LE */ else if (((perm & GATT_PERM_WRITE_SIGNED_MITM) && (perm & GATT_PERM_WRITE_ENCRYPTED)) || - /* LE security mode 2 and security mode 1 level 3 */ - ((perm & GATT_WRITE_SIGNED_PERM) && (perm & GATT_PERM_WRITE_ENC_MITM))) - { + /* LE security mode 2 and security mode 1 level 3 */ + ((perm & GATT_WRITE_SIGNED_PERM) && (perm & GATT_PERM_WRITE_ENC_MITM))) { perm = GATT_PERM_WRITE_ENC_MITM; } } - if ((op_code == GATT_SIGN_CMD_WRITE) && !(perm & GATT_WRITE_SIGNED_PERM)) - { + if ((op_code == GATT_SIGN_CMD_WRITE) && !(perm & GATT_WRITE_SIGNED_PERM)) { status = GATT_WRITE_NOT_PERMIT; GATT_TRACE_DEBUG( "gatts_write_attr_perm_check - sign cmd write not allowed"); } - if ((op_code == GATT_SIGN_CMD_WRITE) && (sec_flag & GATT_SEC_FLAG_ENCRYPTED)) - { + if ((op_code == GATT_SIGN_CMD_WRITE) && (sec_flag & GATT_SEC_FLAG_ENCRYPTED)) { status = GATT_INVALID_PDU; GATT_TRACE_ERROR( "gatts_write_attr_perm_check - Error!! sign cmd write sent on a encypted link"); - } - else if (!(perm & GATT_WRITE_ALLOWED)) - { + } else if (!(perm & GATT_WRITE_ALLOWED)) { status = GATT_WRITE_NOT_PERMIT; GATT_TRACE_ERROR( "gatts_write_attr_perm_check - GATT_WRITE_NOT_PERMIT"); } /* require authentication, but not been authenticated */ - else if ((perm & GATT_WRITE_AUTH_REQUIRED ) && !(sec_flag & GATT_SEC_FLAG_LKEY_UNAUTHED)) - { + else if ((perm & GATT_WRITE_AUTH_REQUIRED ) && !(sec_flag & GATT_SEC_FLAG_LKEY_UNAUTHED)) { status = GATT_INSUF_AUTHENTICATION; GATT_TRACE_ERROR( "gatts_write_attr_perm_check - GATT_INSUF_AUTHENTICATION"); - } - else if ((perm & GATT_WRITE_MITM_REQUIRED ) && !(sec_flag & GATT_SEC_FLAG_LKEY_AUTHED)) - { + } else if ((perm & GATT_WRITE_MITM_REQUIRED ) && !(sec_flag & GATT_SEC_FLAG_LKEY_AUTHED)) { status = GATT_INSUF_AUTHENTICATION; GATT_TRACE_ERROR( "gatts_write_attr_perm_check - GATT_INSUF_AUTHENTICATION: MITM required"); - } - else if ((perm & GATT_WRITE_ENCRYPTED_PERM ) && !(sec_flag & GATT_SEC_FLAG_ENCRYPTED)) - { + } else if ((perm & GATT_WRITE_ENCRYPTED_PERM ) && !(sec_flag & GATT_SEC_FLAG_ENCRYPTED)) { status = GATT_INSUF_ENCRYPTION; GATT_TRACE_ERROR( "gatts_write_attr_perm_check - GATT_INSUF_ENCRYPTION"); - } - else if ((perm & GATT_WRITE_ENCRYPTED_PERM ) && (sec_flag & GATT_SEC_FLAG_ENCRYPTED) && (key_size < min_key_size)) - { + } else if ((perm & GATT_WRITE_ENCRYPTED_PERM ) && (sec_flag & GATT_SEC_FLAG_ENCRYPTED) && (key_size < min_key_size)) { status = GATT_INSUF_KEY_SIZE; GATT_TRACE_ERROR( "gatts_write_attr_perm_check - GATT_INSUF_KEY_SIZE"); } /* LE security mode 2 attribute */ else if (perm & GATT_WRITE_SIGNED_PERM && op_code != GATT_SIGN_CMD_WRITE && !(sec_flag & GATT_SEC_FLAG_ENCRYPTED) - && (perm & GATT_WRITE_ALLOWED) == 0) - { + && (perm & GATT_WRITE_ALLOWED) == 0) { status = GATT_INSUF_AUTHENTICATION; GATT_TRACE_ERROR( "gatts_write_attr_perm_check - GATT_INSUF_AUTHENTICATION: LE security mode 2 required"); - } - else /* writable: must be char value declaration or char descritpors */ - { - if(p_attr->uuid_type == GATT_ATTR_UUID_TYPE_16) - { - switch (p_attr->uuid) - { + } else { /* writable: must be char value declaration or char descritpors */ + if (p_attr->uuid_type == GATT_ATTR_UUID_TYPE_16) { + switch (p_attr->uuid) { case GATT_UUID_CHAR_PRESENT_FORMAT:/* should be readable only */ case GATT_UUID_CHAR_EXT_PROP:/* should be readable only */ case GATT_UUID_CHAR_AGG_FORMAT: /* should be readable only */ - case GATT_UUID_CHAR_VALID_RANGE: + case GATT_UUID_CHAR_VALID_RANGE: status = GATT_WRITE_NOT_PERMIT; break; case GATT_UUID_CHAR_CLIENT_CONFIG: -/* coverity[MISSING_BREAK] */ -/* intnended fall through, ignored */ - /* fall through */ + /* coverity[MISSING_BREAK] */ + /* intnended fall through, ignored */ + /* fall through */ case GATT_UUID_CHAR_SRVR_CONFIG: max_size = 2; case GATT_UUID_CHAR_DESCRIPTION: @@ -852,19 +774,14 @@ tGATT_STATUS gatts_write_attr_perm_check (tGATT_SVC_DB *p_db, UINT8 op_code, status = GATT_SUCCESS; break; } - } - else if (p_attr->uuid_type == GATT_ATTR_UUID_TYPE_128 || - p_attr->uuid_type == GATT_ATTR_UUID_TYPE_32) - { - status = GATT_SUCCESS; - } - else - { + } else if (p_attr->uuid_type == GATT_ATTR_UUID_TYPE_128 || + p_attr->uuid_type == GATT_ATTR_UUID_TYPE_32) { + status = GATT_SUCCESS; + } else { status = GATT_INVALID_PDU; } - if (p_data == NULL && len > 0) - { + if (p_data == NULL && len > 0) { status = GATT_INVALID_PDU; } /* these attribute does not allow write blob */ @@ -874,26 +791,21 @@ tGATT_STATUS gatts_write_attr_perm_check (tGATT_SVC_DB *p_db, UINT8 op_code, p_attr->uuid == GATT_UUID_CHAR_SRVR_CONFIG) ) // btla-specific -- { - if (op_code == GATT_REQ_PREPARE_WRITE && offset != 0) /* does not allow write blob */ - { + if (op_code == GATT_REQ_PREPARE_WRITE && offset != 0) { /* does not allow write blob */ status = GATT_NOT_LONG; GATT_TRACE_ERROR( "gatts_write_attr_perm_check - GATT_NOT_LONG"); - } - else if (len != max_size) /* data does not match the required format */ - { + } else if (len != max_size) { /* data does not match the required format */ status = GATT_INVALID_ATTR_LEN; GATT_TRACE_ERROR( "gatts_write_attr_perm_check - GATT_INVALID_PDU"); - } - else - { + } else { status = GATT_SUCCESS; } } } break; - } - else + } else { p_attr = (tGATT_ATTR16 *)p_attr->p_next; + } } } @@ -922,30 +834,27 @@ static void *allocate_attr_in_db(tGATT_SVC_DB *p_db, tBT_UUID *p_uuid, tGATT_PER tGATT_ATTR128 *p_attr128 = NULL; UINT16 len = sizeof(tGATT_ATTR128); - if (p_uuid == NULL) - { + if (p_uuid == NULL) { GATT_TRACE_ERROR("illegal UUID"); return NULL; } - if (p_uuid->len == LEN_UUID_16) + if (p_uuid->len == LEN_UUID_16) { len = sizeof(tGATT_ATTR16); - else if (p_uuid->len == LEN_UUID_32) + } else if (p_uuid->len == LEN_UUID_32) { len = sizeof(tGATT_ATTR32); + } - GATT_TRACE_DEBUG("allocate attr %d bytes ",len); + GATT_TRACE_DEBUG("allocate attr %d bytes ", len); - if (p_db->end_handle <= p_db->next_handle) - { + if (p_db->end_handle <= p_db->next_handle) { GATT_TRACE_DEBUG("handle space full. handle_max = %d next_handle = %d", - p_db->end_handle, p_db->next_handle); + p_db->end_handle, p_db->next_handle); return NULL; } - if (p_db->mem_free < len) - { - if (!allocate_svc_db_buf(p_db)) - { + if (p_db->mem_free < len) { + if (!allocate_svc_db_buf(p_db)) { GATT_TRACE_ERROR("allocate_attr_in_db failed, no resources"); return NULL; } @@ -953,19 +862,14 @@ static void *allocate_attr_in_db(tGATT_SVC_DB *p_db, tBT_UUID *p_uuid, tGATT_PER memset(p_db->p_free_mem, 0, len); p_attr16 = (tGATT_ATTR16 *) p_db->p_free_mem; - if (p_uuid->len == LEN_UUID_16 && p_uuid->uu.uuid16 != GATT_ILLEGAL_UUID) - { + if (p_uuid->len == LEN_UUID_16 && p_uuid->uu.uuid16 != GATT_ILLEGAL_UUID) { p_attr16->uuid_type = GATT_ATTR_UUID_TYPE_16; p_attr16->uuid = p_uuid->uu.uuid16; - } - else if (p_uuid->len == LEN_UUID_32) - { + } else if (p_uuid->len == LEN_UUID_32) { p_attr32 = (tGATT_ATTR32 *) p_db->p_free_mem; p_attr32->uuid_type = GATT_ATTR_UUID_TYPE_32; p_attr32->uuid = p_uuid->uu.uuid32; - } - else if (p_uuid->len == LEN_UUID_128) - { + } else if (p_uuid->len == LEN_UUID_128) { p_attr128 = (tGATT_ATTR128 *) p_db->p_free_mem; p_attr128->uuid_type = GATT_ATTR_UUID_TYPE_128; memcpy(p_attr128->uuid, p_uuid->uu.uuid128, LEN_UUID_128); @@ -979,35 +883,30 @@ static void *allocate_attr_in_db(tGATT_SVC_DB *p_db, tBT_UUID *p_uuid, tGATT_PER p_attr16->p_next = NULL; /* link the attribute record into the end of DB */ - if (p_db->p_attr_list == NULL) + if (p_db->p_attr_list == NULL) { p_db->p_attr_list = p_attr16; - else - { + } else { p_last = (tGATT_ATTR16 *)p_db->p_attr_list; - while (p_last != NULL && p_last->p_next != NULL) + while (p_last != NULL && p_last->p_next != NULL) { p_last = (tGATT_ATTR16 *)p_last->p_next; + } p_last->p_next = p_attr16; } - if (p_attr16->uuid_type == GATT_ATTR_UUID_TYPE_16) - { + if (p_attr16->uuid_type == GATT_ATTR_UUID_TYPE_16) { GATT_TRACE_DEBUG("=====> handle = [0x%04x] uuid16 = [0x%04x] perm=0x%02x ", - p_attr16->handle, p_attr16->uuid, p_attr16->permission); - } - else if (p_attr16->uuid_type == GATT_ATTR_UUID_TYPE_32) - { + p_attr16->handle, p_attr16->uuid, p_attr16->permission); + } else if (p_attr16->uuid_type == GATT_ATTR_UUID_TYPE_32) { GATT_TRACE_DEBUG("=====> handle = [0x%04x] uuid32 = [0x%08x] perm=0x%02x ", - p_attr32->handle, p_attr32->uuid, p_attr32->permission); - } - else - { + p_attr32->handle, p_attr32->uuid, p_attr32->permission); + } else { GATT_TRACE_DEBUG("=====> handle = [0x%04x] uuid128 = [0x%02x:0x%02x] perm=0x%02x ", - p_attr128->handle, p_attr128->uuid[0],p_attr128->uuid[1], - p_attr128->permission); + p_attr128->handle, p_attr128->uuid[0], p_attr128->uuid[1], + p_attr128->permission); } - return(void *)p_attr16; + return (void *)p_attr16; } /******************************************************************************* @@ -1027,29 +926,28 @@ static BOOLEAN deallocate_attr_in_db(tGATT_SVC_DB *p_db, void *p_attr) tGATT_ATTR16 *p_cur, *p_next; BOOLEAN found = FALSE; - if (p_db->p_attr_list == NULL) + if (p_db->p_attr_list == NULL) { return found; + } p_cur = (tGATT_ATTR16 *) p_db->p_attr_list; p_next = (tGATT_ATTR16 *) p_cur->p_next; for (; p_cur != NULL && p_next != NULL; - p_cur = p_next, p_next = (tGATT_ATTR16 *)p_next->p_next) - { - if (p_next == p_attr) - { + p_cur = p_next, p_next = (tGATT_ATTR16 *)p_next->p_next) { + if (p_next == p_attr) { p_cur->p_next = p_next->p_next; found = TRUE; } } - if (p_cur == p_attr && p_cur == p_db->p_attr_list) - { + if (p_cur == p_attr && p_cur == p_db->p_attr_list) { p_db->p_attr_list = p_cur->p_next; found = TRUE; } /* else attr not found */ - if ( found) + if ( found) { p_db->next_handle --; + } return found; } @@ -1074,10 +972,8 @@ static BOOLEAN copy_extra_byte_in_db(tGATT_SVC_DB *p_db, void **p_dst, UINT16 le { UINT8 *p = (UINT8 *)*p_dst; - if (p_db->mem_free < len) - { - if (!allocate_svc_db_buf(p_db)) - { + if (p_db->mem_free < len) { + if (!allocate_svc_db_buf(p_db)) { GATT_TRACE_ERROR("copy_extra_byte_in_db failed, no resources"); return FALSE; } @@ -1107,8 +1003,7 @@ static BOOLEAN allocate_svc_db_buf(tGATT_SVC_DB *p_db) GATT_TRACE_DEBUG("allocate_svc_db_buf allocating extra buffer"); - if ((p_buf = (BT_HDR *)GKI_getpoolbuf(GATT_DB_POOL_ID)) == NULL) - { + if ((p_buf = (BT_HDR *)GKI_getpoolbuf(GATT_DB_POOL_ID)) == NULL) { GATT_TRACE_ERROR("allocate_svc_db_buf failed, no resources"); return FALSE; } @@ -1133,7 +1028,7 @@ static BOOLEAN allocate_svc_db_buf(tGATT_SVC_DB *p_db) ** *******************************************************************************/ static tGATT_STATUS gatts_send_app_read_request(tGATT_TCB *p_tcb, UINT8 op_code, - UINT16 handle, UINT16 offset, UINT32 trans_id) + UINT16 handle, UINT16 offset, UINT32 trans_id) { tGATTS_DATA sr_data; UINT8 i_rcb; @@ -1144,14 +1039,12 @@ static tGATT_STATUS gatts_send_app_read_request(tGATT_TCB *p_tcb, UINT8 op_code, p_sreg = &gatt_cb.sr_reg[i_rcb]; conn_id = GATT_CREATE_CONN_ID(p_tcb->tcb_idx, p_sreg->gatt_if); - if (trans_id == 0) - { + if (trans_id == 0) { trans_id = gatt_sr_enqueue_cmd(p_tcb, op_code, handle); gatt_sr_update_cback_cnt(p_tcb, p_sreg->gatt_if, TRUE, TRUE); } - if (trans_id != 0 ) - { + if (trans_id != 0 ) { memset(&sr_data, 0, sizeof(tGATTS_DATA)); sr_data.read_req.handle = handle; @@ -1160,10 +1053,10 @@ static tGATT_STATUS gatts_send_app_read_request(tGATT_TCB *p_tcb, UINT8 op_code, gatt_sr_send_req_callback(conn_id, trans_id, GATTS_REQ_TYPE_READ, &sr_data); - return(tGATT_STATUS) GATT_PENDING; + return (tGATT_STATUS) GATT_PENDING; + } else { + return (tGATT_STATUS) GATT_BUSY; /* max pending command, application error */ } - else - return(tGATT_STATUS) GATT_BUSY; /* max pending command, application error */ } @@ -1187,28 +1080,22 @@ static BOOLEAN gatts_db_add_service_declaration(tGATT_SVC_DB *p_db, tBT_UUID *p_ GATT_TRACE_DEBUG( "add_service_declaration"); - if (is_pri) + if (is_pri) { uuid.uu.uuid16 = GATT_UUID_PRI_SERVICE; - else + } else { uuid.uu.uuid16 = GATT_UUID_SEC_SERVICE; + } /* add service declration record */ - if ((p_attr = (tGATT_ATTR16 *)(allocate_attr_in_db(p_db, &uuid, GATT_PERM_READ))) != NULL) - { - if (copy_extra_byte_in_db (p_db, (void **)&p_attr->p_value, sizeof(tBT_UUID))) - { - if (p_service->len == LEN_UUID_16) - { + if ((p_attr = (tGATT_ATTR16 *)(allocate_attr_in_db(p_db, &uuid, GATT_PERM_READ))) != NULL) { + if (copy_extra_byte_in_db (p_db, (void **)&p_attr->p_value, sizeof(tBT_UUID))) { + if (p_service->len == LEN_UUID_16) { p_attr->p_value->uuid.len = LEN_UUID_16; p_attr->p_value->uuid.uu.uuid16 = p_service->uu.uuid16; - } - else if (p_service->len == LEN_UUID_32) - { + } else if (p_service->len == LEN_UUID_32) { p_attr->p_value->uuid.len = LEN_UUID_128; gatt_convert_uuid32_to_uuid128(p_attr->p_value->uuid.uu.uuid128, p_service->uu.uuid32); - } - else - { + } else { p_attr->p_value->uuid.len = LEN_UUID_128; memcpy(p_attr->p_value->uuid.uu.uuid128, p_service->uu.uuid128, LEN_UUID_128); } diff --git a/components/bt/bluedroid/stack/gatt/gatt_main.c b/components/bt/bluedroid/stack/gatt/gatt_main.c old mode 100755 new mode 100644 index 953b95037a..8b40ed0e51 --- a/components/bt/bluedroid/stack/gatt/gatt_main.c +++ b/components/bt/bluedroid/stack/gatt/gatt_main.c @@ -45,7 +45,7 @@ /* 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 gatt_le_connect_cback (UINT16 chan, BD_ADDR bd_addr, BOOLEAN connected, - UINT16 reason, tBT_TRANSPORT transport); + UINT16 reason, tBT_TRANSPORT transport); static void gatt_le_data_ind (UINT16 chan, BD_ADDR bd_addr, BT_HDR *p_buf); static void gatt_le_cong_cback(BD_ADDR remote_bda, BOOLEAN congest); @@ -60,8 +60,7 @@ static void gatt_l2cif_data_ind_cback (UINT16 l2cap_cid, BT_HDR *p_msg); static void gatt_send_conn_cback (tGATT_TCB *p_tcb); static void gatt_l2cif_congest_cback (UINT16 cid, BOOLEAN congested); -static const tL2CAP_APPL_INFO dyn_info = -{ +static const tL2CAP_APPL_INFO dyn_info = { gatt_l2cif_connect_ind_cback, gatt_l2cif_connect_cfm_cback, NULL, @@ -123,8 +122,7 @@ void gatt_init (void) L2CA_RegisterFixedChannel (L2CAP_ATT_CID, &fixed_reg); /* Now, register with L2CAP for ATT PSM over BR/EDR */ - if (!L2CA_Register (BT_PSM_ATT, (tL2CAP_APPL_INFO *) &dyn_info)) - { + if (!L2CA_Register (BT_PSM_ATT, (tL2CAP_APPL_INFO *) &dyn_info)) { GATT_TRACE_ERROR ("ATT Dynamic Registration failed"); } @@ -152,8 +150,7 @@ void gatt_free(void) { int i; GATT_TRACE_DEBUG("gatt_free()"); - for (i = 0; i < GATT_MAX_SR_PROFILES; i++) - { + for (i = 0; i < GATT_MAX_SR_PROFILES; i++) { gatt_free_hdl_buffer(&gatt_cb.hdl_list[i]); } } @@ -173,18 +170,17 @@ BOOLEAN gatt_connect (BD_ADDR rem_bda, tGATT_TCB *p_tcb, tBT_TRANSPORT transport { BOOLEAN gatt_ret = FALSE; - if (gatt_get_ch_state(p_tcb) != GATT_CH_OPEN) + if (gatt_get_ch_state(p_tcb) != GATT_CH_OPEN) { gatt_set_ch_state(p_tcb, GATT_CH_CONN); + } - if (transport == BT_TRANSPORT_LE) - { + if (transport == BT_TRANSPORT_LE) { p_tcb->att_lcid = L2CAP_ATT_CID; gatt_ret = L2CA_ConnectFixedChnl (L2CAP_ATT_CID, rem_bda); - } - else - { - if ((p_tcb->att_lcid = L2CA_ConnectReq(BT_PSM_ATT, rem_bda)) != 0) + } else { + if ((p_tcb->att_lcid = L2CA_ConnectReq(BT_PSM_ATT, rem_bda)) != 0) { gatt_ret = TRUE; + } } return gatt_ret; @@ -208,31 +204,21 @@ BOOLEAN gatt_disconnect (tGATT_TCB *p_tcb) tGATT_CH_STATE ch_state; GATT_TRACE_DEBUG ("gatt_disconnect "); - if (p_tcb != NULL) - { + if (p_tcb != NULL) { ret = TRUE; - if ( (ch_state = gatt_get_ch_state(p_tcb)) != GATT_CH_CLOSING ) - { - if (p_tcb->att_lcid == L2CAP_ATT_CID) - { - if (ch_state == GATT_CH_OPEN) - { + if ( (ch_state = gatt_get_ch_state(p_tcb)) != GATT_CH_CLOSING ) { + if (p_tcb->att_lcid == L2CAP_ATT_CID) { + if (ch_state == GATT_CH_OPEN) { /* only LCB exist between remote device and local */ ret = L2CA_RemoveFixedChnl (L2CAP_ATT_CID, p_tcb->peer_bda); - } - else - { + } else { gatt_set_ch_state(p_tcb, GATT_CH_CLOSING); ret = L2CA_CancelBleConnectReq (p_tcb->peer_bda); } - } - else - { + } else { ret = L2CA_DisconnectReq(p_tcb->att_lcid); } - } - else - { + } else { GATT_TRACE_DEBUG ("gatt_disconnect already in closing state"); } } @@ -252,34 +238,27 @@ BOOLEAN gatt_disconnect (tGATT_TCB *p_tcb) void gatt_update_app_hold_link_status (tGATT_IF gatt_if, tGATT_TCB *p_tcb, BOOLEAN is_add) { UINT8 i; - BOOLEAN found=FALSE; + BOOLEAN found = FALSE; - if (p_tcb == NULL) - { + if (p_tcb == NULL) { GATT_TRACE_ERROR("gatt_update_app_hold_link_status p_tcb=NULL"); return; } - for (i=0; iapp_hold_link[i] == gatt_if) - { + for (i = 0; i < GATT_MAX_APPS; i++) { + if (p_tcb->app_hold_link[i] == gatt_if) { found = TRUE; - if (!is_add) - { + if (!is_add) { p_tcb->app_hold_link[i] = 0; break; } } } - if (!found && is_add) - { - for (i=0; iapp_hold_link[i] == 0) - { + if (!found && is_add) { + for (i = 0; i < GATT_MAX_APPS; i++) { + if (p_tcb->app_hold_link[i] == 0) { p_tcb->app_hold_link[i] = gatt_if; found = TRUE; break; @@ -304,25 +283,20 @@ void gatt_update_app_hold_link_status (tGATT_IF gatt_if, tGATT_TCB *p_tcb, BOOLE void gatt_update_app_use_link_flag (tGATT_IF gatt_if, tGATT_TCB *p_tcb, BOOLEAN is_add, BOOLEAN check_acl_link) { GATT_TRACE_DEBUG("gatt_update_app_use_link_flag is_add=%d chk_link=%d", - is_add, check_acl_link); + is_add, check_acl_link); gatt_update_app_hold_link_status(gatt_if, p_tcb, is_add); if (check_acl_link && - p_tcb && - p_tcb->att_lcid == L2CAP_ATT_CID && /* only update link idle timer for fixed channel */ - (BTM_GetHCIConnHandle(p_tcb->peer_bda, p_tcb->transport) != GATT_INVALID_ACL_HANDLE)) - { - if (is_add) - { + p_tcb && + p_tcb->att_lcid == L2CAP_ATT_CID && /* only update link idle timer for fixed channel */ + (BTM_GetHCIConnHandle(p_tcb->peer_bda, p_tcb->transport) != GATT_INVALID_ACL_HANDLE)) { + if (is_add) { GATT_TRACE_DEBUG("GATT disables link idle timer"); /* acl link is connected disable the idle timeout */ GATT_SetIdleTimeout(p_tcb->peer_bda, GATT_LINK_NO_IDLE_TIMEOUT, p_tcb->transport); - } - else - { - if (!gatt_num_apps_hold_link(p_tcb)) - { + } else { + if (!gatt_num_apps_hold_link(p_tcb)) { /* acl link is connected but no application needs to use the link so set the timeout value to GATT_LINK_IDLE_TIMEOUT_WHEN_NO_APP seconds */ GATT_TRACE_DEBUG("GATT starts link idle timer =%d sec", GATT_LINK_IDLE_TIMEOUT_WHEN_NO_APP); @@ -348,45 +322,35 @@ BOOLEAN gatt_act_connect (tGATT_REG *p_reg, BD_ADDR bd_addr, tBT_TRANSPORT trans tGATT_TCB *p_tcb; UINT8 st; - if ((p_tcb = gatt_find_tcb_by_addr(bd_addr, transport)) != NULL) - { + if ((p_tcb = gatt_find_tcb_by_addr(bd_addr, transport)) != NULL) { ret = TRUE; st = gatt_get_ch_state(p_tcb); /* before link down, another app try to open a GATT connection */ - if(st == GATT_CH_OPEN && gatt_num_apps_hold_link(p_tcb) == 0 && - transport == BT_TRANSPORT_LE ) - { - if (!gatt_connect(bd_addr, p_tcb, transport)) + if (st == GATT_CH_OPEN && gatt_num_apps_hold_link(p_tcb) == 0 && + transport == BT_TRANSPORT_LE ) { + if (!gatt_connect(bd_addr, p_tcb, transport)) { ret = FALSE; - } - else if(st == GATT_CH_CLOSING) - { + } + } else if (st == GATT_CH_CLOSING) { /* need to complete the closing first */ ret = FALSE; } - } - else - { - if ((p_tcb = gatt_allocate_tcb_by_bdaddr(bd_addr, transport)) != NULL) - { - if (!gatt_connect(bd_addr, p_tcb, transport)) - { + } else { + if ((p_tcb = gatt_allocate_tcb_by_bdaddr(bd_addr, transport)) != NULL) { + if (!gatt_connect(bd_addr, p_tcb, transport)) { GATT_TRACE_ERROR("gatt_connect failed"); memset(p_tcb, 0, sizeof(tGATT_TCB)); - } - else + } else { ret = TRUE; - } - else - { + } + } else { ret = 0; GATT_TRACE_ERROR("Max TCB for gatt_if [%d] reached.", p_reg->gatt_if); } } - if (ret) - { + if (ret) { gatt_update_app_use_link_flag(p_reg->gatt_if, p_tcb, TRUE, FALSE); } @@ -408,49 +372,44 @@ static void gatt_le_connect_cback (UINT16 chan, BD_ADDR bd_addr, BOOLEAN connect tGATT_TCB *p_tcb = gatt_find_tcb_by_addr(bd_addr, transport); BOOLEAN check_srv_chg = FALSE; - tGATTS_SRV_CHG *p_srv_chg_clt=NULL; + tGATTS_SRV_CHG *p_srv_chg_clt = NULL; /* ignore all fixed channel connect/disconnect on BR/EDR link for GATT */ - if (transport == BT_TRANSPORT_BR_EDR) + if (transport == BT_TRANSPORT_BR_EDR) { return; + } GATT_TRACE_DEBUG ("GATT ATT protocol channel with BDA: %08x%04x is %s", - (bd_addr[0]<<24)+(bd_addr[1]<<16)+(bd_addr[2]<<8)+bd_addr[3], - (bd_addr[4]<<8)+bd_addr[5], (connected) ? "connected" : "disconnected"); + (bd_addr[0] << 24) + (bd_addr[1] << 16) + (bd_addr[2] << 8) + bd_addr[3], + (bd_addr[4] << 8) + bd_addr[5], (connected) ? "connected" : "disconnected"); - if ((p_srv_chg_clt = gatt_is_bda_in_the_srv_chg_clt_list(bd_addr)) != NULL) - { + if ((p_srv_chg_clt = gatt_is_bda_in_the_srv_chg_clt_list(bd_addr)) != NULL) { check_srv_chg = TRUE; - } - else - { - if (btm_sec_is_a_bonded_dev(bd_addr)) + } else { + if (btm_sec_is_a_bonded_dev(bd_addr)) { gatt_add_a_bonded_dev_for_srv_chg(bd_addr); + } } - if (connected) - { + if (connected) { /* do we have a channel initiating a connection? */ - if (p_tcb) - { + if (p_tcb) { /* we are initiating connection */ - if ( gatt_get_ch_state(p_tcb) == GATT_CH_CONN) - { + if ( gatt_get_ch_state(p_tcb) == GATT_CH_CONN) { /* send callback */ gatt_set_ch_state(p_tcb, GATT_CH_OPEN); p_tcb->payload_size = GATT_DEF_BLE_MTU_SIZE; gatt_send_conn_cback(p_tcb); } - if (check_srv_chg) + if (check_srv_chg) { gatt_chk_srv_chg (p_srv_chg_clt); + } } /* this is incoming connection or background connection callback */ - else - { - if ((p_tcb = gatt_allocate_tcb_by_bdaddr(bd_addr, BT_TRANSPORT_LE)) != NULL) - { + else { + if ((p_tcb = gatt_allocate_tcb_by_bdaddr(bd_addr, BT_TRANSPORT_LE)) != NULL) { p_tcb->att_lcid = L2CAP_ATT_CID; gatt_set_ch_state(p_tcb, GATT_CH_OPEN); @@ -458,19 +417,14 @@ static void gatt_le_connect_cback (UINT16 chan, BD_ADDR bd_addr, BOOLEAN connect p_tcb->payload_size = GATT_DEF_BLE_MTU_SIZE; gatt_send_conn_cback (p_tcb); - if (check_srv_chg) - { + if (check_srv_chg) { gatt_chk_srv_chg (p_srv_chg_clt); } - } - else - { + } else { GATT_TRACE_ERROR("CCB max out, no rsources"); } } - } - else - { + } else { gatt_cleanup_upon_disc(bd_addr, reason, transport); GATT_TRACE_DEBUG ("ATT disconnected"); } @@ -489,21 +443,17 @@ static void gatt_le_connect_cback (UINT16 chan, BD_ADDR bd_addr, BOOLEAN connect static void gatt_channel_congestion(tGATT_TCB *p_tcb, BOOLEAN congested) { UINT8 i = 0; - tGATT_REG *p_reg=NULL; + tGATT_REG *p_reg = NULL; UINT16 conn_id; /* if uncongested, check to see if there is any more pending data */ - if (p_tcb != NULL && congested == FALSE) - { + if (p_tcb != NULL && congested == FALSE) { gatt_cl_send_next_cmd_inq(p_tcb); } /* notifying all applications for the connection up event */ - for (i = 0, p_reg = gatt_cb.cl_rcb ; i < GATT_MAX_APPS; i++, p_reg++) - { - if (p_reg->in_use) - { - if (p_reg->app_cb.p_congestion_cb) - { + for (i = 0, p_reg = gatt_cb.cl_rcb ; i < GATT_MAX_APPS; i++, p_reg++) { + if (p_reg->in_use) { + if (p_reg->app_cb.p_congestion_cb) { conn_id = GATT_CREATE_CONN_ID(p_tcb->tcb_idx, p_reg->gatt_if); (*p_reg->app_cb.p_congestion_cb)(conn_id, congested); } @@ -526,8 +476,7 @@ static void gatt_le_cong_cback(BD_ADDR remote_bda, BOOLEAN congested) tGATT_TCB *p_tcb = gatt_find_tcb_by_addr(remote_bda, BT_TRANSPORT_LE); /* if uncongested, check to see if there is any more pending data */ - if (p_tcb != NULL) - { + if (p_tcb != NULL) { gatt_channel_congestion(p_tcb, congested); } } @@ -553,18 +502,14 @@ static void gatt_le_data_ind (UINT16 chan, BD_ADDR bd_addr, BT_HDR *p_buf) /* Find CCB based on bd addr */ if ((p_tcb = gatt_find_tcb_by_addr (bd_addr, BT_TRANSPORT_LE)) != NULL && - gatt_get_ch_state(p_tcb) >= GATT_CH_OPEN) - { + gatt_get_ch_state(p_tcb) >= GATT_CH_OPEN) { gatt_data_process(p_tcb, p_buf); - } - else - { + } else { GKI_freebuf (p_buf); - if (p_tcb != NULL) - { + if (p_tcb != NULL) { GATT_TRACE_WARNING ("ATT - Ignored L2CAP data while in state: %d", - gatt_get_ch_state(p_tcb)); + gatt_get_ch_state(p_tcb)); } } } @@ -590,20 +535,16 @@ static void gatt_l2cif_connect_ind_cback (BD_ADDR bd_addr, UINT16 lcid, UINT16 GATT_TRACE_ERROR("Connection indication cid = %d", lcid); /* new connection ? */ - if (p_tcb == NULL) - { + if (p_tcb == NULL) { /* allocate tcb */ - if ((p_tcb = gatt_allocate_tcb_by_bdaddr(bd_addr, BT_TRANSPORT_BR_EDR)) == NULL) - { + if ((p_tcb = gatt_allocate_tcb_by_bdaddr(bd_addr, BT_TRANSPORT_BR_EDR)) == NULL) { /* no tcb available, reject L2CAP connection */ result = L2CAP_CONN_NO_RESOURCES; - } - else + } else { p_tcb->att_lcid = lcid; + } - } - else /* existing connection , reject it */ - { + } else { /* existing connection , reject it */ result = L2CAP_CONN_NO_RESOURCES; } @@ -611,8 +552,7 @@ static void gatt_l2cif_connect_ind_cback (BD_ADDR bd_addr, UINT16 lcid, UINT16 L2CA_ConnectRsp(bd_addr, id, lcid, result, 0); /* if result ok, proceed with connection */ - if (result == L2CAP_CONN_OK) - { + if (result == L2CAP_CONN_OK) { /* transition to configuration state */ gatt_set_ch_state(p_tcb, GATT_CH_CFG); @@ -641,16 +581,13 @@ static void gatt_l2cif_connect_cfm_cback(UINT16 lcid, UINT16 result) tL2CAP_CFG_INFO cfg; /* look up clcb for this channel */ - if ((p_tcb = gatt_find_tcb_by_cid(lcid)) != NULL) - { + if ((p_tcb = gatt_find_tcb_by_cid(lcid)) != NULL) { GATT_TRACE_DEBUG("gatt_l2c_connect_cfm_cback result: %d ch_state: %d, lcid:0x%x", result, gatt_get_ch_state(p_tcb), p_tcb->att_lcid); /* if in correct state */ - if (gatt_get_ch_state(p_tcb) == GATT_CH_CONN) - { + if (gatt_get_ch_state(p_tcb) == GATT_CH_CONN) { /* if result successful */ - if (result == L2CAP_CONN_OK) - { + if (result == L2CAP_CONN_OK) { /* set channel state */ gatt_set_ch_state(p_tcb, GATT_CH_CFG); @@ -661,15 +598,11 @@ static void gatt_l2cif_connect_cfm_cback(UINT16 lcid, UINT16 result) L2CA_ConfigReq(lcid, &cfg); } /* else initiating connection failure */ - else - { + else { gatt_cleanup_upon_disc(p_tcb->peer_bda, result, GATT_TRANSPORT_BR_EDR); } - } - else /* wrong state, disconnect it */ - { - if (result == L2CAP_CONN_OK) - { + } else { /* wrong state, disconnect it */ + if (result == L2CAP_CONN_OK) { /* just in case the peer also accepts our connection - Send L2CAP disconnect req */ L2CA_DisconnectReq(lcid); } @@ -690,33 +623,27 @@ static void gatt_l2cif_connect_cfm_cback(UINT16 lcid, UINT16 result) void gatt_l2cif_config_cfm_cback(UINT16 lcid, tL2CAP_CFG_INFO *p_cfg) { tGATT_TCB *p_tcb; - tGATTS_SRV_CHG *p_srv_chg_clt=NULL; + tGATTS_SRV_CHG *p_srv_chg_clt = NULL; /* look up clcb for this channel */ - if ((p_tcb = gatt_find_tcb_by_cid(lcid)) != NULL) - { + if ((p_tcb = gatt_find_tcb_by_cid(lcid)) != NULL) { /* if in correct state */ - if ( gatt_get_ch_state(p_tcb) == GATT_CH_CFG) - { + if ( gatt_get_ch_state(p_tcb) == GATT_CH_CFG) { /* if result successful */ - if (p_cfg->result == L2CAP_CFG_OK) - { + if (p_cfg->result == L2CAP_CFG_OK) { /* update flags */ p_tcb->ch_flags |= GATT_L2C_CFG_CFM_DONE; /* if configuration complete */ - if (p_tcb->ch_flags & GATT_L2C_CFG_IND_DONE) - { + if (p_tcb->ch_flags & GATT_L2C_CFG_IND_DONE) { gatt_set_ch_state(p_tcb, GATT_CH_OPEN); - if ((p_srv_chg_clt = gatt_is_bda_in_the_srv_chg_clt_list(p_tcb->peer_bda)) != NULL) - { + if ((p_srv_chg_clt = gatt_is_bda_in_the_srv_chg_clt_list(p_tcb->peer_bda)) != NULL) { gatt_chk_srv_chg(p_srv_chg_clt); - } - else - { - if (btm_sec_is_a_bonded_dev(p_tcb->peer_bda)) + } else { + if (btm_sec_is_a_bonded_dev(p_tcb->peer_bda)) { gatt_add_a_bonded_dev_for_srv_chg(p_tcb->peer_bda); + } } /* send callback */ @@ -724,8 +651,7 @@ void gatt_l2cif_config_cfm_cback(UINT16 lcid, tL2CAP_CFG_INFO *p_cfg) } } /* else failure */ - else - { + else { /* Send L2CAP disconnect req */ L2CA_DisconnectReq(lcid); } @@ -746,16 +672,16 @@ void gatt_l2cif_config_cfm_cback(UINT16 lcid, tL2CAP_CFG_INFO *p_cfg) void gatt_l2cif_config_ind_cback(UINT16 lcid, tL2CAP_CFG_INFO *p_cfg) { tGATT_TCB *p_tcb; - tGATTS_SRV_CHG *p_srv_chg_clt=NULL; + tGATTS_SRV_CHG *p_srv_chg_clt = NULL; /* look up clcb for this channel */ - if ((p_tcb = gatt_find_tcb_by_cid(lcid)) != NULL) - { + if ((p_tcb = gatt_find_tcb_by_cid(lcid)) != NULL) { /* GATT uses the smaller of our MTU and peer's MTU */ if ( p_cfg->mtu_present && - (p_cfg->mtu >= GATT_MIN_BR_MTU_SIZE && p_cfg->mtu < L2CAP_DEFAULT_MTU)) + (p_cfg->mtu >= GATT_MIN_BR_MTU_SIZE && p_cfg->mtu < L2CAP_DEFAULT_MTU)) { p_tcb->payload_size = p_cfg->mtu; - else + } else { p_tcb->payload_size = L2CAP_DEFAULT_MTU; + } /* send L2CAP configure response */ memset(p_cfg, 0, sizeof(tL2CAP_CFG_INFO)); @@ -763,23 +689,19 @@ void gatt_l2cif_config_ind_cback(UINT16 lcid, tL2CAP_CFG_INFO *p_cfg) L2CA_ConfigRsp(lcid, p_cfg); /* if first config ind */ - if ((p_tcb->ch_flags & GATT_L2C_CFG_IND_DONE) == 0) - { + if ((p_tcb->ch_flags & GATT_L2C_CFG_IND_DONE) == 0) { /* update flags */ p_tcb->ch_flags |= GATT_L2C_CFG_IND_DONE; /* if configuration complete */ - if (p_tcb->ch_flags & GATT_L2C_CFG_CFM_DONE) - { + if (p_tcb->ch_flags & GATT_L2C_CFG_CFM_DONE) { gatt_set_ch_state(p_tcb, GATT_CH_OPEN); - if ((p_srv_chg_clt = gatt_is_bda_in_the_srv_chg_clt_list(p_tcb->peer_bda)) != NULL) - { + if ((p_srv_chg_clt = gatt_is_bda_in_the_srv_chg_clt_list(p_tcb->peer_bda)) != NULL) { gatt_chk_srv_chg(p_srv_chg_clt); - } - else - { - if (btm_sec_is_a_bonded_dev(p_tcb->peer_bda)) + } else { + if (btm_sec_is_a_bonded_dev(p_tcb->peer_bda)) { gatt_add_a_bonded_dev_for_srv_chg(p_tcb->peer_bda); + } } /* send callback */ @@ -805,21 +727,20 @@ void gatt_l2cif_disconnect_ind_cback(UINT16 lcid, BOOLEAN ack_needed) UINT16 reason; /* look up clcb for this channel */ - if ((p_tcb = gatt_find_tcb_by_cid(lcid)) != NULL) - { - if (ack_needed) - { + if ((p_tcb = gatt_find_tcb_by_cid(lcid)) != NULL) { + if (ack_needed) { /* send L2CAP disconnect response */ L2CA_DisconnectRsp(lcid); } - if (gatt_is_bda_in_the_srv_chg_clt_list(p_tcb->peer_bda) == NULL) - { - if (btm_sec_is_a_bonded_dev(p_tcb->peer_bda)) + if (gatt_is_bda_in_the_srv_chg_clt_list(p_tcb->peer_bda) == NULL) { + if (btm_sec_is_a_bonded_dev(p_tcb->peer_bda)) { gatt_add_a_bonded_dev_for_srv_chg(p_tcb->peer_bda); + } } /* if ACL link is still up, no reason is logged, l2cap is disconnect from peer */ - if ((reason = L2CA_GetDisconnectReason(p_tcb->peer_bda, p_tcb->transport)) == 0) + if ((reason = L2CA_GetDisconnectReason(p_tcb->peer_bda, p_tcb->transport)) == 0) { reason = GATT_CONN_TERMINATE_PEER_USER; + } /* send disconnect callback */ gatt_cleanup_upon_disc(p_tcb->peer_bda, reason, GATT_TRANSPORT_BR_EDR); @@ -843,19 +764,19 @@ static void gatt_l2cif_disconnect_cfm_cback(UINT16 lcid, UINT16 result) UNUSED(result); /* look up clcb for this channel */ - if ((p_tcb = gatt_find_tcb_by_cid(lcid)) != NULL) - { + if ((p_tcb = gatt_find_tcb_by_cid(lcid)) != NULL) { /* If the device is not in the service changed client list, add it... */ - if (gatt_is_bda_in_the_srv_chg_clt_list(p_tcb->peer_bda) == NULL) - { - if (btm_sec_is_a_bonded_dev(p_tcb->peer_bda)) + if (gatt_is_bda_in_the_srv_chg_clt_list(p_tcb->peer_bda) == NULL) { + if (btm_sec_is_a_bonded_dev(p_tcb->peer_bda)) { gatt_add_a_bonded_dev_for_srv_chg(p_tcb->peer_bda); + } } /* send disconnect callback */ /* if ACL link is still up, no reason is logged, l2cap is disconnect from peer */ - if ((reason = L2CA_GetDisconnectReason(p_tcb->peer_bda, p_tcb->transport)) == 0) + if ((reason = L2CA_GetDisconnectReason(p_tcb->peer_bda, p_tcb->transport)) == 0) { reason = GATT_CONN_TERMINATE_LOCAL_HOST; + } gatt_cleanup_upon_disc(p_tcb->peer_bda, reason, GATT_TRANSPORT_BR_EDR); } @@ -877,13 +798,12 @@ static void gatt_l2cif_data_ind_cback(UINT16 lcid, BT_HDR *p_buf) /* look up clcb for this channel */ if ((p_tcb = gatt_find_tcb_by_cid(lcid)) != NULL && - gatt_get_ch_state(p_tcb) == GATT_CH_OPEN) - { + gatt_get_ch_state(p_tcb) == GATT_CH_OPEN) { /* process the data */ gatt_data_process(p_tcb, p_buf); - } - else /* prevent buffer leak */ + } else { /* prevent buffer leak */ GKI_freebuf(p_buf); + } } /******************************************************************************* @@ -899,8 +819,7 @@ static void gatt_l2cif_congest_cback (UINT16 lcid, BOOLEAN congested) { tGATT_TCB *p_tcb = gatt_find_tcb_by_cid(lcid); - if (p_tcb != NULL) - { + if (p_tcb != NULL) { gatt_channel_congestion(p_tcb, congested); } } @@ -919,31 +838,28 @@ static void gatt_send_conn_cback(tGATT_TCB *p_tcb) { UINT8 i; tGATT_REG *p_reg; - tGATT_BG_CONN_DEV *p_bg_dev=NULL; + tGATT_BG_CONN_DEV *p_bg_dev = NULL; UINT16 conn_id; p_bg_dev = gatt_find_bg_dev(p_tcb->peer_bda); /* notifying all applications for the connection up event */ - for (i = 0, p_reg = gatt_cb.cl_rcb ; i < GATT_MAX_APPS; i++, p_reg++) - { - if (p_reg->in_use) - { - if (p_bg_dev && gatt_is_bg_dev_for_app(p_bg_dev, p_reg->gatt_if)) + for (i = 0, p_reg = gatt_cb.cl_rcb ; i < GATT_MAX_APPS; i++, p_reg++) { + if (p_reg->in_use) { + if (p_bg_dev && gatt_is_bg_dev_for_app(p_bg_dev, p_reg->gatt_if)) { gatt_update_app_use_link_flag(p_reg->gatt_if, p_tcb, TRUE, TRUE); + } - if (p_reg->app_cb.p_conn_cb) - { + if (p_reg->app_cb.p_conn_cb) { conn_id = GATT_CREATE_CONN_ID(p_tcb->tcb_idx, p_reg->gatt_if); (*p_reg->app_cb.p_conn_cb)(p_reg->gatt_if, p_tcb->peer_bda, conn_id, - TRUE, 0, p_tcb->transport); + TRUE, 0, p_tcb->transport); } } } - if (gatt_num_apps_hold_link(p_tcb) && p_tcb->att_lcid == L2CAP_ATT_CID ) - { + if (gatt_num_apps_hold_link(p_tcb) && p_tcb->att_lcid == L2CAP_ATT_CID ) { /* disable idle timeout if one or more clients are holding the link disable the idle timer */ GATT_SetIdleTimeout(p_tcb->peer_bda, GATT_LINK_NO_IDLE_TIMEOUT, p_tcb->transport); } @@ -971,36 +887,28 @@ void gatt_data_process (tGATT_TCB *p_tcb, BT_HDR *p_buf) UINT16 msg_len; - if (p_buf->len > 0) - { + if (p_buf->len > 0) { msg_len = p_buf->len - 1; STREAM_TO_UINT8(op_code, p); /* remove the two MSBs associated with sign write and write cmd */ pseudo_op_code = op_code & (~GATT_WRITE_CMD_MASK); - if (pseudo_op_code < GATT_OP_CODE_MAX) - { - if (op_code == GATT_SIGN_CMD_WRITE) - { + if (pseudo_op_code < GATT_OP_CODE_MAX) { + if (op_code == GATT_SIGN_CMD_WRITE) { gatt_verify_signature(p_tcb, p_buf); - } - else - { + } else { /* message from client */ - if ((op_code % 2) == 0) + if ((op_code % 2) == 0) { gatt_server_handle_client_req (p_tcb, op_code, msg_len, p); - else + } else { gatt_client_handle_server_rsp (p_tcb, op_code, msg_len, p); + } } - } - else - { + } else { GATT_TRACE_ERROR ("ATT - Rcvd L2CAP data, unknown cmd: 0x%x", op_code); } - } - else - { + } else { GATT_TRACE_ERROR ("invalid data length, ignore"); } @@ -1023,12 +931,12 @@ void gatt_add_a_bonded_dev_for_srv_chg (BD_ADDR bda) memcpy(srv_chg_clt.bda, bda, BD_ADDR_LEN); srv_chg_clt.srv_changed = FALSE; - if (gatt_add_srv_chg_clt(&srv_chg_clt) != NULL) - { + if (gatt_add_srv_chg_clt(&srv_chg_clt) != NULL) { memcpy(req.srv_chg.bda, bda, BD_ADDR_LEN); req.srv_chg.srv_changed = FALSE; - if (gatt_cb.cb_info.p_srv_chg_callback) + if (gatt_cb.cb_info.p_srv_chg_callback) { (*gatt_cb.cb_info.p_srv_chg_callback)(GATTS_SRV_CHG_CMD_ADD_CLIENT, &req, NULL); + } } } @@ -1050,22 +958,18 @@ void gatt_send_srv_chg_ind (BD_ADDR peer_bda) GATT_TRACE_DEBUG("gatt_send_srv_chg_ind"); - if (gatt_cb.handle_of_h_r) - { - if ((conn_id = gatt_profile_find_conn_id_by_bd_addr(peer_bda)) != GATT_INVALID_CONN_ID) - { + if (gatt_cb.handle_of_h_r) { + if ((conn_id = gatt_profile_find_conn_id_by_bd_addr(peer_bda)) != GATT_INVALID_CONN_ID) { UINT16_TO_STREAM (p, 1); UINT16_TO_STREAM (p, 0xFFFF); GATTS_HandleValueIndication (conn_id, gatt_cb.handle_of_h_r, GATT_SIZE_OF_SRV_CHG_HNDL_RANGE, handle_range); - } - else - { + } else { GATT_TRACE_ERROR("Unable to find conn_id for %08x%04x ", - (peer_bda[0]<<24)+(peer_bda[1]<<16)+(peer_bda[2]<<8)+peer_bda[3], - (peer_bda[4]<<8)+peer_bda[5] ); + (peer_bda[0] << 24) + (peer_bda[1] << 16) + (peer_bda[2] << 8) + peer_bda[3], + (peer_bda[4] << 8) + peer_bda[5] ); } } } @@ -1084,8 +988,7 @@ void gatt_chk_srv_chg(tGATTS_SRV_CHG *p_srv_chg_clt) { GATT_TRACE_DEBUG("gatt_chk_srv_chg srv_changed=%d", p_srv_chg_clt->srv_changed ); - if (p_srv_chg_clt->srv_changed) - { + if (p_srv_chg_clt->srv_changed) { gatt_send_srv_chg_ind(p_srv_chg_clt->bda); } } @@ -1105,27 +1008,22 @@ void gatt_init_srv_chg (void) tGATTS_SRV_CHG_REQ req; tGATTS_SRV_CHG_RSP rsp; BOOLEAN status; - UINT8 num_clients,i; + UINT8 num_clients, i; tGATTS_SRV_CHG srv_chg_clt; GATT_TRACE_DEBUG("gatt_init_srv_chg"); - if (gatt_cb.cb_info.p_srv_chg_callback) - { + if (gatt_cb.cb_info.p_srv_chg_callback) { status = (*gatt_cb.cb_info.p_srv_chg_callback)(GATTS_SRV_CHG_CMD_READ_NUM_CLENTS, NULL, &rsp); - if (status && rsp.num_clients) - { + if (status && rsp.num_clients) { GATT_TRACE_DEBUG("gatt_init_srv_chg num_srv_chg_clt_clients=%d", rsp.num_clients); num_clients = rsp.num_clients; i = 1; /* use one based index */ - while ((i <= num_clients) && status) - { + while ((i <= num_clients) && status) { req.client_read_index = i; - if ((status = (*gatt_cb.cb_info.p_srv_chg_callback)(GATTS_SRV_CHG_CMD_READ_CLENT, &req, &rsp)) == TRUE) - { - memcpy(&srv_chg_clt, &rsp.srv_chg ,sizeof(tGATTS_SRV_CHG)); - if (gatt_add_srv_chg_clt(&srv_chg_clt) == NULL) - { + if ((status = (*gatt_cb.cb_info.p_srv_chg_callback)(GATTS_SRV_CHG_CMD_READ_CLENT, &req, &rsp)) == TRUE) { + memcpy(&srv_chg_clt, &rsp.srv_chg , sizeof(tGATTS_SRV_CHG)); + if (gatt_add_srv_chg_clt(&srv_chg_clt) == NULL) { GATT_TRACE_ERROR("Unable to add a service change client"); status = FALSE; } @@ -1133,9 +1031,7 @@ void gatt_init_srv_chg (void) i++; } } - } - else - { + } else { GATT_TRACE_DEBUG("gatt_init_srv_chg callback not registered yet"); } } @@ -1153,27 +1049,22 @@ void gatt_proc_srv_chg (void) { UINT8 start_idx, found_idx; BD_ADDR bda; - BOOLEAN srv_chg_ind_pending=FALSE; + BOOLEAN srv_chg_ind_pending = FALSE; tGATT_TCB *p_tcb; tBT_TRANSPORT transport; GATT_TRACE_DEBUG ("gatt_proc_srv_chg"); - if (gatt_cb.cb_info.p_srv_chg_callback && gatt_cb.handle_of_h_r) - { + if (gatt_cb.cb_info.p_srv_chg_callback && gatt_cb.handle_of_h_r) { gatt_set_srv_chg(); - start_idx =0; - while (gatt_find_the_connected_bda(start_idx, bda, &found_idx, &transport)) - { + start_idx = 0; + while (gatt_find_the_connected_bda(start_idx, bda, &found_idx, &transport)) { p_tcb = &gatt_cb.tcb[found_idx];; srv_chg_ind_pending = gatt_is_srv_chg_ind_pending(p_tcb); - if (!srv_chg_ind_pending) - { + if (!srv_chg_ind_pending) { gatt_send_srv_chg_ind(bda); - } - else - { + } else { GATT_TRACE_DEBUG ("discard srv chg - already has one in the queue"); } start_idx = ++found_idx; @@ -1192,8 +1083,7 @@ void gatt_proc_srv_chg (void) *******************************************************************************/ void gatt_set_ch_state(tGATT_TCB *p_tcb, tGATT_CH_STATE ch_state) { - if (p_tcb) - { + if (p_tcb) { GATT_TRACE_DEBUG ("gatt_set_ch_state: old=%d new=%d", p_tcb->ch_state, ch_state); p_tcb->ch_state = ch_state; } @@ -1211,8 +1101,7 @@ void gatt_set_ch_state(tGATT_TCB *p_tcb, tGATT_CH_STATE ch_state) tGATT_CH_STATE gatt_get_ch_state(tGATT_TCB *p_tcb) { tGATT_CH_STATE ch_state = GATT_CH_CLOSE; - if (p_tcb) - { + if (p_tcb) { GATT_TRACE_DEBUG ("gatt_get_ch_state: ch_state=%d", p_tcb->ch_state); ch_state = p_tcb->ch_state; } diff --git a/components/bt/bluedroid/stack/gatt/gatt_sr.c b/components/bt/bluedroid/stack/gatt/gatt_sr.c old mode 100755 new mode 100644 index a48d8896f1..49ad3a2305 --- a/components/bt/bluedroid/stack/gatt/gatt_sr.c +++ b/components/bt/bluedroid/stack/gatt/gatt_sr.c @@ -49,17 +49,13 @@ UINT32 gatt_sr_enqueue_cmd (tGATT_TCB *p_tcb, UINT8 op_code, UINT16 handle) UINT32 trans_id = 0; if ( (p_cmd->op_code == 0) || - (op_code == GATT_HANDLE_VALUE_CONF)) /* no pending request */ - { + (op_code == GATT_HANDLE_VALUE_CONF)) { /* no pending request */ if (op_code == GATT_CMD_WRITE || - op_code == GATT_SIGN_CMD_WRITE || - op_code == GATT_REQ_MTU || - op_code == GATT_HANDLE_VALUE_CONF) - { + op_code == GATT_SIGN_CMD_WRITE || + op_code == GATT_REQ_MTU || + op_code == GATT_HANDLE_VALUE_CONF) { trans_id = ++p_tcb->trans_id; - } - else - { + } else { p_cmd->trans_id = ++p_tcb->trans_id; p_cmd->op_code = op_code; p_cmd->handle = handle; @@ -83,7 +79,7 @@ UINT32 gatt_sr_enqueue_cmd (tGATT_TCB *p_tcb, UINT8 op_code, UINT16 handle) *******************************************************************************/ BOOLEAN gatt_sr_cmd_empty (tGATT_TCB *p_tcb) { - return(p_tcb->sr_cmd.op_code == 0); + return (p_tcb->sr_cmd.op_code == 0); } /******************************************************************************* @@ -99,15 +95,15 @@ void gatt_dequeue_sr_cmd (tGATT_TCB *p_tcb) { /* Double check in case any buffers are queued */ GATT_TRACE_DEBUG("gatt_dequeue_sr_cmd" ); - if (p_tcb->sr_cmd.p_rsp_msg) - { + if (p_tcb->sr_cmd.p_rsp_msg) { GATT_TRACE_ERROR("free p_tcb->sr_cmd.p_rsp_msg = %d", p_tcb->sr_cmd.p_rsp_msg); GKI_freebuf (p_tcb->sr_cmd.p_rsp_msg); } - while (GKI_getfirst(&p_tcb->sr_cmd.multi_rsp_q)) + while (GKI_getfirst(&p_tcb->sr_cmd.multi_rsp_q)) { GKI_freebuf (GKI_dequeue (&p_tcb->sr_cmd.multi_rsp_q)); + } memset( &p_tcb->sr_cmd, 0, sizeof(tGATT_SR_CMD)); } @@ -131,8 +127,7 @@ static BOOLEAN process_read_multi_rsp (tGATT_SR_CMD *p_cmd, tGATT_STATUS status, GATT_TRACE_DEBUG ("process_read_multi_rsp status=%d mtu=%d", status, mtu); - if (p_buf == NULL) - { + if (p_buf == NULL) { p_cmd->status = GATT_INSUF_RESOURCE; return FALSE; } @@ -142,18 +137,15 @@ static BOOLEAN process_read_multi_rsp (tGATT_SR_CMD *p_cmd, tGATT_STATUS status, GKI_enqueue (&p_cmd->multi_rsp_q, p_buf); p_cmd->status = status; - if (status == GATT_SUCCESS) - { + if (status == GATT_SUCCESS) { GATT_TRACE_DEBUG ("Multi read count=%d num_hdls=%d", - GKI_queue_length(&p_cmd->multi_rsp_q), p_cmd->multi_req.num_handles); + GKI_queue_length(&p_cmd->multi_rsp_q), p_cmd->multi_req.num_handles); /* Wait till we get all the responses */ - if (GKI_queue_length(&p_cmd->multi_rsp_q) == p_cmd->multi_req.num_handles) - { + if (GKI_queue_length(&p_cmd->multi_rsp_q) == p_cmd->multi_req.num_handles) { len = sizeof(BT_HDR) + L2CAP_MIN_OFFSET + mtu; - if ((p_buf = (BT_HDR *)GKI_getbuf(len)) == NULL) - { + if ((p_buf = (BT_HDR *)GKI_getbuf(len)) == NULL) { p_cmd->status = GATT_INSUF_RESOURCE; - return(TRUE); + return (TRUE); } memset(p_buf, 0, len); @@ -165,53 +157,42 @@ static BOOLEAN process_read_multi_rsp (tGATT_SR_CMD *p_cmd, tGATT_STATUS status, p_buf->len = 1; /* Now walk through the buffers puting the data into the response in order */ - for (ii = 0; ii < p_cmd->multi_req.num_handles; ii++) - { - if (ii==0) - { + for (ii = 0; ii < p_cmd->multi_req.num_handles; ii++) { + if (ii == 0) { p_rsp = (tGATTS_RSP *)GKI_getfirst (&p_cmd->multi_rsp_q); - } - else - { + } else { p_rsp = (tGATTS_RSP *)GKI_getnext (p_rsp); } - if (p_rsp != NULL) - { + if (p_rsp != NULL) { total_len = (p_buf->len + p_rsp->attr_value.len); - if (total_len > mtu) - { + if (total_len > mtu) { /* just send the partial response for the overflow case */ len = p_rsp->attr_value.len - (total_len - mtu); is_overflow = TRUE; GATT_TRACE_DEBUG ("multi read overflow available len=%d val_len=%d", len, p_rsp->attr_value.len ); - } - else - { + } else { len = p_rsp->attr_value.len; } - if (p_rsp->attr_value.handle == p_cmd->multi_req.handles[ii]) - { + if (p_rsp->attr_value.handle == p_cmd->multi_req.handles[ii]) { memcpy (p, p_rsp->attr_value.value, len); - if (!is_overflow) + if (!is_overflow) { p += len; + } p_buf->len += len; - } - else - { + } else { p_cmd->status = GATT_NOT_FOUND; break; } - if (is_overflow) + if (is_overflow) { break; + } - } - else - { + } else { p_cmd->status = GATT_NOT_FOUND; break; } @@ -220,32 +201,25 @@ static BOOLEAN process_read_multi_rsp (tGATT_SR_CMD *p_cmd, tGATT_STATUS status, /* Sanity check on the buffer length */ - if (p_buf->len == 0) - { + if (p_buf->len == 0) { GATT_TRACE_ERROR("process_read_multi_rsp - nothing found!!"); p_cmd->status = GATT_NOT_FOUND; GKI_freebuf (p_buf); GATT_TRACE_DEBUG(" GKI_freebuf (p_buf)"); - } - else if (p_cmd->p_rsp_msg != NULL) - { + } else if (p_cmd->p_rsp_msg != NULL) { GKI_freebuf (p_buf); - } - else - { + } else { p_cmd->p_rsp_msg = p_buf; } - return(TRUE); + return (TRUE); } - } - else /* any handle read exception occurs, return error */ - { - return(TRUE); + } else { /* any handle read exception occurs, return error */ + return (TRUE); } /* If here, still waiting */ - return(FALSE); + return (FALSE); } /******************************************************************************* @@ -269,44 +243,36 @@ tGATT_STATUS gatt_sr_process_app_rsp (tGATT_TCB *p_tcb, tGATT_IF gatt_if, gatt_sr_update_cback_cnt(p_tcb, gatt_if, FALSE, FALSE); - if (op_code == GATT_REQ_READ_MULTI) - { + if (op_code == GATT_REQ_READ_MULTI) { /* If no error and still waiting, just return */ - if (!process_read_multi_rsp (&p_tcb->sr_cmd, status, p_msg, p_tcb->payload_size)) - return(GATT_SUCCESS); - } - else - { - if (op_code == GATT_REQ_PREPARE_WRITE && status == GATT_SUCCESS) + if (!process_read_multi_rsp (&p_tcb->sr_cmd, status, p_msg, p_tcb->payload_size)) { + return (GATT_SUCCESS); + } + } else { + if (op_code == GATT_REQ_PREPARE_WRITE && status == GATT_SUCCESS) { gatt_sr_update_prep_cnt(p_tcb, gatt_if, TRUE, FALSE); + } - if (op_code == GATT_REQ_EXEC_WRITE && status != GATT_SUCCESS) + if (op_code == GATT_REQ_EXEC_WRITE && status != GATT_SUCCESS) { gatt_sr_reset_cback_cnt(p_tcb); + } p_tcb->sr_cmd.status = status; if (gatt_sr_is_cback_cnt_zero(p_tcb) - && status == GATT_SUCCESS) - { - if (p_tcb->sr_cmd.p_rsp_msg == NULL) - { + && status == GATT_SUCCESS) { + if (p_tcb->sr_cmd.p_rsp_msg == NULL) { p_tcb->sr_cmd.p_rsp_msg = attp_build_sr_msg (p_tcb, (UINT8)(op_code + 1), (tGATT_SR_MSG *)p_msg); - } - else - { + } else { GATT_TRACE_ERROR("Exception!!! already has respond message"); } } } - if (gatt_sr_is_cback_cnt_zero(p_tcb)) - { - if ( (p_tcb->sr_cmd.status == GATT_SUCCESS) && (p_tcb->sr_cmd.p_rsp_msg) ) - { + if (gatt_sr_is_cback_cnt_zero(p_tcb)) { + if ( (p_tcb->sr_cmd.status == GATT_SUCCESS) && (p_tcb->sr_cmd.p_rsp_msg) ) { ret_code = attp_send_sr_msg (p_tcb, p_tcb->sr_cmd.p_rsp_msg); p_tcb->sr_cmd.p_rsp_msg = NULL; - } - else - { + } else { ret_code = gatt_send_error_rsp (p_tcb, status, op_code, p_tcb->sr_cmd.handle, FALSE); } @@ -338,10 +304,9 @@ void gatt_process_exec_write_req (tGATT_TCB *p_tcb, UINT8 op_code, UINT16 len, U UNUSED(len); #if GATT_CONFORMANCE_TESTING == TRUE - if (gatt_cb.enable_err_rsp && gatt_cb.req_op_code == op_code) - { + if (gatt_cb.enable_err_rsp && gatt_cb.req_op_code == op_code) { GATT_TRACE_DEBUG("Conformance tst: forced err rspv for Execute Write: error status=%d", - gatt_cb.err_status); + gatt_cb.err_status); gatt_send_error_rsp (p_tcb, gatt_cb.err_status, gatt_cb.req_op_code, gatt_cb.handle, FALSE); @@ -356,27 +321,22 @@ void gatt_process_exec_write_req (tGATT_TCB *p_tcb, UINT8 op_code, UINT16 len, U /* no prep write is queued */ - if (!gatt_sr_is_prep_cnt_zero(p_tcb)) - { + if (!gatt_sr_is_prep_cnt_zero(p_tcb)) { trans_id = gatt_sr_enqueue_cmd(p_tcb, op_code, 0); gatt_sr_copy_prep_cnt_to_cback_cnt(p_tcb); - for (i=0; iprep_cnt[i]) - { - gatt_if = (tGATT_IF) (i+1); + for (i = 0; i < GATT_MAX_APPS; i++) { + if (p_tcb->prep_cnt[i]) { + gatt_if = (tGATT_IF) (i + 1); conn_id = GATT_CREATE_CONN_ID(p_tcb->tcb_idx, gatt_if); gatt_sr_send_req_callback(conn_id, trans_id, GATTS_REQ_TYPE_WRITE_EXEC, (tGATTS_DATA *)&flag); - p_tcb->prep_cnt[i]= 0; + p_tcb->prep_cnt[i] = 0; } } - } - else /* nothing needs to be executed , send response now */ - { + } else { /* nothing needs to be executed , send response now */ GATT_TRACE_ERROR("gatt_process_exec_write_req: no prepare write pending"); gatt_send_error_rsp(p_tcb, GATT_ERROR, GATT_REQ_EXEC_WRITE, 0, FALSE); } @@ -410,8 +370,7 @@ void gatt_process_read_multi_req (tGATT_TCB *p_tcb, UINT8 op_code, UINT16 len, U &key_size); #if GATT_CONFORMANCE_TESTING == TRUE - if (gatt_cb.enable_err_rsp && gatt_cb.req_op_code == op_code) - { + if (gatt_cb.enable_err_rsp && gatt_cb.req_op_code == op_code) { GATT_TRACE_DEBUG("Conformance tst: forced err rspvofr ReadMultiple: error status=%d", gatt_cb.err_status); STREAM_TO_UINT16(handle, p); @@ -422,28 +381,23 @@ void gatt_process_read_multi_req (tGATT_TCB *p_tcb, UINT8 op_code, UINT16 len, U } #endif - while (ll >= 2 && p_tcb->sr_cmd.multi_req.num_handles < GATT_MAX_READ_MULTI_HANDLES) - { + while (ll >= 2 && p_tcb->sr_cmd.multi_req.num_handles < GATT_MAX_READ_MULTI_HANDLES) { STREAM_TO_UINT16(handle, p); - if ((i_rcb = gatt_sr_find_i_rcb_by_handle(handle)) < GATT_MAX_SR_PROFILES) - { + if ((i_rcb = gatt_sr_find_i_rcb_by_handle(handle)) < GATT_MAX_SR_PROFILES) { p_tcb->sr_cmd.multi_req.handles[p_tcb->sr_cmd.multi_req.num_handles++] = handle; /* check read permission */ if ((err = gatts_read_attr_perm_check( gatt_cb.sr_reg[i_rcb].p_db, - FALSE, - handle, - sec_flag, - key_size)) - != GATT_SUCCESS) - { + FALSE, + handle, + sec_flag, + key_size)) + != GATT_SUCCESS) { GATT_TRACE_DEBUG("read permission denied : 0x%02x", err); break; } - } - else - { + } else { /* invalid handle */ err = GATT_INVALID_HANDLE; break; @@ -451,24 +405,20 @@ void gatt_process_read_multi_req (tGATT_TCB *p_tcb, UINT8 op_code, UINT16 len, U ll -= 2; } - if (ll != 0) - { + if (ll != 0) { GATT_TRACE_ERROR("max attribute handle reached in ReadMultiple Request."); } - if (p_tcb->sr_cmd.multi_req.num_handles == 0) + if (p_tcb->sr_cmd.multi_req.num_handles == 0) { err = GATT_INVALID_HANDLE; + } - if (err == GATT_SUCCESS) - { - if ((trans_id = gatt_sr_enqueue_cmd (p_tcb, op_code, p_tcb->sr_cmd.multi_req.handles[0])) != 0) - { + if (err == GATT_SUCCESS) { + if ((trans_id = gatt_sr_enqueue_cmd (p_tcb, op_code, p_tcb->sr_cmd.multi_req.handles[0])) != 0) { gatt_sr_reset_cback_cnt(p_tcb); /* read multiple use multi_rsp_q's count*/ - for (ll = 0; ll < p_tcb->sr_cmd.multi_req.num_handles; ll ++) - { - if ((p_msg = (tGATTS_RSP *)GKI_getbuf(sizeof(tGATTS_RSP))) != NULL) - { + for (ll = 0; ll < p_tcb->sr_cmd.multi_req.num_handles; ll ++) { + if ((p_msg = (tGATTS_RSP *)GKI_getbuf(sizeof(tGATTS_RSP))) != NULL) { memset(p_msg, 0, sizeof(tGATTS_RSP)) ; handle = p_tcb->sr_cmd.multi_req.handles[ll]; @@ -487,28 +437,26 @@ void gatt_process_read_multi_req (tGATT_TCB *p_tcb, UINT8 op_code, UINT16 len, U key_size, trans_id); - if (err == GATT_SUCCESS) - { - gatt_sr_process_app_rsp(p_tcb, gatt_cb.sr_reg[i_rcb].gatt_if ,trans_id, op_code, GATT_SUCCESS, p_msg); + if (err == GATT_SUCCESS) { + gatt_sr_process_app_rsp(p_tcb, gatt_cb.sr_reg[i_rcb].gatt_if , trans_id, op_code, GATT_SUCCESS, p_msg); } /* either not using or done using the buffer, release it now */ GKI_freebuf(p_msg); - } - else - { + } else { err = GATT_NO_RESOURCES; gatt_dequeue_sr_cmd(p_tcb); break; } } - } - else + } else { err = GATT_NO_RESOURCES; + } } /* in theroy BUSY is not possible(should already been checked), protected check */ - if (err != GATT_SUCCESS && err != GATT_PENDING && err != GATT_BUSY) + if (err != GATT_SUCCESS && err != GATT_PENDING && err != GATT_BUSY) { gatt_send_error_rsp(p_tcb, err, op_code, handle, FALSE); + } } /******************************************************************************* @@ -522,14 +470,14 @@ void gatt_process_read_multi_req (tGATT_TCB *p_tcb, UINT8 op_code, UINT16 len, U ** *******************************************************************************/ static tGATT_STATUS gatt_build_primary_service_rsp (BT_HDR *p_msg, tGATT_TCB *p_tcb, - UINT8 op_code, UINT16 s_hdl, - UINT16 e_hdl, UINT8 *p_data, tBT_UUID value) + UINT8 op_code, UINT16 s_hdl, + UINT16 e_hdl, UINT8 *p_data, tBT_UUID value) { tGATT_STATUS status = GATT_NOT_FOUND; - UINT8 handle_len =4, *p ; + UINT8 handle_len = 4, *p ; tGATT_SR_REG *p_rcb; - tGATT_SRV_LIST_INFO *p_list= &gatt_cb.srv_list_info; - tGATT_SRV_LIST_ELEM *p_srv=NULL; + tGATT_SRV_LIST_INFO *p_list = &gatt_cb.srv_list_info; + tGATT_SRV_LIST_ELEM *p_srv = NULL; tBT_UUID *p_uuid; UNUSED(p_data); @@ -538,62 +486,54 @@ static tGATT_STATUS gatt_build_primary_service_rsp (BT_HDR *p_msg, tGATT_TCB *p_ p_srv = p_list->p_first; - while (p_srv) - { + while (p_srv) { p_rcb = GATT_GET_SR_REG_PTR(p_srv->i_sreg); if (p_rcb->in_use && - p_rcb->s_hdl >= s_hdl && - p_rcb->s_hdl <= e_hdl && - p_rcb->type == GATT_UUID_PRI_SERVICE) - { - if ((p_uuid = gatts_get_service_uuid (p_rcb->p_db)) != NULL) - { - if (op_code == GATT_REQ_READ_BY_GRP_TYPE) + p_rcb->s_hdl >= s_hdl && + p_rcb->s_hdl <= e_hdl && + p_rcb->type == GATT_UUID_PRI_SERVICE) { + if ((p_uuid = gatts_get_service_uuid (p_rcb->p_db)) != NULL) { + if (op_code == GATT_REQ_READ_BY_GRP_TYPE) { handle_len = 4 + p_uuid->len; + } /* get the length byte in the repsonse */ - if (p_msg->offset ==0) - { + if (p_msg->offset == 0) { *p ++ = op_code + 1; p_msg->len ++; p_msg->offset = handle_len; - if (op_code == GATT_REQ_READ_BY_GRP_TYPE) - { + if (op_code == GATT_REQ_READ_BY_GRP_TYPE) { *p ++ = (UINT8)p_msg->offset; /* length byte */ p_msg->len ++; } } if (p_msg->len + p_msg->offset <= p_tcb->payload_size && - handle_len == p_msg->offset) - { + handle_len == p_msg->offset) { if (op_code != GATT_REQ_FIND_TYPE_VALUE || - gatt_uuid_compare(value, *p_uuid)) - { + gatt_uuid_compare(value, *p_uuid)) { UINT16_TO_STREAM(p, p_rcb->s_hdl); if (p_list->p_last_primary == p_srv && - p_list->p_last_primary == p_list->p_last) - { + p_list->p_last_primary == p_list->p_last) { GATT_TRACE_DEBUG("Use 0xFFFF for the last primary attribute"); UINT16_TO_STREAM(p, 0xFFFF); /* see GATT ERRATA 4065, 4063, ATT ERRATA 4062 */ - } - else - { + } else { UINT16_TO_STREAM(p, p_rcb->e_hdl); } - if (op_code == GATT_REQ_READ_BY_GRP_TYPE) + if (op_code == GATT_REQ_READ_BY_GRP_TYPE) { gatt_build_uuid_to_stream(&p, *p_uuid); + } status = GATT_SUCCESS; p_msg->len += p_msg->offset; } - } - else + } else { break; + } } } p_srv = p_srv->p_next; @@ -615,7 +555,7 @@ static tGATT_STATUS gatt_build_primary_service_rsp (BT_HDR *p_msg, tGATT_TCB *p_ ** *******************************************************************************/ static tGATT_STATUS gatt_build_find_info_rsp(tGATT_SR_REG *p_rcb, BT_HDR *p_msg, UINT16 *p_len, - UINT16 s_hdl, UINT16 e_hdl) + UINT16 s_hdl, UINT16 e_hdl) { tGATT_STATUS status = GATT_NOT_FOUND; UINT8 *p; @@ -623,46 +563,37 @@ static tGATT_STATUS gatt_build_find_info_rsp(tGATT_SR_REG *p_rcb, BT_HDR *p_msg, tGATT_ATTR16 *p_attr = NULL; UINT8 info_pair_len[2] = {4, 18}; - if (!p_rcb->p_db || !p_rcb->p_db->p_attr_list) + if (!p_rcb->p_db || !p_rcb->p_db->p_attr_list) { return status; + } /* check the attribute database */ p_attr = (tGATT_ATTR16 *) p_rcb->p_db->p_attr_list; p = (UINT8 *)(p_msg + 1) + L2CAP_MIN_OFFSET + p_msg->len; - while (p_attr) - { - if (p_attr->handle > e_hdl) - { + while (p_attr) { + if (p_attr->handle > e_hdl) { break; } - if (p_attr->handle >= s_hdl) - { - if (p_msg->offset == 0) + if (p_attr->handle >= s_hdl) { + if (p_msg->offset == 0) { p_msg->offset = (p_attr->uuid_type == GATT_ATTR_UUID_TYPE_16) ? GATT_INFO_TYPE_PAIR_16 : GATT_INFO_TYPE_PAIR_128; + } - if (len >= info_pair_len[p_msg->offset - 1]) - { - if (p_msg->offset == GATT_INFO_TYPE_PAIR_16 && p_attr->uuid_type == GATT_ATTR_UUID_TYPE_16) - { + if (len >= info_pair_len[p_msg->offset - 1]) { + if (p_msg->offset == GATT_INFO_TYPE_PAIR_16 && p_attr->uuid_type == GATT_ATTR_UUID_TYPE_16) { UINT16_TO_STREAM(p, p_attr->handle); UINT16_TO_STREAM(p, p_attr->uuid); - } - else if (p_msg->offset == GATT_INFO_TYPE_PAIR_128 && p_attr->uuid_type == GATT_ATTR_UUID_TYPE_128 ) - { + } else if (p_msg->offset == GATT_INFO_TYPE_PAIR_128 && p_attr->uuid_type == GATT_ATTR_UUID_TYPE_128 ) { UINT16_TO_STREAM(p, p_attr->handle); ARRAY_TO_STREAM (p, ((tGATT_ATTR128 *) p_attr)->uuid, LEN_UUID_128); - } - else if (p_msg->offset == GATT_INFO_TYPE_PAIR_128 && p_attr->uuid_type == GATT_ATTR_UUID_TYPE_32) - { + } else if (p_msg->offset == GATT_INFO_TYPE_PAIR_128 && p_attr->uuid_type == GATT_ATTR_UUID_TYPE_32) { UINT16_TO_STREAM(p, p_attr->handle); gatt_convert_uuid32_to_uuid128(p, ((tGATT_ATTR32 *) p_attr)->uuid); p += LEN_UUID_128; - } - else - { + } else { GATT_TRACE_ERROR("format mismatch"); status = GATT_NO_RESOURCES; break; @@ -672,9 +603,7 @@ static tGATT_STATUS gatt_build_find_info_rsp(tGATT_SR_REG *p_rcb, BT_HDR *p_msg, len -= info_pair_len[p_msg->offset - 1]; status = GATT_SUCCESS; - } - else - { + } else { status = GATT_NO_RESOURCES; break; } @@ -696,50 +625,45 @@ static tGATT_STATUS gatt_build_find_info_rsp(tGATT_SR_REG *p_rcb, BT_HDR *p_msg, ** *******************************************************************************/ static tGATT_STATUS gatts_validate_packet_format(UINT8 op_code, UINT16 *p_len, - UINT8 **p_data, tBT_UUID *p_uuid_filter, - UINT16 *p_s_hdl, UINT16 *p_e_hdl) + UINT8 **p_data, tBT_UUID *p_uuid_filter, + UINT16 *p_s_hdl, UINT16 *p_e_hdl) { tGATT_STATUS reason = GATT_SUCCESS; UINT16 uuid_len, s_hdl = 0, e_hdl = 0; UINT16 len = *p_len; UINT8 *p = *p_data; - if (len >= 4) - { + if (len >= 4) { /* obtain starting handle, and ending handle */ STREAM_TO_UINT16(s_hdl, p); STREAM_TO_UINT16(e_hdl, p); len -= 4; - if (s_hdl > e_hdl || !GATT_HANDLE_IS_VALID(s_hdl) || !GATT_HANDLE_IS_VALID(e_hdl)) - { + if (s_hdl > e_hdl || !GATT_HANDLE_IS_VALID(s_hdl) || !GATT_HANDLE_IS_VALID(e_hdl)) { reason = GATT_INVALID_HANDLE; } /* for these PDUs, uuid filter must present */ else if (op_code == GATT_REQ_READ_BY_GRP_TYPE || op_code == GATT_REQ_FIND_TYPE_VALUE || - op_code == GATT_REQ_READ_BY_TYPE) - { - if (len >= 2 && p_uuid_filter != NULL) - { + op_code == GATT_REQ_READ_BY_TYPE) { + if (len >= 2 && p_uuid_filter != NULL) { uuid_len = (op_code == GATT_REQ_FIND_TYPE_VALUE) ? 2 : len; /* parse uuid now */ if (gatt_parse_uuid_from_cmd (p_uuid_filter, uuid_len, &p) == FALSE || - p_uuid_filter->len == 0) - { + p_uuid_filter->len == 0) { GATT_TRACE_DEBUG("UUID filter does not exsit"); reason = GATT_INVALID_PDU; - } - else + } else { len -= p_uuid_filter->len; - } - else + } + } else { reason = GATT_INVALID_PDU; + } } - } - else + } else { reason = GATT_INVALID_PDU; + } *p_data = p; *p_len = len; @@ -770,39 +694,28 @@ void gatts_process_primary_service_req(tGATT_TCB *p_tcb, UINT8 op_code, UINT16 l memset (&value, 0, sizeof(tBT_UUID)); reason = gatts_validate_packet_format(op_code, &len, &p_data, &uuid, &s_hdl, &e_hdl); - if (reason == GATT_SUCCESS) - { - if (gatt_uuid_compare(uuid, primary_service)) - { - if (op_code == GATT_REQ_FIND_TYPE_VALUE) - { - if (gatt_parse_uuid_from_cmd(&value, len, &p_data) == FALSE) + if (reason == GATT_SUCCESS) { + if (gatt_uuid_compare(uuid, primary_service)) { + if (op_code == GATT_REQ_FIND_TYPE_VALUE) { + if (gatt_parse_uuid_from_cmd(&value, len, &p_data) == FALSE) { reason = GATT_INVALID_PDU; + } } - if (reason == GATT_SUCCESS) - { - if ((p_msg = (BT_HDR *)GKI_getbuf(msg_len)) == NULL) - { + if (reason == GATT_SUCCESS) { + if ((p_msg = (BT_HDR *)GKI_getbuf(msg_len)) == NULL) { GATT_TRACE_ERROR("gatts_process_primary_service_req failed. no resources."); reason = GATT_NO_RESOURCES; - } - else - { + } else { memset(p_msg, 0, msg_len); reason = gatt_build_primary_service_rsp (p_msg, p_tcb, op_code, s_hdl, e_hdl, p_data, value); } } - } - else - { - if (op_code == GATT_REQ_READ_BY_GRP_TYPE) - { + } else { + if (op_code == GATT_REQ_READ_BY_GRP_TYPE) { reason = GATT_UNSUPPORT_GRP_TYPE; GATT_TRACE_DEBUG("unexpected ReadByGrpType Group: 0x%04x", uuid.uu.uuid16); - } - else - { + } else { /* we do not support ReadByTypeValue with any non-primamry_service type */ reason = GATT_NOT_FOUND; GATT_TRACE_DEBUG("unexpected ReadByTypeValue type: 0x%04x", uuid.uu.uuid16); @@ -810,13 +723,14 @@ void gatts_process_primary_service_req(tGATT_TCB *p_tcb, UINT8 op_code, UINT16 l } } - if (reason != GATT_SUCCESS) - { - if (p_msg) GKI_freebuf(p_msg); + if (reason != GATT_SUCCESS) { + if (p_msg) { + GKI_freebuf(p_msg); + } gatt_send_error_rsp (p_tcb, reason, op_code, s_hdl, FALSE); - } - else + } else { attp_send_sr_msg(p_tcb, p_msg); + } } @@ -836,21 +750,17 @@ static void gatts_process_find_info(tGATT_TCB *p_tcb, UINT8 op_code, UINT16 len, UINT16 s_hdl = 0, e_hdl = 0, buf_len; BT_HDR *p_msg = NULL; tGATT_SR_REG *p_rcb; - tGATT_SRV_LIST_INFO *p_list= &gatt_cb.srv_list_info; - tGATT_SRV_LIST_ELEM *p_srv=NULL; + tGATT_SRV_LIST_INFO *p_list = &gatt_cb.srv_list_info; + tGATT_SRV_LIST_ELEM *p_srv = NULL; reason = gatts_validate_packet_format(op_code, &len, &p_data, NULL, &s_hdl, &e_hdl); - if (reason == GATT_SUCCESS) - { + if (reason == GATT_SUCCESS) { buf_len = (UINT16)(sizeof(BT_HDR) + p_tcb->payload_size + L2CAP_MIN_OFFSET); - if ((p_msg = (BT_HDR *)GKI_getbuf(buf_len)) == NULL) - { + if ((p_msg = (BT_HDR *)GKI_getbuf(buf_len)) == NULL) { reason = GATT_NO_RESOURCES; - } - else - { + } else { reason = GATT_NOT_FOUND; memset(p_msg, 0, buf_len); @@ -862,17 +772,14 @@ static void gatts_process_find_info(tGATT_TCB *p_tcb, UINT8 op_code, UINT16 len, p_srv = p_list->p_first; - while (p_srv) - { + while (p_srv) { p_rcb = GATT_GET_SR_REG_PTR(p_srv->i_sreg); if (p_rcb->in_use && - !(p_rcb->s_hdl > e_hdl || - p_rcb->e_hdl < s_hdl)) - { + !(p_rcb->s_hdl > e_hdl || + p_rcb->e_hdl < s_hdl)) { reason = gatt_build_find_info_rsp(p_rcb, p_msg, &buf_len, s_hdl, e_hdl); - if (reason == GATT_NO_RESOURCES) - { + if (reason == GATT_NO_RESOURCES) { reason = GATT_SUCCESS; break; } @@ -885,13 +792,14 @@ static void gatts_process_find_info(tGATT_TCB *p_tcb, UINT8 op_code, UINT16 len, } } - if (reason != GATT_SUCCESS) - { - if (p_msg) GKI_freebuf(p_msg); + if (reason != GATT_SUCCESS) { + if (p_msg) { + GKI_freebuf(p_msg); + } gatt_send_error_rsp (p_tcb, reason, op_code, s_hdl, FALSE); - } - else + } else { attp_send_sr_msg(p_tcb, p_msg); + } } @@ -913,41 +821,34 @@ static void gatts_process_mtu_req (tGATT_TCB *p_tcb, UINT16 len, UINT8 *p_data) UINT16 conn_id; /* BR/EDR conenction, send error response */ - if (p_tcb->att_lcid != L2CAP_ATT_CID) - { + if (p_tcb->att_lcid != L2CAP_ATT_CID) { gatt_send_error_rsp (p_tcb, GATT_REQ_NOT_SUPPORTED, GATT_REQ_MTU, 0, FALSE); - } - else if (len < GATT_MTU_REQ_MIN_LEN) - { + } else if (len < GATT_MTU_REQ_MIN_LEN) { GATT_TRACE_ERROR("invalid MTU request PDU received.\n"); gatt_send_error_rsp (p_tcb, GATT_INVALID_PDU, GATT_REQ_MTU, 0, FALSE); - } - else - { + } else { STREAM_TO_UINT16 (mtu, p); /* mtu must be greater than default MTU which is 23/48 */ - if (mtu < GATT_DEF_BLE_MTU_SIZE) + if (mtu < GATT_DEF_BLE_MTU_SIZE) { p_tcb->payload_size = GATT_DEF_BLE_MTU_SIZE; - else if (mtu > GATT_MAX_MTU_SIZE) + } else if (mtu > GATT_MAX_MTU_SIZE) { p_tcb->payload_size = GATT_MAX_MTU_SIZE; - else + } else { p_tcb->payload_size = mtu; + } GATT_TRACE_ERROR("MTU request PDU with MTU size %d\n", p_tcb->payload_size); l2cble_set_fixed_channel_tx_data_length(p_tcb->peer_bda, L2CAP_ATT_CID, p_tcb->payload_size); - if ((p_buf = attp_build_sr_msg(p_tcb, GATT_RSP_MTU, (tGATT_SR_MSG *) &p_tcb->payload_size)) != NULL) - { + if ((p_buf = attp_build_sr_msg(p_tcb, GATT_RSP_MTU, (tGATT_SR_MSG *) &p_tcb->payload_size)) != NULL) { attp_send_sr_msg (p_tcb, p_buf); /* Notify all registered applicaiton with new MTU size. Us a transaction ID */ /* of 0, as no response is allowed from applcations */ - for (i = 0; i < GATT_MAX_APPS; i ++) - { - if (gatt_cb.cl_rcb[i].in_use ) - { + for (i = 0; i < GATT_MAX_APPS; i ++) { + if (gatt_cb.cl_rcb[i].in_use ) { conn_id = GATT_CREATE_CONN_ID(p_tcb->tcb_idx, gatt_cb.cl_rcb[i].gatt_if); gatt_sr_send_req_callback(conn_id, 0, GATTS_REQ_TYPE_MTU, (tGATTS_DATA *)&p_tcb->payload_size); @@ -978,20 +879,19 @@ void gatts_process_read_by_type_req(tGATT_TCB *p_tcb, UINT8 op_code, UINT16 len, tBT_UUID uuid; tGATT_SR_REG *p_rcb; UINT16 msg_len = (UINT16)(sizeof(BT_HDR) + p_tcb->payload_size + L2CAP_MIN_OFFSET), - buf_len, - s_hdl, e_hdl, err_hdl = 0; + buf_len, + s_hdl, e_hdl, err_hdl = 0; BT_HDR *p_msg = NULL; tGATT_STATUS reason, ret; UINT8 *p; UINT8 sec_flag, key_size; - tGATT_SRV_LIST_INFO *p_list= &gatt_cb.srv_list_info; - tGATT_SRV_LIST_ELEM *p_srv=NULL; + tGATT_SRV_LIST_INFO *p_list = &gatt_cb.srv_list_info; + tGATT_SRV_LIST_ELEM *p_srv = NULL; reason = gatts_validate_packet_format(op_code, &len, &p_data, &uuid, &s_hdl, &e_hdl); #if GATT_CONFORMANCE_TESTING == TRUE - if (gatt_cb.enable_err_rsp && gatt_cb.req_op_code == op_code) - { + if (gatt_cb.enable_err_rsp && gatt_cb.req_op_code == op_code) { GATT_TRACE_DEBUG("Conformance tst: forced err rsp for ReadByType: error status=%d", gatt_cb.err_status); gatt_send_error_rsp (p_tcb, gatt_cb.err_status, gatt_cb.req_op_code, s_hdl, FALSE); @@ -1000,16 +900,12 @@ void gatts_process_read_by_type_req(tGATT_TCB *p_tcb, UINT8 op_code, UINT16 len, } #endif - if (reason == GATT_SUCCESS) - { - if ((p_msg = (BT_HDR *)GKI_getbuf(msg_len)) == NULL) - { + if (reason == GATT_SUCCESS) { + if ((p_msg = (BT_HDR *)GKI_getbuf(msg_len)) == NULL) { GATT_TRACE_ERROR("gatts_process_find_info failed. no resources."); reason = GATT_NO_RESOURCES; - } - else - { + } else { memset(p_msg, 0, msg_len); p = (UINT8 *)(p_msg + 1) + L2CAP_MIN_OFFSET; @@ -1022,14 +918,12 @@ void gatts_process_read_by_type_req(tGATT_TCB *p_tcb, UINT8 op_code, UINT16 len, p_srv = p_list->p_first; - while (p_srv) - { + while (p_srv) { p_rcb = GATT_GET_SR_REG_PTR(p_srv->i_sreg); if (p_rcb->in_use && - !(p_rcb->s_hdl > e_hdl || - p_rcb->e_hdl < s_hdl)) - { + !(p_rcb->s_hdl > e_hdl || + p_rcb->e_hdl < s_hdl)) { gatt_sr_get_sec_info(p_tcb->peer_bda, p_tcb->transport, &sec_flag, @@ -1047,15 +941,14 @@ void gatts_process_read_by_type_req(tGATT_TCB *p_tcb, UINT8 op_code, UINT16 len, key_size, 0, &err_hdl); - if (ret != GATT_NOT_FOUND) - { + if (ret != GATT_NOT_FOUND) { reason = ret; - if (ret == GATT_NO_RESOURCES) + if (ret == GATT_NO_RESOURCES) { reason = GATT_SUCCESS; + } } - if (ret != GATT_SUCCESS && ret != GATT_NOT_FOUND) - { + if (ret != GATT_SUCCESS && ret != GATT_NOT_FOUND) { s_hdl = err_hdl; break; } @@ -1066,16 +959,18 @@ void gatts_process_read_by_type_req(tGATT_TCB *p_tcb, UINT8 op_code, UINT16 len, p_msg->offset = L2CAP_MIN_OFFSET; } } - if (reason != GATT_SUCCESS) - { - if (p_msg) GKI_freebuf(p_msg); + if (reason != GATT_SUCCESS) { + if (p_msg) { + GKI_freebuf(p_msg); + } /* in theroy BUSY is not possible(should already been checked), protected check */ - if (reason != GATT_PENDING && reason != GATT_BUSY) + if (reason != GATT_PENDING && reason != GATT_BUSY) { gatt_send_error_rsp (p_tcb, reason, op_code, s_hdl, FALSE); - } - else + } + } else { attp_send_sr_msg(p_tcb, p_msg); + } } @@ -1101,31 +996,29 @@ void gatts_process_write_req (tGATT_TCB *p_tcb, UINT8 i_rcb, UINT16 handle, memset(&sr_data, 0, sizeof(tGATTS_DATA)); - switch (op_code) - { - case GATT_REQ_PREPARE_WRITE: - sr_data.write_req.is_prep = TRUE; - STREAM_TO_UINT16(sr_data.write_req.offset, p); - len -= 2; - /* fall through */ - case GATT_SIGN_CMD_WRITE: - if (op_code == GATT_SIGN_CMD_WRITE) - { - GATT_TRACE_DEBUG("Write CMD with data sigining" ); - len -= GATT_AUTH_SIGN_LEN; - } - /* fall through */ - case GATT_CMD_WRITE: - case GATT_REQ_WRITE: - if (op_code == GATT_REQ_WRITE || op_code == GATT_REQ_PREPARE_WRITE) - sr_data.write_req.need_rsp = TRUE; - sr_data.write_req.handle = handle; - sr_data.write_req.len = len; - if (len != 0 && p != NULL) - { - memcpy (sr_data.write_req.value, p, len); - } - break; + switch (op_code) { + case GATT_REQ_PREPARE_WRITE: + sr_data.write_req.is_prep = TRUE; + STREAM_TO_UINT16(sr_data.write_req.offset, p); + len -= 2; + /* fall through */ + case GATT_SIGN_CMD_WRITE: + if (op_code == GATT_SIGN_CMD_WRITE) { + GATT_TRACE_DEBUG("Write CMD with data sigining" ); + len -= GATT_AUTH_SIGN_LEN; + } + /* fall through */ + case GATT_CMD_WRITE: + case GATT_REQ_WRITE: + if (op_code == GATT_REQ_WRITE || op_code == GATT_REQ_PREPARE_WRITE) { + sr_data.write_req.need_rsp = TRUE; + } + sr_data.write_req.handle = handle; + sr_data.write_req.len = len; + if (len != 0 && p != NULL) { + memcpy (sr_data.write_req.value, p, len); + } + break; } gatt_sr_get_sec_info(p_tcb->peer_bda, @@ -1142,10 +1035,8 @@ void gatts_process_write_req (tGATT_TCB *p_tcb, UINT8 i_rcb, UINT16 handle, sec_flag, key_size); - if (status == GATT_SUCCESS) - { - if ((trans_id = gatt_sr_enqueue_cmd(p_tcb, op_code, handle)) != 0) - { + if (status == GATT_SUCCESS) { + if ((trans_id = gatt_sr_enqueue_cmd(p_tcb, op_code, handle)) != 0) { p_sreg = &gatt_cb.sr_reg[i_rcb]; conn_id = GATT_CREATE_CONN_ID(p_tcb->tcb_idx, p_sreg->gatt_if); gatt_sr_send_req_callback(conn_id, @@ -1154,9 +1045,7 @@ void gatts_process_write_req (tGATT_TCB *p_tcb, UINT8 i_rcb, UINT16 handle, &sr_data); status = GATT_PENDING; - } - else - { + } else { GATT_TRACE_ERROR("max pending command, send error"); status = GATT_BUSY; /* max pending command, application error */ } @@ -1164,8 +1053,7 @@ void gatts_process_write_req (tGATT_TCB *p_tcb, UINT8 i_rcb, UINT16 handle, /* in theroy BUSY is not possible(should already been checked), protected check */ if (status != GATT_PENDING && status != GATT_BUSY && - (op_code == GATT_REQ_PREPARE_WRITE || op_code == GATT_REQ_WRITE)) - { + (op_code == GATT_REQ_PREPARE_WRITE || op_code == GATT_REQ_WRITE)) { gatt_send_error_rsp (p_tcb, status, op_code, handle, FALSE); } return; @@ -1191,16 +1079,14 @@ static void gatts_process_read_req(tGATT_TCB *p_tcb, tGATT_SR_REG *p_rcb, UINT8 UINT16 offset = 0, value_len = 0; UNUSED (len); - if ((p_msg = (BT_HDR *)GKI_getbuf(buf_len)) == NULL) - { + if ((p_msg = (BT_HDR *)GKI_getbuf(buf_len)) == NULL) { GATT_TRACE_ERROR("gatts_process_find_info failed. no resources."); reason = GATT_NO_RESOURCES; - } - else - { - if (op_code == GATT_REQ_READ_BLOB) + } else { + if (op_code == GATT_REQ_READ_BLOB) { STREAM_TO_UINT16(offset, p_data); + } memset(p_msg, 0, buf_len); p = (UINT8 *)(p_msg + 1) + L2CAP_MIN_OFFSET; @@ -1214,30 +1100,32 @@ static void gatts_process_read_req(tGATT_TCB *p_tcb, tGATT_SR_REG *p_rcb, UINT8 &key_size); reason = gatts_read_attr_value_by_handle(p_tcb, - p_rcb->p_db, - op_code, - handle, - offset, - p, - &value_len, - buf_len, - sec_flag, - key_size, - 0); + p_rcb->p_db, + op_code, + handle, + offset, + p, + &value_len, + buf_len, + sec_flag, + key_size, + 0); p_msg->len += value_len; } - if (reason != GATT_SUCCESS) - { - if (p_msg) GKI_freebuf(p_msg); + if (reason != GATT_SUCCESS) { + if (p_msg) { + GKI_freebuf(p_msg); + } /* in theroy BUSY is not possible(should already been checked), protected check */ - if (reason != GATT_PENDING && reason != GATT_BUSY) + if (reason != GATT_PENDING && reason != GATT_BUSY) { gatt_send_error_rsp (p_tcb, reason, op_code, handle, FALSE); - } - else + } + } else { attp_send_sr_msg(p_tcb, p_msg); + } } @@ -1260,21 +1148,17 @@ void gatts_process_attribute_req (tGATT_TCB *p_tcb, UINT8 op_code, tGATT_STATUS status = GATT_INVALID_HANDLE; tGATT_ATTR16 *p_attr; - if (len < 2) - { + if (len < 2) { GATT_TRACE_ERROR("Illegal PDU length, discard request"); status = GATT_INVALID_PDU; - } - else - { + } else { STREAM_TO_UINT16(handle, p); len -= 2; } #if GATT_CONFORMANCE_TESTING == TRUE gatt_cb.handle = handle; - if (gatt_cb.enable_err_rsp && gatt_cb.req_op_code == op_code) - { + if (gatt_cb.enable_err_rsp && gatt_cb.req_op_code == op_code) { GATT_TRACE_DEBUG("Conformance tst: forced err rsp: error status=%d", gatt_cb.err_status); gatt_send_error_rsp (p_tcb, gatt_cb.err_status, gatt_cb.req_op_code, handle, FALSE); @@ -1283,33 +1167,27 @@ void gatts_process_attribute_req (tGATT_TCB *p_tcb, UINT8 op_code, } #endif - if (GATT_HANDLE_IS_VALID(handle)) - { - for (i = 0; i < GATT_MAX_SR_PROFILES; i ++, p_rcb ++) - { - if (p_rcb->in_use && p_rcb->s_hdl <= handle && p_rcb->e_hdl >= handle) - { + if (GATT_HANDLE_IS_VALID(handle)) { + for (i = 0; i < GATT_MAX_SR_PROFILES; i ++, p_rcb ++) { + if (p_rcb->in_use && p_rcb->s_hdl <= handle && p_rcb->e_hdl >= handle) { p_attr = (tGATT_ATTR16 *)p_rcb->p_db->p_attr_list; - while (p_attr) - { - if (p_attr->handle == handle) - { - switch (op_code) - { - case GATT_REQ_READ: /* read char/char descriptor value */ - case GATT_REQ_READ_BLOB: - gatts_process_read_req(p_tcb, p_rcb, op_code, handle, len, p); - break; + while (p_attr) { + if (p_attr->handle == handle) { + switch (op_code) { + case GATT_REQ_READ: /* read char/char descriptor value */ + case GATT_REQ_READ_BLOB: + gatts_process_read_req(p_tcb, p_rcb, op_code, handle, len, p); + break; - case GATT_REQ_WRITE: /* write char/char descriptor value */ - case GATT_CMD_WRITE: - case GATT_SIGN_CMD_WRITE: - case GATT_REQ_PREPARE_WRITE: - gatts_process_write_req(p_tcb, i, handle, op_code, len, p); - break; - default: - break; + case GATT_REQ_WRITE: /* write char/char descriptor value */ + case GATT_CMD_WRITE: + case GATT_SIGN_CMD_WRITE: + case GATT_REQ_PREPARE_WRITE: + gatts_process_write_req(p_tcb, i, handle, op_code, len, p); + break; + default: + break; } status = GATT_SUCCESS; break; @@ -1321,8 +1199,9 @@ void gatts_process_attribute_req (tGATT_TCB *p_tcb, UINT8 op_code, } } - if (status != GATT_SUCCESS && op_code != GATT_CMD_WRITE && op_code != GATT_SIGN_CMD_WRITE) + if (status != GATT_SUCCESS && op_code != GATT_CMD_WRITE && op_code != GATT_SIGN_CMD_WRITE) { gatt_send_error_rsp (p_tcb, status, op_code, handle, FALSE); + } } /******************************************************************************* @@ -1341,13 +1220,13 @@ static void gatts_proc_srv_chg_ind_ack(tGATT_TCB *p_tcb ) GATT_TRACE_DEBUG("gatts_proc_srv_chg_ind_ack"); - if ((p_buf = gatt_is_bda_in_the_srv_chg_clt_list(p_tcb->peer_bda)) != NULL) - { + if ((p_buf = gatt_is_bda_in_the_srv_chg_clt_list(p_tcb->peer_bda)) != NULL) { GATT_TRACE_DEBUG("NV update set srv chg = FALSE"); p_buf->srv_changed = FALSE; memcpy(&req.srv_chg, p_buf, sizeof(tGATTS_SRV_CHG)); - if (gatt_cb.cb_info.p_srv_chg_callback) - (*gatt_cb.cb_info.p_srv_chg_callback)(GATTS_SRV_CHG_CMD_UPDATE_CLIENT,&req, NULL); + if (gatt_cb.cb_info.p_srv_chg_callback) { + (*gatt_cb.cb_info.p_srv_chg_callback)(GATTS_SRV_CHG_CMD_UPDATE_CLIENT, &req, NULL); + } } } @@ -1366,8 +1245,7 @@ static void gatts_chk_pending_ind(tGATT_TCB *p_tcb ) tGATT_VALUE *p_buf = (tGATT_VALUE *)GKI_getfirst(&p_tcb->pending_ind_q); GATT_TRACE_DEBUG("gatts_chk_pending_ind"); - if (p_buf ) - { + if (p_buf ) { GATTS_HandleValueIndication (p_buf->conn_id, p_buf->handle, p_buf->len, @@ -1392,8 +1270,7 @@ static BOOLEAN gatts_proc_ind_ack(tGATT_TCB *p_tcb, UINT16 ack_handle) GATT_TRACE_DEBUG ("gatts_proc_ind_ack ack handle=%d", ack_handle); - if (ack_handle == gatt_cb.handle_of_h_r) - { + if (ack_handle == gatt_cb.handle_of_h_r) { gatts_proc_srv_chg_ind_ack(p_tcb); /* there is no need to inform the application since srv chg is handled internally by GATT */ continue_processing = FALSE; @@ -1422,17 +1299,13 @@ void gatts_process_value_conf(tGATT_TCB *p_tcb, UINT8 op_code) UINT16 conn_id; btu_stop_timer (&p_tcb->conf_timer_ent); - if (GATT_HANDLE_IS_VALID(handle)) - { + if (GATT_HANDLE_IS_VALID(handle)) { p_tcb->indicate_handle = 0; continue_processing = gatts_proc_ind_ack(p_tcb, handle); - if (continue_processing) - { - for (i = 0; i < GATT_MAX_SR_PROFILES; i ++, p_rcb ++) - { - if (p_rcb->in_use && p_rcb->s_hdl <= handle && p_rcb->e_hdl >= handle) - { + if (continue_processing) { + for (i = 0; i < GATT_MAX_SR_PROFILES; i ++, p_rcb ++) { + if (p_rcb->in_use && p_rcb->s_hdl <= handle && p_rcb->e_hdl >= handle) { trans_id = gatt_sr_enqueue_cmd(p_tcb, op_code, handle); conn_id = GATT_CREATE_CONN_ID(p_tcb->tcb_idx, p_rcb->gatt_if); gatt_sr_send_req_callback(conn_id, @@ -1440,9 +1313,7 @@ void gatts_process_value_conf(tGATT_TCB *p_tcb, UINT8 op_code) } } } - } - else - { + } else { GATT_TRACE_ERROR("unexpected handle value confirmation"); } } @@ -1462,69 +1333,65 @@ void gatt_server_handle_client_req (tGATT_TCB *p_tcb, UINT8 op_code, UINT16 len, UINT8 *p_data) { /* there is pending command, discard this one */ - if (!gatt_sr_cmd_empty(p_tcb) && op_code != GATT_HANDLE_VALUE_CONF) + if (!gatt_sr_cmd_empty(p_tcb) && op_code != GATT_HANDLE_VALUE_CONF) { return; + } /* the size of the message may not be bigger than the local max PDU size*/ /* The message has to be smaller than the agreed MTU, len does not include op code */ - if (len >= p_tcb->payload_size) - { + if (len >= p_tcb->payload_size) { GATT_TRACE_ERROR("server receive invalid PDU size:%d pdu size:%d", len + 1, p_tcb->payload_size ); /* for invalid request expecting response, send it now */ if (op_code != GATT_CMD_WRITE && - op_code != GATT_SIGN_CMD_WRITE && - op_code != GATT_HANDLE_VALUE_CONF) - { + op_code != GATT_SIGN_CMD_WRITE && + op_code != GATT_HANDLE_VALUE_CONF) { gatt_send_error_rsp (p_tcb, GATT_INVALID_PDU, op_code, 0, FALSE); } /* otherwise, ignore the pkt */ - } - else - { - switch (op_code) - { - case GATT_REQ_READ_BY_GRP_TYPE: /* discover primary services */ - case GATT_REQ_FIND_TYPE_VALUE: /* discover service by UUID */ - gatts_process_primary_service_req (p_tcb, op_code, len, p_data); - break; + } else { + switch (op_code) { + case GATT_REQ_READ_BY_GRP_TYPE: /* discover primary services */ + case GATT_REQ_FIND_TYPE_VALUE: /* discover service by UUID */ + gatts_process_primary_service_req (p_tcb, op_code, len, p_data); + break; - case GATT_REQ_FIND_INFO:/* discover char descrptor */ - gatts_process_find_info(p_tcb, op_code, len, p_data); - break; + case GATT_REQ_FIND_INFO:/* discover char descrptor */ + gatts_process_find_info(p_tcb, op_code, len, p_data); + break; - case GATT_REQ_READ_BY_TYPE: /* read characteristic value, char descriptor value */ - /* discover characteristic, discover char by UUID */ - gatts_process_read_by_type_req(p_tcb, op_code, len, p_data); - break; + case GATT_REQ_READ_BY_TYPE: /* read characteristic value, char descriptor value */ + /* discover characteristic, discover char by UUID */ + gatts_process_read_by_type_req(p_tcb, op_code, len, p_data); + break; - case GATT_REQ_READ: /* read char/char descriptor value */ - case GATT_REQ_READ_BLOB: - case GATT_REQ_WRITE: /* write char/char descriptor value */ - case GATT_CMD_WRITE: - case GATT_SIGN_CMD_WRITE: - case GATT_REQ_PREPARE_WRITE: - gatts_process_attribute_req (p_tcb, op_code, len, p_data); - break; + case GATT_REQ_READ: /* read char/char descriptor value */ + case GATT_REQ_READ_BLOB: + case GATT_REQ_WRITE: /* write char/char descriptor value */ + case GATT_CMD_WRITE: + case GATT_SIGN_CMD_WRITE: + case GATT_REQ_PREPARE_WRITE: + gatts_process_attribute_req (p_tcb, op_code, len, p_data); + break; - case GATT_HANDLE_VALUE_CONF: - gatts_process_value_conf (p_tcb, op_code); - break; + case GATT_HANDLE_VALUE_CONF: + gatts_process_value_conf (p_tcb, op_code); + break; - case GATT_REQ_MTU: - gatts_process_mtu_req (p_tcb, len, p_data); - break; + case GATT_REQ_MTU: + gatts_process_mtu_req (p_tcb, len, p_data); + break; - case GATT_REQ_EXEC_WRITE: - gatt_process_exec_write_req (p_tcb, op_code, len, p_data); - break; + case GATT_REQ_EXEC_WRITE: + gatt_process_exec_write_req (p_tcb, op_code, len, p_data); + break; - case GATT_REQ_READ_MULTI: - gatt_process_read_multi_req (p_tcb, op_code, len, p_data); - break; + case GATT_REQ_READ_MULTI: + gatt_process_read_multi_req (p_tcb, op_code, len, p_data); + break; - default: - break; + default: + break; } } } diff --git a/components/bt/bluedroid/stack/gatt/gatt_utils.c b/components/bt/bluedroid/stack/gatt/gatt_utils.c old mode 100755 new mode 100644 index b3daa708db..7b55a097c9 --- a/components/bt/bluedroid/stack/gatt/gatt_utils.c +++ b/components/bt/bluedroid/stack/gatt/gatt_utils.c @@ -25,23 +25,22 @@ //#include "bt_utils.h" #if BLE_INCLUDED == TRUE - #include - #include - #include "gki.h" +#include +#include +#include "gki.h" - #include "l2cdefs.h" - #include "gatt_int.h" - #include "gatt_api.h" - #include "gattdefs.h" - #include "sdp_api.h" - #include "btm_int.h" +#include "l2cdefs.h" +#include "gatt_int.h" +#include "gatt_api.h" +#include "gattdefs.h" +#include "sdp_api.h" +#include "btm_int.h" /* check if [x, y] and [a, b] have overlapping range */ - #define GATT_VALIDATE_HANDLE_RANGE(x, y, a, b) (y >= a && x <= b) +#define GATT_VALIDATE_HANDLE_RANGE(x, y, a, b) (y >= a && x <= b) - #define GATT_GET_NEXT_VALID_HANDLE(x) (((x)/10 + 1) * 10) +#define GATT_GET_NEXT_VALID_HANDLE(x) (((x)/10 + 1) * 10) -const char * const op_code_name[] = -{ +const char *const op_code_name[] = { "UNKNOWN", "ATT_RSP_ERROR", "ATT_REQ_MTU", @@ -77,7 +76,8 @@ const char * const op_code_name[] = }; static const UINT8 base_uuid[LEN_UUID_128] = {0xFB, 0x34, 0x9B, 0x5F, 0x80, 0x00, 0x00, 0x80, - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; /******************************************************************************* @@ -93,8 +93,9 @@ void gatt_free_pending_ind(tGATT_TCB *p_tcb) { GATT_TRACE_DEBUG("gatt_free_pending_ind"); /* release all queued indications */ - while (!GKI_queue_is_empty(&p_tcb->pending_ind_q)) + while (!GKI_queue_is_empty(&p_tcb->pending_ind_q)) { GKI_freebuf (GKI_dequeue (&p_tcb->pending_ind_q)); + } } /******************************************************************************* @@ -110,8 +111,9 @@ void gatt_free_pending_enc_queue(tGATT_TCB *p_tcb) { GATT_TRACE_DEBUG("gatt_free_pending_enc_queue"); /* release all queued indications */ - while (!GKI_queue_is_empty(&p_tcb->pending_enc_clcb)) + while (!GKI_queue_is_empty(&p_tcb->pending_enc_clcb)) { GKI_freebuf (GKI_dequeue (&p_tcb->pending_enc_clcb)); + } } /******************************************************************************* @@ -129,13 +131,11 @@ void gatt_delete_dev_from_srv_chg_clt_list(BD_ADDR bd_addr) tGATTS_SRV_CHG_REQ req; GATT_TRACE_DEBUG ("gatt_delete_dev_from_srv_chg_clt_list"); - if ((p_buf = gatt_is_bda_in_the_srv_chg_clt_list(bd_addr)) != NULL) - { - if (gatt_cb.cb_info.p_srv_chg_callback) - { + if ((p_buf = gatt_is_bda_in_the_srv_chg_clt_list(bd_addr)) != NULL) { + if (gatt_cb.cb_info.p_srv_chg_callback) { /* delete from NV */ memcpy(req.srv_chg.bda, bd_addr, BD_ADDR_LEN); - (*gatt_cb.cb_info.p_srv_chg_callback)(GATTS_SRV_CHG_CMD_REMOVE_CLIENT,&req, NULL); + (*gatt_cb.cb_info.p_srv_chg_callback)(GATTS_SRV_CHG_CMD_REMOVE_CLIENT, &req, NULL); } GKI_freebuf (GKI_remove_from_queue (&gatt_cb.srv_chg_clt_q, p_buf)); } @@ -157,16 +157,15 @@ void gatt_set_srv_chg(void) tGATTS_SRV_CHG_REQ req; GATT_TRACE_DEBUG ("gatt_set_srv_chg"); - while (p_buf) - { + while (p_buf) { GATT_TRACE_DEBUG ("found a srv_chg clt"); - if (!p_buf->srv_changed) - { + if (!p_buf->srv_changed) { GATT_TRACE_DEBUG ("set srv_changed to TRUE"); - p_buf->srv_changed= TRUE; + p_buf->srv_changed = TRUE; memcpy(&req.srv_chg, p_buf, sizeof(tGATTS_SRV_CHG)); - if (gatt_cb.cb_info.p_srv_chg_callback) - (*gatt_cb.cb_info.p_srv_chg_callback)(GATTS_SRV_CHG_CMD_UPDATE_CLIENT,&req, NULL); + if (gatt_cb.cb_info.p_srv_chg_callback) { + (*gatt_cb.cb_info.p_srv_chg_callback)(GATTS_SRV_CHG_CMD_UPDATE_CLIENT, &req, NULL); + } } p_buf = (tGATTS_SRV_CHG *)GKI_getnext(p_buf); } @@ -186,13 +185,11 @@ tGATTS_PENDING_NEW_SRV_START *gatt_sr_is_new_srv_chg(tBT_UUID *p_app_uuid128, tB tGATTS_HNDL_RANGE *p; tGATTS_PENDING_NEW_SRV_START *p_buf = (tGATTS_PENDING_NEW_SRV_START *)GKI_getfirst(&gatt_cb.pending_new_srv_start_q); - while (p_buf != NULL) - { + while (p_buf != NULL) { p = p_buf->p_new_srv_start; if ( gatt_uuid_compare (*p_app_uuid128, p->app_uuid128) - && gatt_uuid_compare (*p_svc_uuid, p->svc_uuid) - && (svc_inst == p->svc_inst) ) - { + && gatt_uuid_compare (*p_svc_uuid, p->svc_uuid) + && (svc_inst == p->svc_inst) ) { GATT_TRACE_DEBUG ("gatt_sr_is_new_srv_chg: Yes"); break; } @@ -216,8 +213,7 @@ tGATT_VALUE *gatt_add_pending_ind(tGATT_TCB *p_tcb, tGATT_VALUE *p_ind) { tGATT_VALUE *p_buf; GATT_TRACE_DEBUG ("gatt_add_pending_ind"); - if ((p_buf = (tGATT_VALUE *)GKI_getbuf((UINT16)sizeof(tGATT_VALUE))) != NULL) - { + if ((p_buf = (tGATT_VALUE *)GKI_getbuf((UINT16)sizeof(tGATT_VALUE))) != NULL) { GATT_TRACE_DEBUG ("enqueue a pending indication"); memcpy(p_buf, p_ind, sizeof(tGATT_VALUE)); GKI_enqueue (&p_tcb->pending_ind_q, p_buf); @@ -240,8 +236,7 @@ tGATTS_PENDING_NEW_SRV_START *gatt_add_pending_new_srv_start(tGATTS_HNDL_RANGE * tGATTS_PENDING_NEW_SRV_START *p_buf; GATT_TRACE_DEBUG ("gatt_add_pending_new_srv_start"); - if ((p_buf = (tGATTS_PENDING_NEW_SRV_START *)GKI_getbuf((UINT16)sizeof(tGATTS_PENDING_NEW_SRV_START))) != NULL) - { + if ((p_buf = (tGATTS_PENDING_NEW_SRV_START *)GKI_getbuf((UINT16)sizeof(tGATTS_PENDING_NEW_SRV_START))) != NULL) { GATT_TRACE_DEBUG ("enqueue a new pending new srv start"); p_buf->p_new_srv_start = p_new_srv_start; GKI_enqueue (&gatt_cb.pending_new_srv_start_q, p_buf); @@ -263,8 +258,7 @@ tGATTS_SRV_CHG *gatt_add_srv_chg_clt(tGATTS_SRV_CHG *p_srv_chg) { tGATTS_SRV_CHG *p_buf; GATT_TRACE_DEBUG ("gatt_add_srv_chg_clt"); - if ((p_buf = (tGATTS_SRV_CHG *)GKI_getbuf((UINT16)sizeof(tGATTS_SRV_CHG))) != NULL) - { + if ((p_buf = (tGATTS_SRV_CHG *)GKI_getbuf((UINT16)sizeof(tGATTS_SRV_CHG))) != NULL) { GATT_TRACE_DEBUG ("enqueue a srv chg client"); memcpy(p_buf, p_srv_chg, sizeof(tGATTS_SRV_CHG)); GKI_enqueue (&gatt_cb.srv_chg_clt_q, p_buf); @@ -287,12 +281,10 @@ tGATT_HDL_LIST_ELEM *gatt_alloc_hdl_buffer(void) { UINT8 i; tGATT_CB *p_cb = &gatt_cb; - tGATT_HDL_LIST_ELEM * p_elem= &p_cb->hdl_list[0]; + tGATT_HDL_LIST_ELEM *p_elem = &p_cb->hdl_list[0]; - for (i = 0; i < GATT_MAX_SR_PROFILES; i++, p_elem ++) - { - if (!p_cb->hdl_list[i].in_use) - { + for (i = 0; i < GATT_MAX_SR_PROFILES; i++, p_elem ++) { + if (!p_cb->hdl_list[i].in_use) { memset(p_elem, 0, sizeof(tGATT_HDL_LIST_ELEM)); p_elem->in_use = TRUE; return p_elem; @@ -313,16 +305,14 @@ tGATT_HDL_LIST_ELEM *gatt_alloc_hdl_buffer(void) *******************************************************************************/ tGATT_HDL_LIST_ELEM *gatt_find_hdl_buffer_by_handle(UINT16 handle) { - tGATT_HDL_LIST_INFO *p_list_info= &gatt_cb.hdl_list_info; + tGATT_HDL_LIST_INFO *p_list_info = &gatt_cb.hdl_list_info; tGATT_HDL_LIST_ELEM *p_list = NULL; p_list = p_list_info->p_first; - while (p_list != NULL) - { - if (p_list->in_use && p_list->asgn_range.s_handle == handle) - { - return(p_list); + while (p_list != NULL) { + if (p_list->in_use && p_list->asgn_range.s_handle == handle) { + return (p_list); } p_list = p_list->p_next; } @@ -338,22 +328,20 @@ tGATT_HDL_LIST_ELEM *gatt_find_hdl_buffer_by_handle(UINT16 handle) ** *******************************************************************************/ tGATT_HDL_LIST_ELEM *gatt_find_hdl_buffer_by_app_id (tBT_UUID *p_app_uuid128, - tBT_UUID *p_svc_uuid, - UINT16 svc_inst) + tBT_UUID *p_svc_uuid, + UINT16 svc_inst) { - tGATT_HDL_LIST_INFO *p_list_info= &gatt_cb.hdl_list_info; + tGATT_HDL_LIST_INFO *p_list_info = &gatt_cb.hdl_list_info; tGATT_HDL_LIST_ELEM *p_list = NULL; p_list = p_list_info->p_first; - while (p_list != NULL) - { + while (p_list != NULL) { if ( gatt_uuid_compare (*p_app_uuid128, p_list->asgn_range.app_uuid128) - && gatt_uuid_compare (*p_svc_uuid, p_list->asgn_range.svc_uuid) - && (svc_inst == p_list->asgn_range.svc_inst) ) - { + && gatt_uuid_compare (*p_svc_uuid, p_list->asgn_range.svc_uuid) + && (svc_inst == p_list->asgn_range.svc_inst) ) { GATT_TRACE_DEBUG ("Already allocated handles for this service before!!"); - return(p_list); + return (p_list); } p_list = p_list->p_next; } @@ -371,10 +359,10 @@ tGATT_HDL_LIST_ELEM *gatt_find_hdl_buffer_by_app_id (tBT_UUID *p_app_uuid128, void gatt_free_hdl_buffer(tGATT_HDL_LIST_ELEM *p) { - if (p) - { - while (!GKI_queue_is_empty(&p->svc_db.svc_buffer)) + if (p) { + while (!GKI_queue_is_empty(&p->svc_db.svc_buffer)) { GKI_freebuf (GKI_dequeue (&p->svc_db.svc_buffer)); + } memset(p, 0, sizeof(tGATT_HDL_LIST_ELEM)); } } @@ -393,12 +381,11 @@ void gatt_free_srvc_db_buffer_app_id(tBT_UUID *p_app_id) tGATT_HDL_LIST_ELEM *p_elem = &gatt_cb.hdl_list[0]; UINT8 i; - for (i = 0; i < GATT_MAX_SR_PROFILES; i ++, p_elem ++) - { - if (memcmp(p_app_id, &p_elem->asgn_range.app_uuid128, sizeof(tBT_UUID)) == 0) - { - while (!GKI_queue_is_empty(&p_elem->svc_db.svc_buffer)) + for (i = 0; i < GATT_MAX_SR_PROFILES; i ++, p_elem ++) { + if (memcmp(p_app_id, &p_elem->asgn_range.app_uuid128, sizeof(tBT_UUID)) == 0) { + while (!GKI_queue_is_empty(&p_elem->svc_db.svc_buffer)) { GKI_freebuf (GKI_dequeue (&p_elem->svc_db.svc_buffer)); + } p_elem->svc_db.mem_free = 0; p_elem->svc_db.p_attr_list = p_elem->svc_db.p_free_mem = NULL; @@ -416,21 +403,19 @@ void gatt_free_srvc_db_buffer_app_id(tBT_UUID *p_app_id) *******************************************************************************/ BOOLEAN gatt_is_last_attribute(tGATT_SRV_LIST_INFO *p_list, tGATT_SRV_LIST_ELEM *p_start, tBT_UUID value) { - tGATT_SRV_LIST_ELEM *p_srv= p_start->p_next; + tGATT_SRV_LIST_ELEM *p_srv = p_start->p_next; BOOLEAN is_last_attribute = TRUE; tGATT_SR_REG *p_rcb = NULL; tBT_UUID *p_svc_uuid; p_list->p_last_primary = NULL; - while (p_srv) - { + while (p_srv) { p_rcb = GATT_GET_SR_REG_PTR(p_srv->i_sreg); p_svc_uuid = gatts_get_service_uuid (p_rcb->p_db); - if (gatt_uuid_compare(value, *p_svc_uuid)) - { + if (gatt_uuid_compare(value, *p_svc_uuid)) { is_last_attribute = FALSE; break; @@ -453,14 +438,12 @@ BOOLEAN gatt_is_last_attribute(tGATT_SRV_LIST_INFO *p_list, tGATT_SRV_LIST_ELEM *******************************************************************************/ void gatt_update_last_pri_srv_info(tGATT_SRV_LIST_INFO *p_list) { - tGATT_SRV_LIST_ELEM *p_srv= p_list->p_first; + tGATT_SRV_LIST_ELEM *p_srv = p_list->p_first; p_list->p_last_primary = NULL; - while (p_srv) - { - if (p_srv->is_primary) - { + while (p_srv) { + if (p_srv->is_primary) { p_list->p_last_primary = p_srv; } p_srv = p_srv->p_next; @@ -501,42 +484,34 @@ BOOLEAN gatt_add_a_srv_to_list(tGATT_SRV_LIST_INFO *p_list, tGATT_SRV_LIST_ELEM { tGATT_SRV_LIST_ELEM *p_old; - if (!p_new) - { + if (!p_new) { GATT_TRACE_DEBUG("p_new==NULL"); return FALSE; } - if (!p_list->p_first) - { + if (!p_list->p_first) { /* this is an empty list */ p_list->p_first = - p_list->p_last = p_new; + p_list->p_last = p_new; p_new->p_next = - p_new->p_prev = NULL; - } - else - { + p_new->p_prev = NULL; + } else { p_old = p_list->p_first; - while (1) - { - if (p_old == NULL) - { + while (1) { + if (p_old == NULL) { p_list->p_last->p_next = p_new; p_new->p_prev = p_list->p_last; p_new->p_next = NULL; p_list->p_last = p_new; break; - } - else - { - if (p_new->s_hdl < p_old->s_hdl) - { + } else { + if (p_new->s_hdl < p_old->s_hdl) { /* if not the first in list */ - if (p_old->p_prev != NULL) + if (p_old->p_prev != NULL) { p_old->p_prev->p_next = p_new; - else + } else { p_list->p_first = p_new; + } p_new->p_prev = p_old->p_prev; p_new->p_next = p_old; @@ -565,25 +540,20 @@ BOOLEAN gatt_add_a_srv_to_list(tGATT_SRV_LIST_INFO *p_list, tGATT_SRV_LIST_ELEM *******************************************************************************/ BOOLEAN gatt_remove_a_srv_from_list(tGATT_SRV_LIST_INFO *p_list, tGATT_SRV_LIST_ELEM *p_remove) { - if (!p_remove || !p_list->p_first) - { + if (!p_remove || !p_list->p_first) { GATT_TRACE_DEBUG("p_remove==NULL || p_list->p_first==NULL"); return FALSE; } - if (p_remove->p_prev == NULL) - { + if (p_remove->p_prev == NULL) { p_list->p_first = p_remove->p_next; - if (p_remove->p_next) + if (p_remove->p_next) { p_remove->p_next->p_prev = NULL; - } - else if (p_remove->p_next == NULL) - { + } + } else if (p_remove->p_next == NULL) { p_list->p_last = p_remove->p_prev; p_remove->p_prev->p_next = NULL; - } - else - { + } else { p_remove->p_next->p_prev = p_remove->p_prev; p_remove->p_prev->p_next = p_remove->p_next; } @@ -606,27 +576,21 @@ BOOLEAN gatt_remove_a_srv_from_list(tGATT_SRV_LIST_INFO *p_list, tGATT_SRV_LIST_ BOOLEAN gatt_add_an_item_to_list(tGATT_HDL_LIST_INFO *p_list, tGATT_HDL_LIST_ELEM *p_new) { tGATT_HDL_LIST_ELEM *p_old; - if (!p_new) - { + if (!p_new) { GATT_TRACE_DEBUG("p_new==NULL"); return FALSE; } - if (!p_list->p_first) - { + if (!p_list->p_first) { /* this is an empty list */ p_list->p_first = - p_list->p_last = p_new; + p_list->p_last = p_new; p_new->p_next = - p_new->p_prev = NULL; - } - else - { + p_new->p_prev = NULL; + } else { p_old = p_list->p_first; - while (1) - { - if (p_old == NULL) - { + while (1) { + if (p_old == NULL) { p_list->p_last->p_next = p_new; p_new->p_prev = p_list->p_last; p_new->p_next = NULL; @@ -634,13 +598,11 @@ BOOLEAN gatt_add_an_item_to_list(tGATT_HDL_LIST_INFO *p_list, tGATT_HDL_LIST_ELE break; - } - else - { - if (p_new->asgn_range.s_handle > p_old->asgn_range.s_handle) - { - if (p_old == p_list->p_first) + } else { + if (p_new->asgn_range.s_handle > p_old->asgn_range.s_handle) { + if (p_old == p_list->p_first) { p_list->p_first = p_new; + } p_new->p_prev = p_old->p_prev; p_new->p_next = p_old; @@ -669,25 +631,20 @@ BOOLEAN gatt_add_an_item_to_list(tGATT_HDL_LIST_INFO *p_list, tGATT_HDL_LIST_ELE *******************************************************************************/ BOOLEAN gatt_remove_an_item_from_list(tGATT_HDL_LIST_INFO *p_list, tGATT_HDL_LIST_ELEM *p_remove) { - if (!p_remove || !p_list->p_first) - { + if (!p_remove || !p_list->p_first) { GATT_TRACE_DEBUG("p_remove==NULL || p_list->p_first==NULL"); return FALSE; } - if (p_remove->p_prev == NULL) - { + if (p_remove->p_prev == NULL) { p_list->p_first = p_remove->p_next; - if (p_remove->p_next) + if (p_remove->p_next) { p_remove->p_next->p_prev = NULL; - } - else if (p_remove->p_next == NULL) - { + } + } else if (p_remove->p_next == NULL) { p_list->p_last = p_remove->p_prev; p_remove->p_prev->p_next = NULL; - } - else - { + } else { p_remove->p_next->p_prev = p_remove->p_prev; p_remove->p_prev->p_next = p_remove->p_next; } @@ -710,18 +667,16 @@ BOOLEAN gatt_find_the_connected_bda(UINT8 start_idx, BD_ADDR bda, UINT8 *p_found { UINT8 i; BOOLEAN found = FALSE; - GATT_TRACE_DEBUG("gatt_find_the_connected_bda start_idx=%d",start_idx); + GATT_TRACE_DEBUG("gatt_find_the_connected_bda start_idx=%d", start_idx); - for (i = start_idx ; i < GATT_MAX_PHY_CHANNEL; i ++) - { - if (gatt_cb.tcb[i].in_use && gatt_cb.tcb[i].ch_state == GATT_CH_OPEN) - { + for (i = start_idx ; i < GATT_MAX_PHY_CHANNEL; i ++) { + if (gatt_cb.tcb[i].in_use && gatt_cb.tcb[i].ch_state == GATT_CH_OPEN) { memcpy( bda, gatt_cb.tcb[i].peer_bda, BD_ADDR_LEN); *p_found_idx = i; *p_transport = gatt_cb.tcb[i].transport; found = TRUE; GATT_TRACE_DEBUG("gatt_find_the_connected_bda bda :%02x-%02x-%02x-%02x-%02x-%02x", - bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]); + bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]); break; } } @@ -748,16 +703,11 @@ BOOLEAN gatt_is_srv_chg_ind_pending (tGATT_TCB *p_tcb) GATT_TRACE_DEBUG("gatt_is_srv_chg_ind_pending is_queue_empty=%d", GKI_queue_is_empty(&p_tcb->pending_ind_q) ); - if (p_tcb->indicate_handle == gatt_cb.handle_of_h_r) - { + if (p_tcb->indicate_handle == gatt_cb.handle_of_h_r) { srv_chg_ind_pending = TRUE; - } - else - { - while (p_buf) - { - if (p_buf->handle == gatt_cb.handle_of_h_r) - { + } else { + while (p_buf) { + if (p_buf->handle == gatt_cb.handle_of_h_r) { srv_chg_ind_pending = TRUE; break; } @@ -784,12 +734,10 @@ tGATTS_SRV_CHG *gatt_is_bda_in_the_srv_chg_clt_list (BD_ADDR bda) tGATTS_SRV_CHG *p_buf = (tGATTS_SRV_CHG *)GKI_getfirst(&gatt_cb.srv_chg_clt_q); GATT_TRACE_DEBUG("gatt_is_bda_in_the_srv_chg_clt_list :%02x-%02x-%02x-%02x-%02x-%02x", - bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]); + bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]); - while (p_buf != NULL) - { - if (!memcmp( bda, p_buf->bda, BD_ADDR_LEN)) - { + while (p_buf != NULL) { + if (!memcmp( bda, p_buf->bda, BD_ADDR_LEN)) { GATT_TRACE_DEBUG("bda is in the srv chg clt list"); break; } @@ -812,13 +760,11 @@ tGATTS_SRV_CHG *gatt_is_bda_in_the_srv_chg_clt_list (BD_ADDR bda) BOOLEAN gatt_is_bda_connected(BD_ADDR bda) { UINT8 i = 0; - BOOLEAN connected=FALSE; + BOOLEAN connected = FALSE; - for ( i=0; i < GATT_MAX_PHY_CHANNEL; i ++) - { + for ( i = 0; i < GATT_MAX_PHY_CHANNEL; i ++) { if (gatt_cb.tcb[i].in_use && - !memcmp(gatt_cb.tcb[i].peer_bda, bda, BD_ADDR_LEN)) - { + !memcmp(gatt_cb.tcb[i].peer_bda, bda, BD_ADDR_LEN)) { connected = TRUE; break; } @@ -839,11 +785,9 @@ UINT8 gatt_find_i_tcb_by_addr(BD_ADDR bda, tBT_TRANSPORT transport) { UINT8 i = 0; - for ( ; i < GATT_MAX_PHY_CHANNEL; i ++) - { + for ( ; i < GATT_MAX_PHY_CHANNEL; i ++) { if (!memcmp(gatt_cb.tcb[i].peer_bda, bda, BD_ADDR_LEN) && - gatt_cb.tcb[i].transport == transport) - { + gatt_cb.tcb[i].transport == transport) { return i; } } @@ -860,12 +804,13 @@ UINT8 gatt_find_i_tcb_by_addr(BD_ADDR bda, tBT_TRANSPORT transport) ** Returns NULL if not found. Otherwise index to the tcb. ** *******************************************************************************/ -tGATT_TCB * gatt_get_tcb_by_idx(UINT8 tcb_idx) +tGATT_TCB *gatt_get_tcb_by_idx(UINT8 tcb_idx) { tGATT_TCB *p_tcb = NULL; - if ( (tcb_idx < GATT_MAX_PHY_CHANNEL) && gatt_cb.tcb[tcb_idx].in_use) + if ( (tcb_idx < GATT_MAX_PHY_CHANNEL) && gatt_cb.tcb[tcb_idx].in_use) { p_tcb = &gatt_cb.tcb[tcb_idx]; + } return p_tcb; } @@ -879,13 +824,14 @@ tGATT_TCB * gatt_get_tcb_by_idx(UINT8 tcb_idx) ** Returns NULL if not found. Otherwise index to the tcb. ** *******************************************************************************/ -tGATT_TCB * gatt_find_tcb_by_addr(BD_ADDR bda, tBT_TRANSPORT transport) +tGATT_TCB *gatt_find_tcb_by_addr(BD_ADDR bda, tBT_TRANSPORT transport) { tGATT_TCB *p_tcb = NULL; UINT8 i = 0; - if ((i = gatt_find_i_tcb_by_addr(bda, transport)) != GATT_INDEX_INVALID) + if ((i = gatt_find_i_tcb_by_addr(bda, transport)) != GATT_INDEX_INVALID) { p_tcb = &gatt_cb.tcb[i]; + } return p_tcb; } @@ -902,10 +848,8 @@ UINT8 gatt_find_i_tcb_free(void) { UINT8 i = 0, j = GATT_INDEX_INVALID; - for (i = 0; i < GATT_MAX_PHY_CHANNEL; i ++) - { - if (!gatt_cb.tcb[i].in_use) - { + for (i = 0; i < GATT_MAX_PHY_CHANNEL; i ++) { + if (!gatt_cb.tcb[i].in_use) { j = i; break; } @@ -921,7 +865,7 @@ UINT8 gatt_find_i_tcb_free(void) ** Returns GATT_INDEX_INVALID if not found. Otherwise index to the tcb. ** *******************************************************************************/ -tGATT_TCB * gatt_allocate_tcb_by_bdaddr(BD_ADDR bda, tBT_TRANSPORT transport) +tGATT_TCB *gatt_allocate_tcb_by_bdaddr(BD_ADDR bda, tBT_TRANSPORT transport) { UINT8 i = 0; BOOLEAN allocated = FALSE; @@ -930,17 +874,14 @@ tGATT_TCB * gatt_allocate_tcb_by_bdaddr(BD_ADDR bda, tBT_TRANSPORT transport) /* search for existing tcb with matching bda */ i = gatt_find_i_tcb_by_addr(bda, transport); /* find free tcb */ - if (i == GATT_INDEX_INVALID) - { + if (i == GATT_INDEX_INVALID) { i = gatt_find_i_tcb_free(); allocated = TRUE; } - if (i != GATT_INDEX_INVALID) - { + if (i != GATT_INDEX_INVALID) { p_tcb = &gatt_cb.tcb[i]; - if (allocated) - { + if (allocated) { memset(p_tcb, 0, sizeof(tGATT_TCB)); GKI_init_q (&p_tcb->pending_enc_clcb); GKI_init_q (&p_tcb->pending_ind_q); @@ -1003,54 +944,45 @@ BOOLEAN gatt_uuid_compare (tBT_UUID src, tBT_UUID tar) UINT8 *ps, *pt; /* any of the UUID is unspecified */ - if (src.len == 0 || tar.len == 0) - { + if (src.len == 0 || tar.len == 0) { return TRUE; } /* If both are 16-bit, we can do a simple compare */ - if (src.len == LEN_UUID_16 && tar.len == LEN_UUID_16) - { + if (src.len == LEN_UUID_16 && tar.len == LEN_UUID_16) { return src.uu.uuid16 == tar.uu.uuid16; } /* If both are 32-bit, we can do a simple compare */ - if (src.len == LEN_UUID_32 && tar.len == LEN_UUID_32) - { + if (src.len == LEN_UUID_32 && tar.len == LEN_UUID_32) { return src.uu.uuid32 == tar.uu.uuid32; } /* One or both of the UUIDs is 128-bit */ - if (src.len == LEN_UUID_16) - { + if (src.len == LEN_UUID_16) { /* convert a 16 bits UUID to 128 bits value */ gatt_convert_uuid16_to_uuid128(su, src.uu.uuid16); ps = su; - } - else if (src.len == LEN_UUID_32) - { + } else if (src.len == LEN_UUID_32) { gatt_convert_uuid32_to_uuid128(su, src.uu.uuid32); ps = su; - } - else + } else { ps = src.uu.uuid128; + } - if (tar.len == LEN_UUID_16) - { + if (tar.len == LEN_UUID_16) { /* convert a 16 bits UUID to 128 bits value */ gatt_convert_uuid16_to_uuid128(tu, tar.uu.uuid16); pt = tu; - } - else if (tar.len == LEN_UUID_32) - { + } else if (tar.len == LEN_UUID_32) { /* convert a 32 bits UUID to 128 bits value */ gatt_convert_uuid32_to_uuid128(tu, tar.uu.uuid32); pt = tu; - } - else + } else { pt = tar.uu.uuid128; + } - return(memcmp(ps, pt, LEN_UUID_128) == 0); + return (memcmp(ps, pt, LEN_UUID_128) == 0); } /******************************************************************************* @@ -1067,19 +999,14 @@ UINT8 gatt_build_uuid_to_stream(UINT8 **p_dst, tBT_UUID uuid) UINT8 *p = *p_dst; UINT8 len = 0; - if (uuid.len == LEN_UUID_16) - { + if (uuid.len == LEN_UUID_16) { UINT16_TO_STREAM (p, uuid.uu.uuid16); len = LEN_UUID_16; - } - else if (uuid.len == LEN_UUID_32) /* always convert 32 bits into 128 bits as alwats */ - { + } else if (uuid.len == LEN_UUID_32) { /* always convert 32 bits into 128 bits as alwats */ gatt_convert_uuid32_to_uuid128(p, uuid.uu.uuid32); p += LEN_UUID_128; len = LEN_UUID_128; - } - else if (uuid.len == LEN_UUID_128) - { + } else if (uuid.len == LEN_UUID_128) { ARRAY_TO_STREAM (p, uuid.uu.uuid128, LEN_UUID_128); len = LEN_UUID_128; } @@ -1105,59 +1032,53 @@ BOOLEAN gatt_parse_uuid_from_cmd(tBT_UUID *p_uuid_rec, UINT16 uuid_size, UINT8 * memset(p_uuid_rec, 0, sizeof(tBT_UUID)); - switch (uuid_size) - { - case LEN_UUID_16: - p_uuid_rec->len = uuid_size; - STREAM_TO_UINT16 (p_uuid_rec->uu.uuid16, p_uuid); - *p_data += LEN_UUID_16; - break; + switch (uuid_size) { + case LEN_UUID_16: + p_uuid_rec->len = uuid_size; + STREAM_TO_UINT16 (p_uuid_rec->uu.uuid16, p_uuid); + *p_data += LEN_UUID_16; + break; - case LEN_UUID_128: - /* See if we can compress his UUID down to 16 or 32bit UUIDs */ - is_base_uuid = TRUE; - for (xx = 0; xx < LEN_UUID_128 - 4; xx++) - { - if (p_uuid[xx] != base_uuid[xx]) - { - is_base_uuid = FALSE; - break; - } + case LEN_UUID_128: + /* See if we can compress his UUID down to 16 or 32bit UUIDs */ + is_base_uuid = TRUE; + for (xx = 0; xx < LEN_UUID_128 - 4; xx++) { + if (p_uuid[xx] != base_uuid[xx]) { + is_base_uuid = FALSE; + break; } - if (is_base_uuid) - { - if ((p_uuid[LEN_UUID_128 - 1] == 0) && (p_uuid[LEN_UUID_128 - 2] == 0)) - { - p_uuid += (LEN_UUID_128 - 4); - p_uuid_rec->len = LEN_UUID_16; - STREAM_TO_UINT16(p_uuid_rec->uu.uuid16, p_uuid); - } - else - { - p_uuid += (LEN_UUID_128 - LEN_UUID_32); - p_uuid_rec->len = LEN_UUID_32; - STREAM_TO_UINT32(p_uuid_rec->uu.uuid32, p_uuid); - } + } + if (is_base_uuid) { + if ((p_uuid[LEN_UUID_128 - 1] == 0) && (p_uuid[LEN_UUID_128 - 2] == 0)) { + p_uuid += (LEN_UUID_128 - 4); + p_uuid_rec->len = LEN_UUID_16; + STREAM_TO_UINT16(p_uuid_rec->uu.uuid16, p_uuid); + } else { + p_uuid += (LEN_UUID_128 - LEN_UUID_32); + p_uuid_rec->len = LEN_UUID_32; + STREAM_TO_UINT32(p_uuid_rec->uu.uuid32, p_uuid); } - if (!is_base_uuid) - { - p_uuid_rec->len = LEN_UUID_128; - memcpy(p_uuid_rec->uu.uuid128, p_uuid, LEN_UUID_128); - } - *p_data += LEN_UUID_128; - break; + } + if (!is_base_uuid) { + p_uuid_rec->len = LEN_UUID_128; + memcpy(p_uuid_rec->uu.uuid128, p_uuid, LEN_UUID_128); + } + *p_data += LEN_UUID_128; + break; - /* do not allow 32 bits UUID in ATT PDU now */ - case LEN_UUID_32: - GATT_TRACE_ERROR("DO NOT ALLOW 32 BITS UUID IN ATT PDU"); - case 0: - default: - if (uuid_size != 0) ret = FALSE; - GATT_TRACE_WARNING("gatt_parse_uuid_from_cmd invalid uuid size"); - break; + /* do not allow 32 bits UUID in ATT PDU now */ + case LEN_UUID_32: + GATT_TRACE_ERROR("DO NOT ALLOW 32 BITS UUID IN ATT PDU"); + case 0: + default: + if (uuid_size != 0) { + ret = FALSE; + } + GATT_TRACE_WARNING("gatt_parse_uuid_from_cmd invalid uuid size"); + break; } - return( ret); + return ( ret); } /******************************************************************************* @@ -1175,8 +1096,7 @@ void gatt_start_rsp_timer(UINT16 clcb_idx) UINT32 timeout = GATT_WAIT_FOR_RSP_TOUT; p_clcb->rsp_timer_ent.param = (TIMER_PARAM_TYPE)p_clcb; if (p_clcb->operation == GATTC_OPTYPE_DISCOVERY && - p_clcb->op_subtype == GATT_DISC_SRVC_ALL) - { + p_clcb->op_subtype == GATT_DISC_SRVC_ALL) { timeout = GATT_WAIT_FOR_DISC_RSP_TOUT; } btu_start_timer (&p_clcb->rsp_timer_ent, BTU_TTYPE_ATT_WAIT_FOR_RSP, @@ -1226,23 +1146,18 @@ void gatt_start_ind_ack_timer(tGATT_TCB *p_tcb) void gatt_rsp_timeout(TIMER_LIST_ENT *p_tle) { tGATT_CLCB *p_clcb = (tGATT_CLCB *)p_tle->param; - if (p_clcb == NULL || p_clcb->p_tcb == NULL) - { + if (p_clcb == NULL || p_clcb->p_tcb == NULL) { GATT_TRACE_WARNING("gatt_rsp_timeout clcb is already deleted"); return; } if (p_clcb->operation == GATTC_OPTYPE_DISCOVERY && - p_clcb->op_subtype == GATT_DISC_SRVC_ALL && - p_clcb->retry_count < GATT_REQ_RETRY_LIMIT) - { + p_clcb->op_subtype == GATT_DISC_SRVC_ALL && + p_clcb->retry_count < GATT_REQ_RETRY_LIMIT) { UINT8 rsp_code; GATT_TRACE_WARNING("gatt_rsp_timeout retry discovery primary service"); - if (p_clcb != gatt_cmd_dequeue(p_clcb->p_tcb, &rsp_code)) - { + if (p_clcb != gatt_cmd_dequeue(p_clcb->p_tcb, &rsp_code)) { GATT_TRACE_ERROR("gatt_rsp_timeout command queue out of sync, disconnect"); - } - else - { + } else { p_clcb->retry_count++; gatt_act_discovery(p_clcb); return; @@ -1264,12 +1179,13 @@ void gatt_rsp_timeout(TIMER_LIST_ENT *p_tle) *******************************************************************************/ void gatt_ind_ack_timeout(TIMER_LIST_ENT *p_tle) { - tGATT_TCB * p_tcb = (tGATT_TCB *)p_tle->param; + tGATT_TCB *p_tcb = (tGATT_TCB *)p_tle->param; GATT_TRACE_WARNING("gatt_ind_ack_timeout send ack now"); - if (p_tcb != NULL) + if (p_tcb != NULL) { p_tcb->ind_count = 0; + } attp_send_cl_msg(((tGATT_TCB *)p_tle->param), 0, GATT_HANDLE_VALUE_CONF, NULL); } @@ -1286,12 +1202,10 @@ UINT8 gatt_sr_find_i_rcb_by_handle(UINT16 handle) { UINT8 i_rcb = 0; - for ( ; i_rcb < GATT_MAX_SR_PROFILES; i_rcb++) - { + for ( ; i_rcb < GATT_MAX_SR_PROFILES; i_rcb++) { if (gatt_cb.sr_reg[i_rcb].in_use && - gatt_cb.sr_reg[i_rcb].s_hdl <= handle && - gatt_cb.sr_reg[i_rcb].e_hdl >= handle ) - { + gatt_cb.sr_reg[i_rcb].s_hdl <= handle && + gatt_cb.sr_reg[i_rcb].e_hdl >= handle ) { break; } } @@ -1313,17 +1227,14 @@ UINT8 gatt_sr_find_i_rcb_by_app_id(tBT_UUID *p_app_uuid128, tBT_UUID *p_svc_uuid tGATT_SR_REG *p_sreg; tBT_UUID *p_this_uuid; - for (i_rcb = 0, p_sreg = gatt_cb.sr_reg; i_rcb < GATT_MAX_SR_PROFILES; i_rcb++, p_sreg++) - { - if ( p_sreg->in_use ) - { + for (i_rcb = 0, p_sreg = gatt_cb.sr_reg; i_rcb < GATT_MAX_SR_PROFILES; i_rcb++, p_sreg++) { + if ( p_sreg->in_use ) { p_this_uuid = gatts_get_service_uuid (p_sreg->p_db); if (p_this_uuid && - gatt_uuid_compare (*p_app_uuid128, p_sreg->app_uuid ) && - gatt_uuid_compare (*p_svc_uuid, *p_this_uuid) && - (svc_inst == p_sreg->service_instance)) - { + gatt_uuid_compare (*p_app_uuid128, p_sreg->app_uuid ) && + gatt_uuid_compare (*p_svc_uuid, *p_this_uuid) && + (svc_inst == p_sreg->service_instance)) { GATT_TRACE_ERROR ("Active Service Found "); gatt_dbg_display_uuid(*p_svc_uuid); @@ -1348,22 +1259,20 @@ UINT8 gatt_sr_alloc_rcb(tGATT_HDL_LIST_ELEM *p_list ) tGATT_SR_REG *p_sreg = NULL; /*this is a new application servoce start */ - for (ii = 0, p_sreg = gatt_cb.sr_reg; ii < GATT_MAX_SR_PROFILES; ii++, p_sreg++) - { - if (!p_sreg->in_use) - { + for (ii = 0, p_sreg = gatt_cb.sr_reg; ii < GATT_MAX_SR_PROFILES; ii++, p_sreg++) { + if (!p_sreg->in_use) { memset (p_sreg, 0, sizeof(tGATT_SR_REG)); p_sreg->in_use = TRUE; memcpy (&p_sreg->app_uuid, &p_list->asgn_range.app_uuid128, sizeof(tBT_UUID)); p_sreg->service_instance = p_list->asgn_range.svc_inst; - p_sreg->type = p_list->asgn_range.is_primary ? GATT_UUID_PRI_SERVICE: GATT_UUID_SEC_SERVICE; + p_sreg->type = p_list->asgn_range.is_primary ? GATT_UUID_PRI_SERVICE : GATT_UUID_SEC_SERVICE; p_sreg->s_hdl = p_list->asgn_range.s_handle; p_sreg->e_hdl = p_list->asgn_range.e_handle; p_sreg->p_db = &p_list->svc_db; - GATT_TRACE_DEBUG ("total GKI buffer in db [%d]",GKI_queue_length(&p_sreg->p_db->svc_buffer)); + GATT_TRACE_DEBUG ("total GKI buffer in db [%d]", GKI_queue_length(&p_sreg->p_db->svc_buffer)); break; } } @@ -1408,19 +1317,15 @@ void gatt_sr_send_req_callback(UINT16 conn_id, tGATT_IF gatt_if = GATT_GET_GATT_IF(conn_id); tGATT_REG *p_reg = gatt_get_regcb(gatt_if); - if (!p_reg ) - { + if (!p_reg ) { GATT_TRACE_ERROR ("p_reg not found discard request"); return; } if ( p_reg->in_use && - p_reg->app_cb.p_req_cb) - { + p_reg->app_cb.p_req_cb) { (*p_reg->app_cb.p_req_cb)(conn_id, trans_id, type, p_data); - } - else - { + } else { GATT_TRACE_WARNING("Call back not found for application conn_id=%d", conn_id); } @@ -1444,17 +1349,17 @@ tGATT_STATUS gatt_send_error_rsp (tGATT_TCB *p_tcb, UINT8 err_code, UINT8 op_cod error.cmd_code = op_code; error.reason = err_code; - error.handle =handle; + error.handle = handle; - if ((p_buf = attp_build_sr_msg(p_tcb, GATT_RSP_ERROR, (tGATT_SR_MSG *)&error)) != NULL) - { + if ((p_buf = attp_build_sr_msg(p_tcb, GATT_RSP_ERROR, (tGATT_SR_MSG *)&error)) != NULL) { status = attp_send_sr_msg (p_tcb, p_buf); - } - else + } else { status = GATT_INSUF_RESOURCE; + } - if (deq) + if (deq) { gatt_dequeue_sr_cmd(p_tcb); + } return status; } @@ -1477,36 +1382,36 @@ UINT32 gatt_add_sdp_record (tBT_UUID *p_uuid, UINT16 start_hdl, UINT16 end_hdl) UINT8 buff[60]; UINT8 *p = buff; - GATT_TRACE_DEBUG("gatt_add_sdp_record s_hdl=0x%x s_hdl=0x%x",start_hdl, end_hdl); + GATT_TRACE_DEBUG("gatt_add_sdp_record s_hdl=0x%x s_hdl=0x%x", start_hdl, end_hdl); - if ((sdp_handle = SDP_CreateRecord()) == 0) + if ((sdp_handle = SDP_CreateRecord()) == 0) { return 0; + } - switch (p_uuid->len) - { - case LEN_UUID_16: - SDP_AddServiceClassIdList(sdp_handle, 1, &p_uuid->uu.uuid16); - break; + switch (p_uuid->len) { + case LEN_UUID_16: + SDP_AddServiceClassIdList(sdp_handle, 1, &p_uuid->uu.uuid16); + break; - case LEN_UUID_32: - UINT8_TO_BE_STREAM (p, (UUID_DESC_TYPE << 3) | SIZE_FOUR_BYTES); - UINT32_TO_BE_STREAM (p, p_uuid->uu.uuid32); - SDP_AddAttribute (sdp_handle, ATTR_ID_SERVICE_CLASS_ID_LIST, DATA_ELE_SEQ_DESC_TYPE, - (UINT32) (p - buff), buff); - break; + case LEN_UUID_32: + UINT8_TO_BE_STREAM (p, (UUID_DESC_TYPE << 3) | SIZE_FOUR_BYTES); + UINT32_TO_BE_STREAM (p, p_uuid->uu.uuid32); + SDP_AddAttribute (sdp_handle, ATTR_ID_SERVICE_CLASS_ID_LIST, DATA_ELE_SEQ_DESC_TYPE, + (UINT32) (p - buff), buff); + break; - case LEN_UUID_128: - UINT8_TO_BE_STREAM (p, (UUID_DESC_TYPE << 3) | SIZE_SIXTEEN_BYTES); - ARRAY_TO_BE_STREAM_REVERSE (p, p_uuid->uu.uuid128, LEN_UUID_128); - SDP_AddAttribute (sdp_handle, ATTR_ID_SERVICE_CLASS_ID_LIST, DATA_ELE_SEQ_DESC_TYPE, - (UINT32) (p - buff), buff); - break; + case LEN_UUID_128: + UINT8_TO_BE_STREAM (p, (UUID_DESC_TYPE << 3) | SIZE_SIXTEEN_BYTES); + ARRAY_TO_BE_STREAM_REVERSE (p, p_uuid->uu.uuid128, LEN_UUID_128); + SDP_AddAttribute (sdp_handle, ATTR_ID_SERVICE_CLASS_ID_LIST, DATA_ELE_SEQ_DESC_TYPE, + (UINT32) (p - buff), buff); + break; - default: - GATT_TRACE_ERROR("inavlid UUID len=%d", p_uuid->len); - SDP_DeleteRecord(sdp_handle); - return 0; - break; + default: + GATT_TRACE_ERROR("inavlid UUID len=%d", p_uuid->len); + SDP_DeleteRecord(sdp_handle); + return 0; + break; } /*** Fill out the protocol element sequence for SDP ***/ @@ -1523,11 +1428,11 @@ UINT32 gatt_add_sdp_record (tBT_UUID *p_uuid, UINT16 start_hdl, UINT16 end_hdl) /* Make the service browseable */ SDP_AddUuidSequence (sdp_handle, ATTR_ID_BROWSE_GROUP_LIST, 1, &list); - return(sdp_handle); + return (sdp_handle); } - #if GATT_CONFORMANCE_TESTING == TRUE +#if GATT_CONFORMANCE_TESTING == TRUE /******************************************************************************* ** ** Function gatt_set_err_rsp @@ -1544,7 +1449,7 @@ void gatt_set_err_rsp(BOOLEAN enable, UINT8 req_op_code, UINT8 err_status) gatt_cb.req_op_code = req_op_code; gatt_cb.err_status = err_status; } - #endif +#endif @@ -1592,12 +1497,10 @@ tGATT_REG *gatt_get_regcb (tGATT_IF gatt_if) BOOLEAN gatt_is_clcb_allocated (UINT16 conn_id) { UINT8 i = 0; - BOOLEAN is_allocated= FALSE; + BOOLEAN is_allocated = FALSE; - for (i = 0; i < GATT_CL_MAX_LCB; i++) - { - if (gatt_cb.clcb[i].in_use && (gatt_cb.clcb[i].conn_id == conn_id)) - { + for (i = 0; i < GATT_CL_MAX_LCB; i++) { + if (gatt_cb.clcb[i].in_use && (gatt_cb.clcb[i].conn_id == conn_id)) { is_allocated = TRUE; break; } @@ -1619,15 +1522,13 @@ tGATT_CLCB *gatt_clcb_alloc (UINT16 conn_id) { UINT8 i = 0; tGATT_CLCB *p_clcb = NULL; - tGATT_IF gatt_if=GATT_GET_GATT_IF(conn_id); + tGATT_IF gatt_if = GATT_GET_GATT_IF(conn_id); UINT8 tcb_idx = GATT_GET_TCB_IDX(conn_id); tGATT_TCB *p_tcb = gatt_get_tcb_by_idx(tcb_idx); tGATT_REG *p_reg = gatt_get_regcb(gatt_if); - for (i = 0; i < GATT_CL_MAX_LCB; i++) - { - if (!gatt_cb.clcb[i].in_use) - { + for (i = 0; i < GATT_CL_MAX_LCB; i++) { + if (!gatt_cb.clcb[i].in_use) { p_clcb = &gatt_cb.clcb[i]; p_clcb->in_use = TRUE; @@ -1652,8 +1553,7 @@ tGATT_CLCB *gatt_clcb_alloc (UINT16 conn_id) *******************************************************************************/ void gatt_clcb_dealloc (tGATT_CLCB *p_clcb) { - if (p_clcb && p_clcb->in_use) - { + if (p_clcb && p_clcb->in_use) { memset(p_clcb, 0, sizeof(tGATT_CLCB)); } } @@ -1670,15 +1570,13 @@ void gatt_clcb_dealloc (tGATT_CLCB *p_clcb) ** Returns NULL if not found. Otherwise pointer to the rcb. ** *******************************************************************************/ -tGATT_TCB * gatt_find_tcb_by_cid (UINT16 lcid) +tGATT_TCB *gatt_find_tcb_by_cid (UINT16 lcid) { UINT16 xx = 0; tGATT_TCB *p_tcb = NULL; - for (xx = 0; xx < GATT_MAX_PHY_CHANNEL; xx++) - { - if (gatt_cb.tcb[xx].in_use && gatt_cb.tcb[xx].att_lcid == lcid) - { + for (xx = 0; xx < GATT_MAX_PHY_CHANNEL; xx++) { + if (gatt_cb.tcb[xx].in_use && gatt_cb.tcb[xx].att_lcid == lcid) { p_tcb = &gatt_cb.tcb[xx]; break; } @@ -1700,10 +1598,10 @@ UINT8 gatt_num_apps_hold_link(tGATT_TCB *p_tcb) { UINT8 i, num = 0; - for (i = 0; i < GATT_MAX_APPS; i ++) - { - if (p_tcb->app_hold_link[i]) + for (i = 0; i < GATT_MAX_APPS; i ++) { + if (p_tcb->app_hold_link[i]) { num ++; + } } GATT_TRACE_DEBUG("gatt_num_apps_hold_link num=%d", num); @@ -1724,10 +1622,10 @@ UINT8 gatt_num_clcb_by_bd_addr(BD_ADDR bda) { UINT8 i, num = 0; - for (i = 0; i < GATT_CL_MAX_LCB; i ++) - { - if (gatt_cb.clcb[i].in_use && memcmp(gatt_cb.clcb[i].p_tcb->peer_bda, bda, BD_ADDR_LEN) == 0) + for (i = 0; i < GATT_CL_MAX_LCB; i ++) { + if (gatt_cb.clcb[i].in_use && memcmp(gatt_cb.clcb[i].p_tcb->peer_bda, bda, BD_ADDR_LEN) == 0) { num ++; + } } return num; } @@ -1745,13 +1643,10 @@ void gatt_sr_copy_prep_cnt_to_cback_cnt(tGATT_TCB *p_tcb ) { UINT8 i; - if (p_tcb) - { - for (i = 0; i < GATT_MAX_APPS; i ++) - { - if (p_tcb->prep_cnt[i]) - { - p_tcb->sr_cmd.cback_cnt[i]=1; + if (p_tcb) { + for (i = 0; i < GATT_MAX_APPS; i ++) { + if (p_tcb->prep_cnt[i]) { + p_tcb->sr_cmd.cback_cnt[i] = 1; } } } @@ -1772,19 +1667,14 @@ BOOLEAN gatt_sr_is_cback_cnt_zero(tGATT_TCB *p_tcb ) BOOLEAN status = TRUE; UINT8 i; - if (p_tcb) - { - for (i = 0; i < GATT_MAX_APPS; i ++) - { - if (p_tcb->sr_cmd.cback_cnt[i]) - { + if (p_tcb) { + for (i = 0; i < GATT_MAX_APPS; i ++) { + if (p_tcb->sr_cmd.cback_cnt[i]) { status = FALSE; break; } } - } - else - { + } else { status = FALSE; } return status; @@ -1804,19 +1694,14 @@ BOOLEAN gatt_sr_is_prep_cnt_zero(tGATT_TCB *p_tcb) BOOLEAN status = TRUE; UINT8 i; - if (p_tcb) - { - for (i = 0; i < GATT_MAX_APPS; i ++) - { - if (p_tcb->prep_cnt[i]) - { + if (p_tcb) { + for (i = 0; i < GATT_MAX_APPS; i ++) { + if (p_tcb->prep_cnt[i]) { status = FALSE; break; } } - } - else - { + } else { status = FALSE; } return status; @@ -1836,11 +1721,9 @@ void gatt_sr_reset_cback_cnt(tGATT_TCB *p_tcb ) { UINT8 i; - if (p_tcb) - { - for (i = 0; i < GATT_MAX_APPS; i ++) - { - p_tcb->sr_cmd.cback_cnt[i]=0; + if (p_tcb) { + for (i = 0; i < GATT_MAX_APPS; i ++) { + p_tcb->sr_cmd.cback_cnt[i] = 0; } } } @@ -1857,11 +1740,9 @@ void gatt_sr_reset_cback_cnt(tGATT_TCB *p_tcb ) void gatt_sr_reset_prep_cnt(tGATT_TCB *p_tcb ) { UINT8 i; - if (p_tcb) - { - for (i = 0; i < GATT_MAX_APPS; i ++) - { - p_tcb->prep_cnt[i]=0; + if (p_tcb) { + for (i = 0; i < GATT_MAX_APPS; i ++) { + p_tcb->prep_cnt[i] = 0; } } } @@ -1881,20 +1762,14 @@ void gatt_sr_update_cback_cnt(tGATT_TCB *p_tcb, tGATT_IF gatt_if, BOOLEAN is_inc UINT8 idx = ((UINT8) gatt_if) - 1 ; - if (p_tcb) - { - if (is_reset_first) - { + if (p_tcb) { + if (is_reset_first) { gatt_sr_reset_cback_cnt(p_tcb); } - if (is_inc) - { + if (is_inc) { p_tcb->sr_cmd.cback_cnt[idx]++; - } - else - { - if ( p_tcb->sr_cmd.cback_cnt[idx]) - { + } else { + if ( p_tcb->sr_cmd.cback_cnt[idx]) { p_tcb->sr_cmd.cback_cnt[idx]--; } } @@ -1916,22 +1791,16 @@ void gatt_sr_update_prep_cnt(tGATT_TCB *p_tcb, tGATT_IF gatt_if, BOOLEAN is_inc, UINT8 idx = ((UINT8) gatt_if) - 1 ; GATT_TRACE_DEBUG("gatt_sr_update_prep_cnt tcb idx=%d gatt_if=%d is_inc=%d is_reset_first=%d", - p_tcb->tcb_idx, gatt_if, is_inc, is_reset_first); + p_tcb->tcb_idx, gatt_if, is_inc, is_reset_first); - if (p_tcb) - { - if (is_reset_first) - { + if (p_tcb) { + if (is_reset_first) { gatt_sr_reset_prep_cnt(p_tcb); } - if (is_inc) - { + if (is_inc) { p_tcb->prep_cnt[idx]++; - } - else - { - if (p_tcb->prep_cnt[idx]) - { + } else { + if (p_tcb->prep_cnt[idx]) { p_tcb->prep_cnt[idx]--; } } @@ -1948,23 +1817,18 @@ void gatt_sr_update_prep_cnt(tGATT_TCB *p_tcb, tGATT_IF gatt_if, BOOLEAN is_inc, *******************************************************************************/ BOOLEAN gatt_cancel_open(tGATT_IF gatt_if, BD_ADDR bda) { - tGATT_TCB *p_tcb=NULL; - BOOLEAN status= TRUE; + tGATT_TCB *p_tcb = NULL; + BOOLEAN status = TRUE; p_tcb = gatt_find_tcb_by_addr(bda, BT_TRANSPORT_LE); - if (p_tcb) - { - if (gatt_get_ch_state(p_tcb) == GATT_CH_OPEN) - { + if (p_tcb) { + if (gatt_get_ch_state(p_tcb) == GATT_CH_OPEN) { GATT_TRACE_ERROR("GATT_CancelConnect - link connected Too late to cancel"); status = FALSE; - } - else - { + } else { gatt_update_app_use_link_flag(gatt_if, p_tcb, FALSE, FALSE); - if (!gatt_num_apps_hold_link(p_tcb)) - { + if (!gatt_num_apps_hold_link(p_tcb)) { gatt_disconnect(p_tcb); } } @@ -1985,12 +1849,10 @@ BOOLEAN gatt_cancel_open(tGATT_IF gatt_if, BD_ADDR bda) BOOLEAN gatt_find_app_hold_link(tGATT_TCB *p_tcb, UINT8 start_idx, UINT8 *p_found_idx, tGATT_IF *p_gatt_if) { UINT8 i; - BOOLEAN found= FALSE; + BOOLEAN found = FALSE; - for (i = start_idx; i < GATT_MAX_APPS; i ++) - { - if (p_tcb->app_hold_link[i]) - { + for (i = start_idx; i < GATT_MAX_APPS; i ++) { + if (p_tcb->app_hold_link[i]) { *p_gatt_if = gatt_cb.clcb[i].p_reg->gatt_if; *p_found_idx = i; found = TRUE; @@ -2018,8 +1880,7 @@ BOOLEAN gatt_cmd_enq(tGATT_TCB *p_tcb, UINT16 clcb_idx, BOOLEAN to_send, UINT8 o p_cmd->p_cmd = p_buf; p_cmd->clcb_idx = clcb_idx; - if (!to_send) - { + if (!to_send) { p_tcb->pending_cl_req = p_tcb->next_slot_inq; } @@ -2038,13 +1899,12 @@ BOOLEAN gatt_cmd_enq(tGATT_TCB *p_tcb, UINT16 clcb_idx, BOOLEAN to_send, UINT8 o ** Returns total number of clcb found. ** *******************************************************************************/ -tGATT_CLCB * gatt_cmd_dequeue(tGATT_TCB *p_tcb, UINT8 *p_op_code) +tGATT_CLCB *gatt_cmd_dequeue(tGATT_TCB *p_tcb, UINT8 *p_op_code) { tGATT_CMD_Q *p_cmd = &p_tcb->cl_cmd_q[p_tcb->pending_cl_req]; tGATT_CLCB *p_clcb = NULL; - if (p_tcb->pending_cl_req != p_tcb->next_slot_inq) - { + if (p_tcb->pending_cl_req != p_tcb->next_slot_inq) { p_clcb = &gatt_cb.clcb[p_cmd->clcb_idx]; *p_op_code = p_cmd->op_code; @@ -2118,55 +1978,48 @@ void gatt_end_operation(tGATT_CLCB *p_clcb, tGATT_STATUS status, void *p_data) { tGATT_CL_COMPLETE cb_data; tGATT_CMPL_CBACK *p_cmpl_cb = (p_clcb->p_reg) ? p_clcb->p_reg->app_cb.p_cmpl_cb : NULL; - UINT8 op = p_clcb->operation, disc_type=GATT_DISC_MAX; + UINT8 op = p_clcb->operation, disc_type = GATT_DISC_MAX; tGATT_DISC_CMPL_CB *p_disc_cmpl_cb = (p_clcb->p_reg) ? p_clcb->p_reg->app_cb.p_disc_cmpl_cb : NULL; UINT16 conn_id; UINT8 operation; GATT_TRACE_DEBUG ("gatt_end_operation status=%d op=%d subtype=%d", - status, p_clcb->operation, p_clcb->op_subtype); + status, p_clcb->operation, p_clcb->op_subtype); memset(&cb_data.att_value, 0, sizeof(tGATT_VALUE)); - if (p_cmpl_cb != NULL && p_clcb->operation != 0) - { - if (p_clcb->operation == GATTC_OPTYPE_READ) - { + if (p_cmpl_cb != NULL && p_clcb->operation != 0) { + if (p_clcb->operation == GATTC_OPTYPE_READ) { cb_data.att_value.handle = p_clcb->s_handle; cb_data.att_value.len = p_clcb->counter; - if (p_data && p_clcb->counter) + if (p_data && p_clcb->counter) { memcpy (cb_data.att_value.value, p_data, cb_data.att_value.len); + } } - if (p_clcb->operation == GATTC_OPTYPE_WRITE) - { + if (p_clcb->operation == GATTC_OPTYPE_WRITE) { memset(&cb_data.att_value, 0, sizeof(tGATT_VALUE)); cb_data.handle = - cb_data.att_value.handle = p_clcb->s_handle; - if (p_clcb->op_subtype == GATT_WRITE_PREPARE) - { - if (p_data) - { + cb_data.att_value.handle = p_clcb->s_handle; + if (p_clcb->op_subtype == GATT_WRITE_PREPARE) { + if (p_data) { cb_data.att_value = *((tGATT_VALUE *) p_data); - } - else - { + } else { GATT_TRACE_DEBUG("Rcv Prepare write rsp but no data"); } } } - if (p_clcb->operation == GATTC_OPTYPE_CONFIG) + if (p_clcb->operation == GATTC_OPTYPE_CONFIG) { cb_data.mtu = p_clcb->p_tcb->payload_size; + } - if (p_clcb->operation == GATTC_OPTYPE_DISCOVERY) - { + if (p_clcb->operation == GATTC_OPTYPE_DISCOVERY) { disc_type = p_clcb->op_subtype; } } - if (p_clcb->p_attr_buf) - { + if (p_clcb->p_attr_buf) { GKI_freebuf(p_clcb->p_attr_buf); } @@ -2176,13 +2029,13 @@ void gatt_end_operation(tGATT_CLCB *p_clcb, tGATT_STATUS status, void *p_data) gatt_clcb_dealloc(p_clcb); - if (p_disc_cmpl_cb && (op == GATTC_OPTYPE_DISCOVERY)) + if (p_disc_cmpl_cb && (op == GATTC_OPTYPE_DISCOVERY)) { (*p_disc_cmpl_cb)(conn_id, disc_type, status); - else if (p_cmpl_cb && op) + } else if (p_cmpl_cb && op) { (*p_cmpl_cb)(conn_id, op, status, &cb_data); - else + } else GATT_TRACE_WARNING ("gatt_end_operation not sent out op=%d p_disc_cmpl_cb:%p p_cmpl_cb:%p", - operation, p_disc_cmpl_cb, p_cmpl_cb); + operation, p_disc_cmpl_cb, p_cmpl_cb); } /******************************************************************************* @@ -2201,24 +2054,22 @@ void gatt_cleanup_upon_disc(BD_ADDR bda, UINT16 reason, tBT_TRANSPORT transport) tGATT_CLCB *p_clcb; UINT8 i; UINT16 conn_id; - tGATT_REG *p_reg=NULL; + tGATT_REG *p_reg = NULL; GATT_TRACE_DEBUG ("gatt_cleanup_upon_disc "); - if ((p_tcb = gatt_find_tcb_by_addr(bda, transport)) != NULL) - { + if ((p_tcb = gatt_find_tcb_by_addr(bda, transport)) != NULL) { GATT_TRACE_DEBUG ("found p_tcb "); gatt_set_ch_state(p_tcb, GATT_CH_CLOSE); - for (i = 0; i < GATT_CL_MAX_LCB; i ++) - { + for (i = 0; i < GATT_CL_MAX_LCB; i ++) { p_clcb = &gatt_cb.clcb[i]; - if (p_clcb->in_use && p_clcb->p_tcb == p_tcb) - { + if (p_clcb->in_use && p_clcb->p_tcb == p_tcb) { btu_stop_timer(&p_clcb->rsp_timer_ent); GATT_TRACE_DEBUG ("found p_clcb conn_id=%d clcb_idx=%d", p_clcb->conn_id, p_clcb->clcb_idx); - if (p_clcb->operation != GATTC_OPTYPE_NONE) + if (p_clcb->operation != GATTC_OPTYPE_NONE) { gatt_end_operation(p_clcb, GATT_ERROR, NULL); + } gatt_clcb_dealloc(p_clcb); @@ -2230,11 +2081,9 @@ void gatt_cleanup_upon_disc(BD_ADDR bda, UINT16 reason, tBT_TRANSPORT transport) gatt_free_pending_ind(p_tcb); gatt_free_pending_enc_queue(p_tcb); - for (i = 0; i < GATT_MAX_APPS; i ++) - { + for (i = 0; i < GATT_MAX_APPS; i ++) { p_reg = &gatt_cb.cl_rcb[i]; - if (p_reg->in_use && p_reg->app_cb.p_conn_cb) - { + if (p_reg->in_use && p_reg->app_cb.p_conn_cb) { conn_id = GATT_CREATE_CONN_ID(p_tcb->tcb_idx, p_reg->gatt_if); GATT_TRACE_DEBUG ("found p_reg tcb_idx=%d gatt_if=%d conn_id=0x%x", p_tcb->tcb_idx, p_reg->gatt_if, conn_id); (*p_reg->app_cb.p_conn_cb)(p_reg->gatt_if, bda, conn_id, FALSE, reason, transport); @@ -2254,25 +2103,24 @@ void gatt_cleanup_upon_disc(BD_ADDR bda, UINT16 reason, tBT_TRANSPORT transport) ** Returns UINT8 *: name of the operation. ** *******************************************************************************/ -UINT8 * gatt_dbg_op_name(UINT8 op_code) +UINT8 *gatt_dbg_op_name(UINT8 op_code) { UINT8 pseduo_op_code_idx = op_code & (~GATT_WRITE_CMD_MASK); - if (op_code == GATT_CMD_WRITE ) - { + if (op_code == GATT_CMD_WRITE ) { pseduo_op_code_idx = 0x14; /* just an index to op_code_name */ } - if (op_code == GATT_SIGN_CMD_WRITE) - { + if (op_code == GATT_SIGN_CMD_WRITE) { pseduo_op_code_idx = 0x15; /* just an index to op_code_name */ } - if (pseduo_op_code_idx <= GATT_OP_CODE_MAX) - return(UINT8*) op_code_name[pseduo_op_code_idx]; - else - return(UINT8 *)"Op Code Exceed Max"; + if (pseduo_op_code_idx <= GATT_OP_CODE_MAX) { + return (UINT8 *) op_code_name[pseduo_op_code_idx]; + } else { + return (UINT8 *)"Op Code Exceed Max"; + } } /******************************************************************************* @@ -2289,16 +2137,11 @@ void gatt_dbg_display_uuid(tBT_UUID bt_uuid) char str_buf[50]; int x = 0; - if (bt_uuid.len == LEN_UUID_16) - { + if (bt_uuid.len == LEN_UUID_16) { sprintf(str_buf, "0x%04x", bt_uuid.uu.uuid16); - } - else if (bt_uuid.len == LEN_UUID_32) - { + } else if (bt_uuid.len == LEN_UUID_32) { sprintf(str_buf, "0x%08x", (unsigned int)bt_uuid.uu.uuid32); - } - else if (bt_uuid.len == LEN_UUID_128) - { + } else if (bt_uuid.len == LEN_UUID_128) { x += sprintf(&str_buf[x], "0x%02x%02x%02x%02x%02x%02x%02x%02x", bt_uuid.uu.uuid128[15], bt_uuid.uu.uuid128[14], bt_uuid.uu.uuid128[13], bt_uuid.uu.uuid128[12], @@ -2309,9 +2152,9 @@ void gatt_dbg_display_uuid(tBT_UUID bt_uuid) bt_uuid.uu.uuid128[5], bt_uuid.uu.uuid128[4], bt_uuid.uu.uuid128[3], bt_uuid.uu.uuid128[2], bt_uuid.uu.uuid128[1], bt_uuid.uu.uuid128[0]); - } - else + } else { BCM_STRNCPY_S(str_buf, sizeof(str_buf), "Unknown UUID 0", 15); + } GATT_TRACE_DEBUG ("UUID=[%s]", str_buf); @@ -2331,10 +2174,8 @@ BOOLEAN gatt_is_bg_dev_for_app(tGATT_BG_CONN_DEV *p_dev, tGATT_IF gatt_if) { UINT8 i; - for (i = 0; i < GATT_MAX_APPS; i ++ ) - { - if (p_dev->in_use && (p_dev->gatt_if[i] == gatt_if)) - { + for (i = 0; i < GATT_MAX_APPS; i ++ ) { + if (p_dev->in_use && (p_dev->gatt_if[i] == gatt_if)) { return TRUE; } } @@ -2349,15 +2190,13 @@ BOOLEAN gatt_is_bg_dev_for_app(tGATT_BG_CONN_DEV *p_dev, tGATT_IF gatt_if) ** Returns pointer to the device record ** *******************************************************************************/ -tGATT_BG_CONN_DEV * gatt_find_bg_dev(BD_ADDR remote_bda) +tGATT_BG_CONN_DEV *gatt_find_bg_dev(BD_ADDR remote_bda) { tGATT_BG_CONN_DEV *p_dev_list = &gatt_cb.bgconn_dev[0]; UINT8 i; - for (i = 0; i < GATT_MAX_BG_CONN_DEV; i ++, p_dev_list ++) - { - if (p_dev_list->in_use && !memcmp(p_dev_list->remote_bda, remote_bda, BD_ADDR_LEN)) - { + for (i = 0; i < GATT_MAX_BG_CONN_DEV; i ++, p_dev_list ++) { + if (p_dev_list->in_use && !memcmp(p_dev_list->remote_bda, remote_bda, BD_ADDR_LEN)) { return p_dev_list; } } @@ -2372,15 +2211,13 @@ tGATT_BG_CONN_DEV * gatt_find_bg_dev(BD_ADDR remote_bda) ** Returns pointer to the device record ** *******************************************************************************/ -tGATT_BG_CONN_DEV * gatt_alloc_bg_dev(BD_ADDR remote_bda) +tGATT_BG_CONN_DEV *gatt_alloc_bg_dev(BD_ADDR remote_bda) { tGATT_BG_CONN_DEV *p_dev_list = &gatt_cb.bgconn_dev[0]; UINT8 i; - for (i = 0; i < GATT_MAX_BG_CONN_DEV; i ++, p_dev_list ++) - { - if (!p_dev_list->in_use) - { + for (i = 0; i < GATT_MAX_BG_CONN_DEV; i ++, p_dev_list ++) { + if (!p_dev_list->in_use) { p_dev_list->in_use = TRUE; memcpy(p_dev_list->remote_bda, remote_bda, BD_ADDR_LEN); @@ -2406,58 +2243,47 @@ BOOLEAN gatt_add_bg_dev_list(tGATT_REG *p_reg, BD_ADDR bd_addr, BOOLEAN is_init UINT8 i; BOOLEAN ret = FALSE; - if ((p_dev = gatt_find_bg_dev(bd_addr)) == NULL) - { + if ((p_dev = gatt_find_bg_dev(bd_addr)) == NULL) { p_dev = gatt_alloc_bg_dev(bd_addr); } - if (p_dev) - { - for (i = 0; i < GATT_MAX_APPS; i ++) - { - if (is_initator) - { - if (p_dev->gatt_if[i] == gatt_if) - { + if (p_dev) { + for (i = 0; i < GATT_MAX_APPS; i ++) { + if (is_initator) { + if (p_dev->gatt_if[i] == gatt_if) { GATT_TRACE_ERROR("device already in iniator white list"); return TRUE; - } - else if (p_dev->gatt_if[i] == 0) - { + } else if (p_dev->gatt_if[i] == 0) { p_dev->gatt_if[i] = gatt_if; - if (i == 0) + if (i == 0) { ret = BTM_BleUpdateBgConnDev(TRUE, bd_addr); - else + } else { ret = TRUE; + } break; } - } - else - { - if (p_dev->listen_gif[i] == gatt_if) - { + } else { + if (p_dev->listen_gif[i] == gatt_if) { GATT_TRACE_ERROR("device already in adv white list"); return TRUE; - } - else if (p_dev->listen_gif[i] == 0) - { - if (p_reg->listening == GATT_LISTEN_TO_ALL) + } else if (p_dev->listen_gif[i] == 0) { + if (p_reg->listening == GATT_LISTEN_TO_ALL) { p_reg->listening = GATT_LISTEN_TO_NONE; + } p_reg->listening ++; p_dev->listen_gif[i] = gatt_if; - if (i == 0) + if (i == 0) { ret = BTM_BleUpdateAdvWhitelist(TRUE, bd_addr); - else + } else { ret = TRUE; + } break; } } } - } - else - { + } else { GATT_TRACE_ERROR("no device record available"); } @@ -2478,8 +2304,9 @@ BOOLEAN gatt_remove_bg_dev_for_app(tGATT_IF gatt_if, BD_ADDR bd_addr) tGATT_TCB *p_tcb = gatt_find_tcb_by_addr(bd_addr, BT_TRANSPORT_LE); BOOLEAN status; - if (p_tcb) + if (p_tcb) { gatt_update_app_use_link_flag(gatt_if, p_tcb, FALSE, FALSE); + } status = gatt_update_auto_connect_dev(gatt_if, FALSE, bd_addr, TRUE); return status; } @@ -2500,12 +2327,11 @@ UINT8 gatt_get_num_apps_for_bg_dev(BD_ADDR bd_addr) UINT8 i; UINT8 cnt = 0; - if ((p_dev = gatt_find_bg_dev(bd_addr)) != NULL) - { - for (i = 0; i < GATT_MAX_APPS; i ++) - { - if (p_dev->gatt_if[i]) + if ((p_dev = gatt_find_bg_dev(bd_addr)) != NULL) { + for (i = 0; i < GATT_MAX_APPS; i ++) { + if (p_dev->gatt_if[i]) { cnt++; + } } } return cnt; @@ -2526,15 +2352,12 @@ BOOLEAN gatt_find_app_for_bg_dev(BD_ADDR bd_addr, tGATT_IF *p_gatt_if) UINT8 i; BOOLEAN ret = FALSE; - if ((p_dev = gatt_find_bg_dev(bd_addr)) == NULL) - { + if ((p_dev = gatt_find_bg_dev(bd_addr)) == NULL) { return ret; } - for (i = 0; i < GATT_MAX_APPS; i ++) - { - if (p_dev->gatt_if[i] != 0 ) - { + for (i = 0; i < GATT_MAX_APPS; i ++) { + if (p_dev->gatt_if[i] != 0 ) { *p_gatt_if = p_dev->gatt_if[i]; ret = TRUE; break; @@ -2561,51 +2384,47 @@ BOOLEAN gatt_remove_bg_dev_from_list(tGATT_REG *p_reg, BD_ADDR bd_addr, BOOLEAN UINT8 i, j; BOOLEAN ret = FALSE; - if ((p_dev = gatt_find_bg_dev(bd_addr)) == NULL) - { + if ((p_dev = gatt_find_bg_dev(bd_addr)) == NULL) { return ret; } - for (i = 0; i < GATT_MAX_APPS && (p_dev->gatt_if[i] > 0 || p_dev->listen_gif[i]); i ++) - { - if (is_initiator) - { - if (p_dev->gatt_if[i] == gatt_if) - { + for (i = 0; i < GATT_MAX_APPS && (p_dev->gatt_if[i] > 0 || p_dev->listen_gif[i]); i ++) { + if (is_initiator) { + if (p_dev->gatt_if[i] == gatt_if) { p_dev->gatt_if[i] = 0; /* move all element behind one forward */ - for (j = i + 1; j < GATT_MAX_APPS; j ++) + for (j = i + 1; j < GATT_MAX_APPS; j ++) { p_dev->gatt_if[j - 1] = p_dev->gatt_if[j]; + } - if (p_dev->gatt_if[0] == 0) + if (p_dev->gatt_if[0] == 0) { ret = BTM_BleUpdateBgConnDev(FALSE, p_dev->remote_bda); - else + } else { ret = TRUE; + } break; } - } - else - { - if (p_dev->listen_gif[i] == gatt_if) - { + } else { + if (p_dev->listen_gif[i] == gatt_if) { p_dev->listen_gif[i] = 0; p_reg->listening --; /* move all element behind one forward */ - for (j = i + 1; j < GATT_MAX_APPS; j ++) + for (j = i + 1; j < GATT_MAX_APPS; j ++) { p_dev->listen_gif[j - 1] = p_dev->listen_gif[j]; + } - if (p_dev->listen_gif[0] == 0) + if (p_dev->listen_gif[0] == 0) { ret = BTM_BleUpdateAdvWhitelist(FALSE, p_dev->remote_bda); - else + } else { ret = TRUE; + } break; } } } - if (i != GATT_MAX_APPS && p_dev->gatt_if[0] == 0 && p_dev->listen_gif[0] == 0) - { + if (i != GATT_MAX_APPS && p_dev->gatt_if[0] == 0 && p_dev->listen_gif[0] == 0) { memset(p_dev, 0, sizeof(tGATT_BG_CONN_DEV)); } @@ -2627,37 +2446,38 @@ void gatt_deregister_bgdev_list(tGATT_IF gatt_if) tGATT_REG *p_reg = gatt_get_regcb(gatt_if); /* update the BG conn device list */ - for (i = 0 ; i in_use) - { - for (j = 0; j < GATT_MAX_APPS; j ++) - { - if (p_dev_list->gatt_if[j] == 0 && p_dev_list->listen_gif[j] == 0) + for (i = 0 ; i < GATT_MAX_BG_CONN_DEV; i ++, p_dev_list ++ ) { + if (p_dev_list->in_use) { + for (j = 0; j < GATT_MAX_APPS; j ++) { + if (p_dev_list->gatt_if[j] == 0 && p_dev_list->listen_gif[j] == 0) { break; - - if (p_dev_list->gatt_if[j] == gatt_if) - { - for (k = j + 1; k < GATT_MAX_APPS; k ++) - p_dev_list->gatt_if[k - 1] = p_dev_list->gatt_if[k]; - - if (p_dev_list->gatt_if[0] == 0) - BTM_BleUpdateBgConnDev(FALSE, p_dev_list->remote_bda); } - if (p_dev_list->listen_gif[j] == gatt_if) - { + if (p_dev_list->gatt_if[j] == gatt_if) { + for (k = j + 1; k < GATT_MAX_APPS; k ++) { + p_dev_list->gatt_if[k - 1] = p_dev_list->gatt_if[k]; + } + + if (p_dev_list->gatt_if[0] == 0) { + BTM_BleUpdateBgConnDev(FALSE, p_dev_list->remote_bda); + } + } + + if (p_dev_list->listen_gif[j] == gatt_if) { p_dev_list->listen_gif[j] = 0; - if (p_reg != NULL && p_reg->listening > 0) + if (p_reg != NULL && p_reg->listening > 0) { p_reg->listening --; + } /* move all element behind one forward */ - for (k = j + 1; k < GATT_MAX_APPS; k ++) + for (k = j + 1; k < GATT_MAX_APPS; k ++) { p_dev_list->listen_gif[k - 1] = p_dev_list->listen_gif[k]; + } - if (p_dev_list->listen_gif[0] == 0) + if (p_dev_list->listen_gif[0] == 0) { BTM_BleUpdateAdvWhitelist(FALSE, p_dev_list->remote_bda); + } } } } @@ -2701,24 +2521,19 @@ BOOLEAN gatt_update_auto_connect_dev (tGATT_IF gatt_if, BOOLEAN add, BD_ADDR bd_ GATT_TRACE_API ("gatt_update_auto_connect_dev "); /* Make sure app is registered */ - if ((p_reg = gatt_get_regcb(gatt_if)) == NULL) - { + if ((p_reg = gatt_get_regcb(gatt_if)) == NULL) { GATT_TRACE_ERROR("gatt_update_auto_connect_dev - gatt_if %d is not registered", gatt_if); - return(FALSE); + return (FALSE); } - if (add) - { + if (add) { ret = gatt_add_bg_dev_list(p_reg, bd_addr, is_initator); - if (ret && p_tcb != NULL) - { + if (ret && p_tcb != NULL) { /* if a connected device, update the link holding number */ gatt_update_app_use_link_flag(gatt_if, p_tcb, TRUE, TRUE); } - } - else - { + } else { ret = gatt_remove_bg_dev_from_list(p_reg, bd_addr, is_initator); } return ret; @@ -2735,13 +2550,12 @@ BOOLEAN gatt_update_auto_connect_dev (tGATT_IF gatt_if, BOOLEAN add, BD_ADDR bd_ ** Returns Pointer to the new service start buffer, NULL no buffer available ** *******************************************************************************/ -tGATT_PENDING_ENC_CLCB* gatt_add_pending_enc_channel_clcb(tGATT_TCB *p_tcb, tGATT_CLCB *p_clcb ) +tGATT_PENDING_ENC_CLCB *gatt_add_pending_enc_channel_clcb(tGATT_TCB *p_tcb, tGATT_CLCB *p_clcb ) { tGATT_PENDING_ENC_CLCB *p_buf; GATT_TRACE_DEBUG ("gatt_add_pending_new_srv_start"); - if ((p_buf = (tGATT_PENDING_ENC_CLCB *)GKI_getbuf((UINT16)sizeof(tGATT_PENDING_ENC_CLCB))) != NULL) - { + if ((p_buf = (tGATT_PENDING_ENC_CLCB *)GKI_getbuf((UINT16)sizeof(tGATT_PENDING_ENC_CLCB))) != NULL) { GATT_TRACE_DEBUG ("enqueue a new pending encryption channel clcb"); p_buf->p_clcb = p_clcb; GKI_enqueue (&p_tcb->pending_enc_clcb, p_buf); @@ -2765,32 +2579,28 @@ BOOLEAN gatt_update_listen_mode(void) UINT16 connectability, window, interval; BOOLEAN rt = TRUE; - for (; ii < GATT_MAX_APPS; ii ++, p_reg ++) - { - if ( p_reg->in_use && p_reg->listening > listening) - { + for (; ii < GATT_MAX_APPS; ii ++, p_reg ++) { + if ( p_reg->in_use && p_reg->listening > listening) { listening = p_reg->listening; } } if (listening == GATT_LISTEN_TO_ALL || - listening == GATT_LISTEN_TO_NONE) + listening == GATT_LISTEN_TO_NONE) { BTM_BleUpdateAdvFilterPolicy (AP_SCAN_CONN_ALL); - else + } else { BTM_BleUpdateAdvFilterPolicy (AP_SCAN_CONN_WL); + } - if (rt) - { + if (rt) { connectability = BTM_ReadConnectability (&window, &interval); - if (listening != GATT_LISTEN_TO_NONE) - { + if (listening != GATT_LISTEN_TO_NONE) { connectability |= BTM_BLE_CONNECTABLE; - } - else - { - if ((connectability & BTM_BLE_CONNECTABLE) == 0) - connectability &= ~BTM_BLE_CONNECTABLE; + } else { + if ((connectability & BTM_BLE_CONNECTABLE) == 0) { + connectability &= ~BTM_BLE_CONNECTABLE; + } } /* turning on the adv now */ btm_ble_set_connectability(connectability); diff --git a/components/bt/bluedroid/stack/gatt/include/gatt_int.h b/components/bt/bluedroid/stack/gatt/include/gatt_int.h old mode 100755 new mode 100644 index a1fbb9d022..1ac8431b3b --- a/components/bt/bluedroid/stack/gatt/include/gatt_int.h +++ b/components/bt/bluedroid/stack/gatt/include/gatt_int.h @@ -100,8 +100,7 @@ typedef UINT8 tGATT_SEC_FLAG; #define GATT_INFO_TYPE_PAIR_128 0x02 /* GATT client FIND_TYPE_VALUE_Request data */ -typedef struct -{ +typedef struct { tBT_UUID uuid; /* type of attribute to be found */ UINT16 s_handle; /* starting handle */ UINT16 e_handle; /* ending handle */ @@ -111,35 +110,32 @@ typedef struct /* client request message to ATT protocol */ -typedef union -{ +typedef union { tGATT_READ_BY_TYPE browse; /* read by type request */ tGATT_FIND_TYPE_VALUE find_type_value;/* find by type value */ tGATT_READ_MULTI read_multi; /* read multiple request */ tGATT_READ_PARTIAL read_blob; /* read blob */ tGATT_VALUE attr_value; /* write request */ - /* prepare write */ + /* prepare write */ /* write blob */ UINT16 handle; /* read, handle value confirmation */ UINT16 mtu; tGATT_EXEC_FLAG exec_write; /* execute write */ -}tGATT_CL_MSG; +} tGATT_CL_MSG; /* error response strucutre */ -typedef struct -{ +typedef struct { UINT16 handle; UINT8 cmd_code; UINT8 reason; -}tGATT_ERROR; +} tGATT_ERROR; /* server response message to ATT protocol */ -typedef union -{ +typedef union { /* data type member event */ tGATT_VALUE attr_value; /* READ, HANDLE_VALUE_IND, PREPARE_WRITE */ - /* READ_BLOB, READ_BY_TYPE */ + /* READ_BLOB, READ_BY_TYPE */ tGATT_ERROR error; /* ERROR_RSP */ UINT16 handle; /* WRITE, WRITE_BLOB */ UINT16 mtu; /* exchange MTU request */ @@ -147,16 +143,14 @@ typedef union /* Characteristic declaration attribute value */ -typedef struct -{ +typedef struct { tGATT_CHAR_PROP property; UINT16 char_val_handle; } tGATT_CHAR_DECL; /* attribute value maintained in the server database */ -typedef union -{ +typedef union { tBT_UUID uuid; /* service declaration */ tGATT_CHAR_DECL char_decl; /* characteristic declaration */ tGATT_INCL_SRVC incl_handle; /* included service */ @@ -172,8 +166,7 @@ typedef UINT8 tGATT_ATTR_UUID_TYPE; /* 16 bits UUID Attribute in server database */ -typedef struct -{ +typedef struct { void *p_next; /* pointer to the next attribute, either tGATT_ATTR16 or tGATT_ATTR128 */ tGATT_ATTR_VALUE *p_value; @@ -185,8 +178,7 @@ typedef struct /* 32 bits UUID Attribute in server database */ -typedef struct -{ +typedef struct { void *p_next; /* pointer to the next attribute, either tGATT_ATTR16, tGATT_ATTR32 or tGATT_ATTR128 */ tGATT_ATTR_VALUE *p_value; @@ -199,8 +191,7 @@ typedef struct /* 128 bits UUID Attribute in server database */ -typedef struct -{ +typedef struct { void *p_next; /* pointer to the next attribute, either tGATT_ATTR16 or tGATT_ATTR128 */ tGATT_ATTR_VALUE *p_value; @@ -212,8 +203,7 @@ typedef struct /* Service Database definition */ -typedef struct -{ +typedef struct { void *p_attr_list; /* pointer to the first attribute, either tGATT_ATTR16 or tGATT_ATTR128 */ UINT8 *p_free_mem; /* Pointer to free memory */ @@ -227,8 +217,7 @@ typedef struct /* A GATT registration record consists of a handle, and 1 or more attributes */ /* A service registration information record consists of beginning and ending */ /* attribute handle, service UUID and a set of GATT server callback. */ -typedef struct -{ +typedef struct { tGATT_SVC_DB *p_db; /* pointer to the service database */ tBT_UUID app_uuid; /* applicatino UUID */ UINT32 sdp_handle; /* primamry service SDP handle */ @@ -248,8 +237,7 @@ typedef struct /* A service registration information record consists of beginning and ending */ /* attribute handle, service UUID and a set of GATT server callback. */ -typedef struct -{ +typedef struct { tBT_UUID app_uuid128; tGATT_CBACK app_cb; tGATT_IF gatt_if; /* one based */ @@ -261,13 +249,12 @@ typedef struct /* command queue for each connection */ -typedef struct -{ +typedef struct { BT_HDR *p_cmd; UINT16 clcb_idx; UINT8 op_code; BOOLEAN to_send; -}tGATT_CMD_Q; +} tGATT_CMD_Q; #if GATT_MAX_SR_PROFILES <= 8 @@ -279,8 +266,7 @@ typedef UINT32 tGATT_APP_MASK; #endif /* command details for each connection */ -typedef struct -{ +typedef struct { BT_HDR *p_rsp_msg; UINT32 trans_id; tGATT_READ_MULTI multi_req; @@ -303,51 +289,45 @@ typedef UINT8 tGATT_CH_STATE; #define GATT_GAP_START_HANDLE 20 #define GATT_APP_START_HANDLE 40 -typedef struct hdl_cfg -{ +typedef struct hdl_cfg { UINT16 gatt_start_hdl; UINT16 gap_start_hdl; UINT16 app_start_hdl; -}tGATT_HDL_CFG; +} tGATT_HDL_CFG; -typedef struct hdl_list_elem -{ +typedef struct hdl_list_elem { struct hdl_list_elem *p_next; struct hdl_list_elem *p_prev; tGATTS_HNDL_RANGE asgn_range; /* assigned handle range */ tGATT_SVC_DB svc_db; BOOLEAN in_use; -}tGATT_HDL_LIST_ELEM; +} tGATT_HDL_LIST_ELEM; -typedef struct -{ +typedef struct { tGATT_HDL_LIST_ELEM *p_first; tGATT_HDL_LIST_ELEM *p_last; UINT16 count; -}tGATT_HDL_LIST_INFO; +} tGATT_HDL_LIST_INFO; -typedef struct srv_list_elem -{ +typedef struct srv_list_elem { struct srv_list_elem *p_next; struct srv_list_elem *p_prev; UINT16 s_hdl; UINT8 i_sreg; BOOLEAN in_use; BOOLEAN is_primary; -}tGATT_SRV_LIST_ELEM; +} tGATT_SRV_LIST_ELEM; -typedef struct -{ +typedef struct { tGATT_SRV_LIST_ELEM *p_last_primary; tGATT_SRV_LIST_ELEM *p_first; tGATT_SRV_LIST_ELEM *p_last; UINT16 count; -}tGATT_SRV_LIST_INFO; +} tGATT_SRV_LIST_INFO; -typedef struct -{ +typedef struct { BUFFER_Q pending_enc_clcb; /* pending encryption channel q */ tGATT_SEC_ACTION sec_act; BD_ADDR peer_bda; @@ -384,14 +364,12 @@ typedef struct /* logic channel */ -typedef struct -{ +typedef struct { UINT16 next_disc_start_hdl; /* starting handle for the next inc srvv discovery */ tGATT_DISC_RES result; BOOLEAN wait_for_read_rsp; } tGATT_READ_INC_UUID128; -typedef struct -{ +typedef struct { tGATT_TCB *p_tcb; /* associated TCB of this CLCB */ tGATT_REG *p_reg; /* owner of this CLCB */ UINT8 sccb_idx; @@ -415,50 +393,44 @@ typedef struct } tGATT_CLCB; -typedef struct -{ +typedef struct { tGATT_CLCB *p_clcb; -}tGATT_PENDING_ENC_CLCB; +} tGATT_PENDING_ENC_CLCB; #define GATT_SIGN_WRITE 1 #define GATT_VERIFY_SIGN_DATA 2 -typedef struct -{ +typedef struct { BT_HDR hdr; tGATT_CLCB *p_clcb; -}tGATT_SIGN_WRITE_OP; +} tGATT_SIGN_WRITE_OP; -typedef struct -{ +typedef struct { BT_HDR hdr; tGATT_TCB *p_tcb; BT_HDR *p_data; -}tGATT_VERIFY_SIGN_OP; +} tGATT_VERIFY_SIGN_OP; -typedef struct -{ +typedef struct { UINT16 clcb_idx; BOOLEAN in_use; } tGATT_SCCB; -typedef struct -{ +typedef struct { UINT16 handle; UINT16 uuid; UINT32 service_change; -}tGATT_SVC_CHG; +} tGATT_SVC_CHG; -typedef struct -{ +typedef struct { tGATT_IF gatt_if[GATT_MAX_APPS]; tGATT_IF listen_gif[GATT_MAX_APPS]; BD_ADDR remote_bda; BOOLEAN in_use; -}tGATT_BG_CONN_DEV; +} tGATT_BG_CONN_DEV; #define GATT_SVC_CHANGED_CONNECTING 1 /* wait for connection */ #define GATT_SVC_CHANGED_SERVICE 2 /* GATT service discovery */ @@ -466,8 +438,7 @@ typedef struct #define GATT_SVC_CHANGED_DESCRIPTOR 4 /* service change CCC discoery */ #define GATT_SVC_CHANGED_CONFIGURE_CCCD 5 /* config CCC */ -typedef struct -{ +typedef struct { UINT16 conn_id; BOOLEAN in_use; BOOLEAN connected; @@ -479,10 +450,9 @@ typedef struct UINT8 ccc_result; UINT16 s_handle; UINT16 e_handle; -}tGATT_PROFILE_CLCB; +} tGATT_PROFILE_CLCB; -typedef struct -{ +typedef struct { tGATT_TCB tcb[GATT_MAX_PHY_CHANNEL]; BUFFER_Q sign_op_queue; @@ -576,7 +546,7 @@ extern tGATT_STATUS attp_send_sr_msg (tGATT_TCB *p_tcb, BT_HDR *p_msg); extern tGATT_STATUS attp_send_msg_to_l2cap(tGATT_TCB *p_tcb, BT_HDR *p_toL2CAP); /* utility functions */ -extern UINT8 * gatt_dbg_op_name(UINT8 op_code); +extern UINT8 *gatt_dbg_op_name(UINT8 op_code); extern UINT32 gatt_add_sdp_record (tBT_UUID *p_uuid, UINT16 start_hdl, UINT16 end_hdl); extern BOOLEAN gatt_parse_uuid_from_cmd(tBT_UUID *p_uuid, UINT16 len, UINT8 **p_data); extern UINT8 gatt_build_uuid_to_stream(UINT8 **p_dst, tBT_UUID uuid); @@ -590,7 +560,7 @@ extern void gatt_ind_ack_timeout(TIMER_LIST_ENT *p_tle); extern void gatt_start_ind_ack_timer(tGATT_TCB *p_tcb); extern tGATT_STATUS gatt_send_error_rsp(tGATT_TCB *p_tcb, UINT8 err_code, UINT8 op_code, UINT16 handle, BOOLEAN deq); extern void gatt_dbg_display_uuid(tBT_UUID bt_uuid); -extern tGATT_PENDING_ENC_CLCB* gatt_add_pending_enc_channel_clcb(tGATT_TCB *p_tcb, tGATT_CLCB *p_clcb ); +extern tGATT_PENDING_ENC_CLCB *gatt_add_pending_enc_channel_clcb(tGATT_TCB *p_tcb, tGATT_CLCB *p_clcb ); extern tGATTS_PENDING_NEW_SRV_START *gatt_sr_is_new_srv_chg(tBT_UUID *p_app_uuid128, tBT_UUID *p_svc_uuid, UINT16 svc_inst); @@ -625,7 +595,7 @@ extern BOOLEAN gatt_is_bg_dev_for_app(tGATT_BG_CONN_DEV *p_dev, tGATT_IF gatt_if extern BOOLEAN gatt_remove_bg_dev_for_app(tGATT_IF gatt_if, BD_ADDR bd_addr); extern UINT8 gatt_get_num_apps_for_bg_dev(BD_ADDR bd_addr); extern BOOLEAN gatt_find_app_for_bg_dev(BD_ADDR bd_addr, tGATT_IF *p_gatt_if); -extern tGATT_BG_CONN_DEV * gatt_find_bg_dev(BD_ADDR remote_bda); +extern tGATT_BG_CONN_DEV *gatt_find_bg_dev(BD_ADDR remote_bda); extern void gatt_deregister_bgdev_list(tGATT_IF gatt_if); extern void gatt_reset_bgdev_list(void); @@ -635,7 +605,7 @@ extern UINT8 gatt_sr_find_i_rcb_by_app_id(tBT_UUID *p_app_uuid128, tBT_UUID *p_s extern UINT8 gatt_sr_alloc_rcb(tGATT_HDL_LIST_ELEM *p_list); extern tGATT_STATUS gatt_sr_process_app_rsp (tGATT_TCB *p_tcb, tGATT_IF gatt_if, UINT32 trans_id, UINT8 op_code, tGATT_STATUS status, tGATTS_RSP *p_msg); extern void gatt_server_handle_client_req (tGATT_TCB *p_tcb, UINT8 op_code, - UINT16 len, UINT8 *p_data); + UINT16 len, UINT8 *p_data); extern void gatt_sr_send_req_callback(UINT16 conn_id, UINT32 trans_id, UINT8 op_code, tGATTS_DATA *p_req_data); extern UINT32 gatt_sr_enqueue_cmd (tGATT_TCB *p_tcb, UINT8 op_code, UINT16 handle); @@ -659,10 +629,10 @@ extern void gatt_sr_update_prep_cnt(tGATT_TCB *p_tcb, tGATT_IF gatt_if, BOOLEAN extern BOOLEAN gatt_find_app_hold_link(tGATT_TCB *p_tcb, UINT8 start_idx, UINT8 *p_found_idx, tGATT_IF *p_gatt_if); extern UINT8 gatt_num_apps_hold_link(tGATT_TCB *p_tcb); extern UINT8 gatt_num_clcb_by_bd_addr(BD_ADDR bda); -extern tGATT_TCB * gatt_find_tcb_by_cid(UINT16 lcid); -extern tGATT_TCB * gatt_allocate_tcb_by_bdaddr(BD_ADDR bda, tBT_TRANSPORT transport); -extern tGATT_TCB * gatt_get_tcb_by_idx(UINT8 tcb_idx); -extern tGATT_TCB * gatt_find_tcb_by_addr(BD_ADDR bda, tBT_TRANSPORT transport); +extern tGATT_TCB *gatt_find_tcb_by_cid(UINT16 lcid); +extern tGATT_TCB *gatt_allocate_tcb_by_bdaddr(BD_ADDR bda, tBT_TRANSPORT transport); +extern tGATT_TCB *gatt_get_tcb_by_idx(UINT8 tcb_idx); +extern tGATT_TCB *gatt_find_tcb_by_addr(BD_ADDR bda, tBT_TRANSPORT transport); extern BOOLEAN gatt_send_ble_burst_data (BD_ADDR remote_bda, BT_HDR *p_buf); /* GATT client functions */ @@ -680,7 +650,7 @@ extern UINT8 gatt_act_send_browse(tGATT_TCB *p_tcb, UINT16 index, UINT8 op, UINT extern tGATT_CLCB *gatt_cmd_dequeue(tGATT_TCB *p_tcb, UINT8 *p_opcode); extern BOOLEAN gatt_cmd_enq(tGATT_TCB *p_tcb, UINT16 clcb_idx, BOOLEAN to_send, UINT8 op_code, BT_HDR *p_buf); extern void gatt_client_handle_server_rsp (tGATT_TCB *p_tcb, UINT8 op_code, - UINT16 len, UINT8 *p_data); + UINT16 len, UINT8 *p_data); extern void gatt_send_queue_write_cancel (tGATT_TCB *p_tcb, tGATT_CLCB *p_clcb, tGATT_EXEC_FLAG flag); /* gatt_auth.c */ @@ -697,14 +667,14 @@ extern UINT16 gatts_add_included_service (tGATT_SVC_DB *p_db, UINT16 s_handle, U extern UINT16 gatts_add_characteristic (tGATT_SVC_DB *p_db, tGATT_PERM perm, tGATT_CHAR_PROP property, tBT_UUID *p_char_uuid); extern UINT16 gatts_add_char_descr (tGATT_SVC_DB *p_db, tGATT_PERM perm, tBT_UUID *p_dscp_uuid); extern tGATT_STATUS gatts_db_read_attr_value_by_type (tGATT_TCB *p_tcb, tGATT_SVC_DB *p_db, UINT8 op_code, BT_HDR *p_rsp, UINT16 s_handle, - UINT16 e_handle, tBT_UUID type, UINT16 *p_len, tGATT_SEC_FLAG sec_flag, UINT8 key_size,UINT32 trans_id, UINT16 *p_cur_handle); -extern tGATT_STATUS gatts_read_attr_value_by_handle(tGATT_TCB *p_tcb,tGATT_SVC_DB *p_db, UINT8 op_code, UINT16 handle, UINT16 offset, - UINT8 *p_value, UINT16 *p_len, UINT16 mtu,tGATT_SEC_FLAG sec_flag,UINT8 key_size,UINT32 trans_id); -extern tGATT_STATUS gatts_write_attr_perm_check (tGATT_SVC_DB *p_db, UINT8 op_code,UINT16 handle, UINT16 offset, UINT8 *p_data, - UINT16 len, tGATT_SEC_FLAG sec_flag, UINT8 key_size); -extern tGATT_STATUS gatts_read_attr_perm_check(tGATT_SVC_DB *p_db, BOOLEAN is_long, UINT16 handle, tGATT_SEC_FLAG sec_flag,UINT8 key_size); + UINT16 e_handle, tBT_UUID type, UINT16 *p_len, tGATT_SEC_FLAG sec_flag, UINT8 key_size, UINT32 trans_id, UINT16 *p_cur_handle); +extern tGATT_STATUS gatts_read_attr_value_by_handle(tGATT_TCB *p_tcb, tGATT_SVC_DB *p_db, UINT8 op_code, UINT16 handle, UINT16 offset, + UINT8 *p_value, UINT16 *p_len, UINT16 mtu, tGATT_SEC_FLAG sec_flag, UINT8 key_size, UINT32 trans_id); +extern tGATT_STATUS gatts_write_attr_perm_check (tGATT_SVC_DB *p_db, UINT8 op_code, UINT16 handle, UINT16 offset, UINT8 *p_data, + UINT16 len, tGATT_SEC_FLAG sec_flag, UINT8 key_size); +extern tGATT_STATUS gatts_read_attr_perm_check(tGATT_SVC_DB *p_db, BOOLEAN is_long, UINT16 handle, tGATT_SEC_FLAG sec_flag, UINT8 key_size); extern void gatts_update_srv_list_elem(UINT8 i_sreg, UINT16 handle, BOOLEAN is_primary); -extern tBT_UUID * gatts_get_service_uuid (tGATT_SVC_DB *p_db); +extern tBT_UUID *gatts_get_service_uuid (tGATT_SVC_DB *p_db); extern void gatt_reset_bgdev_list(void); #endif diff --git a/components/bt/bluedroid/stack/hcic/hciblecmds.c b/components/bt/bluedroid/stack/hcic/hciblecmds.c old mode 100755 new mode 100644 index 5ee0159c5b..8fa4ae8b3e --- a/components/bt/bluedroid/stack/hcic/hciblecmds.c +++ b/components/bt/bluedroid/stack/hcic/hciblecmds.c @@ -40,8 +40,9 @@ BOOLEAN btsnd_hcic_ble_set_local_used_feat (UINT8 feat_set[8]) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SET_USED_FEAT_CMD)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SET_USED_FEAT_CMD)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -60,8 +61,9 @@ BOOLEAN btsnd_hcic_ble_set_random_addr (BD_ADDR random_bda) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_RANDOM_ADDR_CMD)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_RANDOM_ADDR_CMD)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -78,15 +80,16 @@ BOOLEAN btsnd_hcic_ble_set_random_addr (BD_ADDR random_bda) } BOOLEAN btsnd_hcic_ble_write_adv_params (UINT16 adv_int_min, UINT16 adv_int_max, - UINT8 adv_type, UINT8 addr_type_own, - UINT8 addr_type_dir, BD_ADDR direct_bda, - UINT8 channel_map, UINT8 adv_filter_policy) + UINT8 adv_type, UINT8 addr_type_own, + UINT8 addr_type_dir, BD_ADDR direct_bda, + UINT8 channel_map, UINT8 adv_filter_policy) { BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_WRITE_ADV_PARAMS)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_WRITE_ADV_PARAMS)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -113,8 +116,9 @@ BOOLEAN btsnd_hcic_ble_read_adv_chnl_tx_power (void) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -134,13 +138,13 @@ BOOLEAN btsnd_hcic_ble_set_adv_data (UINT8 data_len, UINT8 *p_data) BT_HDR *p; UINT8 *pp; - for (int i = 0; i < data_len; i++) - { - LOG_DEBUG("p_data[%d] = %x\n", i,p_data[i]); + for (int i = 0; i < data_len; i++) { + LOG_DEBUG("p_data[%d] = %x\n", i, p_data[i]); } - - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_WRITE_ADV_DATA + 1)) == NULL) + + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_WRITE_ADV_DATA + 1)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -152,10 +156,10 @@ BOOLEAN btsnd_hcic_ble_set_adv_data (UINT8 data_len, UINT8 *p_data) memset(pp, 0, HCIC_PARAM_SIZE_BLE_WRITE_ADV_DATA); - if (p_data != NULL && data_len > 0) - { - if (data_len > HCIC_PARAM_SIZE_BLE_WRITE_ADV_DATA) + if (p_data != NULL && data_len > 0) { + if (data_len > HCIC_PARAM_SIZE_BLE_WRITE_ADV_DATA) { data_len = HCIC_PARAM_SIZE_BLE_WRITE_ADV_DATA; + } UINT8_TO_STREAM (pp, data_len); @@ -170,8 +174,9 @@ BOOLEAN btsnd_hcic_ble_set_scan_rsp_data (UINT8 data_len, UINT8 *p_scan_rsp) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_WRITE_SCAN_RSP + 1)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_WRITE_SCAN_RSP + 1)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -183,11 +188,11 @@ BOOLEAN btsnd_hcic_ble_set_scan_rsp_data (UINT8 data_len, UINT8 *p_scan_rsp) memset(pp, 0, HCIC_PARAM_SIZE_BLE_WRITE_SCAN_RSP); - if (p_scan_rsp != NULL && data_len > 0) - { + if (p_scan_rsp != NULL && data_len > 0) { - if (data_len > HCIC_PARAM_SIZE_BLE_WRITE_SCAN_RSP ) + if (data_len > HCIC_PARAM_SIZE_BLE_WRITE_SCAN_RSP ) { data_len = HCIC_PARAM_SIZE_BLE_WRITE_SCAN_RSP; + } UINT8_TO_STREAM (pp, data_len); @@ -204,8 +209,9 @@ BOOLEAN btsnd_hcic_ble_set_adv_enable (UINT8 adv_enable) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_ADV_ENABLE)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_ADV_ENABLE)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -221,14 +227,15 @@ BOOLEAN btsnd_hcic_ble_set_adv_enable (UINT8 adv_enable) return (TRUE); } BOOLEAN btsnd_hcic_ble_set_scan_params (UINT8 scan_type, - UINT16 scan_int, UINT16 scan_win, - UINT8 addr_type_own, UINT8 scan_filter_policy) + UINT16 scan_int, UINT16 scan_win, + UINT8 addr_type_own, UINT8 scan_filter_policy) { BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_WRITE_SCAN_PARAM)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_WRITE_SCAN_PARAM)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -253,8 +260,9 @@ BOOLEAN btsnd_hcic_ble_set_scan_enable (UINT8 scan_enable, UINT8 duplicate) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_WRITE_SCAN_ENABLE)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_WRITE_SCAN_ENABLE)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -283,8 +291,9 @@ BOOLEAN btsnd_hcic_ble_create_ll_conn (UINT16 scan_int, UINT16 scan_win, BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_CREATE_LL_CONN)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_CREATE_LL_CONN)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -319,8 +328,9 @@ BOOLEAN btsnd_hcic_ble_create_conn_cancel (void) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_CREATE_CONN_CANCEL)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_CREATE_CONN_CANCEL)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -339,8 +349,9 @@ BOOLEAN btsnd_hcic_ble_clear_white_list (void) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CLEAR_WHITE_LIST)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CLEAR_WHITE_LIST)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -359,8 +370,9 @@ BOOLEAN btsnd_hcic_ble_add_white_list (UINT8 addr_type, BD_ADDR bda) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_ADD_WHITE_LIST)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_ADD_WHITE_LIST)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -382,8 +394,9 @@ BOOLEAN btsnd_hcic_ble_remove_from_white_list (UINT8 addr_type, BD_ADDR bda) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_REMOVE_WHITE_LIST)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_REMOVE_WHITE_LIST)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -401,15 +414,16 @@ BOOLEAN btsnd_hcic_ble_remove_from_white_list (UINT8 addr_type, BD_ADDR bda) } BOOLEAN btsnd_hcic_ble_upd_ll_conn_params (UINT16 handle, - UINT16 conn_int_min, UINT16 conn_int_max, - UINT16 conn_latency, UINT16 conn_timeout, - UINT16 min_ce_len, UINT16 max_ce_len) + UINT16 conn_int_min, UINT16 conn_int_max, + UINT16 conn_latency, UINT16 conn_timeout, + UINT16 min_ce_len, UINT16 max_ce_len) { BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_UPD_LL_CONN_PARAMS)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_UPD_LL_CONN_PARAMS)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -437,8 +451,9 @@ BOOLEAN btsnd_hcic_ble_set_host_chnl_class (UINT8 chnl_map[HCIC_BLE_CHNL_MAP_SI BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SET_HOST_CHNL_CLASS)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SET_HOST_CHNL_CLASS)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -459,8 +474,9 @@ BOOLEAN btsnd_hcic_ble_read_chnl_map (UINT16 handle) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CHNL_MAP)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CHNL_MAP)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -481,8 +497,9 @@ BOOLEAN btsnd_hcic_ble_read_remote_feat (UINT16 handle) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_READ_REMOTE_FEAT)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_READ_REMOTE_FEAT)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -507,8 +524,9 @@ BOOLEAN btsnd_hcic_ble_encrypt (UINT8 *key, UINT8 key_len, UINT8 *pp; if ((p = HCI_GET_CMD_BUF(sizeof(BT_HDR) + sizeof (void *) + - HCIC_PARAM_SIZE_BLE_ENCRYPT)) == NULL) + HCIC_PARAM_SIZE_BLE_ENCRYPT)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -524,8 +542,12 @@ BOOLEAN btsnd_hcic_ble_encrypt (UINT8 *key, UINT8 key_len, memset(pp, 0, HCIC_PARAM_SIZE_BLE_ENCRYPT); - if (key_len > HCIC_BLE_ENCRYT_KEY_SIZE) key_len = HCIC_BLE_ENCRYT_KEY_SIZE; - if (pt_len > HCIC_BLE_ENCRYT_KEY_SIZE) pt_len = HCIC_BLE_ENCRYT_KEY_SIZE; + if (key_len > HCIC_BLE_ENCRYT_KEY_SIZE) { + key_len = HCIC_BLE_ENCRYT_KEY_SIZE; + } + if (pt_len > HCIC_BLE_ENCRYT_KEY_SIZE) { + pt_len = HCIC_BLE_ENCRYT_KEY_SIZE; + } ARRAY_TO_STREAM (pp, key, key_len); pp += (HCIC_BLE_ENCRYT_KEY_SIZE - key_len); @@ -541,8 +563,9 @@ BOOLEAN btsnd_hcic_ble_rand (void *p_cmd_cplt_cback) UINT8 *pp; if ((p = HCI_GET_CMD_BUF(sizeof(BT_HDR) + sizeof (void *) + - HCIC_PARAM_SIZE_BLE_RAND)) == NULL) + HCIC_PARAM_SIZE_BLE_RAND)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -560,13 +583,14 @@ BOOLEAN btsnd_hcic_ble_rand (void *p_cmd_cplt_cback) } BOOLEAN btsnd_hcic_ble_start_enc (UINT16 handle, UINT8 rand[HCIC_BLE_RAND_DI_SIZE], - UINT16 ediv, UINT8 ltk[HCIC_BLE_ENCRYT_KEY_SIZE]) + UINT16 ediv, UINT8 ltk[HCIC_BLE_ENCRYT_KEY_SIZE]) { BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_START_ENC)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_START_ENC)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -590,8 +614,9 @@ BOOLEAN btsnd_hcic_ble_ltk_req_reply (UINT16 handle, UINT8 ltk[HCIC_BLE_ENCRYT_K BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_LTK_REQ_REPLY)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_LTK_REQ_REPLY)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -613,8 +638,9 @@ BOOLEAN btsnd_hcic_ble_ltk_req_neg_reply (UINT16 handle) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_LTK_REQ_NEG_REPLY)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_LTK_REQ_NEG_REPLY)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -635,8 +661,9 @@ BOOLEAN btsnd_hcic_ble_receiver_test(UINT8 rx_freq) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -657,8 +684,9 @@ BOOLEAN btsnd_hcic_ble_transmitter_test(UINT8 tx_freq, UINT8 test_data_len, UINT BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM3)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM3)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -681,8 +709,9 @@ BOOLEAN btsnd_hcic_ble_test_end(void) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -701,8 +730,9 @@ BOOLEAN btsnd_hcic_ble_read_host_supported (void) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -719,15 +749,16 @@ BOOLEAN btsnd_hcic_ble_read_host_supported (void) #if (defined BLE_LLT_INCLUDED) && (BLE_LLT_INCLUDED == TRUE) BOOLEAN btsnd_hcic_ble_rc_param_req_reply( UINT16 handle, - UINT16 conn_int_min, UINT16 conn_int_max, - UINT16 conn_latency, UINT16 conn_timeout, - UINT16 min_ce_len, UINT16 max_ce_len ) + UINT16 conn_int_min, UINT16 conn_int_max, + UINT16 conn_latency, UINT16 conn_timeout, + UINT16 min_ce_len, UINT16 max_ce_len ) { BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_RC_PARAM_REQ_REPLY)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_RC_PARAM_REQ_REPLY)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -754,8 +785,9 @@ BOOLEAN btsnd_hcic_ble_rc_param_req_neg_reply(UINT16 handle, UINT8 reason) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_RC_PARAM_REQ_NEG_REPLY)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_RC_PARAM_REQ_NEG_REPLY)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -774,14 +806,15 @@ BOOLEAN btsnd_hcic_ble_rc_param_req_neg_reply(UINT16 handle, UINT8 reason) #endif BOOLEAN btsnd_hcic_ble_add_device_resolving_list (UINT8 addr_type_peer, BD_ADDR bda_peer, - UINT8 irk_peer[HCIC_BLE_IRK_SIZE], - UINT8 irk_local[HCIC_BLE_IRK_SIZE]) + UINT8 irk_peer[HCIC_BLE_IRK_SIZE], + UINT8 irk_local[HCIC_BLE_IRK_SIZE]) { BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF (HCIC_PARAM_SIZE_BLE_ADD_DEV_RESOLVING_LIST)) == NULL) + if ((p = HCI_GET_CMD_BUF (HCIC_PARAM_SIZE_BLE_ADD_DEV_RESOLVING_LIST)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -805,8 +838,9 @@ BOOLEAN btsnd_hcic_ble_rm_device_resolving_list (UINT8 addr_type_peer, BD_ADDR b BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF (HCIC_PARAM_SIZE_BLE_RM_DEV_RESOLVING_LIST)) == NULL) + if ((p = HCI_GET_CMD_BUF (HCIC_PARAM_SIZE_BLE_RM_DEV_RESOLVING_LIST)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -828,8 +862,9 @@ BOOLEAN btsnd_hcic_ble_clear_resolving_list (void) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF (HCIC_PARAM_SIZE_BLE_CLEAR_RESOLVING_LIST)) == NULL) + if ((p = HCI_GET_CMD_BUF (HCIC_PARAM_SIZE_BLE_CLEAR_RESOLVING_LIST)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -849,8 +884,9 @@ BOOLEAN btsnd_hcic_ble_read_resolvable_addr_peer (UINT8 addr_type_peer, BD_ADDR BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF (HCIC_PARAM_SIZE_BLE_READ_RESOLVABLE_ADDR_PEER)) == NULL) + if ((p = HCI_GET_CMD_BUF (HCIC_PARAM_SIZE_BLE_READ_RESOLVABLE_ADDR_PEER)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -872,8 +908,9 @@ BOOLEAN btsnd_hcic_ble_read_resolvable_addr_local (UINT8 addr_type_peer, BD_ADDR BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF (HCIC_PARAM_SIZE_BLE_READ_RESOLVABLE_ADDR_LOCAL)) == NULL) + if ((p = HCI_GET_CMD_BUF (HCIC_PARAM_SIZE_BLE_READ_RESOLVABLE_ADDR_LOCAL)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -895,8 +932,9 @@ BOOLEAN btsnd_hcic_ble_set_addr_resolution_enable (UINT8 addr_resolution_enable) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF (HCIC_PARAM_SIZE_BLE_SET_ADDR_RESOLUTION_ENABLE)) == NULL) + if ((p = HCI_GET_CMD_BUF (HCIC_PARAM_SIZE_BLE_SET_ADDR_RESOLUTION_ENABLE)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -917,8 +955,9 @@ BOOLEAN btsnd_hcic_ble_set_rand_priv_addr_timeout (UINT16 rpa_timout) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF (HCIC_PARAM_SIZE_BLE_SET_RAND_PRIV_ADDR_TIMOUT)) == NULL) + if ((p = HCI_GET_CMD_BUF (HCIC_PARAM_SIZE_BLE_SET_RAND_PRIV_ADDR_TIMOUT)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -939,8 +978,9 @@ BOOLEAN btsnd_hcic_ble_set_data_length(UINT16 conn_handle, UINT16 tx_octets, UIN BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_SET_DATA_LENGTH)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_SET_DATA_LENGTH)) == NULL) { return FALSE; + } pp = p->data; diff --git a/components/bt/bluedroid/stack/hcic/hcicmds.c b/components/bt/bluedroid/stack/hcic/hcicmds.c old mode 100755 new mode 100644 index 4ea85ff9c3..920feaea2a --- a/components/bt/bluedroid/stack/hcic/hcicmds.c +++ b/components/bt/bluedroid/stack/hcic/hcicmds.c @@ -41,8 +41,9 @@ BOOLEAN btsnd_hcic_inquiry(const LAP inq_lap, UINT8 duration, UINT8 response_cnt BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_INQUIRY)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_INQUIRY)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -65,8 +66,9 @@ BOOLEAN btsnd_hcic_inq_cancel(void) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_INQ_CANCEL)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_INQ_CANCEL)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -85,8 +87,9 @@ BOOLEAN btsnd_hcic_per_inq_mode (UINT16 max_period, UINT16 min_period, BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_PER_INQ_MODE)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_PER_INQ_MODE)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -111,8 +114,9 @@ BOOLEAN btsnd_hcic_exit_per_inq (void) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_EXIT_PER_INQ)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_EXIT_PER_INQ)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -133,8 +137,9 @@ BOOLEAN btsnd_hcic_create_conn(BD_ADDR dest, UINT16 packet_types, BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CREATE_CONN)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CREATE_CONN)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -168,8 +173,9 @@ BOOLEAN btsnd_hcic_disconnect (UINT16 handle, UINT8 reason) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_DISCONNECT)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_DISCONNECT)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -191,8 +197,9 @@ BOOLEAN btsnd_hcic_add_SCO_conn (UINT16 handle, UINT16 packet_types) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_ADD_SCO_CONN)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_ADD_SCO_CONN)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -215,8 +222,9 @@ BOOLEAN btsnd_hcic_create_conn_cancel(BD_ADDR dest) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CREATE_CONN_CANCEL)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CREATE_CONN_CANCEL)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -237,8 +245,9 @@ BOOLEAN btsnd_hcic_accept_conn (BD_ADDR dest, UINT8 role) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_ACCEPT_CONN)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_ACCEPT_CONN)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -261,8 +270,9 @@ BOOLEAN btsnd_hcic_reject_conn (BD_ADDR dest, UINT8 reason) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_REJECT_CONN)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_REJECT_CONN)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -286,8 +296,9 @@ BOOLEAN btsnd_hcic_link_key_req_reply (BD_ADDR bd_addr, LINK_KEY link_key) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_LINK_KEY_REQ_REPLY)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_LINK_KEY_REQ_REPLY)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -309,8 +320,9 @@ BOOLEAN btsnd_hcic_link_key_neg_reply (BD_ADDR bd_addr) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_LINK_KEY_NEG_REPLY)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_LINK_KEY_NEG_REPLY)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -327,14 +339,15 @@ BOOLEAN btsnd_hcic_link_key_neg_reply (BD_ADDR bd_addr) } BOOLEAN btsnd_hcic_pin_code_req_reply (BD_ADDR bd_addr, UINT8 pin_code_len, - PIN_CODE pin_code) + PIN_CODE pin_code) { BT_HDR *p; UINT8 *pp; int i; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_PIN_CODE_REQ_REPLY)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_PIN_CODE_REQ_REPLY)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -347,11 +360,13 @@ BOOLEAN btsnd_hcic_pin_code_req_reply (BD_ADDR bd_addr, UINT8 pin_code_len, BDADDR_TO_STREAM (pp, bd_addr); UINT8_TO_STREAM (pp, pin_code_len); - for (i = 0; i < pin_code_len; i++) + for (i = 0; i < pin_code_len; i++) { *pp++ = *pin_code++; + } - for (; i < PIN_CODE_LEN; i++) + for (; i < PIN_CODE_LEN; i++) { *pp++ = 0; + } btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); @@ -363,8 +378,9 @@ BOOLEAN btsnd_hcic_pin_code_neg_reply (BD_ADDR bd_addr) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_PIN_CODE_NEG_REPLY)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_PIN_CODE_NEG_REPLY)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -385,8 +401,9 @@ BOOLEAN btsnd_hcic_change_conn_type (UINT16 handle, UINT16 packet_types) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CHANGE_CONN_TYPE)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CHANGE_CONN_TYPE)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -408,8 +425,9 @@ BOOLEAN btsnd_hcic_auth_request (UINT16 handle) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -430,8 +448,9 @@ BOOLEAN btsnd_hcic_set_conn_encrypt (UINT16 handle, BOOLEAN enable) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SET_CONN_ENCRYPT)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SET_CONN_ENCRYPT)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -454,8 +473,9 @@ BOOLEAN btsnd_hcic_rmt_name_req (BD_ADDR bd_addr, UINT8 page_scan_rep_mode, BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_RMT_NAME_REQ)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_RMT_NAME_REQ)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -479,8 +499,9 @@ BOOLEAN btsnd_hcic_rmt_name_req_cancel (BD_ADDR bd_addr) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_RMT_NAME_REQ_CANCEL)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_RMT_NAME_REQ_CANCEL)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -501,8 +522,9 @@ BOOLEAN btsnd_hcic_rmt_features_req (UINT16 handle) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -523,8 +545,9 @@ BOOLEAN btsnd_hcic_rmt_ext_features (UINT16 handle, UINT8 page_num) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_RMT_EXT_FEATURES)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_RMT_EXT_FEATURES)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -546,8 +569,9 @@ BOOLEAN btsnd_hcic_rmt_ver_req (UINT16 handle) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -568,8 +592,9 @@ BOOLEAN btsnd_hcic_read_rmt_clk_offset (UINT16 handle) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -590,8 +615,9 @@ BOOLEAN btsnd_hcic_read_lmp_handle (UINT16 handle) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -614,8 +640,9 @@ BOOLEAN btsnd_hcic_setup_esco_conn (UINT16 handle, UINT32 tx_bw, BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SETUP_ESCO)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SETUP_ESCO)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -645,8 +672,9 @@ BOOLEAN btsnd_hcic_accept_esco_conn (BD_ADDR bd_addr, UINT32 tx_bw, BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_ACCEPT_ESCO)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_ACCEPT_ESCO)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -673,8 +701,9 @@ BOOLEAN btsnd_hcic_reject_esco_conn (BD_ADDR bd_addr, UINT8 reason) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_REJECT_ESCO)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_REJECT_ESCO)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -697,8 +726,9 @@ BOOLEAN btsnd_hcic_hold_mode (UINT16 handle, UINT16 max_hold_period, BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_HOLD_MODE)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_HOLD_MODE)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -723,8 +753,9 @@ BOOLEAN btsnd_hcic_sniff_mode (UINT16 handle, UINT16 max_sniff_period, BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SNIFF_MODE)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SNIFF_MODE)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -749,8 +780,9 @@ BOOLEAN btsnd_hcic_exit_sniff_mode (UINT16 handle) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -772,8 +804,9 @@ BOOLEAN btsnd_hcic_park_mode (UINT16 handle, UINT16 beacon_max_interval, BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_PARK_MODE)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_PARK_MODE)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -796,8 +829,9 @@ BOOLEAN btsnd_hcic_exit_park_mode (UINT16 handle) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -820,8 +854,9 @@ BOOLEAN btsnd_hcic_qos_setup (UINT16 handle, UINT8 flags, UINT8 service_type, BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_QOS_SETUP)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_QOS_SETUP)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -848,8 +883,9 @@ BOOLEAN btsnd_hcic_switch_role (BD_ADDR bd_addr, UINT8 role) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SWITCH_ROLE)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SWITCH_ROLE)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -871,8 +907,9 @@ BOOLEAN btsnd_hcic_write_policy_set (UINT16 handle, UINT16 settings) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_POLICY_SET)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_POLICY_SET)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -893,8 +930,9 @@ BOOLEAN btsnd_hcic_write_def_policy_set (UINT16 settings) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_DEF_POLICY_SET)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_DEF_POLICY_SET)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -916,8 +954,9 @@ BOOLEAN btsnd_hcic_set_event_filter (UINT8 filt_type, UINT8 filt_cond_type, UINT8 *pp; /* Use buffer large enough to hold all sizes in this command */ - if ((p = HCI_GET_CMD_BUF(2 + filt_cond_len)) == NULL) + if ((p = HCI_GET_CMD_BUF(2 + filt_cond_len)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -925,36 +964,31 @@ BOOLEAN btsnd_hcic_set_event_filter (UINT8 filt_type, UINT8 filt_cond_type, UINT16_TO_STREAM (pp, HCI_SET_EVENT_FILTER); - if (filt_type) - { + if (filt_type) { p->len = (UINT16)(HCIC_PREAMBLE_SIZE + 2 + filt_cond_len); UINT8_TO_STREAM (pp, (UINT8)(2 + filt_cond_len)); UINT8_TO_STREAM (pp, filt_type); UINT8_TO_STREAM (pp, filt_cond_type); - if (filt_cond_type == HCI_FILTER_COND_DEVICE_CLASS) - { + if (filt_cond_type == HCI_FILTER_COND_DEVICE_CLASS) { DEVCLASS_TO_STREAM (pp, filt_cond); filt_cond += DEV_CLASS_LEN; DEVCLASS_TO_STREAM (pp, filt_cond); filt_cond += DEV_CLASS_LEN; filt_cond_len -= (2 * DEV_CLASS_LEN); - } - else if (filt_cond_type == HCI_FILTER_COND_BD_ADDR) - { + } else if (filt_cond_type == HCI_FILTER_COND_BD_ADDR) { BDADDR_TO_STREAM (pp, filt_cond); filt_cond += BD_ADDR_LEN; filt_cond_len -= BD_ADDR_LEN; } - if (filt_cond_len) + if (filt_cond_len) { ARRAY_TO_STREAM (pp, filt_cond, filt_cond_len); - } - else - { + } + } else { p->len = (UINT16)(HCIC_PREAMBLE_SIZE + 1); UINT8_TO_STREAM (pp, 1); @@ -970,8 +1004,9 @@ BOOLEAN btsnd_hcic_write_pin_type (UINT8 type) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -992,8 +1027,9 @@ BOOLEAN btsnd_hcic_delete_stored_key (BD_ADDR bd_addr, BOOLEAN delete_all_flag) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_DELETE_STORED_KEY)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_DELETE_STORED_KEY)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1016,8 +1052,9 @@ BOOLEAN btsnd_hcic_change_name (BD_NAME name) UINT8 *pp; UINT16 len = strlen ((char *)name) + 1; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CHANGE_NAME)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CHANGE_NAME)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); memset(pp, 0, HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_CHANGE_NAME); @@ -1028,8 +1065,9 @@ BOOLEAN btsnd_hcic_change_name (BD_NAME name) UINT16_TO_STREAM (pp, HCI_CHANGE_LOCAL_NAME); UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_CHANGE_NAME); - if (len > HCIC_PARAM_SIZE_CHANGE_NAME) + if (len > HCIC_PARAM_SIZE_CHANGE_NAME) { len = HCIC_PARAM_SIZE_CHANGE_NAME; + } ARRAY_TO_STREAM (pp, name, len); @@ -1042,8 +1080,9 @@ BOOLEAN btsnd_hcic_read_name (void) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1062,8 +1101,9 @@ BOOLEAN btsnd_hcic_write_page_tout (UINT16 timeout) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM2)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM2)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1084,8 +1124,9 @@ BOOLEAN btsnd_hcic_write_scan_enable (UINT8 flag) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1106,8 +1147,9 @@ BOOLEAN btsnd_hcic_write_pagescan_cfg(UINT16 interval, UINT16 window) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PAGESCAN_CFG)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PAGESCAN_CFG)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1129,8 +1171,9 @@ BOOLEAN btsnd_hcic_write_inqscan_cfg(UINT16 interval, UINT16 window) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_INQSCAN_CFG)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_INQSCAN_CFG)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1152,8 +1195,9 @@ BOOLEAN btsnd_hcic_write_auth_enable (UINT8 flag) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1174,8 +1218,9 @@ BOOLEAN btsnd_hcic_write_dev_class(DEV_CLASS dev_class) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM3)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM3)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1196,8 +1241,9 @@ BOOLEAN btsnd_hcic_write_voice_settings(UINT16 flags) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM2)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM2)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1218,8 +1264,9 @@ BOOLEAN btsnd_hcic_write_auto_flush_tout (UINT16 handle, UINT16 tout) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_AUTO_FLUSH_TOUT)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_AUTO_FLUSH_TOUT)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1241,8 +1288,9 @@ BOOLEAN btsnd_hcic_read_tx_power (UINT16 handle, UINT8 type) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_TX_POWER)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_TX_POWER)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1260,14 +1308,15 @@ BOOLEAN btsnd_hcic_read_tx_power (UINT16 handle, UINT8 type) } BOOLEAN btsnd_hcic_host_num_xmitted_pkts (UINT8 num_handles, UINT16 *handle, - UINT16 *num_pkts) + UINT16 *num_pkts) { BT_HDR *p; UINT8 *pp; int j; - if ((p = HCI_GET_CMD_BUF(1 + (num_handles * 4))) == NULL) + if ((p = HCI_GET_CMD_BUF(1 + (num_handles * 4))) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1279,8 +1328,7 @@ BOOLEAN btsnd_hcic_host_num_xmitted_pkts (UINT8 num_handles, UINT16 *handle, UINT8_TO_STREAM (pp, num_handles); - for (j = 0; j < num_handles; j++) - { + for (j = 0; j < num_handles; j++) { UINT16_TO_STREAM (pp, handle[j]); UINT16_TO_STREAM (pp, num_pkts[j]); } @@ -1294,8 +1342,9 @@ BOOLEAN btsnd_hcic_write_link_super_tout (UINT8 local_controller_id, UINT16 hand BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_LINK_SUPER_TOUT)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_LINK_SUPER_TOUT)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1312,14 +1361,15 @@ BOOLEAN btsnd_hcic_write_link_super_tout (UINT8 local_controller_id, UINT16 hand return (TRUE); } -BOOLEAN btsnd_hcic_write_cur_iac_lap (UINT8 num_cur_iac, LAP * const iac_lap) +BOOLEAN btsnd_hcic_write_cur_iac_lap (UINT8 num_cur_iac, LAP *const iac_lap) { BT_HDR *p; UINT8 *pp; int i; - if ((p = HCI_GET_CMD_BUF(1 + (LAP_LEN * num_cur_iac))) == NULL) + if ((p = HCI_GET_CMD_BUF(1 + (LAP_LEN * num_cur_iac))) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1331,8 +1381,9 @@ BOOLEAN btsnd_hcic_write_cur_iac_lap (UINT8 num_cur_iac, LAP * const iac_lap) UINT8_TO_STREAM (pp, num_cur_iac); - for (i = 0; i < num_cur_iac; i++) + for (i = 0; i < num_cur_iac; i++) { LAP_TO_STREAM (pp, iac_lap[i]); + } btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); return (TRUE); @@ -1349,8 +1400,9 @@ BOOLEAN btsnd_hcic_sniff_sub_rate(UINT16 handle, UINT16 max_lat, BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SNIFF_SUB_RATE)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SNIFF_SUB_RATE)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1388,13 +1440,14 @@ void btsnd_hcic_write_ext_inquiry_response (void *buffer, UINT8 fec_req) } BOOLEAN btsnd_hcic_io_cap_req_reply (BD_ADDR bd_addr, UINT8 capability, - UINT8 oob_present, UINT8 auth_req) + UINT8 oob_present, UINT8 auth_req) { BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_IO_CAP_RESP)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_IO_CAP_RESP)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1418,8 +1471,9 @@ BOOLEAN btsnd_hcic_io_cap_req_neg_reply (BD_ADDR bd_addr, UINT8 err_code) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_IO_CAP_NEG_REPLY)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_IO_CAP_NEG_REPLY)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1441,8 +1495,9 @@ BOOLEAN btsnd_hcic_read_local_oob_data (void) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_R_LOCAL_OOB)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_R_LOCAL_OOB)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1461,21 +1516,19 @@ BOOLEAN btsnd_hcic_user_conf_reply (BD_ADDR bd_addr, BOOLEAN is_yes) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_UCONF_REPLY)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_UCONF_REPLY)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_UCONF_REPLY; p->offset = 0; - if (!is_yes) - { + if (!is_yes) { /* Negative reply */ UINT16_TO_STREAM (pp, HCI_USER_CONF_VALUE_NEG_REPLY); - } - else - { + } else { /* Confirmation */ UINT16_TO_STREAM (pp, HCI_USER_CONF_REQUEST_REPLY); } @@ -1493,8 +1546,9 @@ BOOLEAN btsnd_hcic_user_passkey_reply (BD_ADDR bd_addr, UINT32 value) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_U_PKEY_REPLY)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_U_PKEY_REPLY)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1516,8 +1570,9 @@ BOOLEAN btsnd_hcic_user_passkey_neg_reply (BD_ADDR bd_addr) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_U_PKEY_NEG_REPLY)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_U_PKEY_NEG_REPLY)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1538,8 +1593,9 @@ BOOLEAN btsnd_hcic_rem_oob_reply (BD_ADDR bd_addr, UINT8 *p_c, UINT8 *p_r) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_REM_OOB_REPLY)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_REM_OOB_REPLY)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1562,8 +1618,9 @@ BOOLEAN btsnd_hcic_rem_oob_neg_reply (BD_ADDR bd_addr) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_REM_OOB_NEG_REPLY)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_REM_OOB_NEG_REPLY)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1585,8 +1642,9 @@ BOOLEAN btsnd_hcic_read_inq_tx_power (void) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_R_TX_POWER)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_R_TX_POWER)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1605,8 +1663,9 @@ BOOLEAN btsnd_hcic_send_keypress_notif (BD_ADDR bd_addr, UINT8 notif) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SEND_KEYPRESS_NOTIF)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SEND_KEYPRESS_NOTIF)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1631,8 +1690,9 @@ BOOLEAN btsnd_hcic_enhanced_flush (UINT16 handle, UINT8 packet_type) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_ENHANCED_FLUSH)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_ENHANCED_FLUSH)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1658,8 +1718,9 @@ BOOLEAN btsnd_hcic_get_link_quality (UINT16 handle) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1680,8 +1741,9 @@ BOOLEAN btsnd_hcic_read_rssi (UINT16 handle) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1702,8 +1764,9 @@ BOOLEAN btsnd_hcic_enable_test_mode (void) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1722,8 +1785,9 @@ BOOLEAN btsnd_hcic_write_inqscan_type (UINT8 type) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1744,8 +1808,9 @@ BOOLEAN btsnd_hcic_write_inquiry_mode (UINT8 mode) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); @@ -1766,8 +1831,9 @@ BOOLEAN btsnd_hcic_write_pagescan_type (UINT8 type) BT_HDR *p; UINT8 *pp; - if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) + if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) { return (FALSE); + } pp = (UINT8 *)(p + 1); diff --git a/components/bt/bluedroid/stack/include/bt_types.h b/components/bt/bluedroid/stack/include/bt_types.h old mode 100755 new mode 100644 index b01e29db3c..f211015091 --- a/components/bt/bluedroid/stack/include/bt_types.h +++ b/components/bt/bluedroid/stack/include/bt_types.h @@ -58,8 +58,8 @@ typedef bool BOOLEAN; */ #define BT_EVT_MASK 0xFF00 #define BT_SUB_EVT_MASK 0x00FF - /* To Bluetooth Upper Layers */ - /************************************/ +/* To Bluetooth Upper Layers */ +/************************************/ #define BT_EVT_TO_BTU_L2C_EVT 0x0900 /* L2CAP event */ #define BT_EVT_TO_BTU_HCI_EVT 0x1000 /* HCI Event */ #define BT_EVT_TO_BTU_HCI_BR_EDR_EVT (0x0000 | BT_EVT_TO_BTU_HCI_EVT) /* event from BR/EDR controller */ @@ -84,8 +84,8 @@ typedef bool BOOLEAN; #define BT_EVT_BTSIM 0x1B00 /* Insight BTSIM event */ #define BT_EVT_BTISE 0x1C00 /* Insight Script Engine event */ - /* To LM */ - /************************************/ +/* To LM */ +/************************************/ #define BT_EVT_TO_LM_HCI_CMD 0x2000 /* HCI Command */ #define BT_EVT_TO_LM_HCI_ACL 0x2100 /* HCI ACL Data */ #define BT_EVT_TO_LM_HCI_SCO 0x2200 /* HCI SCO Data */ @@ -122,7 +122,7 @@ typedef bool BOOLEAN; #define BT_EVT_TO_GAP_MSG 0x3b00 /* for NFC */ - /************************************/ +/************************************/ #define BT_EVT_TO_NFC_NCI 0x4000 /* NCI Command, Notification or Data*/ #define BT_EVT_TO_NFC_INIT 0x4100 /* Initialization message */ #define BT_EVT_TO_NCI_LP 0x4200 /* Low power */ @@ -194,8 +194,7 @@ typedef bool BOOLEAN; /* Define the header of each buffer used in the Bluetooth stack. */ -typedef struct -{ +typedef struct { uint16_t event; uint16_t len; uint16_t offset; @@ -416,16 +415,14 @@ typedef UINT8 ACCESS_CODE[ACCESS_CODE_BYTE_LEN]; /* Maximum UUID size - 16 bytes, and structure to hold any type of UUID. */ #define MAX_UUID_SIZE 16 -typedef struct -{ +typedef struct { #define LEN_UUID_16 2 #define LEN_UUID_32 4 #define LEN_UUID_128 16 UINT16 len; - union - { + union { UINT16 uuid16; UINT32 uuid32; UINT8 uuid128[MAX_UUID_SIZE]; @@ -463,8 +460,8 @@ typedef struct /* We will not allocate a PSM in the reserved range to 3rd party apps */ -#define BRCM_RESERVED_PSM_START 0x5AE1 -#define BRCM_RESERVED_PSM_END 0x5AFF +#define BRCM_RESERVED_PSM_START 0x5AE1 +#define BRCM_RESERVED_PSM_END 0x5AFF #define BRCM_UTILITY_SERVICE_PSM 0x5AE1 #define BRCM_MATCHER_PSM 0x5AE3 @@ -480,8 +477,7 @@ typedef struct #define BT_CONNECTED_USING_BREDR 1 #define BT_CONNECTED_USING_AMP 2 -typedef struct -{ +typedef struct { UINT32 is_connected; INT32 rssi; UINT32 bytes_sent; @@ -511,8 +507,7 @@ typedef UINT8 tBT_TRANSPORT; #define BLE_ADDR_IS_STATIC(x) ((x[0] & 0xC0) == 0xC0) -typedef struct -{ +typedef struct { tBLE_ADDR_TYPE type; BD_ADDR bda; } tBLE_BD_ADDR; @@ -620,7 +615,7 @@ typedef UINT8 tBT_DEVICE_TYPE; #define TRACE_ORG_USER_SCR 0x00000800 #define TRACE_ORG_TESTER 0x00000900 #define TRACE_ORG_MAX_NUM 10 /* 32-bit mask; must be < 32 */ -#define TRACE_LITE_ORG_MAX_NUM 6 +#define TRACE_LITE_ORG_MAX_NUM 6 #define TRACE_ORG_ALL 0x03ff #define TRACE_ORG_RPC_TRANS 0x04 @@ -715,7 +710,7 @@ typedef uint8_t BD_ADDR[BD_ADDR_LEN]; /* global constant for "any" bd addr */ static const BD_ADDR bd_addr_any = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; -static const BD_ADDR bd_addr_null= {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; +static const BD_ADDR bd_addr_null = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; /***************************************************************************** ** Functions @@ -735,8 +730,7 @@ static inline void bdcpy(BD_ADDR a, const BD_ADDR b) { int i; - for (i = BD_ADDR_LEN; i != 0; i--) - { + for (i = BD_ADDR_LEN; i != 0; i--) { *a++ = *b++; } } @@ -755,10 +749,8 @@ static inline int bdcmp(const BD_ADDR a, const BD_ADDR b) { int i; - for (i = BD_ADDR_LEN; i != 0; i--) - { - if (*a++ != *b++) - { + for (i = BD_ADDR_LEN; i != 0; i--) { + if (*a++ != *b++) { return -1; } } diff --git a/components/bt/bluedroid/stack/include/btm_api.h b/components/bt/bluedroid/stack/include/btm_api.h old mode 100755 new mode 100644 index 02ca5dd8ee..2d1edcb609 --- a/components/bt/bluedroid/stack/include/btm_api.h +++ b/components/bt/bluedroid/stack/include/btm_api.h @@ -46,8 +46,7 @@ #define BTM_MAX_VENDOR_SPECIFIC_LEN HCI_COMMAND_SIZE /* BTM application return status codes */ -enum -{ +enum { BTM_SUCCESS = 0, /* 0 Command succeeded */ BTM_CMD_STARTED, /* 1 Command started OK. */ BTM_BUSY, /* 2 Device busy with another command */ @@ -74,15 +73,14 @@ enum typedef uint8_t tBTM_STATUS; #if (defined(BTA_HOST_INTERLEAVE_SEARCH) && BTA_HOST_INTERLEAVE_SEARCH == TRUE) -typedef enum -{ +typedef enum { BTM_BR_ONE, /*0 First state or BR/EDR scan 1*/ BTM_BLE_ONE, /*1BLE scan 1*/ BTM_BR_TWO, /*2 BR/EDR scan 2*/ BTM_BLE_TWO, /*3 BLE scan 2*/ BTM_FINISH, /*4 End of Interleave Scan, or normal scan*/ BTM_NO_INTERLEAVING /*5 No Interleaving*/ -}btm_inq_state; +} btm_inq_state; #endif @@ -99,8 +97,7 @@ typedef UINT8 tBTM_DEVICE_ROLE; typedef UINT8 tBTM_BD_NAME[BTM_MAX_REM_BD_NAME_LEN + 1]; /* Structure returned with local version information */ -typedef struct -{ +typedef struct { UINT8 hci_version; UINT16 hci_revision; UINT8 lmp_version; @@ -109,8 +106,7 @@ typedef struct } tBTM_VERSION_INFO; /* Structure returned with Vendor Specific Command complete callback */ -typedef struct -{ +typedef struct { UINT16 opcode; UINT16 param_len; UINT8 *p_param_buf; @@ -125,8 +121,7 @@ typedef struct ** has detected that the controller status has changed. This asynchronous event ** is enabled/disabled by calling BTM_RegisterForDeviceStatusNotif(). */ -enum -{ +enum { BTM_DEV_STATUS_UP, BTM_DEV_STATUS_DOWN, BTM_DEV_STATUS_CMD_TOUT @@ -415,11 +410,10 @@ typedef UINT8 (tBTM_FILTER_CB) (BD_ADDR bd_addr, DEV_CLASS dc); /* BTM service definitions ** Used for storing EIR data to bit mask */ -enum -{ +enum { BTM_EIR_UUID_SERVCLASS_SERVICE_DISCOVERY_SERVER, -/* BTM_EIR_UUID_SERVCLASS_BROWSE_GROUP_DESCRIPTOR, */ -/* BTM_EIR_UUID_SERVCLASS_PUBLIC_BROWSE_GROUP, */ + /* BTM_EIR_UUID_SERVCLASS_BROWSE_GROUP_DESCRIPTOR, */ + /* BTM_EIR_UUID_SERVCLASS_PUBLIC_BROWSE_GROUP, */ BTM_EIR_UUID_SERVCLASS_SERIAL_PORT, BTM_EIR_UUID_SERVCLASS_LAN_ACCESS_USING_PPP, BTM_EIR_UUID_SERVCLASS_DIALUP_NETWORKING, @@ -432,19 +426,19 @@ enum BTM_EIR_UUID_SERVCLASS_AUDIO_SOURCE, BTM_EIR_UUID_SERVCLASS_AUDIO_SINK, BTM_EIR_UUID_SERVCLASS_AV_REM_CTRL_TARGET, -/* BTM_EIR_UUID_SERVCLASS_ADV_AUDIO_DISTRIBUTION, */ + /* BTM_EIR_UUID_SERVCLASS_ADV_AUDIO_DISTRIBUTION, */ BTM_EIR_UUID_SERVCLASS_AV_REMOTE_CONTROL, -/* BTM_EIR_UUID_SERVCLASS_VIDEO_CONFERENCING, */ + /* BTM_EIR_UUID_SERVCLASS_VIDEO_CONFERENCING, */ BTM_EIR_UUID_SERVCLASS_INTERCOM, BTM_EIR_UUID_SERVCLASS_FAX, BTM_EIR_UUID_SERVCLASS_HEADSET_AUDIO_GATEWAY, -/* BTM_EIR_UUID_SERVCLASS_WAP, */ -/* BTM_EIR_UUID_SERVCLASS_WAP_CLIENT, */ + /* BTM_EIR_UUID_SERVCLASS_WAP, */ + /* BTM_EIR_UUID_SERVCLASS_WAP_CLIENT, */ BTM_EIR_UUID_SERVCLASS_PANU, BTM_EIR_UUID_SERVCLASS_NAP, BTM_EIR_UUID_SERVCLASS_GN, BTM_EIR_UUID_SERVCLASS_DIRECT_PRINTING, -/* BTM_EIR_UUID_SERVCLASS_REFERENCE_PRINTING, */ + /* BTM_EIR_UUID_SERVCLASS_REFERENCE_PRINTING, */ BTM_EIR_UUID_SERVCLASS_IMAGING, BTM_EIR_UUID_SERVCLASS_IMAGING_RESPONDER, BTM_EIR_UUID_SERVCLASS_IMAGING_AUTO_ARCHIVE, @@ -452,39 +446,39 @@ enum BTM_EIR_UUID_SERVCLASS_HF_HANDSFREE, BTM_EIR_UUID_SERVCLASS_AG_HANDSFREE, BTM_EIR_UUID_SERVCLASS_DIR_PRT_REF_OBJ_SERVICE, -/* BTM_EIR_UUID_SERVCLASS_REFLECTED_UI, */ + /* BTM_EIR_UUID_SERVCLASS_REFLECTED_UI, */ BTM_EIR_UUID_SERVCLASS_BASIC_PRINTING, BTM_EIR_UUID_SERVCLASS_PRINTING_STATUS, BTM_EIR_UUID_SERVCLASS_HUMAN_INTERFACE, BTM_EIR_UUID_SERVCLASS_CABLE_REPLACEMENT, BTM_EIR_UUID_SERVCLASS_HCRP_PRINT, BTM_EIR_UUID_SERVCLASS_HCRP_SCAN, -/* BTM_EIR_UUID_SERVCLASS_COMMON_ISDN_ACCESS, */ -/* BTM_EIR_UUID_SERVCLASS_VIDEO_CONFERENCING_GW, */ -/* BTM_EIR_UUID_SERVCLASS_UDI_MT, */ -/* BTM_EIR_UUID_SERVCLASS_UDI_TA, */ -/* BTM_EIR_UUID_SERVCLASS_VCP, */ + /* BTM_EIR_UUID_SERVCLASS_COMMON_ISDN_ACCESS, */ + /* BTM_EIR_UUID_SERVCLASS_VIDEO_CONFERENCING_GW, */ + /* BTM_EIR_UUID_SERVCLASS_UDI_MT, */ + /* BTM_EIR_UUID_SERVCLASS_UDI_TA, */ + /* BTM_EIR_UUID_SERVCLASS_VCP, */ BTM_EIR_UUID_SERVCLASS_SAP, BTM_EIR_UUID_SERVCLASS_PBAP_PCE, BTM_EIR_UUID_SERVCLASS_PBAP_PSE, -/* BTM_EIR_UUID_SERVCLASS_TE_PHONE_ACCESS, */ -/* BTM_EIR_UUID_SERVCLASS_ME_PHONE_ACCESS, */ + /* BTM_EIR_UUID_SERVCLASS_TE_PHONE_ACCESS, */ + /* BTM_EIR_UUID_SERVCLASS_ME_PHONE_ACCESS, */ BTM_EIR_UUID_SERVCLASS_PHONE_ACCESS, BTM_EIR_UUID_SERVCLASS_HEADSET_HS, BTM_EIR_UUID_SERVCLASS_PNP_INFORMATION, -/* BTM_EIR_UUID_SERVCLASS_GENERIC_NETWORKING, */ -/* BTM_EIR_UUID_SERVCLASS_GENERIC_FILETRANSFER, */ -/* BTM_EIR_UUID_SERVCLASS_GENERIC_AUDIO, */ -/* BTM_EIR_UUID_SERVCLASS_GENERIC_TELEPHONY, */ -/* BTM_EIR_UUID_SERVCLASS_UPNP_SERVICE, */ -/* BTM_EIR_UUID_SERVCLASS_UPNP_IP_SERVICE, */ -/* BTM_EIR_UUID_SERVCLASS_ESDP_UPNP_IP_PAN, */ -/* BTM_EIR_UUID_SERVCLASS_ESDP_UPNP_IP_LAP, */ -/* BTM_EIR_UUID_SERVCLASS_ESDP_UPNP_IP_L2CAP, */ + /* BTM_EIR_UUID_SERVCLASS_GENERIC_NETWORKING, */ + /* BTM_EIR_UUID_SERVCLASS_GENERIC_FILETRANSFER, */ + /* BTM_EIR_UUID_SERVCLASS_GENERIC_AUDIO, */ + /* BTM_EIR_UUID_SERVCLASS_GENERIC_TELEPHONY, */ + /* BTM_EIR_UUID_SERVCLASS_UPNP_SERVICE, */ + /* BTM_EIR_UUID_SERVCLASS_UPNP_IP_SERVICE, */ + /* BTM_EIR_UUID_SERVCLASS_ESDP_UPNP_IP_PAN, */ + /* BTM_EIR_UUID_SERVCLASS_ESDP_UPNP_IP_LAP, */ + /* BTM_EIR_UUID_SERVCLASS_ESDP_UPNP_IP_L2CAP, */ BTM_EIR_UUID_SERVCLASS_VIDEO_SOURCE, BTM_EIR_UUID_SERVCLASS_VIDEO_SINK, -/* BTM_EIR_UUID_SERVCLASS_VIDEO_DISTRIBUTION */ -/* BTM_EIR_UUID_SERVCLASS_HDP_PROFILE */ + /* BTM_EIR_UUID_SERVCLASS_VIDEO_DISTRIBUTION */ + /* BTM_EIR_UUID_SERVCLASS_HDP_PROFILE */ BTM_EIR_UUID_SERVCLASS_MESSAGE_ACCESS, BTM_EIR_UUID_SERVCLASS_MESSAGE_NOTIFICATION, BTM_EIR_UUID_SERVCLASS_HDP_SOURCE, @@ -562,22 +556,19 @@ typedef UINT8 tBTM_BLE_SEC_ACT; /* Definitions of the parameters passed to BTM_StartInquiry and ** BTM_SetPeriodicInquiryMode. */ -typedef struct /* contains the two device class condition fields */ -{ +typedef struct { /* contains the two device class condition fields */ DEV_CLASS dev_class; DEV_CLASS dev_class_mask; } tBTM_COD_COND; -typedef union /* contains the inquiry filter condition */ -{ +typedef union { /* contains the inquiry filter condition */ BD_ADDR bdaddr_cond; tBTM_COD_COND cod_cond; } tBTM_INQ_FILT_COND; -typedef struct /* contains the parameters passed to the inquiry functions */ -{ +typedef struct { /* contains the parameters passed to the inquiry functions */ UINT8 mode; /* general or limited */ UINT8 duration; /* duration of the inquiry (1.28 sec increments) */ UINT8 max_resps; /* maximum number of responses to return */ @@ -604,8 +595,7 @@ typedef UINT8 tBTM_BLE_EVT_TYPE; /* These are the fields returned in each device's response to the inquiry. It ** is returned in the results callback if registered. */ -typedef struct -{ +typedef struct { UINT16 clock_offset; BD_ADDR remote_bd_addr; DEV_CLASS dev_class; @@ -628,8 +618,7 @@ typedef struct /* This is the inquiry response information held in its database by BTM, and available ** to applications via BTM_InqDbRead, BTM_InqDbFirst, and BTM_InqDbNext. */ -typedef struct -{ +typedef struct { tBTM_INQ_RESULTS results; BOOLEAN appl_knows_rem_name; /* set by application if it knows the remote name of the peer device. @@ -646,31 +635,28 @@ typedef struct /* Structure returned with inquiry complete callback */ -typedef struct -{ +typedef struct { tBTM_STATUS status; UINT8 num_resp; /* Number of results from the current inquiry */ } tBTM_INQUIRY_CMPL; /* Structure returned with remote name request */ -typedef struct -{ +typedef struct { UINT16 status; BD_ADDR bd_addr; UINT16 length; BD_NAME remote_bd_name; } tBTM_REMOTE_DEV_NAME; -typedef struct -{ +typedef struct { UINT8 pcm_intf_rate; /* PCM interface rate: 0: 128kbps, 1: 256 kbps; 2:512 bps; 3: 1024kbps; 4: 2048kbps */ UINT8 frame_type; /* frame type: 0: short; 1: long */ UINT8 sync_mode; /* sync mode: 0: slave; 1: master */ UINT8 clock_mode; /* clock mode: 0: slave; 1: master */ -}tBTM_SCO_PCM_PARAM; +} tBTM_SCO_PCM_PARAM; /**************************************** ** Device Discovery Callback Functions @@ -725,8 +711,7 @@ typedef void (tBTM_INQ_RESULTS_CB) (tBTM_INQ_RESULTS *p_inq_results, UINT8 *p_ei /* Structure returned with Role Switch information (in tBTM_CMPL_CB callback function) ** in response to BTM_SwitchRole call. */ -typedef struct -{ +typedef struct { UINT8 hci_status; /* HCI status returned with the event */ UINT8 role; /* BTM_ROLE_MASTER or BTM_ROLE_SLAVE */ BD_ADDR remote_bd_addr; /* Remote BD addr involved with the switch */ @@ -735,8 +720,7 @@ typedef struct /* Structure returned with QoS information (in tBTM_CMPL_CB callback function) ** in response to BTM_SetQoS call. */ -typedef struct -{ +typedef struct { FLOW_SPEC flow; UINT16 handle; UINT8 status; @@ -746,8 +730,7 @@ typedef struct /* Structure returned with read RSSI event (in tBTM_CMPL_CB callback function) ** in response to BTM_ReadRSSI call. */ -typedef struct -{ +typedef struct { tBTM_STATUS status; UINT8 hci_status; INT8 rssi; @@ -757,8 +740,7 @@ typedef struct /* Structure returned with read current TX power event (in tBTM_CMPL_CB callback function) ** in response to BTM_ReadTxPower call. */ -typedef struct -{ +typedef struct { tBTM_STATUS status; UINT8 hci_status; INT8 tx_power; @@ -768,8 +750,7 @@ typedef struct /* Structure returned with read link quality event (in tBTM_CMPL_CB callback function) ** in response to BTM_ReadLinkQuality call. */ -typedef struct -{ +typedef struct { tBTM_STATUS status; UINT8 hci_status; UINT8 link_quality; @@ -779,15 +760,13 @@ typedef struct /* Structure returned with read inq tx power quality event (in tBTM_CMPL_CB callback function) ** in response to BTM_ReadInquiryRspTxPower call. */ -typedef struct -{ +typedef struct { tBTM_STATUS status; UINT8 hci_status; INT8 tx_power; } tBTM_INQ_TXPWR_RESULTS; -enum -{ +enum { BTM_BL_CONN_EVT, BTM_BL_DISCN_EVT, BTM_BL_UPDATE_EVT, @@ -807,8 +786,7 @@ typedef UINT16 tBTM_BL_EVENT_MASK; #define BTM_EXT_FEATURES_PAGE_MAX HCI_EXT_FEATURES_PAGE_MAX /* the data type associated with BTM_BL_CONN_EVT */ -typedef struct -{ +typedef struct { tBTM_BL_EVENT event; /* The event reported. */ BD_ADDR_PTR p_bda; /* The address of the newly connected device */ DEV_CLASS_PTR p_dc; /* The device class */ @@ -821,8 +799,7 @@ typedef struct } tBTM_BL_CONN_DATA; /* the data type associated with BTM_BL_DISCN_EVT */ -typedef struct -{ +typedef struct { tBTM_BL_EVENT event; /* The event reported. */ BD_ADDR_PTR p_bda; /* The address of the disconnected device */ #if BLE_INCLUDED == TRUE @@ -840,8 +817,7 @@ typedef struct #define BTM_BL_PAGING_STARTED (BTM_BL_INQUIRY_PAGING_MASK | 0x4) #define BTM_BL_PAGING_COMPLETE (BTM_BL_INQUIRY_PAGING_MASK | 0x5) /* the data type associated with BTM_BL_UPDATE_EVT */ -typedef struct -{ +typedef struct { tBTM_BL_EVENT event; /* The event reported. */ UINT8 busy_level;/* when paging or inquiring, level is 10. * Otherwise, the number of ACL links. */ @@ -849,16 +825,14 @@ typedef struct } tBTM_BL_UPDATE_DATA; /* the data type associated with BTM_BL_ROLE_CHG_EVT */ -typedef struct -{ +typedef struct { tBTM_BL_EVENT event; /* The event reported. */ BD_ADDR_PTR p_bda; /* The address of the peer connected device */ UINT8 new_role; UINT8 hci_status; /* HCI status returned with the event */ } tBTM_BL_ROLE_CHG_DATA; -typedef union -{ +typedef union { tBTM_BL_EVENT event; /* The event reported. */ tBTM_BL_CONN_DATA conn; /* The data associated with BTM_BL_CONN_EVT */ tBTM_BL_DISCN_DATA discn; /* The data associated with BTM_BL_DISCN_EVT */ @@ -986,8 +960,7 @@ typedef UINT8 tBTM_SCO_AIR_MODE_TYPE; /******************* ** SCO Data Status ********************/ -enum -{ +enum { BTM_SCO_DATA_CORRECT, BTM_SCO_DATA_PAR_ERR, BTM_SCO_DATA_NONE, @@ -1024,8 +997,7 @@ typedef void (tBTM_SCO_DATA_CB) (UINT16 sco_inx, BT_HDR *p_data, tBTM_SCO_DATA_F typedef UINT8 tBTM_ESCO_EVT; /* Passed into BTM_SetEScoMode() */ -typedef struct -{ +typedef struct { UINT32 tx_bw; UINT32 rx_bw; UINT16 max_latency; @@ -1034,16 +1006,14 @@ typedef struct UINT8 retrans_effort; } tBTM_ESCO_PARAMS; -typedef struct -{ +typedef struct { UINT16 max_latency; UINT16 packet_types; UINT8 retrans_effort; } tBTM_CHG_ESCO_PARAMS; /* Returned by BTM_ReadEScoLinkParms() */ -typedef struct -{ +typedef struct { UINT16 rx_pkt_len; UINT16 tx_pkt_len; BD_ADDR bd_addr; @@ -1053,8 +1023,7 @@ typedef struct UINT8 air_mode; } tBTM_ESCO_DATA; -typedef struct -{ +typedef struct { UINT16 sco_inx; UINT16 rx_pkt_len; UINT16 tx_pkt_len; @@ -1064,16 +1033,14 @@ typedef struct UINT8 retrans_window; } tBTM_CHG_ESCO_EVT_DATA; -typedef struct -{ +typedef struct { UINT16 sco_inx; BD_ADDR bd_addr; DEV_CLASS dev_class; tBTM_SCO_TYPE link_type; } tBTM_ESCO_CONN_REQ_EVT_DATA; -typedef union -{ +typedef union { tBTM_CHG_ESCO_EVT_DATA chg_evt; tBTM_ESCO_CONN_REQ_EVT_DATA conn_evt; } tBTM_ESCO_EVT_DATA; @@ -1328,8 +1295,8 @@ typedef UINT8 tBTM_LINK_KEY_TYPE; ** Result of the operation */ typedef UINT8 (tBTM_AUTHORIZE_CALLBACK) (BD_ADDR bd_addr, DEV_CLASS dev_class, - tBTM_BD_NAME bd_name, UINT8 *service_name, - UINT8 service_id, BOOLEAN is_originator); + tBTM_BD_NAME bd_name, UINT8 *service_name, + UINT8 service_id, BOOLEAN is_originator); /* Get PIN for the connection. Parameters are ** BD Address of remote @@ -1365,10 +1332,9 @@ typedef void (tBTM_RMT_NAME_CALLBACK) (BD_ADDR bd_addr, DEV_CLASS dc, ** */ typedef UINT8 (tBTM_AUTH_COMPLETE_CALLBACK) (BD_ADDR bd_addr, DEV_CLASS dev_class, - tBTM_BD_NAME bd_name, int result); + tBTM_BD_NAME bd_name, int result); -enum -{ +enum { BTM_SP_IO_REQ_EVT, /* received IO_CAPABILITY_REQUEST event */ BTM_SP_IO_RSP_EVT, /* received IO_CAPABILITY_RESPONSE event */ BTM_SP_CFM_REQ_EVT, /* received USER_CONFIRMATION_REQUEST event */ @@ -1421,19 +1387,17 @@ typedef UINT8 tBTM_IO_CAP; typedef UINT8 tBTM_AUTH_REQ; -enum -{ +enum { BTM_OOB_NONE, BTM_OOB_PRESENT #if BTM_OOB_INCLUDED == TRUE - ,BTM_OOB_UNKNOWN + , BTM_OOB_UNKNOWN #endif }; typedef UINT8 tBTM_OOB_DATA; /* data type for BTM_SP_IO_REQ_EVT */ -typedef struct -{ +typedef struct { BD_ADDR bd_addr; /* peer address */ tBTM_IO_CAP io_cap; /* local IO capabilities */ tBTM_OOB_DATA oob_data; /* OOB data present (locally) for the peer device */ @@ -1442,8 +1406,7 @@ typedef struct } tBTM_SP_IO_REQ; /* data type for BTM_SP_IO_RSP_EVT */ -typedef struct -{ +typedef struct { BD_ADDR bd_addr; /* peer address */ tBTM_IO_CAP io_cap; /* peer IO capabilities */ tBTM_OOB_DATA oob_data; /* OOB data present at peer device for the local device */ @@ -1451,8 +1414,7 @@ typedef struct } tBTM_SP_IO_RSP; /* data type for BTM_SP_CFM_REQ_EVT */ -typedef struct -{ +typedef struct { BD_ADDR bd_addr; /* peer address */ DEV_CLASS dev_class; /* peer CoD */ tBTM_BD_NAME bd_name; /* peer device name */ @@ -1465,24 +1427,21 @@ typedef struct } tBTM_SP_CFM_REQ; /* data type for BTM_SP_KEY_REQ_EVT */ -typedef struct -{ +typedef struct { BD_ADDR bd_addr; /* peer address */ DEV_CLASS dev_class; /* peer CoD */ tBTM_BD_NAME bd_name; /* peer device name */ } tBTM_SP_KEY_REQ; /* data type for BTM_SP_KEY_NOTIF_EVT */ -typedef struct -{ +typedef struct { BD_ADDR bd_addr; /* peer address */ DEV_CLASS dev_class; /* peer CoD */ tBTM_BD_NAME bd_name; /* peer device name */ UINT32 passkey; /* passkey */ } tBTM_SP_KEY_NOTIF; -enum -{ +enum { BTM_SP_KEY_STARTED, /* 0 - passkey entry started */ BTM_SP_KEY_ENTERED, /* 1 - passkey digit entered */ BTM_SP_KEY_ERASED, /* 2 - passkey digit erased */ @@ -1493,23 +1452,20 @@ enum typedef UINT8 tBTM_SP_KEY_TYPE; /* data type for BTM_SP_KEYPRESS_EVT */ -typedef struct -{ +typedef struct { BD_ADDR bd_addr; /* peer address */ tBTM_SP_KEY_TYPE notif_type; } tBTM_SP_KEYPRESS; /* data type for BTM_SP_LOC_OOB_EVT */ -typedef struct -{ +typedef struct { tBTM_STATUS status; /* */ BT_OCTET16 c; /* Simple Pairing Hash C */ BT_OCTET16 r; /* Simple Pairing Randomnizer R */ } tBTM_SP_LOC_OOB; /* data type for BTM_SP_RMT_OOB_EVT */ -typedef struct -{ +typedef struct { BD_ADDR bd_addr; /* peer address */ DEV_CLASS dev_class; /* peer CoD */ tBTM_BD_NAME bd_name; /* peer device name */ @@ -1517,8 +1473,7 @@ typedef struct /* data type for BTM_SP_COMPLT_EVT */ -typedef struct -{ +typedef struct { BD_ADDR bd_addr; /* peer address */ DEV_CLASS dev_class; /* peer CoD */ tBTM_BD_NAME bd_name; /* peer device name */ @@ -1526,14 +1481,12 @@ typedef struct } tBTM_SP_COMPLT; /* data type for BTM_SP_UPGRADE_EVT */ -typedef struct -{ +typedef struct { BD_ADDR bd_addr; /* peer address */ BOOLEAN upgrade; /* TRUE, to upgrade the link key */ } tBTM_SP_UPGRADE; -typedef union -{ +typedef union { tBTM_SP_IO_REQ io_req; /* BTM_SP_IO_REQ_EVT */ tBTM_SP_IO_RSP io_rsp; /* BTM_SP_IO_RSP_EVT */ tBTM_SP_CFM_REQ cfm_req; /* BTM_SP_CFM_REQ_EVT */ @@ -1561,7 +1514,7 @@ typedef void (tBTM_MKEY_CALLBACK) (BD_ADDR bd_addr, UINT8 status, UINT8 key_flag ** tBTM_STATUS - result of the operation */ typedef void (tBTM_SEC_CBACK) (BD_ADDR bd_addr, tBT_TRANSPORT trasnport, - void *p_ref_data, tBTM_STATUS result); + void *p_ref_data, tBTM_STATUS result); /* Bond Cancel complete. Parameters are ** Result of the cancel operation @@ -1619,8 +1572,7 @@ typedef UINT8 tBTM_LE_AUTH_REQ; typedef UINT8 tBTM_LE_SEC; -typedef struct -{ +typedef struct { tBTM_IO_CAP io_cap; /* local IO capabilities */ UINT8 oob_data; /* OOB data present (locally) for the peer device */ tBTM_LE_AUTH_REQ auth_req; /* Authentication request (for local device) contain bonding and MITM info */ @@ -1631,80 +1583,71 @@ typedef struct #if BLE_INCLUDED == TRUE && SMP_INCLUDED == TRUE /* data type for tBTM_LE_COMPLT */ -typedef struct -{ +typedef struct { UINT8 reason; UINT8 sec_level; BOOLEAN is_pair_cancel; BOOLEAN smp_over_br; -}tBTM_LE_COMPLT; +} tBTM_LE_COMPLT; #endif /* BLE encryption keys */ -typedef struct -{ +typedef struct { BT_OCTET16 ltk; BT_OCTET8 rand; UINT16 ediv; UINT8 sec_level; UINT8 key_size; -}tBTM_LE_PENC_KEYS; +} tBTM_LE_PENC_KEYS; /* BLE CSRK keys */ -typedef struct -{ +typedef struct { UINT32 counter; BT_OCTET16 csrk; UINT8 sec_level; -}tBTM_LE_PCSRK_KEYS; +} tBTM_LE_PCSRK_KEYS; /* BLE Encryption reproduction keys */ -typedef struct -{ +typedef struct { BT_OCTET16 ltk; UINT16 div; UINT8 key_size; UINT8 sec_level; -}tBTM_LE_LENC_KEYS; +} tBTM_LE_LENC_KEYS; /* BLE SRK keys */ -typedef struct -{ +typedef struct { UINT32 counter; UINT16 div; UINT8 sec_level; BT_OCTET16 csrk; -}tBTM_LE_LCSRK_KEYS; +} tBTM_LE_LCSRK_KEYS; -typedef struct -{ +typedef struct { BT_OCTET16 irk; tBLE_ADDR_TYPE addr_type; BD_ADDR static_addr; -}tBTM_LE_PID_KEYS; +} tBTM_LE_PID_KEYS; -typedef union -{ +typedef union { tBTM_LE_PENC_KEYS penc_key; /* received peer encryption key */ tBTM_LE_PCSRK_KEYS pcsrk_key; /* received peer device SRK */ tBTM_LE_PID_KEYS pid_key; /* peer device ID key */ tBTM_LE_LENC_KEYS lenc_key; /* local encryption reproduction keys LTK = = d1(ER,DIV,0)*/ tBTM_LE_LCSRK_KEYS lcsrk_key; /* local device CSRK = d1(ER,DIV,1)*/ -}tBTM_LE_KEY_VALUE; +} tBTM_LE_KEY_VALUE; -typedef struct -{ +typedef struct { tBTM_LE_KEY_TYPE key_type; tBTM_LE_KEY_VALUE *p_key_value; -}tBTM_LE_KEY; +} tBTM_LE_KEY; -typedef union -{ +typedef union { tBTM_LE_IO_REQ io_req; /* BTM_LE_IO_REQ_EVT */ UINT32 key_notif; /* BTM_LE_KEY_NOTIF_EVT */ - /* BTM_LE_NC_REQ_EVT */ - /* no callback data for BTM_LE_KEY_REQ_EVT */ - /* and BTM_LE_OOB_REQ_EVT */ + /* BTM_LE_NC_REQ_EVT */ + /* no callback data for BTM_LE_KEY_REQ_EVT */ + /* and BTM_LE_OOB_REQ_EVT */ #if BLE_INCLUDED == TRUE && SMP_INCLUDED == TRUE tBTM_LE_COMPLT complt; /* BTM_LE_COMPLT_EVT */ tSMP_OOB_DATA_TYPE req_oob_type; @@ -1721,19 +1664,17 @@ typedef UINT8 (tBTM_LE_CALLBACK) (tBTM_LE_EVT event, BD_ADDR bda, tBTM_LE_EVT_DA #define BTM_BLE_KEY_TYPE_ER 2 #define BTM_BLE_KEY_TYPE_COUNTER 3 //tobe obsolete -typedef struct -{ +typedef struct { BT_OCTET16 ir; BT_OCTET16 irk; BT_OCTET16 dhk; -}tBTM_BLE_LOCAL_ID_KEYS; +} tBTM_BLE_LOCAL_ID_KEYS; -typedef union -{ +typedef union { tBTM_BLE_LOCAL_ID_KEYS id_keys; BT_OCTET16 er; -}tBTM_BLE_LOCAL_KEYS; +} tBTM_BLE_LOCAL_KEYS; /* New LE identity key for local device. @@ -1745,8 +1686,7 @@ typedef void (tBTM_LE_KEY_CALLBACK) (UINT8 key_type, tBTM_BLE_LOCAL_KEYS *p_key) ** Security Manager Types ****************************/ /* Structure that applications use to register with BTM_SecRegister */ -typedef struct -{ +typedef struct { tBTM_AUTHORIZE_CALLBACK *p_authorize_callback; tBTM_PIN_CALLBACK *p_pin_callback; tBTM_LINK_KEY_CALLBACK *p_link_key_callback; @@ -1773,8 +1713,7 @@ typedef void (tBTM_LSTO_CBACK) (BD_ADDR remote_bda, UINT16 timeout); ** Power Manager Constants *****************************/ /* BTM Power manager status codes */ -enum -{ +enum { BTM_PM_STS_ACTIVE = HCI_MODE_ACTIVE, BTM_PM_STS_HOLD = HCI_MODE_HOLD, BTM_PM_STS_SNIFF = HCI_MODE_SNIFF, @@ -1786,8 +1725,7 @@ enum typedef UINT8 tBTM_PM_STATUS; /* BTM Power manager modes */ -enum -{ +enum { BTM_PM_MD_ACTIVE = BTM_PM_STS_ACTIVE, BTM_PM_MD_HOLD = BTM_PM_STS_HOLD, BTM_PM_MD_SNIFF = BTM_PM_STS_SNIFF, @@ -1806,8 +1744,7 @@ typedef UINT8 tBTM_PM_MODE; /************************ ** Power Manager Types *************************/ -typedef struct -{ +typedef struct { UINT16 max; UINT16 min; UINT16 attempt; @@ -1827,8 +1764,7 @@ typedef void (tBTM_PM_STATUS_CBACK) (BD_ADDR p_bda, tBTM_PM_STATUS status, *************************/ #define BTM_CB_EVT_DELETE_STORED_LINK_KEYS 4 -typedef struct -{ +typedef struct { UINT8 event; UINT8 status; UINT16 num_keys; @@ -1836,8 +1772,7 @@ typedef struct } tBTM_DELETE_STORED_LINK_KEY_COMPLETE; /* MIP evnets, callbacks */ -enum -{ +enum { BTM_MIP_MODE_CHG_EVT, BTM_MIP_DISCONNECT_EVT, BTM_MIP_PKTS_COMPL_EVT, @@ -1845,15 +1780,13 @@ enum }; typedef UINT8 tBTM_MIP_EVT; -typedef struct -{ +typedef struct { tBTM_MIP_EVT event; BD_ADDR bd_addr; UINT16 mip_id; } tBTM_MIP_MODE_CHANGE; -typedef struct -{ +typedef struct { tBTM_MIP_EVT event; UINT16 mip_id; UINT8 disc_reason; @@ -1861,29 +1794,25 @@ typedef struct #define BTM_MIP_MAX_RX_LEN 17 -typedef struct -{ +typedef struct { tBTM_MIP_EVT event; UINT16 mip_id; UINT8 rx_len; UINT8 rx_data[BTM_MIP_MAX_RX_LEN]; } tBTM_MIP_RXDATA; -typedef struct -{ +typedef struct { tBTM_MIP_EVT event; BD_ADDR bd_addr; UINT8 data[11]; /* data[0] shows Vender-specific device type */ } tBTM_MIP_EIR_HANDSHAKE; -typedef struct -{ +typedef struct { tBTM_MIP_EVT event; UINT16 num_sent; /* Number of packets completed at the controller */ } tBTM_MIP_PKTS_COMPL; -typedef union -{ +typedef union { tBTM_MIP_EVT event; tBTM_MIP_MODE_CHANGE mod_chg; tBTM_MIP_CONN_TIMEOUT conn_tmo; @@ -1927,7 +1856,7 @@ extern "C" { ** Returns void ** *******************************************************************************/ -//extern +//extern void BTM_DeviceReset (tBTM_CMPL_CB *p_cb); @@ -1940,7 +1869,7 @@ void BTM_DeviceReset (tBTM_CMPL_CB *p_cb); ** Returns TRUE if device is up, else FALSE ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_IsDeviceUp (void); @@ -1953,7 +1882,7 @@ BOOLEAN BTM_IsDeviceUp (void); ** Returns BTM_CMD_STARTED if successful, otherwise an error ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_SetLocalDeviceName (char *p_name); /******************************************************************************* @@ -1965,7 +1894,7 @@ tBTM_STATUS BTM_SetLocalDeviceName (char *p_name); ** Returns BTM_SUCCESS if successful, otherwise an error ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_SetDeviceClass (DEV_CLASS dev_class); @@ -1982,7 +1911,7 @@ tBTM_STATUS BTM_SetDeviceClass (DEV_CLASS dev_class); ** is returned and p_name is set to NULL ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_ReadLocalDeviceName (char **p_name); /******************************************************************************* @@ -1995,7 +1924,7 @@ tBTM_STATUS BTM_ReadLocalDeviceName (char **p_name); ** Returns BTM_CMD_STARTED if successful, otherwise an error ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_ReadLocalDeviceNameFromController (tBTM_CMPL_CB *p_rln_cmpl_cback); /******************************************************************************* @@ -2007,7 +1936,7 @@ tBTM_STATUS BTM_ReadLocalDeviceNameFromController (tBTM_CMPL_CB *p_rln_cmpl_cbac ** Returns pointer to the device class ** *******************************************************************************/ -//extern +//extern UINT8 *BTM_ReadDeviceClass (void); @@ -2020,7 +1949,7 @@ UINT8 *BTM_ReadDeviceClass (void); ** Returns pointer to the local features string ** *******************************************************************************/ -//extern +//extern UINT8 *BTM_ReadLocalFeatures (void); /******************************************************************************* @@ -2034,7 +1963,7 @@ UINT8 *BTM_ReadLocalFeatures (void); ** registration. ** *******************************************************************************/ -//extern +//extern tBTM_DEV_STATUS_CB *BTM_RegisterForDeviceStatusNotif (tBTM_DEV_STATUS_CB *p_cb); @@ -2053,7 +1982,7 @@ tBTM_DEV_STATUS_CB *BTM_RegisterForDeviceStatusNotif (tBTM_DEV_STATUS_CB *p_cb); ** registered. ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_RegisterForVSEvents (tBTM_VS_EVT_CB *p_cb, BOOLEAN is_register); @@ -2071,11 +2000,11 @@ tBTM_STATUS BTM_RegisterForVSEvents (tBTM_VS_EVT_CB *p_cb, BOOLEAN is_register); ** prior command. ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_VendorSpecificCommand(UINT16 opcode, - UINT8 param_len, - UINT8 *p_param_buf, - tBTM_VSC_CMPL_CB *p_cb); + UINT8 param_len, + UINT8 *p_param_buf, + tBTM_VSC_CMPL_CB *p_cb); /******************************************************************************* @@ -2088,7 +2017,7 @@ tBTM_STATUS BTM_VendorSpecificCommand(UINT16 opcode, ** Returns Allocated SCN number or 0 if none. ** *******************************************************************************/ -//extern +//extern UINT8 BTM_AllocateSCN(void); // btla-specific ++ @@ -2101,7 +2030,7 @@ UINT8 BTM_AllocateSCN(void); ** Returns Returns TRUE if server channel was available ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_TryAllocateSCN(UINT8 scn); // btla-specific -- @@ -2115,7 +2044,7 @@ BOOLEAN BTM_TryAllocateSCN(UINT8 scn); ** Returns TRUE if successful, FALSE if SCN is not in use or invalid ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_FreeSCN(UINT8 scn); @@ -2129,7 +2058,7 @@ BOOLEAN BTM_FreeSCN(UINT8 scn); ** Returns The new or current trace level ** *******************************************************************************/ -//extern +//extern UINT8 BTM_SetTraceLevel (UINT8 new_level); @@ -2144,7 +2073,7 @@ UINT8 BTM_SetTraceLevel (UINT8 new_level); ** BTM_NO_RESOURCES If out of resources to send the command. ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_WritePageTimeout(UINT16 timeout); /******************************************************************************* @@ -2160,7 +2089,7 @@ tBTM_STATUS BTM_WritePageTimeout(UINT16 timeout); ** ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_WriteVoiceSettings(UINT16 settings); /******************************************************************************* @@ -2178,7 +2107,7 @@ tBTM_STATUS BTM_WriteVoiceSettings(UINT16 settings); ** ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_EnableTestMode(void); @@ -2202,9 +2131,9 @@ tBTM_STATUS BTM_EnableTestMode(void); ** BTM_WRONG_MODE if the device is not up. ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_SetDiscoverability (UINT16 inq_mode, UINT16 window, - UINT16 interval); + UINT16 interval); /******************************************************************************* @@ -2221,9 +2150,9 @@ tBTM_STATUS BTM_SetDiscoverability (UINT16 inq_mode, UINT16 window, ** BTM_GENERAL_DISCOVERABLE ** *******************************************************************************/ -//extern +//extern UINT16 BTM_ReadDiscoverability (UINT16 *p_window, - UINT16 *p_interval); + UINT16 *p_interval); /******************************************************************************* @@ -2253,10 +2182,10 @@ UINT16 BTM_ReadDiscoverability (UINT16 *p_window, ** BTM_WRONG_MODE if the device is not up. ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_SetPeriodicInquiryMode (tBTM_INQ_PARMS *p_inqparms, - UINT16 max_delay, UINT16 min_delay, - tBTM_INQ_RESULTS_CB *p_results_cb); + UINT16 max_delay, UINT16 min_delay, + tBTM_INQ_RESULTS_CB *p_results_cb); /******************************************************************************* @@ -2288,10 +2217,10 @@ tBTM_STATUS BTM_SetPeriodicInquiryMode (tBTM_INQ_PARMS *p_inqparms, ** BTM_WRONG_MODE if the device is not up. ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_StartInquiry (tBTM_INQ_PARMS *p_inqparms, - tBTM_INQ_RESULTS_CB *p_results_cb, - tBTM_CMPL_CB *p_cmpl_cb); + tBTM_INQ_RESULTS_CB *p_results_cb, + tBTM_CMPL_CB *p_cmpl_cb); /******************************************************************************* @@ -2306,7 +2235,7 @@ tBTM_STATUS BTM_StartInquiry (tBTM_INQ_PARMS *p_inqparms, ** BTM_PERIODIC_INQUIRY_ACTIVE if a periodic inquiry is active ** *******************************************************************************/ -//extern +//extern UINT16 BTM_IsInquiryActive (void); @@ -2321,7 +2250,7 @@ UINT16 BTM_IsInquiryActive (void); ** BTM_WRONG_MODE if the device is not up. ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_CancelInquiry(void); @@ -2337,7 +2266,7 @@ tBTM_STATUS BTM_CancelInquiry(void); ** BTM_WRONG_MODE if the device is not up. ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_CancelPeriodicInquiry(void); @@ -2354,9 +2283,9 @@ tBTM_STATUS BTM_CancelPeriodicInquiry(void); ** BTM_WRONG_MODE if the device is not up. ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_SetConnectability (UINT16 page_mode, UINT16 window, - UINT16 interval); + UINT16 interval); /******************************************************************************* @@ -2371,7 +2300,7 @@ tBTM_STATUS BTM_SetConnectability (UINT16 page_mode, UINT16 window, ** Returns BTM_NON_CONNECTABLE or BTM_CONNECTABLE ** *******************************************************************************/ -//extern +//extern UINT16 BTM_ReadConnectability (UINT16 *p_window, UINT16 *p_interval); @@ -2391,7 +2320,7 @@ UINT16 BTM_ReadConnectability (UINT16 *p_window, UINT16 *p_interval); ** BTM_WRONG_MODE if the device is not up. ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_SetInquiryMode (UINT8 mode); /******************************************************************************* @@ -2408,7 +2337,7 @@ tBTM_STATUS BTM_SetInquiryMode (UINT8 mode); ** BTM_WRONG_MODE if the device is not up. ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_SetInquiryScanType (UINT16 scan_type); /******************************************************************************* @@ -2426,7 +2355,7 @@ tBTM_STATUS BTM_SetInquiryScanType (UINT16 scan_type); ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_SetPageScanType (UINT16 scan_type); /******************************************************************************* @@ -2451,10 +2380,10 @@ tBTM_STATUS BTM_SetPageScanType (UINT16 scan_type); ** BTM_WRONG_MODE if the device is not up. ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_ReadRemoteDeviceName (BD_ADDR remote_bda, - tBTM_CMPL_CB *p_cb, - tBT_TRANSPORT transport); + tBTM_CMPL_CB *p_cb, + tBT_TRANSPORT transport); /******************************************************************************* @@ -2473,7 +2402,7 @@ tBTM_STATUS BTM_ReadRemoteDeviceName (BD_ADDR remote_bda, ** BTM_WRONG_MODE if there is not an active remote name request. ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_CancelRemoteDeviceName (void); /******************************************************************************* @@ -2485,11 +2414,11 @@ tBTM_STATUS BTM_CancelRemoteDeviceName (void); ** Returns BTM_SUCCESS if successful, otherwise an error ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_ReadRemoteVersion (BD_ADDR addr, - UINT8 *lmp_version, - UINT16 *manufacturer, - UINT16 *lmp_sub_version); + UINT8 *lmp_version, + UINT16 *manufacturer, + UINT16 *lmp_sub_version); /******************************************************************************* ** @@ -2504,7 +2433,7 @@ tBTM_STATUS BTM_ReadRemoteVersion (BD_ADDR addr, ** Returns pointer to the remote supported features mask ** *******************************************************************************/ -//extern +//extern UINT8 *BTM_ReadRemoteFeatures (BD_ADDR addr); /******************************************************************************* @@ -2524,7 +2453,7 @@ UINT8 *BTM_ReadRemoteFeatures (BD_ADDR addr); ** or NULL if page_number is not valid ** *******************************************************************************/ -//extern +//extern UINT8 *BTM_ReadRemoteExtendedFeatures (BD_ADDR addr, UINT8 page_number); /******************************************************************************* @@ -2537,7 +2466,7 @@ UINT8 *BTM_ReadRemoteExtendedFeatures (BD_ADDR addr, UINT8 page_number); ** Returns number of features pages read from the remote device ** *******************************************************************************/ -//extern +//extern UINT8 BTM_ReadNumberRemoteFeaturesPages (BD_ADDR addr); /******************************************************************************* @@ -2553,7 +2482,7 @@ UINT8 BTM_ReadNumberRemoteFeaturesPages (BD_ADDR addr); ** BTM_FEATURE_BYTES_PER_PAGE * (BTM_EXT_FEATURES_PAGE_MAX + 1). ** *******************************************************************************/ -//extern +//extern UINT8 *BTM_ReadAllRemoteFeatures (BD_ADDR addr); /******************************************************************************* @@ -2567,7 +2496,7 @@ UINT8 *BTM_ReadAllRemoteFeatures (BD_ADDR addr); ** Returns pointer to entry, or NULL if not found ** *******************************************************************************/ -//extern +//extern tBTM_INQ_INFO *BTM_InqDbRead (BD_ADDR p_bda); @@ -2583,7 +2512,7 @@ tBTM_INQ_INFO *BTM_InqDbRead (BD_ADDR p_bda); ** Returns pointer to first in-use entry, or NULL if DB is empty ** *******************************************************************************/ -//extern +//extern tBTM_INQ_INFO *BTM_InqDbFirst (void); @@ -2598,7 +2527,7 @@ tBTM_INQ_INFO *BTM_InqDbFirst (void); ** Returns pointer to next in-use entry, or NULL if no more found. ** *******************************************************************************/ -//extern +//extern tBTM_INQ_INFO *BTM_InqDbNext (tBTM_INQ_INFO *p_cur); @@ -2616,7 +2545,7 @@ tBTM_INQ_INFO *BTM_InqDbNext (tBTM_INQ_INFO *p_cur); ** is active, otherwise BTM_SUCCESS ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_ClearInqDb (BD_ADDR p_bda); /******************************************************************************* @@ -2630,7 +2559,7 @@ tBTM_STATUS BTM_ClearInqDb (BD_ADDR p_bda); ** Returns BTM_SUCCESS if successful ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_ReadInquiryRspTxPower (tBTM_CMPL_CB *p_cb); #if SDP_INCLUDED == TRUE @@ -2649,9 +2578,9 @@ tBTM_STATUS BTM_ReadInquiryRspTxPower (tBTM_CMPL_CB *p_cb); ** BTM_ERR_PROCESSING if err initiating the command ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_StartDiscovery (tBTM_CMPL_CB *p_cmpl_cb, - BD_ADDR_PTR p_rem_addr); + BD_ADDR_PTR p_rem_addr); /******************************************************************************* @@ -2665,9 +2594,9 @@ tBTM_STATUS BTM_StartDiscovery (tBTM_CMPL_CB *p_cmpl_cb, ** Returns Pointer to matching record, or NULL ** *******************************************************************************/ -//extern +//extern tSDP_DISC_REC *BTM_FindAttribute (UINT16 attr_id, - tSDP_DISC_REC *p_start_rec); + tSDP_DISC_REC *p_start_rec); /******************************************************************************* @@ -2681,9 +2610,9 @@ tSDP_DISC_REC *BTM_FindAttribute (UINT16 attr_id, ** Returns Pointer to matching record, or NULL ** *******************************************************************************/ -//extern +//extern tSDP_DISC_REC *BTM_FindService (UINT16 service_uuid, - tSDP_DISC_REC *p_start_rec); + tSDP_DISC_REC *p_start_rec); /******************************************************************************* @@ -2697,9 +2626,9 @@ tSDP_DISC_REC *BTM_FindService (UINT16 service_uuid, ** Returns void ** *******************************************************************************/ -//extern +//extern void BTM_SetDiscoveryParams (UINT16 num_uuid, tSDP_UUID *p_uuid_list, - UINT16 num_attr, UINT16 *p_attr_list); + UINT16 num_attr, UINT16 *p_attr_list); #endif /*SDP_INCLUDED*/ /***************************************************************************** @@ -2714,9 +2643,9 @@ void BTM_SetDiscoveryParams (UINT16 num_uuid, tSDP_UUID *p_uuid_list, ** Returns BTM_CMD_STARTED if successfully initiated, otherwise error ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_SetLinkPolicy (BD_ADDR remote_bda, - UINT16 *settings); + UINT16 *settings); /******************************************************************************* ** @@ -2728,7 +2657,7 @@ tBTM_STATUS BTM_SetLinkPolicy (BD_ADDR remote_bda, ** Returns void ** *******************************************************************************/ -//extern +//extern void BTM_SetDefaultLinkPolicy (UINT16 settings); @@ -2742,7 +2671,7 @@ void BTM_SetDefaultLinkPolicy (UINT16 settings); ** Returns void ** *******************************************************************************/ -//extern +//extern void BTM_SetDefaultLinkSuperTout (UINT16 timeout); @@ -2755,9 +2684,9 @@ void BTM_SetDefaultLinkSuperTout (UINT16 timeout); ** Returns BTM_CMD_STARTED if successfully initiated, otherwise error ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_SetLinkSuperTout (BD_ADDR remote_bda, - UINT16 timeout); + UINT16 timeout); /******************************************************************************* ** ** Function BTM_GetLinkSuperTout @@ -2767,9 +2696,9 @@ tBTM_STATUS BTM_SetLinkSuperTout (BD_ADDR remote_bda, ** Returns status of the operation ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_GetLinkSuperTout (BD_ADDR remote_bda, - UINT16 *p_timeout); + UINT16 *p_timeout); /******************************************************************************* ** @@ -2781,7 +2710,7 @@ tBTM_STATUS BTM_GetLinkSuperTout (BD_ADDR remote_bda, ** Returns TRUE if connection is up, else FALSE. ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_IsAclConnectionUp (BD_ADDR remote_bda, tBT_TRANSPORT transport); @@ -2796,7 +2725,7 @@ BOOLEAN BTM_IsAclConnectionUp (BD_ADDR remote_bda, tBT_TRANSPORT transport); ** BTM_UNKNOWN_ADDR if no active link with bd addr specified ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_GetRole (BD_ADDR remote_bd_addr, UINT8 *p_role); @@ -2817,10 +2746,10 @@ tBTM_STATUS BTM_GetRole (BD_ADDR remote_bd_addr, UINT8 *p_role); ** BTM_MODE_UNSUPPORTED if local device does not support role switching ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_SwitchRole (BD_ADDR remote_bd_addr, - UINT8 new_role, - tBTM_CMPL_CB *p_cb); + UINT8 new_role, + tBTM_CMPL_CB *p_cb); /******************************************************************************* ** @@ -2836,7 +2765,7 @@ tBTM_STATUS BTM_SwitchRole (BD_ADDR remote_bd_addr, ** BTM_BUSY if command is already in progress ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_ReadRSSI (BD_ADDR remote_bda, tBTM_CMPL_CB *p_cb); @@ -2855,9 +2784,9 @@ tBTM_STATUS BTM_ReadRSSI (BD_ADDR remote_bda, tBTM_CMPL_CB *p_cb); ** BTM_BUSY if command is already in progress ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_ReadTxPower (BD_ADDR remote_bda, - tBT_TRANSPORT transport, tBTM_CMPL_CB *p_cb); + tBT_TRANSPORT transport, tBTM_CMPL_CB *p_cb); /******************************************************************************* ** @@ -2873,7 +2802,7 @@ tBTM_STATUS BTM_ReadTxPower (BD_ADDR remote_bda, ** BTM_BUSY if command is already in progress ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_ReadLinkQuality (BD_ADDR remote_bda, tBTM_CMPL_CB *p_cb); /******************************************************************************* @@ -2886,9 +2815,9 @@ tBTM_STATUS BTM_ReadLinkQuality (BD_ADDR remote_bda, tBTM_CMPL_CB *p_cb); ** Returns BTM_SUCCESS if successfully registered, otherwise error ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_RegBusyLevelNotif (tBTM_BL_CHANGE_CB *p_cb, UINT8 *p_level, - tBTM_BL_EVENT_MASK evt_mask); + tBTM_BL_EVENT_MASK evt_mask); /******************************************************************************* ** @@ -2900,7 +2829,7 @@ tBTM_STATUS BTM_RegBusyLevelNotif (tBTM_BL_CHANGE_CB *p_cb, UINT8 *p_level, ** Returns BTM_SUCCESS if successfully initiated, otherwise error ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_AclRegisterForChanges (tBTM_ACL_DB_CHANGE_CB *p_cb); /******************************************************************************* @@ -2913,7 +2842,7 @@ tBTM_STATUS BTM_AclRegisterForChanges (tBTM_ACL_DB_CHANGE_CB *p_cb); ** Returns UINT16 Number of active ACL links ** *******************************************************************************/ -//extern +//extern UINT16 BTM_GetNumAclLinks (void); /******************************************************************************* @@ -2925,9 +2854,9 @@ UINT16 BTM_GetNumAclLinks (void); ** Returns BTM_CMD_STARTED if successfully initiated, otherwise error ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_SetQoS(BD_ADDR bd, FLOW_SPEC *p_flow, - tBTM_CMPL_CB *p_cb); + tBTM_CMPL_CB *p_cb); /***************************************************************************** @@ -2950,11 +2879,11 @@ tBTM_STATUS BTM_SetQoS(BD_ADDR bd, FLOW_SPEC *p_flow, ** with the sco index used for the connection. ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_CreateSco (BD_ADDR remote_bda, BOOLEAN is_orig, - UINT16 pkt_types, UINT16 *p_sco_inx, - tBTM_SCO_CB *p_conn_cb, - tBTM_SCO_CB *p_disc_cb); + UINT16 pkt_types, UINT16 *p_sco_inx, + tBTM_SCO_CB *p_conn_cb, + tBTM_SCO_CB *p_disc_cb); /******************************************************************************* @@ -2966,7 +2895,7 @@ tBTM_STATUS BTM_CreateSco (BD_ADDR remote_bda, BOOLEAN is_orig, ** Returns BTM_CMD_STARTED if successfully initiated, otherwise error ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_RemoveSco (UINT16 sco_inx); @@ -2990,7 +2919,7 @@ tBTM_STATUS BTM_RemoveSco (UINT16 sco_inx); ** Returns BTM_CMD_STARTED if successfully initiated, otherwise error ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_SetScoPacketTypes (UINT16 sco_inx, UINT16 pkt_types); @@ -3012,7 +2941,7 @@ tBTM_STATUS BTM_SetScoPacketTypes (UINT16 sco_inx, UINT16 pkt_types); ** Returns packet types supported for the connection ** *******************************************************************************/ -//extern +//extern UINT16 BTM_ReadScoPacketTypes (UINT16 sco_inx); @@ -3026,7 +2955,7 @@ UINT16 BTM_ReadScoPacketTypes (UINT16 sco_inx); ** Returns packet types supported by the device. ** *******************************************************************************/ -//extern +//extern UINT16 BTM_ReadDeviceScoPacketTypes (void); @@ -3040,7 +2969,7 @@ UINT16 BTM_ReadDeviceScoPacketTypes (void); ** Returns handle for the connection, or 0xFFFF if invalid SCO index. ** *******************************************************************************/ -//extern +//extern UINT16 BTM_ReadScoHandle (UINT16 sco_inx); @@ -3054,7 +2983,7 @@ UINT16 BTM_ReadScoHandle (UINT16 sco_inx); ** Returns pointer to BD address or NULL if not known ** *******************************************************************************/ -//extern +//extern UINT8 *BTM_ReadScoBdAddr (UINT16 sco_inx); @@ -3069,7 +2998,7 @@ UINT8 *BTM_ReadScoBdAddr (UINT16 sco_inx); ** Returns HCI reason or BTM_INVALID_SCO_DISC_REASON if not set. ** *******************************************************************************/ -//extern +//extern UINT16 BTM_ReadScoDiscReason (void); @@ -3086,9 +3015,9 @@ UINT16 BTM_ReadScoDiscReason (void); ** BTM_BUSY if there are one or more active (e)SCO links. ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_SetEScoMode (tBTM_SCO_TYPE sco_mode, - tBTM_ESCO_PARAMS *p_parms); + tBTM_ESCO_PARAMS *p_parms); /******************************************************************************* ** @@ -3101,7 +3030,7 @@ tBTM_STATUS BTM_SetEScoMode (tBTM_SCO_TYPE sco_mode, ** ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_SetWBSCodec (tBTM_SCO_CODEC_TYPE codec_type); /******************************************************************************* @@ -3117,9 +3046,9 @@ tBTM_STATUS BTM_SetWBSCodec (tBTM_SCO_CODEC_TYPE codec_type); ** BTM_ILLEGAL_VALUE if there is an illegal sco_inx ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_RegForEScoEvts (UINT16 sco_inx, - tBTM_ESCO_CBACK *p_esco_cback); + tBTM_ESCO_CBACK *p_esco_cback); /******************************************************************************* ** @@ -3142,9 +3071,9 @@ tBTM_STATUS BTM_RegForEScoEvts (UINT16 sco_inx, ** 1.2 specification. ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_ReadEScoLinkParms (UINT16 sco_inx, - tBTM_ESCO_DATA *p_parms); + tBTM_ESCO_DATA *p_parms); /******************************************************************************* ** @@ -3165,9 +3094,9 @@ tBTM_STATUS BTM_ReadEScoLinkParms (UINT16 sco_inx, ** 1.2 specification. ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_ChangeEScoLinkParms (UINT16 sco_inx, - tBTM_CHG_ESCO_PARAMS *p_parms); + tBTM_CHG_ESCO_PARAMS *p_parms); /******************************************************************************* ** @@ -3187,9 +3116,9 @@ tBTM_STATUS BTM_ChangeEScoLinkParms (UINT16 sco_inx, ** Returns void ** *******************************************************************************/ -//extern +//extern void BTM_EScoConnRsp (UINT16 sco_inx, UINT8 hci_status, - tBTM_ESCO_PARAMS *p_parms); + tBTM_ESCO_PARAMS *p_parms); /******************************************************************************* ** @@ -3200,7 +3129,7 @@ void BTM_EScoConnRsp (UINT16 sco_inx, UINT8 hci_status, ** Returns UINT8 ** *******************************************************************************/ -//extern +//extern UINT8 BTM_GetNumScoLinks (void); /***************************************************************************** @@ -3217,7 +3146,7 @@ UINT8 BTM_GetNumScoLinks (void); ** Returns TRUE if registered OK, else FALSE ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_SecRegister (tBTM_APPL_INFO *p_cb_info); /******************************************************************************* @@ -3230,9 +3159,9 @@ BOOLEAN BTM_SecRegister (tBTM_APPL_INFO *p_cb_info); ** Returns TRUE if registered OK, else FALSE ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_SecRegisterLinkKeyNotificationCallback( - tBTM_LINK_KEY_CALLBACK *p_callback); + tBTM_LINK_KEY_CALLBACK *p_callback); /******************************************************************************* ** @@ -3244,7 +3173,7 @@ BOOLEAN BTM_SecRegisterLinkKeyNotificationCallback( ** Returns TRUE if registered OK, else FALSE ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_SecAddRmtNameNotifyCallback (tBTM_RMT_NAME_CALLBACK *p_callback); @@ -3258,7 +3187,7 @@ BOOLEAN BTM_SecAddRmtNameNotifyCallback (tBTM_RMT_NAME_CALLBACK *p_callback); ** Returns TRUE if OK, else FALSE ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_SecDeleteRmtNameNotifyCallback (tBTM_RMT_NAME_CALLBACK *p_callback); /******************************************************************************* @@ -3270,8 +3199,8 @@ BOOLEAN BTM_SecDeleteRmtNameNotifyCallback (tBTM_RMT_NAME_CALLBACK *p_callback); ** Returns BOOLEAN TRUE or FALSE is device found ** *******************************************************************************/ -//extern -BOOLEAN BTM_GetSecurityFlags (BD_ADDR bd_addr, UINT8 * p_sec_flags); +//extern +BOOLEAN BTM_GetSecurityFlags (BD_ADDR bd_addr, UINT8 *p_sec_flags); /******************************************************************************* ** @@ -3286,9 +3215,9 @@ BOOLEAN BTM_GetSecurityFlags (BD_ADDR bd_addr, UINT8 * p_sec_flags); ** Returns BOOLEAN TRUE or FALSE is device found ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_GetSecurityFlagsByTransport (BD_ADDR bd_addr, - UINT8 * p_sec_flags, tBT_TRANSPORT transport); + UINT8 *p_sec_flags, tBT_TRANSPORT transport); /******************************************************************************* ** @@ -3300,8 +3229,8 @@ BOOLEAN BTM_GetSecurityFlagsByTransport (BD_ADDR bd_addr, ** otherwise, the trusted mask ** *******************************************************************************/ -//extern -UINT32 * BTM_ReadTrustedMask (BD_ADDR bd_addr); +//extern +UINT32 *BTM_ReadTrustedMask (BD_ADDR bd_addr); /******************************************************************************* ** @@ -3312,7 +3241,7 @@ UINT32 * BTM_ReadTrustedMask (BD_ADDR bd_addr); ** Returns void ** *******************************************************************************/ -//extern +//extern void BTM_SetPinType (UINT8 pin_type, PIN_CODE pin_code, UINT8 pin_code_len); @@ -3330,7 +3259,7 @@ void BTM_SetPinType (UINT8 pin_type, PIN_CODE pin_code, UINT8 pin_code_len); ** Returns void ** *******************************************************************************/ -//extern +//extern void BTM_SetPairableMode (BOOLEAN allow_pairing, BOOLEAN connect_only_paired); /******************************************************************************* @@ -3348,7 +3277,7 @@ void BTM_SetPairableMode (BOOLEAN allow_pairing, BOOLEAN connect_only_paired); ** Returns void ** *******************************************************************************/ -//extern +//extern void BTM_SetSecureConnectionsOnly (BOOLEAN secure_connections_only_mode); /******************************************************************************* @@ -3363,11 +3292,11 @@ void BTM_SetSecureConnectionsOnly (BOOLEAN secure_connections_only_mode); ** Returns TRUE if registered OK, else FALSE ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_SetSecurityLevel (BOOLEAN is_originator, char *p_name, - UINT8 service_id, UINT16 sec_level, - UINT16 psm, UINT32 mx_proto_id, - UINT32 mx_chan_id); + UINT8 service_id, UINT16 sec_level, + UINT16 psm, UINT32 mx_proto_id, + UINT32 mx_chan_id); /******************************************************************************* ** @@ -3379,7 +3308,7 @@ BOOLEAN BTM_SetSecurityLevel (BOOLEAN is_originator, char *p_name, ** Returns void ** *******************************************************************************/ -//extern +//extern void BTM_SetOutService(BD_ADDR bd_addr, UINT8 service_id, UINT32 mx_chan_id); /******************************************************************************* @@ -3395,7 +3324,7 @@ void BTM_SetOutService(BD_ADDR bd_addr, UINT8 service_id, UINT32 mx_chan_id); ** Returns Number of records that were freed. ** *******************************************************************************/ -//extern +//extern UINT8 BTM_SecClrService (UINT8 service_id); /******************************************************************************* @@ -3410,11 +3339,11 @@ UINT8 BTM_SecClrService (UINT8 service_id); ** Returns TRUE if added OK, else FALSE ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_SecAddDevice (BD_ADDR bd_addr, DEV_CLASS dev_class, - BD_NAME bd_name, UINT8 *features, - UINT32 trusted_mask[], LINK_KEY link_key, - UINT8 key_type, tBTM_IO_CAP io_cap, UINT8 pin_length); + BD_NAME bd_name, UINT8 *features, + UINT32 trusted_mask[], LINK_KEY link_key, + UINT8 key_type, tBTM_IO_CAP io_cap, UINT8 pin_length); /******************************************************************************* @@ -3426,7 +3355,7 @@ BOOLEAN BTM_SecAddDevice (BD_ADDR bd_addr, DEV_CLASS dev_class, ** Returns TRUE if rmoved OK, FALSE if not found ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_SecDeleteDevice (BD_ADDR bd_addr); @@ -3442,9 +3371,9 @@ BOOLEAN BTM_SecDeleteDevice (BD_ADDR bd_addr); ** Returns BTM_SUCCESS if successful, otherwise error code ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_SecGetDeviceLinkKey (BD_ADDR bd_addr, - LINK_KEY link_key); + LINK_KEY link_key); /******************************************************************************* @@ -3461,7 +3390,7 @@ tBTM_STATUS BTM_SecGetDeviceLinkKey (BD_ADDR bd_addr, ** otherwise. ** *******************************************************************************/ -//extern +//extern tBTM_LINK_KEY_TYPE BTM_SecGetDeviceLinkKeyType (BD_ADDR bd_addr); @@ -3481,9 +3410,9 @@ tBTM_LINK_KEY_TYPE BTM_SecGetDeviceLinkKeyType (BD_ADDR bd_addr); ** Returns void ** *******************************************************************************/ -//extern +//extern void BTM_PINCodeReply (BD_ADDR bd_addr, UINT8 res, UINT8 pin_len, - UINT8 *p_pin, UINT32 trusted_mask[]); + UINT8 *p_pin, UINT32 trusted_mask[]); /******************************************************************************* @@ -3500,10 +3429,10 @@ void BTM_PINCodeReply (BD_ADDR bd_addr, UINT8 res, UINT8 pin_len, ** Returns BTM_CMD_STARTED if successfully initiated, otherwise error ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_SecBond (BD_ADDR bd_addr, - UINT8 pin_len, UINT8 *p_pin, - UINT32 trusted_mask[]); + UINT8 pin_len, UINT8 *p_pin, + UINT32 trusted_mask[]); /******************************************************************************* ** @@ -3520,11 +3449,11 @@ tBTM_STATUS BTM_SecBond (BD_ADDR bd_addr, ** Returns BTM_CMD_STARTED if successfully initiated, otherwise error ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_SecBondByTransport (BD_ADDR bd_addr, - tBT_TRANSPORT transport, - UINT8 pin_len, UINT8 *p_pin, - UINT32 trusted_mask[]); + tBT_TRANSPORT transport, + UINT8 pin_len, UINT8 *p_pin, + UINT32 trusted_mask[]); /******************************************************************************* ** @@ -3536,7 +3465,7 @@ tBTM_STATUS BTM_SecBondByTransport (BD_ADDR bd_addr, ** Returns BTM_CMD_STARTED if successfully initiated, otherwise error ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_SecBondCancel (BD_ADDR bd_addr); /******************************************************************************* @@ -3564,9 +3493,9 @@ tBTM_STATUS BTM_SecBondCancel (BD_ADDR bd_addr); ** BTM_MODE_UNSUPPORTED - if security manager not linked in. ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_SetEncryption (BD_ADDR bd_addr, tBT_TRANSPORT transport, - tBTM_SEC_CBACK *p_callback, void *p_ref_data); + tBTM_SEC_CBACK *p_callback, void *p_ref_data); /******************************************************************************* ** @@ -3579,7 +3508,7 @@ tBTM_STATUS BTM_SetEncryption (BD_ADDR bd_addr, tBT_TRANSPORT transport, ** bd_addr - Address of the peer device ** *******************************************************************************/ -//extern +//extern void BTM_ConfirmReqReply(tBTM_STATUS res, BD_ADDR bd_addr); /******************************************************************************* @@ -3594,7 +3523,7 @@ void BTM_ConfirmReqReply(tBTM_STATUS res, BD_ADDR bd_addr); ** passkey - numeric value in the range of 0 - 999999(0xF423F). ** *******************************************************************************/ -//extern +//extern void BTM_PasskeyReqReply(tBTM_STATUS res, BD_ADDR bd_addr, UINT32 passkey); /******************************************************************************* @@ -3611,7 +3540,7 @@ void BTM_PasskeyReqReply(tBTM_STATUS res, BD_ADDR bd_addr, UINT32 passkey); ** type - notification type ** *******************************************************************************/ -//extern +//extern void BTM_SendKeypressNotif(BD_ADDR bd_addr, tBTM_SP_KEY_TYPE type); /******************************************************************************* @@ -3629,9 +3558,9 @@ void BTM_SendKeypressNotif(BD_ADDR bd_addr, tBTM_SP_KEY_TYPE type); ** auth_req- MITM protection required or not. ** *******************************************************************************/ -//extern +//extern void BTM_IoCapRsp(BD_ADDR bd_addr, tBTM_IO_CAP io_cap, - tBTM_OOB_DATA oob, tBTM_AUTH_REQ auth_req); + tBTM_OOB_DATA oob, tBTM_AUTH_REQ auth_req); /******************************************************************************* ** @@ -3641,7 +3570,7 @@ void BTM_IoCapRsp(BD_ADDR bd_addr, tBTM_IO_CAP io_cap, ** LM ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_ReadLocalOobData(void); /******************************************************************************* @@ -3656,9 +3585,9 @@ tBTM_STATUS BTM_ReadLocalOobData(void); ** r - simple pairing Randomizer C. ** *******************************************************************************/ -//extern +//extern void BTM_RemoteOobDataReply(tBTM_STATUS res, BD_ADDR bd_addr, - BT_OCTET16 c, BT_OCTET16 r); + BT_OCTET16 c, BT_OCTET16 r); /******************************************************************************* ** @@ -3678,9 +3607,9 @@ void BTM_RemoteOobDataReply(tBTM_STATUS res, BD_ADDR bd_addr, ** Returns Number of bytes in p_data. ** *******************************************************************************/ -//extern +//extern UINT16 BTM_BuildOobData(UINT8 *p_data, UINT16 max_len, BT_OCTET16 c, - BT_OCTET16 r, UINT8 name_len); + BT_OCTET16 r, UINT8 name_len); /******************************************************************************* ** @@ -3696,7 +3625,7 @@ UINT16 BTM_BuildOobData(UINT8 *p_data, UINT16 max_len, BT_OCTET16 c, ** else FALSE. ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_BothEndsSupportSecureConnections(BD_ADDR bd_addr); /******************************************************************************* @@ -3712,7 +3641,7 @@ BOOLEAN BTM_BothEndsSupportSecureConnections(BD_ADDR bd_addr); ** else FALSE. ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_PeerSupportsSecureConnections(BD_ADDR bd_addr); /******************************************************************************* @@ -3730,8 +3659,8 @@ BOOLEAN BTM_PeerSupportsSecureConnections(BD_ADDR bd_addr); ** NULL, if the tag is not found. ** *******************************************************************************/ -//extern -UINT8 * BTM_ReadOobData(UINT8 *p_data, UINT8 eir_tag, UINT8 *p_len); +//extern +UINT8 *BTM_ReadOobData(UINT8 *p_data, UINT8 eir_tag, UINT8 *p_len); /******************************************************************************* ** @@ -3743,7 +3672,7 @@ UINT8 * BTM_ReadOobData(UINT8 *p_data, UINT8 eir_tag, UINT8 *p_len); ** Returns Pointer to the name or NULL ** *******************************************************************************/ -//extern +//extern char *BTM_SecReadDevName (BD_ADDR bd_addr); @@ -3761,9 +3690,9 @@ char *BTM_SecReadDevName (BD_ADDR bd_addr); ** BTM_ILLEGAL_VALUE ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_PmRegister (UINT8 mask, UINT8 *p_pm_id, - tBTM_PM_STATUS_CBACK *p_cb); + tBTM_PM_STATUS_CBACK *p_cb); /******************************************************************************* @@ -3777,9 +3706,9 @@ tBTM_STATUS BTM_PmRegister (UINT8 mask, UINT8 *p_pm_id, ** BTM_UNKNOWN_ADDR if bd addr is not active or bad ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_SetPowerMode (UINT8 pm_id, BD_ADDR remote_bda, - tBTM_PM_PWR_MD *p_mode); + tBTM_PM_PWR_MD *p_mode); /******************************************************************************* @@ -3802,9 +3731,9 @@ tBTM_STATUS BTM_SetPowerMode (UINT8 pm_id, BD_ADDR remote_bda, ** BTM_UNKNOWN_ADDR if bd addr is not active or bad ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_ReadPowerMode (BD_ADDR remote_bda, - tBTM_PM_MODE *p_mode); + tBTM_PM_MODE *p_mode); /******************************************************************************* ** @@ -3824,9 +3753,9 @@ tBTM_STATUS BTM_ReadPowerMode (BD_ADDR remote_bda, ** BTM_CMD_STORED if the command is stored ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_SetSsrParams (BD_ADDR remote_bda, UINT16 max_lat, - UINT16 min_rmt_to, UINT16 min_loc_to); + UINT16 min_rmt_to, UINT16 min_loc_to); /******************************************************************************* ** @@ -3838,7 +3767,7 @@ tBTM_STATUS BTM_SetSsrParams (BD_ADDR remote_bda, UINT16 max_lat, ** Returns the handle of the connection, or 0xFFFF if none. ** *******************************************************************************/ -//extern +//extern UINT16 BTM_GetHCIConnHandle (BD_ADDR remote_bda, tBT_TRANSPORT transport); /******************************************************************************* @@ -3854,7 +3783,7 @@ UINT16 BTM_GetHCIConnHandle (BD_ADDR remote_bda, tBT_TRANSPORT transport); ** the results ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_DeleteStoredLinkKey(BD_ADDR bd_addr, tBTM_CMPL_CB *p_cb); /******************************************************************************* @@ -3870,8 +3799,8 @@ tBTM_STATUS BTM_DeleteStoredLinkKey(BD_ADDR bd_addr, tBTM_CMPL_CB *p_cb); ** BTM_MODE_UNSUPPORTED - if local device cannot support it ** *******************************************************************************/ -//extern -tBTM_STATUS BTM_WriteEIR( BT_HDR * p_buff ); +//extern +tBTM_STATUS BTM_WriteEIR( BT_HDR *p_buff ); /******************************************************************************* ** @@ -3886,7 +3815,7 @@ tBTM_STATUS BTM_WriteEIR( BT_HDR * p_buff ); ** Returns pointer of EIR data ** *******************************************************************************/ -//extern +//extern UINT8 *BTM_CheckEirData( UINT8 *p_eir, UINT8 type, UINT8 *p_length ); /******************************************************************************* @@ -3902,7 +3831,7 @@ UINT8 *BTM_CheckEirData( UINT8 *p_eir, UINT8 type, UINT8 *p_length ); ** FALSE - if not found ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_HasEirService( UINT32 *p_eir_uuid, UINT16 uuid16 ); /******************************************************************************* @@ -3919,9 +3848,9 @@ BOOLEAN BTM_HasEirService( UINT32 *p_eir_uuid, UINT16 uuid16 ); ** BTM_EIR_UNKNOWN - if not found and it is not complete list ** *******************************************************************************/ -//extern +//extern tBTM_EIR_SEARCH_RESULT BTM_HasInquiryEirService( tBTM_INQ_RESULTS *p_results, - UINT16 uuid16 ); + UINT16 uuid16 ); /******************************************************************************* ** @@ -3935,7 +3864,7 @@ tBTM_EIR_SEARCH_RESULT BTM_HasInquiryEirService( tBTM_INQ_RESULTS *p_results, ** Returns None ** *******************************************************************************/ -//extern +//extern void BTM_AddEirService( UINT32 *p_eir_uuid, UINT16 uuid16 ); /******************************************************************************* @@ -3950,7 +3879,7 @@ void BTM_AddEirService( UINT32 *p_eir_uuid, UINT16 uuid16 ); ** Returns None ** *******************************************************************************/ -//extern +//extern void BTM_RemoveEirService( UINT32 *p_eir_uuid, UINT16 uuid16 ); /******************************************************************************* @@ -3968,9 +3897,9 @@ void BTM_RemoveEirService( UINT32 *p_eir_uuid, UINT16 uuid16 ); ** BTM_EIR_COMPLETE_16BITS_UUID_TYPE, otherwise ** *******************************************************************************/ -//extern +//extern UINT8 BTM_GetEirSupportedServices( UINT32 *p_eir_uuid, UINT8 **p, - UINT8 max_num_uuid16, UINT8 *p_num_uuid16); + UINT8 max_num_uuid16, UINT8 *p_num_uuid16); /******************************************************************************* ** @@ -3993,9 +3922,9 @@ UINT8 BTM_GetEirSupportedServices( UINT32 *p_eir_uuid, UINT8 **p, ** BTM_EIR_MORE_128BITS_UUID_TYPE ** *******************************************************************************/ -//extern +//extern UINT8 BTM_GetEirUuidList( UINT8 *p_eir, UINT8 uuid_size, UINT8 *p_num_uuid, - UINT8 *p_uuid_list, UINT8 max_num_uuid); + UINT8 *p_uuid_list, UINT8 max_num_uuid); /***************************************************************************** ** SCO OVER HCI @@ -4024,11 +3953,11 @@ UINT8 BTM_GetEirUuidList( UINT8 *p_eir, UINT8 uuid_size, UINT8 *p_num_uuid, ** ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_ConfigScoPath (tBTM_SCO_ROUTE_TYPE path, - tBTM_SCO_DATA_CB *p_sco_data_cb, - tBTM_SCO_PCM_PARAM *p_pcm_param, - BOOLEAN err_data_rpt); + tBTM_SCO_DATA_CB *p_sco_data_cb, + tBTM_SCO_PCM_PARAM *p_pcm_param, + BOOLEAN err_data_rpt); /******************************************************************************* ** @@ -4051,7 +3980,7 @@ tBTM_STATUS BTM_ConfigScoPath (tBTM_SCO_ROUTE_TYPE path, ** ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_WriteScoData (UINT16 sco_inx, BT_HDR *p_buf); /******************************************************************************* @@ -4063,7 +3992,7 @@ tBTM_STATUS BTM_WriteScoData (UINT16 sco_inx, BT_HDR *p_buf); ** Returns void ** *******************************************************************************/ -//extern +//extern void BTM_SetARCMode (UINT8 iface, UINT8 arc_mode, tBTM_VSC_CMPL_CB *p_arc_cb); @@ -4076,7 +4005,7 @@ void BTM_SetARCMode (UINT8 iface, UINT8 arc_mode, tBTM_VSC_CMPL_CB *p_arc_cb); ** Returns void ** *******************************************************************************/ -//extern +//extern void BTM_PCM2Setup_Write (BOOLEAN clk_master, tBTM_VSC_CMPL_CB *p_arc_cb); @@ -4089,7 +4018,7 @@ void BTM_PCM2Setup_Write (BOOLEAN clk_master, tBTM_VSC_CMPL_CB *p_arc_cb); ** Returns Controller state (BTM_CONTRL_ACTIVE, BTM_CONTRL_SCAN, and BTM_CONTRL_IDLE) ** *******************************************************************************/ -//extern +//extern tBTM_CONTRL_STATE BTM_PM_ReadControllerState(void); /* #ifdef __cplusplus diff --git a/components/bt/bluedroid/stack/include/btm_ble_api.h b/components/bt/bluedroid/stack/include/btm_ble_api.h old mode 100755 new mode 100644 index 966b855721..2c4d1f1d59 --- a/components/bt/bluedroid/stack/include/btm_ble_api.h +++ b/components/bt/bluedroid/stack/include/btm_ble_api.h @@ -41,7 +41,7 @@ typedef UINT8 tBTM_BLE_CHNL_MAP[CHANNEL_MAP_LEN]; #define BTM_BLE_NON_CONNECT_EVT 0x03 /* Non connectable undirected advertising */ #define BTM_BLE_CONNECT_LO_DUTY_DIR_EVT 0x04 /* Connectable low duty cycle directed advertising */ - /* 0x00 - 0x05 can be received on adv event type */ +/* 0x00 - 0x05 can be received on adv event type */ #define BTM_BLE_SCAN_RSP_EVT 0x04 #define BTM_BLE_SCAN_REQ_EVT 0x05 #define BTM_BLE_UNKNOWN_EVT 0xff @@ -91,14 +91,14 @@ typedef UINT8 tBTM_BLE_AFP; /* scanning filter policy */ #define SP_ADV_ALL 0x00 /* 0: accept adv packet from all, directed adv pkt not directed */ - /* to local device is ignored */ +/* to local device is ignored */ #define SP_ADV_WL 0x01 /* 1: accept adv packet from device in white list, directed adv */ - /* packet not directed to local device is ignored */ +/* packet not directed to local device is ignored */ #define SP_ADV_ALL_RPA_DIR_ADV 0x02 /* 2: accept adv packet from all, directed adv pkt */ - /* not directed to me is ignored except direct adv with RPA */ +/* not directed to me is ignored except direct adv with RPA */ #define SP_ADV_WL_RPA_DIR_ADV 0x03 /* 3: accept adv packet from device in white list, directed */ - /* adv pkt not directed to me is ignored except direct adv */ - /* with RPA */ +/* adv pkt not directed to me is ignored except direct adv */ +/* with RPA */ typedef UINT8 tBTM_BLE_SFP; #ifndef BTM_BLE_DEFAULT_SFP @@ -259,8 +259,7 @@ typedef UINT8 BLE_SIGNATURE[BTM_BLE_AUTH_SIGN_LEN]; /* Device address */ /* Structure returned with Rand/Encrypt complete callback */ -typedef struct -{ +typedef struct { UINT8 status; UINT8 param_len; UINT16 opcode; @@ -363,8 +362,7 @@ typedef UINT8 tBTM_BLE_AD_TYPE; typedef UINT8 tBTM_BLE_ADV_TX_POWER; /* adv tx power in dBm */ -typedef struct -{ +typedef struct { UINT8 adv_inst_max; /* max adv instance supported in controller */ UINT8 rpa_offloading; UINT16 tot_scan_results_strg; @@ -377,68 +375,59 @@ typedef struct UINT16 total_trackable_advertisers; UINT8 extended_scan_support; UINT8 debug_logging_supported; -}tBTM_BLE_VSC_CB; +} tBTM_BLE_VSC_CB; /* slave preferred connection interval range */ -typedef struct -{ +typedef struct { UINT16 low; UINT16 hi; -}tBTM_BLE_INT_RANGE; +} tBTM_BLE_INT_RANGE; /* Service tag supported in the device */ -typedef struct -{ +typedef struct { UINT8 num_service; BOOLEAN list_cmpl; UINT16 *p_uuid; -}tBTM_BLE_SERVICE; +} tBTM_BLE_SERVICE; /* 32 bits Service supported in the device */ -typedef struct -{ +typedef struct { UINT8 num_service; BOOLEAN list_cmpl; UINT32 *p_uuid; -}tBTM_BLE_32SERVICE; +} tBTM_BLE_32SERVICE; /* 128 bits Service supported in the device */ -typedef struct -{ +typedef struct { BOOLEAN list_cmpl; UINT8 uuid128[MAX_UUID_SIZE]; -}tBTM_BLE_128SERVICE; +} tBTM_BLE_128SERVICE; -typedef struct -{ +typedef struct { UINT8 len; UINT8 *p_val; -}tBTM_BLE_MANU; +} tBTM_BLE_MANU; -typedef struct -{ +typedef struct { tBT_UUID service_uuid; UINT8 len; UINT8 *p_val; -}tBTM_BLE_SERVICE_DATA; +} tBTM_BLE_SERVICE_DATA; -typedef struct -{ +typedef struct { UINT8 adv_type; UINT8 len; UINT8 *p_val; /* number of len byte */ -}tBTM_BLE_PROP_ELEM; +} tBTM_BLE_PROP_ELEM; -typedef struct -{ +typedef struct { UINT8 num_elem; tBTM_BLE_PROP_ELEM *p_elem; -}tBTM_BLE_PROPRIETARY; +} tBTM_BLE_PROPRIETARY; -typedef struct -{ +typedef struct { tBTM_BLE_INT_RANGE int_range; /* slave prefered conn interval range */ tBTM_BLE_MANU *p_manu; /* manufactuer data */ tBTM_BLE_SERVICE *p_services; /* services */ @@ -452,7 +441,7 @@ typedef struct UINT16 appearance; UINT8 flag; UINT8 tx_power; -}tBTM_BLE_ADV_DATA; +} tBTM_BLE_ADV_DATA; #ifndef BTM_BLE_MULTI_ADV_MAX #define BTM_BLE_MULTI_ADV_MAX 16 /* controller returned adv_inst_max should be less @@ -469,29 +458,26 @@ typedef UINT8 tBTM_BLE_MULTI_ADV_EVT; #define BTM_BLE_MULTI_ADV_DEFAULT_STD 0 -typedef struct -{ +typedef struct { UINT16 adv_int_min; UINT16 adv_int_max; UINT8 adv_type; tBTM_BLE_ADV_CHNL_MAP channel_map; tBTM_BLE_AFP adv_filter_policy; tBTM_BLE_ADV_TX_POWER tx_power; -}tBTM_BLE_ADV_PARAMS; +} tBTM_BLE_ADV_PARAMS; -typedef struct -{ +typedef struct { UINT8 *p_sub_code; /* dynamic array to store sub code */ UINT8 *p_inst_id; /* dynamic array to store instance id */ UINT8 pending_idx; UINT8 next_idx; -}tBTM_BLE_MULTI_ADV_OPQ; +} tBTM_BLE_MULTI_ADV_OPQ; typedef void (tBTM_BLE_MULTI_ADV_CBACK)(tBTM_BLE_MULTI_ADV_EVT evt, UINT8 inst_id, - void *p_ref, tBTM_STATUS status); + void *p_ref, tBTM_STATUS status); -typedef struct -{ +typedef struct { UINT8 inst_id; BOOLEAN in_use; UINT8 adv_evt; @@ -500,27 +486,25 @@ typedef struct tBTM_BLE_MULTI_ADV_CBACK *p_cback; void *p_ref; UINT8 index; -}tBTM_BLE_MULTI_ADV_INST; +} tBTM_BLE_MULTI_ADV_INST; -typedef struct -{ +typedef struct { UINT8 inst_index_queue[BTM_BLE_MULTI_ADV_MAX]; int front; int rear; -}tBTM_BLE_MULTI_ADV_INST_IDX_Q; +} tBTM_BLE_MULTI_ADV_INST_IDX_Q; -typedef struct -{ +typedef struct { tBTM_BLE_MULTI_ADV_INST *p_adv_inst; /* dynamic array to store adv instance */ tBTM_BLE_MULTI_ADV_OPQ op_q; -}tBTM_BLE_MULTI_ADV_CB; +} tBTM_BLE_MULTI_ADV_CB; typedef UINT8 tGATT_IF; typedef void (tBTM_BLE_SCAN_THRESHOLD_CBACK)(tBTM_BLE_REF_VALUE ref_value); typedef void (tBTM_BLE_SCAN_REP_CBACK)(tBTM_BLE_REF_VALUE ref_value, UINT8 report_format, UINT8 num_records, UINT16 total_len, - UINT8* p_rep_data, UINT8 status); + UINT8 *p_rep_data, UINT8 status); typedef void (tBTM_BLE_SCAN_SETUP_CBACK)(UINT8 evt, tBTM_BLE_REF_VALUE ref_value, UINT8 status); #ifndef BTM_BLE_BATCH_SCAN_MAX @@ -531,33 +515,29 @@ typedef void (tBTM_BLE_SCAN_SETUP_CBACK)(UINT8 evt, tBTM_BLE_REF_VALUE ref_value #define BTM_BLE_BATCH_REP_MAIN_Q_SIZE 2 #endif -typedef enum -{ - BTM_BLE_SCAN_INVALID_STATE=0, - BTM_BLE_SCAN_ENABLE_CALLED=1, - BTM_BLE_SCAN_ENABLED_STATE=2, - BTM_BLE_SCAN_DISABLE_CALLED=3, - BTM_BLE_SCAN_DISABLED_STATE=4 -}tBTM_BLE_BATCH_SCAN_STATE; +typedef enum { + BTM_BLE_SCAN_INVALID_STATE = 0, + BTM_BLE_SCAN_ENABLE_CALLED = 1, + BTM_BLE_SCAN_ENABLED_STATE = 2, + BTM_BLE_SCAN_DISABLE_CALLED = 3, + BTM_BLE_SCAN_DISABLED_STATE = 4 +} tBTM_BLE_BATCH_SCAN_STATE; -enum -{ +enum { BTM_BLE_DISCARD_OLD_ITEMS, BTM_BLE_DISCARD_LOWER_RSSI_ITEMS }; typedef UINT8 tBTM_BLE_DISCARD_RULE; -typedef struct -{ +typedef struct { UINT8 sub_code[BTM_BLE_BATCH_SCAN_MAX]; tBTM_BLE_BATCH_SCAN_STATE cur_state[BTM_BLE_BATCH_SCAN_MAX]; tBTM_BLE_REF_VALUE ref_value[BTM_BLE_BATCH_SCAN_MAX]; UINT8 pending_idx; UINT8 next_idx; -}tBTM_BLE_BATCH_SCAN_OPQ; +} tBTM_BLE_BATCH_SCAN_OPQ; -typedef struct -{ +typedef struct { UINT8 rep_mode[BTM_BLE_BATCH_REP_MAIN_Q_SIZE]; tBTM_BLE_REF_VALUE ref_value[BTM_BLE_BATCH_REP_MAIN_Q_SIZE]; UINT8 num_records[BTM_BLE_BATCH_REP_MAIN_Q_SIZE]; @@ -565,10 +545,9 @@ typedef struct UINT8 *p_data[BTM_BLE_BATCH_REP_MAIN_Q_SIZE]; UINT8 pending_idx; UINT8 next_idx; -}tBTM_BLE_BATCH_SCAN_REP_Q; +} tBTM_BLE_BATCH_SCAN_REP_Q; -typedef struct -{ +typedef struct { tBTM_BLE_BATCH_SCAN_STATE cur_state; tBTM_BLE_BATCH_SCAN_MODE scan_mode; UINT32 scan_interval; @@ -581,7 +560,7 @@ typedef struct tBTM_BLE_SCAN_THRESHOLD_CBACK *p_thres_cback; tBTM_BLE_SCAN_REP_CBACK *p_scan_rep_cback; tBTM_BLE_REF_VALUE ref_value; -}tBTM_BLE_BATCH_SCAN_CB; +} tBTM_BLE_BATCH_SCAN_CB; /* filter selection bit index */ #define BTM_BLE_PF_ADDR_FILTER 0 @@ -645,8 +624,7 @@ typedef UINT16 tBTM_BLE_PF_TIMEOUT; typedef UINT8 tBTM_BLE_PF_TIMEOUT_CNT; typedef UINT16 tBTM_BLE_PF_ADV_TRACK_ENTRIES; -typedef struct -{ +typedef struct { tBTM_BLE_PF_FEAT_SEL feat_seln; tBTM_BLE_PF_LIST_LOGIC_TYPE logic_type; tBTM_BLE_PF_FILT_LOGIC_TYPE filt_logic_type; @@ -657,18 +635,16 @@ typedef struct tBTM_BLE_PF_TIMEOUT lost_timeout; tBTM_BLE_PF_TIMEOUT_CNT found_timeout_cnt; tBTM_BLE_PF_ADV_TRACK_ENTRIES num_of_tracking_entries; -}tBTM_BLE_PF_FILT_PARAMS; +} tBTM_BLE_PF_FILT_PARAMS; -enum -{ +enum { BTM_BLE_SCAN_COND_ADD, BTM_BLE_SCAN_COND_DELETE, BTM_BLE_SCAN_COND_CLEAR = 2 }; typedef UINT8 tBTM_BLE_SCAN_COND_OP; -enum -{ +enum { BTM_BLE_FILT_ENABLE_DISABLE = 1, BTM_BLE_FILT_CFG = 2, BTM_BLE_FILT_ADV_PARAM = 3 @@ -685,36 +661,32 @@ typedef void (tBTM_BLE_PF_CMPL_CBACK) (tBTM_BLE_PF_CFG_CBACK); /* BLE adv payload filtering status setup complete callback */ typedef void (tBTM_BLE_PF_STATUS_CBACK) (UINT8 action, tBTM_STATUS status, - tBTM_BLE_REF_VALUE ref_value); + tBTM_BLE_REF_VALUE ref_value); /* BLE adv payload filtering param setup complete callback */ typedef void (tBTM_BLE_PF_PARAM_CBACK) (tBTM_BLE_PF_ACTION action_type, tBTM_BLE_PF_AVBL_SPACE avbl_space, tBTM_BLE_REF_VALUE ref_value, tBTM_STATUS status); -typedef union -{ - UINT16 uuid16_mask; - UINT32 uuid32_mask; - UINT8 uuid128_mask[LEN_UUID_128]; -}tBTM_BLE_PF_COND_MASK; +typedef union { + UINT16 uuid16_mask; + UINT32 uuid32_mask; + UINT8 uuid128_mask[LEN_UUID_128]; +} tBTM_BLE_PF_COND_MASK; -typedef struct -{ +typedef struct { tBLE_BD_ADDR *p_target_addr; /* target address, if NULL, generic UUID filter */ tBT_UUID uuid; /* UUID condition */ tBTM_BLE_PF_LOGIC_TYPE cond_logic; /* AND/OR */ tBTM_BLE_PF_COND_MASK *p_uuid_mask; /* UUID mask */ -}tBTM_BLE_PF_UUID_COND; +} tBTM_BLE_PF_UUID_COND; -typedef struct -{ +typedef struct { UINT8 data_len; /* <= 20 bytes */ UINT8 *p_data; -}tBTM_BLE_PF_LOCAL_NAME_COND; +} tBTM_BLE_PF_LOCAL_NAME_COND; -typedef struct -{ +typedef struct { UINT16 company_id; /* company ID */ UINT8 data_len; /* <= 20 bytes */ UINT8 *p_pattern; @@ -722,30 +694,27 @@ typedef struct UINT8 *p_pattern_mask; /* Manufacturer data matching mask, same length as data pattern, set to all 0xff, match exact data */ -}tBTM_BLE_PF_MANU_COND; +} tBTM_BLE_PF_MANU_COND; -typedef struct -{ +typedef struct { UINT16 uuid; /* service ID */ UINT8 data_len; /* <= 20 bytes */ UINT8 *p_pattern; UINT8 *p_pattern_mask; /* Service data matching mask, same length as data pattern, set to all 0xff, match exact data */ -}tBTM_BLE_PF_SRVC_PATTERN_COND; +} tBTM_BLE_PF_SRVC_PATTERN_COND; -typedef union -{ +typedef union { tBLE_BD_ADDR target_addr; tBTM_BLE_PF_LOCAL_NAME_COND local_name; /* lcoal name filtering */ tBTM_BLE_PF_MANU_COND manu_data; /* manufactuer data filtering */ tBTM_BLE_PF_UUID_COND srvc_uuid; /* service UUID filtering */ tBTM_BLE_PF_UUID_COND solicitate_uuid; /* solicitated service UUID filtering */ tBTM_BLE_PF_SRVC_PATTERN_COND srvc_data; /* service data pattern */ -}tBTM_BLE_PF_COND_PARAM; +} tBTM_BLE_PF_COND_PARAM; -typedef struct -{ +typedef struct { UINT8 action_ocf[BTM_BLE_PF_TYPE_MAX]; tBTM_BLE_REF_VALUE ref_value[BTM_BLE_PF_TYPE_MAX]; tBTM_BLE_PF_PARAM_CBACK *p_filt_param_cback[BTM_BLE_PF_TYPE_MAX]; @@ -753,7 +722,7 @@ typedef struct UINT8 cb_evt[BTM_BLE_PF_TYPE_MAX]; UINT8 pending_idx; UINT8 next_idx; -}tBTM_BLE_ADV_FILTER_ADV_OPQ; +} tBTM_BLE_ADV_FILTER_ADV_OPQ; #define BTM_BLE_MAX_FILTER_COUNTER (BTM_BLE_MAX_ADDR_FILTER + 1) /* per device filter + one generic filter indexed by 0 */ @@ -761,22 +730,20 @@ typedef struct #define BTM_CS_IRK_LIST_MAX 0x20 #endif -typedef struct -{ +typedef struct { BOOLEAN in_use; BD_ADDR bd_addr; UINT8 pf_counter[BTM_BLE_PF_TYPE_MAX]; /* number of filter indexed by tBTM_BLE_PF_COND_TYPE */ -}tBTM_BLE_PF_COUNT; +} tBTM_BLE_PF_COUNT; -typedef struct -{ +typedef struct { BOOLEAN enable; UINT8 op_type; tBTM_BLE_PF_COUNT *p_addr_filter_count; /* per BDA filter array */ tBLE_BD_ADDR cur_filter_target; tBTM_BLE_PF_STATUS_CBACK *p_filt_stat_cback; tBTM_BLE_ADV_FILTER_ADV_OPQ op_q; -}tBTM_BLE_ADV_FILTER_CB; +} tBTM_BLE_ADV_FILTER_CB; /* Sub codes */ #define BTM_BLE_META_PF_ENABLE 0x00 @@ -797,8 +764,7 @@ typedef UINT16 BTM_BLE_ADV_INFO_TIMESTAMP; /* These are the fields returned in each device adv packet. It ** is returned in the results callback if registered. */ -typedef struct -{ +typedef struct { UINT8 conn_mode; tBTM_BLE_AD_MASK ad_mask; /* mask of the valid adv data field */ UINT8 flag; @@ -808,8 +774,7 @@ typedef struct tBTM_BLE_SERVICE service; } tBTM_BLE_INQ_DATA; -enum -{ +enum { BTM_BLE_CONN_NONE, BTM_BLE_CONN_AUTO, BTM_BLE_CONN_SELECTIVE @@ -825,14 +790,12 @@ typedef void (tBTM_BLE_TRACK_ADV_CBACK)(tBTM_BLE_TRACK_ADV_DATA *p_track_adv_dat typedef UINT8 tBTM_BLE_TRACK_ADV_EVT; -typedef struct -{ +typedef struct { tBTM_BLE_REF_VALUE ref_value; tBTM_BLE_TRACK_ADV_CBACK *p_track_cback; -}tBTM_BLE_ADV_TRACK_CB; +} tBTM_BLE_ADV_TRACK_CB; -enum -{ +enum { BTM_BLE_TRACK_ADV_ADD, BTM_BLE_TRACK_ADV_REMOVE }; @@ -856,14 +819,13 @@ typedef UINT32 tBTM_BLE_IDLE_TIME_MS; typedef UINT32 tBTM_BLE_ENERGY_USED; typedef void (tBTM_BLE_ENERGY_INFO_CBACK)(tBTM_BLE_TX_TIME_MS tx_time, tBTM_BLE_RX_TIME_MS rx_time, - tBTM_BLE_IDLE_TIME_MS idle_time, - tBTM_BLE_ENERGY_USED energy_used, - tBTM_STATUS status); + tBTM_BLE_IDLE_TIME_MS idle_time, + tBTM_BLE_ENERGY_USED energy_used, + tBTM_STATUS status); -typedef struct -{ +typedef struct { tBTM_BLE_ENERGY_INFO_CBACK *p_ener_cback; -}tBTM_BLE_ENERGY_INFO_CB; +} tBTM_BLE_ENERGY_INFO_CB; typedef BOOLEAN (tBTM_BLE_SEL_CBACK)(BD_ADDR random_bda, UINT8 *p_remote_name); typedef void (tBTM_BLE_CTRL_FEATURES_CBACK)(tBTM_STATUS status); @@ -903,9 +865,9 @@ extern "C" { ** Returns TRUE if added OK, else FALSE ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_SecAddBleDevice (BD_ADDR bd_addr, BD_NAME bd_name, - tBT_DEVICE_TYPE dev_type, tBLE_ADDR_TYPE addr_type); + tBT_DEVICE_TYPE dev_type, tBLE_ADDR_TYPE addr_type); /******************************************************************************* ** @@ -922,9 +884,9 @@ BOOLEAN BTM_SecAddBleDevice (BD_ADDR bd_addr, BD_NAME bd_name, ** Returns TRUE if added OK, else FALSE ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_SecAddBleKey (BD_ADDR bd_addr, tBTM_LE_KEY_VALUE *p_le_key, - tBTM_LE_KEY_TYPE key_type); + tBTM_LE_KEY_TYPE key_type); /******************************************************************************* ** @@ -937,9 +899,9 @@ BOOLEAN BTM_SecAddBleKey (BD_ADDR bd_addr, tBTM_LE_KEY_VALUE *p_le_key, ** Returns void ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_BleSetAdvParams(UINT16 adv_int_min, UINT16 adv_int_max, - tBLE_BD_ADDR *p_dir_bda, tBTM_BLE_ADV_CHNL_MAP chnl_map); + tBLE_BD_ADDR *p_dir_bda, tBTM_BLE_ADV_CHNL_MAP chnl_map); @@ -955,8 +917,8 @@ tBTM_STATUS BTM_BleSetAdvParams(UINT16 adv_int_min, UINT16 adv_int_max, ** *******************************************************************************/ tBTM_STATUS BTM_BleSetAdvParamsStartAdv(UINT16 adv_int_min, UINT16 adv_int_max, UINT8 adv_type, - tBLE_ADDR_TYPE own_bda_type, tBLE_BD_ADDR *p_dir_bda, - tBTM_BLE_ADV_CHNL_MAP chnl_map, tBTM_BLE_AFP afp); + tBLE_ADDR_TYPE own_bda_type, tBLE_BD_ADDR *p_dir_bda, + tBTM_BLE_ADV_CHNL_MAP chnl_map, tBTM_BLE_AFP afp); /******************************************************************************* @@ -970,9 +932,9 @@ tBTM_STATUS BTM_BleSetAdvParamsStartAdv(UINT16 adv_int_min, UINT16 adv_int_max, ** Returns void ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_BleWriteAdvData(tBTM_BLE_AD_MASK data_mask, - tBTM_BLE_ADV_DATA *p_data); + tBTM_BLE_ADV_DATA *p_data); BOOLEAN BTM_BleSetRandAddress(BD_ADDR rand_addr); @@ -991,9 +953,9 @@ BOOLEAN BTM_BleSetRandAddress(BD_ADDR rand_addr); ** Returns void ** *******************************************************************************/ -//extern +//extern void BTM_BleReadAdvParams (UINT16 *adv_int_min, UINT16 *adv_int_max, - tBLE_BD_ADDR *p_dir_bda, tBTM_BLE_ADV_CHNL_MAP *p_chnl_map); + tBLE_BD_ADDR *p_dir_bda, tBTM_BLE_ADV_CHNL_MAP *p_chnl_map); /******************************************************************************* ** @@ -1006,7 +968,7 @@ void BTM_BleReadAdvParams (UINT16 *adv_int_min, UINT16 *adv_int_max, ** Returns void ** *******************************************************************************/ -//extern +//extern void BTM_BleObtainVendorCapabilities(tBTM_BLE_VSC_CB *p_cmn_vsc_cb); /******************************************************************************* @@ -1024,10 +986,10 @@ void BTM_BleObtainVendorCapabilities(tBTM_BLE_VSC_CB *p_cmn_vsc_cb); ** Returns void ** *******************************************************************************/ -//extern +//extern void BTM_BleSetScanParams(tGATT_IF client_if, UINT32 scan_interval, - UINT32 scan_window, tBLE_SCAN_MODE scan_type, - tBLE_SCAN_PARAM_SETUP_CBACK scan_setup_status_cback); + UINT32 scan_window, tBLE_SCAN_MODE scan_type, + tBLE_SCAN_PARAM_SETUP_CBACK scan_setup_status_cback); @@ -1041,16 +1003,16 @@ void BTM_BleSetScanParams(tGATT_IF client_if, UINT32 scan_interval, ** scan_interval - Scan interval ** scan_window - Scan window ** scan_type - Scan type -** addr_type_own - owner address type -** scan_filter_policy - scan filter policy +** addr_type_own - owner address type +** scan_filter_policy - scan filter policy ** scan_setup_status_cback - Scan setup status callback ** ** Returns void ** *******************************************************************************/ void BTM_BleSetScanFilterParams(tGATT_IF client_if, UINT32 scan_interval, UINT32 scan_window, - tBLE_SCAN_MODE scan_mode, UINT8 addr_type_own, tBTM_BLE_SFP scan_filter_policy, - tBLE_SCAN_PARAM_SETUP_CBACK scan_setup_status_cback); + tBLE_SCAN_MODE scan_mode, UINT8 addr_type_own, tBTM_BLE_SFP scan_filter_policy, + tBLE_SCAN_PARAM_SETUP_CBACK scan_setup_status_cback); /******************************************************************************* @@ -1064,7 +1026,7 @@ void BTM_BleSetScanFilterParams(tGATT_IF client_if, UINT32 scan_interval, UINT32 ** Returns void ** *******************************************************************************/ -//extern +//extern void BTM_BleGetVendorCapabilities(tBTM_BLE_VSC_CB *p_cmn_vsc_cb); /******************************************************************************* ** @@ -1082,14 +1044,14 @@ void BTM_BleGetVendorCapabilities(tBTM_BLE_VSC_CB *p_cmn_vsc_cb); ** Returns tBTM_STATUS ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_BleSetStorageConfig(UINT8 batch_scan_full_max, - UINT8 batch_scan_trunc_max, - UINT8 batch_scan_notify_threshold, - tBTM_BLE_SCAN_SETUP_CBACK *p_setup_cback, - tBTM_BLE_SCAN_THRESHOLD_CBACK *p_thres_cback, - tBTM_BLE_SCAN_REP_CBACK* p_cback, - tBTM_BLE_REF_VALUE ref_value); + UINT8 batch_scan_trunc_max, + UINT8 batch_scan_notify_threshold, + tBTM_BLE_SCAN_SETUP_CBACK *p_setup_cback, + tBTM_BLE_SCAN_THRESHOLD_CBACK *p_thres_cback, + tBTM_BLE_SCAN_REP_CBACK *p_cback, + tBTM_BLE_REF_VALUE ref_value); /******************************************************************************* ** @@ -1106,12 +1068,12 @@ tBTM_STATUS BTM_BleSetStorageConfig(UINT8 batch_scan_full_max, ** Returns tBTM_STATUS ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_BleEnableBatchScan(tBTM_BLE_BATCH_SCAN_MODE scan_mode, - UINT32 scan_interval, UINT32 scan_window, - tBTM_BLE_DISCARD_RULE discard_rule, - tBLE_ADDR_TYPE addr_type, - tBTM_BLE_REF_VALUE ref_value); + UINT32 scan_interval, UINT32 scan_window, + tBTM_BLE_DISCARD_RULE discard_rule, + tBLE_ADDR_TYPE addr_type, + tBTM_BLE_REF_VALUE ref_value); /******************************************************************************* ** @@ -1124,7 +1086,7 @@ tBTM_STATUS BTM_BleEnableBatchScan(tBTM_BLE_BATCH_SCAN_MODE scan_mode, ** Returns void ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_BleDisableBatchScan(tBTM_BLE_REF_VALUE ref_value); /******************************************************************************* @@ -1139,9 +1101,9 @@ tBTM_STATUS BTM_BleDisableBatchScan(tBTM_BLE_REF_VALUE ref_value); ** Returns tBTM_STATUS ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_BleReadScanReports(tBLE_SCAN_MODE scan_mode, - tBTM_BLE_REF_VALUE ref_value); + tBTM_BLE_REF_VALUE ref_value); /******************************************************************************* ** @@ -1155,9 +1117,9 @@ tBTM_STATUS BTM_BleReadScanReports(tBLE_SCAN_MODE scan_mode, ** Returns tBTM_STATUS ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_BleTrackAdvertiser(tBTM_BLE_TRACK_ADV_CBACK *p_track_cback, - tBTM_BLE_REF_VALUE ref_value); + tBTM_BLE_REF_VALUE ref_value); /******************************************************************************* ** @@ -1170,9 +1132,9 @@ tBTM_STATUS BTM_BleTrackAdvertiser(tBTM_BLE_TRACK_ADV_CBACK *p_track_cback, ** Returns status ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_BleWriteScanRsp(tBTM_BLE_AD_MASK data_mask, - tBTM_BLE_ADV_DATA *p_data); + tBTM_BLE_ADV_DATA *p_data); /******************************************************************************* ** @@ -1186,9 +1148,9 @@ tBTM_STATUS BTM_BleWriteScanRsp(tBTM_BLE_AD_MASK data_mask, ** Returns void ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_BleObserve(BOOLEAN start, UINT8 duration, - tBTM_INQ_RESULTS_CB *p_results_cb, tBTM_CMPL_CB *p_cmpl_cb); + tBTM_INQ_RESULTS_CB *p_results_cb, tBTM_CMPL_CB *p_cmpl_cb); /******************************************************************************* @@ -1202,7 +1164,7 @@ tBTM_STATUS BTM_BleObserve(BOOLEAN start, UINT8 duration, ** the local device ER is copied into er ** *******************************************************************************/ -//extern +//extern void BTM_GetDeviceIDRoot (BT_OCTET16 ir); /******************************************************************************* @@ -1216,7 +1178,7 @@ void BTM_GetDeviceIDRoot (BT_OCTET16 ir); ** the local device ER is copied into er ** *******************************************************************************/ -//extern +//extern void BTM_GetDeviceEncRoot (BT_OCTET16 er); /******************************************************************************* @@ -1229,7 +1191,7 @@ void BTM_GetDeviceEncRoot (BT_OCTET16 er); ** the local device DHK is copied into dhk ** *******************************************************************************/ -//extern +//extern void BTM_GetDeviceDHK (BT_OCTET16 dhk); /******************************************************************************* @@ -1245,7 +1207,7 @@ void BTM_GetDeviceDHK (BT_OCTET16 dhk); ** Returns None ** *******************************************************************************/ -//extern +//extern void BTM_SecurityGrant(BD_ADDR bd_addr, UINT8 res); /******************************************************************************* @@ -1261,7 +1223,7 @@ void BTM_SecurityGrant(BD_ADDR bd_addr, UINT8 res); ** BTM_MIN_PASSKEY_VAL(0) - BTM_MAX_PASSKEY_VAL(999999(0xF423F)). ** *******************************************************************************/ -//extern +//extern void BTM_BlePasskeyReply (BD_ADDR bd_addr, UINT8 res, UINT32 passkey); /******************************************************************************* @@ -1276,7 +1238,7 @@ void BTM_BlePasskeyReply (BD_ADDR bd_addr, UINT8 res, UINT32 passkey); ** res - comparison result BTM_SUCCESS if success ** *******************************************************************************/ -//extern +//extern void BTM_BleConfirmReply (BD_ADDR bd_addr, UINT8 res); /******************************************************************************* @@ -1291,7 +1253,7 @@ void BTM_BleConfirmReply (BD_ADDR bd_addr, UINT8 res); ** p_data - simple pairing Randomizer C. ** *******************************************************************************/ -//extern +//extern void BTM_BleOobDataReply(BD_ADDR bd_addr, UINT8 res, UINT8 len, UINT8 *p_data); @@ -1311,9 +1273,9 @@ void BTM_BleOobDataReply(BD_ADDR bd_addr, UINT8 res, UINT8 len, UINT8 *p_data); ** Returns TRUE if signing sucessul, otherwise FALSE. ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_BleDataSignature (BD_ADDR bd_addr, UINT8 *p_text, UINT16 len, - BLE_SIGNATURE signature); + BLE_SIGNATURE signature); /******************************************************************************* ** @@ -1330,10 +1292,10 @@ BOOLEAN BTM_BleDataSignature (BD_ADDR bd_addr, UINT8 *p_text, UINT16 len, ** Returns TRUE if signature verified correctly; otherwise FALSE. ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_BleVerifySignature (BD_ADDR bd_addr, UINT8 *p_orig, - UINT16 len, UINT32 counter, - UINT8 *p_comp); + UINT16 len, UINT32 counter, + UINT8 *p_comp); /******************************************************************************* ** @@ -1345,9 +1307,9 @@ BOOLEAN BTM_BleVerifySignature (BD_ADDR bd_addr, UINT8 *p_orig, ** Returns void ** *******************************************************************************/ -//extern +//extern void BTM_ReadConnectionAddr (BD_ADDR remote_bda, BD_ADDR local_conn_addr, - tBLE_ADDR_TYPE *p_addr_type); + tBLE_ADDR_TYPE *p_addr_type); @@ -1361,10 +1323,10 @@ void BTM_ReadConnectionAddr (BD_ADDR remote_bda, BD_ADDR local_conn_addr, ** Returns void ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_ReadRemoteConnectionAddr(BD_ADDR pseudo_addr, - BD_ADDR conn_addr, - tBLE_ADDR_TYPE *p_addr_type); + BD_ADDR conn_addr, + tBLE_ADDR_TYPE *p_addr_type); /******************************************************************************* ** @@ -1379,7 +1341,7 @@ BOOLEAN BTM_ReadRemoteConnectionAddr(BD_ADDR pseudo_addr, ** Returns non2. ** *******************************************************************************/ -//extern +//extern void BTM_BleLoadLocalKeys(UINT8 key_type, tBTM_BLE_LOCAL_KEYS *p_key); @@ -1397,9 +1359,9 @@ void BTM_BleLoadLocalKeys(UINT8 key_type, tBTM_BLE_LOCAL_KEYS *p_key); ** Returns void ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_BleSetBgConnType(tBTM_BLE_CONN_TYPE conn_type, - tBTM_BLE_SEL_CBACK *p_select_cback); + tBTM_BLE_SEL_CBACK *p_select_cback); /******************************************************************************* ** @@ -1416,7 +1378,7 @@ BOOLEAN BTM_BleSetBgConnType(tBTM_BLE_CONN_TYPE conn_type, ** Returns void ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_BleUpdateBgConnDev(BOOLEAN add_remove, BD_ADDR remote_bda); /******************************************************************************* @@ -1432,7 +1394,7 @@ BOOLEAN BTM_BleUpdateBgConnDev(BOOLEAN add_remove, BD_ADDR remote_bda); ** Returns void ** *******************************************************************************/ -//extern +//extern void BTM_BleClearBgConnDev(void); /******************************************************** @@ -1453,10 +1415,10 @@ void BTM_BleClearBgConnDev(void); ** Returns void ** *******************************************************************************/ -//extern +//extern void BTM_BleSetPrefConnParams (BD_ADDR bd_addr, - UINT16 min_conn_int, UINT16 max_conn_int, - UINT16 slave_latency, UINT16 supervision_tout); + UINT16 min_conn_int, UINT16 max_conn_int, + UINT16 slave_latency, UINT16 supervision_tout); /****************************************************************************** ** @@ -1470,7 +1432,7 @@ void BTM_BleSetPrefConnParams (BD_ADDR bd_addr, ** Returns void ** *******************************************************************************/ -//extern +//extern void BTM_BleSetConnScanParams (UINT32 scan_interval, UINT32 scan_window); /****************************************************************************** @@ -1484,7 +1446,7 @@ void BTM_BleSetConnScanParams (UINT32 scan_interval, UINT32 scan_window); ** Returns void ** *******************************************************************************/ -//extern +//extern void BTM_BleReadControllerFeatures(tBTM_BLE_CTRL_FEATURES_CBACK *p_vsc_cback); /******************************************************************************* @@ -1500,7 +1462,7 @@ void BTM_BleReadControllerFeatures(tBTM_BLE_CTRL_FEATURES_CBACK *p_vsc_cback); ** Returns pointer of ADV data ** *******************************************************************************/ -//extern +//extern UINT8 *BTM_CheckAdvData( UINT8 *p_adv, UINT8 type, UINT8 *p_length); /******************************************************************************* @@ -1526,7 +1488,7 @@ UINT16 BTM_BleReadDiscoverability(); ** Returns BTM_BLE_NON_CONNECTABLE or BTM_BLE_CONNECTABLE ** *******************************************************************************/ -//extern +//extern UINT16 BTM_BleReadConnectability (); /******************************************************************************* @@ -1541,9 +1503,9 @@ UINT16 BTM_BleReadConnectability (); ** p_addr_type: output parameter to read the address type. ** *******************************************************************************/ -//extern +//extern void BTM_ReadDevInfo (BD_ADDR remote_bda, tBT_DEVICE_TYPE *p_dev_type, - tBLE_ADDR_TYPE *p_addr_type); + tBLE_ADDR_TYPE *p_addr_type); /******************************************************************************* @@ -1559,9 +1521,9 @@ void BTM_ReadDevInfo (BD_ADDR remote_bda, tBT_DEVICE_TYPE *p_dev_type, ** Return TRUE if an active link is identified; FALSE otherwise ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_ReadConnectedTransportAddress(BD_ADDR remote_bda, - tBT_TRANSPORT transport); + tBT_TRANSPORT transport); /******************************************************************************* ** @@ -1574,7 +1536,7 @@ BOOLEAN BTM_ReadConnectedTransportAddress(BD_ADDR remote_bda, ** Returns status. ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_BleBroadcast(BOOLEAN start); /******************************************************************************* @@ -1589,7 +1551,7 @@ tBTM_STATUS BTM_BleBroadcast(BOOLEAN start); ** Returns BOOLEAN privacy mode set success; otherwise failed. ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_BleConfigPrivacy(BOOLEAN enable); /******************************************************************************* @@ -1601,7 +1563,7 @@ BOOLEAN BTM_BleConfigPrivacy(BOOLEAN enable); ** Returns Return TRUE if local privacy is enabled else FALSE ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_BleLocalPrivacyEnabled(void); /******************************************************************************* @@ -1616,7 +1578,7 @@ BOOLEAN BTM_BleLocalPrivacyEnabled(void); ** Returns void ** *******************************************************************************/ -//extern +//extern void BTM_BleEnableMixedPrivacyMode(BOOLEAN mixed_on); /******************************************************************************* @@ -1628,7 +1590,7 @@ void BTM_BleEnableMixedPrivacyMode(BOOLEAN mixed_on); ** Returns Max multi adv instance count ** *******************************************************************************/ -//extern +//extern UINT8 BTM_BleMaxMultiAdvInstanceCount(); /******************************************************************************* @@ -1646,7 +1608,7 @@ UINT8 BTM_BleMaxMultiAdvInstanceCount(); ** BTM_SUCCESS is status set successfully; otherwise failure. ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_BleSetConnectableMode(tBTM_BLE_CONN_MODE connectable_mode); /******************************************************************************* @@ -1662,9 +1624,9 @@ tBTM_STATUS BTM_BleSetConnectableMode(tBTM_BLE_CONN_MODE connectable_mode); ** Returns void ** *******************************************************************************/ -//extern +//extern void BTM_BleTurnOnPrivacyOnRemote(BD_ADDR bd_addr, - BOOLEAN privacy_on); + BOOLEAN privacy_on); /******************************************************************************* ** @@ -1675,7 +1637,7 @@ void BTM_BleTurnOnPrivacyOnRemote(BD_ADDR bd_addr, ** Returns void ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_BleUpdateAdvWhitelist(BOOLEAN add_remove, BD_ADDR emote_bda); /******************************************************************************* @@ -1688,7 +1650,7 @@ BOOLEAN BTM_BleUpdateAdvWhitelist(BOOLEAN add_remove, BD_ADDR emote_bda); ** ** Return void *******************************************************************************/ -//extern +//extern void BTM_BleUpdateAdvFilterPolicy(tBTM_BLE_AFP adv_policy); /******************************************************************************* @@ -1717,7 +1679,7 @@ void BTM_BleReceiverTest(UINT8 rx_freq, tBTM_CMPL_CB *p_cmd_cmpl_cback); ** *******************************************************************************/ void BTM_BleTransmitterTest(UINT8 tx_freq, UINT8 test_data_len, - UINT8 packet_payload, tBTM_CMPL_CB *p_cmd_cmpl_cback); + UINT8 packet_payload, tBTM_CMPL_CB *p_cmd_cmpl_cback); /******************************************************************************* ** @@ -1739,7 +1701,7 @@ void BTM_BleTestEnd(tBTM_CMPL_CB *p_cmd_cmpl_cback); ** Returns TRUE to use LE, FALSE use BR/EDR. ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_UseLeLink (BD_ADDR bd_addr); /******************************************************************************* @@ -1754,7 +1716,7 @@ BOOLEAN BTM_UseLeLink (BD_ADDR bd_addr); ** Returns TRUE if added OK, else FALSE ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_BleStackEnable (BOOLEAN enable); /******************************************************************************* @@ -1767,10 +1729,10 @@ tBTM_STATUS BTM_BleStackEnable (BOOLEAN enable); ** Returns BOOLEAN TRUE if LE device is found, FALSE otherwise. ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_GetLeSecurityState (BD_ADDR bd_addr, - UINT8 *p_le_dev_sec_flags, - UINT8 *p_le_key_size); + UINT8 *p_le_dev_sec_flags, + UINT8 *p_le_key_size); /******************************************************************************* ** @@ -1782,7 +1744,7 @@ BOOLEAN BTM_GetLeSecurityState (BD_ADDR bd_addr, ** Returns BOOLEAN TRUE if security procedure is running, FALSE otherwise. ** *******************************************************************************/ -//extern +//extern BOOLEAN BTM_BleSecurityProcedureIsRunning (BD_ADDR bd_addr); /******************************************************************************* @@ -1796,7 +1758,7 @@ BOOLEAN BTM_BleSecurityProcedureIsRunning (BD_ADDR bd_addr); ** Returns the key size or 0 if the size can't be retrieved. ** *******************************************************************************/ -//extern +//extern UINT8 BTM_BleGetSupportedKeySize (BD_ADDR bd_addr); /*******************************************************************************/ @@ -1816,7 +1778,7 @@ UINT8 BTM_BleGetSupportedKeySize (BD_ADDR bd_addr); ** Returns status ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_BleEnableAdvInstance (tBTM_BLE_ADV_PARAMS *p_params, tBTM_BLE_MULTI_ADV_CBACK *p_cback, void *p_ref); @@ -1834,7 +1796,7 @@ tBTM_STATUS BTM_BleEnableAdvInstance (tBTM_BLE_ADV_PARAMS *p_params, ** Returns status ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_BleUpdateAdvInstParam (UINT8 inst_id, tBTM_BLE_ADV_PARAMS *p_params); /******************************************************************************* @@ -1852,10 +1814,10 @@ tBTM_STATUS BTM_BleUpdateAdvInstParam (UINT8 inst_id, tBTM_BLE_ADV_PARAMS *p_par ** Returns status ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_BleCfgAdvInstData (UINT8 inst_id, BOOLEAN is_scan_rsp, - tBTM_BLE_AD_MASK data_mask, - tBTM_BLE_ADV_DATA *p_data); + tBTM_BLE_AD_MASK data_mask, + tBTM_BLE_ADV_DATA *p_data); /******************************************************************************* ** @@ -1868,7 +1830,7 @@ tBTM_STATUS BTM_BleCfgAdvInstData (UINT8 inst_id, BOOLEAN is_scan_rsp, ** Returns status ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_BleDisableAdvInstance (UINT8 inst_id); /******************************************************************************* @@ -1885,12 +1847,12 @@ tBTM_STATUS BTM_BleDisableAdvInstance (UINT8 inst_id); ** Returns void ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_BleAdvFilterParamSetup(int action, - tBTM_BLE_PF_FILT_INDEX filt_index, - tBTM_BLE_PF_FILT_PARAMS *p_filt_params, - tBLE_BD_ADDR *p_target, tBTM_BLE_PF_PARAM_CBACK *p_cmpl_cback, - tBTM_BLE_REF_VALUE ref_value); + tBTM_BLE_PF_FILT_INDEX filt_index, + tBTM_BLE_PF_FILT_PARAMS *p_filt_params, + tBLE_BD_ADDR *p_target, tBTM_BLE_PF_PARAM_CBACK *p_cmpl_cback, + tBTM_BLE_REF_VALUE ref_value); /******************************************************************************* ** @@ -1906,7 +1868,7 @@ tBTM_STATUS BTM_BleAdvFilterParamSetup(int action, ** Returns tBTM_STATUS ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_BleCfgFilterCondition(tBTM_BLE_SCAN_COND_OP action, tBTM_BLE_PF_COND_TYPE cond_type, tBTM_BLE_PF_FILT_INDEX filt_index, @@ -1926,10 +1888,10 @@ tBTM_STATUS BTM_BleCfgFilterCondition(tBTM_BLE_SCAN_COND_OP action, ** Returns tBTM_STATUS ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_BleEnableDisableFilterFeature(UINT8 enable, - tBTM_BLE_PF_STATUS_CBACK *p_stat_cback, - tBTM_BLE_REF_VALUE ref_value); + tBTM_BLE_PF_STATUS_CBACK *p_stat_cback, + tBTM_BLE_REF_VALUE ref_value); /******************************************************************************* ** @@ -1942,7 +1904,7 @@ tBTM_STATUS BTM_BleEnableDisableFilterFeature(UINT8 enable, ** Returns status ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_BleGetEnergyInfo(tBTM_BLE_ENERGY_INFO_CBACK *p_ener_cback); /******************************************************************************* @@ -1954,7 +1916,7 @@ tBTM_STATUS BTM_BleGetEnergyInfo(tBTM_BLE_ENERGY_INFO_CBACK *p_ener_cback); ** Returns BTM_SUCCESS if success; otherwise failed. ** *******************************************************************************/ -//extern +//extern tBTM_STATUS BTM_SetBleDataLength(BD_ADDR bd_addr, UINT16 tx_pdu_length); /* diff --git a/components/bt/bluedroid/stack/include/btm_ble_int.h b/components/bt/bluedroid/stack/include/btm_ble_int.h old mode 100755 new mode 100644 index d44737fd77..8345777c1a --- a/components/bt/bluedroid/stack/include/btm_ble_int.h +++ b/components/bt/bluedroid/stack/include/btm_ble_int.h @@ -101,20 +101,18 @@ typedef UINT8 tBTM_BLE_SEC_REQ_ACT; #define BTM_VSC_CHIP_CAPABILITY_L_VERSION 55 #define BTM_VSC_CHIP_CAPABILITY_M_VERSION 95 -typedef struct -{ +typedef struct { UINT16 data_mask; UINT8 *p_flags; UINT8 ad_data[BTM_BLE_AD_DATA_LEN]; UINT8 *p_pad; -}tBTM_BLE_LOCAL_ADV_DATA; +} tBTM_BLE_LOCAL_ADV_DATA; -typedef struct -{ +typedef struct { UINT32 inq_count; /* Used for determining if a response has already been */ - /* received for the current inquiry operation. (We do not */ - /* want to flood the caller with multiple responses from */ - /* the same device. */ + /* received for the current inquiry operation. (We do not */ + /* want to flood the caller with multiple responses from */ + /* the same device. */ BOOLEAN scan_rsp; tBLE_BD_ADDR le_bda; } tINQ_LE_BDADDR; @@ -126,8 +124,7 @@ typedef struct #define BTM_BLE_PRIVATE_ADDR_INT 900 /* 15 minutes minimum for random address refreshing */ -typedef struct -{ +typedef struct { UINT16 discoverable_mode; UINT16 connectable_mode; UINT32 scan_window; @@ -164,13 +161,12 @@ typedef struct /* random address resolving complete callback */ -typedef void (tBTM_BLE_RESOLVE_CBACK) (void * match_rec, void *p); +typedef void (tBTM_BLE_RESOLVE_CBACK) (void *match_rec, void *p); typedef void (tBTM_BLE_ADDR_CBACK) (BD_ADDR_PTR static_random, void *p); /* random address management control block */ -typedef struct -{ +typedef struct { tBLE_ADDR_TYPE own_addr_type; /* local device LE address type */ BD_ADDR private_addr; BD_ADDR random_bda; @@ -184,25 +180,23 @@ typedef struct #define BTM_BLE_MAX_BG_CONN_DEV_NUM 10 -typedef struct -{ +typedef struct { UINT16 min_conn_int; UINT16 max_conn_int; UINT16 slave_latency; UINT16 supervision_tout; -}tBTM_LE_CONN_PRAMS; +} tBTM_LE_CONN_PRAMS; -typedef struct -{ +typedef struct { BD_ADDR bd_addr; UINT8 attr; BOOLEAN is_connected; BOOLEAN in_use; -}tBTM_LE_BG_CONN_DEV; +} tBTM_LE_BG_CONN_DEV; - /* white list using state as a bit mask */ +/* white list using state as a bit mask */ #define BTM_BLE_WL_IDLE 0 #define BTM_BLE_WL_INIT 1 #define BTM_BLE_WL_SCAN 2 @@ -223,10 +217,9 @@ typedef UINT8 tBTM_BLE_RL_STATE; #define BLE_CONN_CANCEL 3 typedef UINT8 tBTM_BLE_CONN_ST; -typedef struct -{ +typedef struct { void *p_param; -}tBTM_BLE_CONN_REQ; +} tBTM_BLE_CONN_REQ; /* LE state request */ #define BTM_BLE_STATE_INVALID 0 @@ -264,21 +257,19 @@ typedef UINT16 tBTM_BLE_STATE_MASK; #define BTM_LE_RESOLVING_LIST_MAX 0x20 #endif -typedef struct -{ +typedef struct { BD_ADDR *resolve_q_random_pseudo; UINT8 *resolve_q_action; UINT8 q_next; UINT8 q_pending; } tBTM_BLE_RESOLVE_Q; -typedef struct -{ +typedef struct { BOOLEAN in_use; BOOLEAN to_add; BD_ADDR bd_addr; UINT8 attr; -}tBTM_BLE_WL_OP; +} tBTM_BLE_WL_OP; /* BLE privacy mode */ #define BTM_PRIVACY_NONE 0 /* BLE no privacy */ @@ -292,8 +283,7 @@ typedef void (tBTM_DATA_LENGTH_CHANGE_CBACK) (UINT16 max_tx_length, UINT16 max_r /* Define BLE Device Management control structure */ -typedef struct -{ +typedef struct { UINT8 scan_activity; /* LE scan activity mask */ /***************************************************** @@ -359,19 +349,19 @@ void btm_clear_all_pending_le_entry(void); void btm_ble_stop_scan(); BOOLEAN btm_ble_send_extended_scan_params(UINT8 scan_type, UINT32 scan_int, - UINT32 scan_win, UINT8 addr_type_own, - UINT8 scan_filter_policy); + UINT32 scan_win, UINT8 addr_type_own, + UINT8 scan_filter_policy); void btm_ble_stop_inquiry(void); void btm_ble_init (void); void btm_ble_connected (UINT8 *bda, UINT16 handle, UINT8 enc_mode, UINT8 role, tBLE_ADDR_TYPE addr_type, BOOLEAN addr_matched); void btm_ble_read_remote_features_complete(UINT8 *p); -void btm_ble_write_adv_enable_complete(UINT8 * p); +void btm_ble_write_adv_enable_complete(UINT8 *p); void btm_ble_conn_complete(UINT8 *p, UINT16 evt_len, BOOLEAN enhanced); void btm_read_ble_local_supported_states_complete(UINT8 *p, UINT16 evt_len); tBTM_BLE_CONN_ST btm_ble_get_conn_st(void); void btm_ble_set_conn_st(tBTM_BLE_CONN_ST new_st); UINT8 *btm_ble_build_adv_data(tBTM_BLE_AD_MASK *p_data_mask, UINT8 **p_dst, - tBTM_BLE_ADV_DATA *p_data); + tBTM_BLE_ADV_DATA *p_data); tBTM_STATUS btm_ble_start_adv(void); tBTM_STATUS btm_ble_stop_adv(void); tBTM_STATUS btm_ble_start_scan(void); @@ -419,7 +409,7 @@ BOOLEAN btm_ble_suspend_bg_conn(void); BOOLEAN btm_ble_resume_bg_conn(void); void btm_ble_initiate_select_conn(BD_ADDR bda); BOOLEAN btm_ble_start_auto_conn(BOOLEAN start); -BOOLEAN btm_ble_start_select_conn(BOOLEAN start,tBTM_BLE_SEL_CBACK *p_select_cback); +BOOLEAN btm_ble_start_select_conn(BOOLEAN start, tBTM_BLE_SEL_CBACK *p_select_cback); BOOLEAN btm_ble_renew_bg_conn_params(BOOLEAN add, BD_ADDR bd_addr); void btm_write_dir_conn_wl(BD_ADDR target_addr); void btm_ble_update_mode_operation(UINT8 link_role, BD_ADDR bda, UINT8 status); @@ -433,7 +423,7 @@ void btm_ble_enqueue_direct_conn_req(void *p_param); /* BLE address management */ void btm_gen_resolvable_private_addr (void *p_cmd_cplt_cback); void btm_gen_non_resolvable_private_addr (tBTM_BLE_ADDR_CBACK *p_cback, void *p); -void btm_ble_resolve_random_addr(BD_ADDR random_bda, tBTM_BLE_RESOLVE_CBACK * p_cback, void *p); +void btm_ble_resolve_random_addr(BD_ADDR random_bda, tBTM_BLE_RESOLVE_CBACK *p_cback, void *p); void btm_gen_resolve_paddr_low(tBTM_RAND_ENC *p); /* privacy function */ @@ -457,7 +447,7 @@ void btm_ble_resolving_list_cleanup(void); void btm_ble_multi_adv_configure_rpa (tBTM_BLE_MULTI_ADV_INST *p_inst); void btm_ble_multi_adv_init(void); -void* btm_ble_multi_adv_get_ref(UINT8 inst_id); +void *btm_ble_multi_adv_get_ref(UINT8 inst_id); void btm_ble_multi_adv_cleanup(void); void btm_ble_multi_adv_reenable(UINT8 inst_id); void btm_ble_multi_adv_enb_privacy(BOOLEAN enable); diff --git a/components/bt/bluedroid/stack/include/btm_int.h b/components/bt/bluedroid/stack/include/btm_int.h old mode 100755 new mode 100644 index acc0e05a03..827114f0ce --- a/components/bt/bluedroid/stack/include/btm_int.h +++ b/components/bt/bluedroid/stack/include/btm_int.h @@ -75,25 +75,24 @@ typedef char tBTM_LOC_BD_NAME[BTM_MAX_LOC_BD_NAME_LEN + 1]; /* Define the ACL Management control structure */ -typedef struct -{ - UINT16 hci_handle; - UINT16 pkt_types_mask; - UINT16 clock_offset; - BD_ADDR remote_addr; - DEV_CLASS remote_dc; - BD_NAME remote_name; +typedef struct { +UINT16 hci_handle; +UINT16 pkt_types_mask; +UINT16 clock_offset; +BD_ADDR remote_addr; +DEV_CLASS remote_dc; +BD_NAME remote_name; - UINT16 manufacturer; - UINT16 lmp_subversion; - UINT16 link_super_tout; - BD_FEATURES peer_lmp_features[HCI_EXT_FEATURES_PAGE_MAX + 1]; /* Peer LMP Extended features mask table for the device */ - UINT8 num_read_pages; - UINT8 lmp_version; +UINT16 manufacturer; +UINT16 lmp_subversion; +UINT16 link_super_tout; +BD_FEATURES peer_lmp_features[HCI_EXT_FEATURES_PAGE_MAX + 1]; /* Peer LMP Extended features mask table for the device */ +UINT8 num_read_pages; +UINT8 lmp_version; - BOOLEAN in_use; - UINT8 link_role; - BOOLEAN link_up_issued; /* True if busy_level link up has been issued */ +BOOLEAN in_use; +UINT8 link_role; +BOOLEAN link_up_issued; /* True if busy_level link up has been issued */ #define BTM_ACL_SWKEY_STATE_IDLE 0 #define BTM_ACL_SWKEY_STATE_MODE_CHANGE 1 @@ -101,21 +100,21 @@ typedef struct #define BTM_ACL_SWKEY_STATE_SWITCHING 3 #define BTM_ACL_SWKEY_STATE_ENCRYPTION_ON 4 #define BTM_ACL_SWKEY_STATE_IN_PROGRESS 5 - UINT8 switch_role_state; +UINT8 switch_role_state; #define BTM_ACL_ENCRYPT_STATE_IDLE 0 #define BTM_ACL_ENCRYPT_STATE_ENCRYPT_OFF 1 /* encryption turning off */ #define BTM_ACL_ENCRYPT_STATE_TEMP_FUNC 2 /* temporarily off for change link key or role switch */ #define BTM_ACL_ENCRYPT_STATE_ENCRYPT_ON 3 /* encryption turning on */ - UINT8 encrypt_state; /* overall BTM encryption state */ +UINT8 encrypt_state; /* overall BTM encryption state */ #if BLE_INCLUDED == TRUE - tBT_TRANSPORT transport; - BD_ADDR conn_addr; /* local device address used for this connection */ - UINT8 conn_addr_type; /* local device address type for this connection */ - BD_ADDR active_remote_addr; /* remote address used on this connection */ - UINT8 active_remote_addr_type; /* local device address type for this connection */ - BD_FEATURES peer_le_features; /* Peer LE Used features mask for the device */ +tBT_TRANSPORT transport; +BD_ADDR conn_addr; /* local device address used for this connection */ +UINT8 conn_addr_type; /* local device address type for this connection */ +BD_ADDR active_remote_addr; /* remote address used on this connection */ +UINT8 active_remote_addr_type; /* local device address type for this connection */ +BD_FEATURES peer_le_features; /* Peer LE Used features mask for the device */ #endif @@ -130,48 +129,47 @@ typedef struct /* Define the Device Management control structure */ -typedef struct -{ - tBTM_DEV_STATUS_CB *p_dev_status_cb; /* Device status change callback */ - tBTM_VS_EVT_CB *p_vend_spec_cb[BTM_MAX_VSE_CALLBACKS]; /* Register for vendor specific events */ +typedef struct { +tBTM_DEV_STATUS_CB *p_dev_status_cb; /* Device status change callback */ +tBTM_VS_EVT_CB *p_vend_spec_cb[BTM_MAX_VSE_CALLBACKS]; /* Register for vendor specific events */ - tBTM_CMPL_CB *p_stored_link_key_cmpl_cb; /* Read/Write/Delete stored link key */ +tBTM_CMPL_CB *p_stored_link_key_cmpl_cb; /* Read/Write/Delete stored link key */ - TIMER_LIST_ENT reset_timer; - tBTM_CMPL_CB *p_reset_cmpl_cb; +TIMER_LIST_ENT reset_timer; +tBTM_CMPL_CB *p_reset_cmpl_cb; - TIMER_LIST_ENT rln_timer; - tBTM_CMPL_CB *p_rln_cmpl_cb; /* Callback function to be called when */ - /* read local name function complete */ - TIMER_LIST_ENT rssi_timer; - tBTM_CMPL_CB *p_rssi_cmpl_cb; /* Callback function to be called when */ - /* read rssi function completes */ - TIMER_LIST_ENT lnk_quality_timer; - tBTM_CMPL_CB *p_lnk_qual_cmpl_cb;/* Callback function to be called when */ - /* read link quality function completes */ - TIMER_LIST_ENT txpwer_timer; - tBTM_CMPL_CB *p_txpwer_cmpl_cb; /* Callback function to be called when */ - /* read inq tx power function completes */ +TIMER_LIST_ENT rln_timer; +tBTM_CMPL_CB *p_rln_cmpl_cb; /* Callback function to be called when */ +/* read local name function complete */ +TIMER_LIST_ENT rssi_timer; +tBTM_CMPL_CB *p_rssi_cmpl_cb; /* Callback function to be called when */ +/* read rssi function completes */ +TIMER_LIST_ENT lnk_quality_timer; +tBTM_CMPL_CB *p_lnk_qual_cmpl_cb;/* Callback function to be called when */ +/* read link quality function completes */ +TIMER_LIST_ENT txpwer_timer; +tBTM_CMPL_CB *p_txpwer_cmpl_cb; /* Callback function to be called when */ +/* read inq tx power function completes */ - TIMER_LIST_ENT qossu_timer; - tBTM_CMPL_CB *p_qossu_cmpl_cb; /* Callback function to be called when */ - /* qos setup function completes */ +TIMER_LIST_ENT qossu_timer; +tBTM_CMPL_CB *p_qossu_cmpl_cb; /* Callback function to be called when */ +/* qos setup function completes */ - tBTM_ROLE_SWITCH_CMPL switch_role_ref_data; - tBTM_CMPL_CB *p_switch_role_cb; /* Callback function to be called when */ - /* requested switch role is completed */ +tBTM_ROLE_SWITCH_CMPL switch_role_ref_data; +tBTM_CMPL_CB *p_switch_role_cb; /* Callback function to be called when */ +/* requested switch role is completed */ - TIMER_LIST_ENT tx_power_timer; - tBTM_CMPL_CB *p_tx_power_cmpl_cb;/* Callback function to be called */ +TIMER_LIST_ENT tx_power_timer; +tBTM_CMPL_CB *p_tx_power_cmpl_cb;/* Callback function to be called */ - DEV_CLASS dev_class; /* Local device class */ +DEV_CLASS dev_class; /* Local device class */ #if BLE_INCLUDED == TRUE - tBTM_CMPL_CB *p_le_test_cmd_cmpl_cb; /* Callback function to be called when +tBTM_CMPL_CB *p_le_test_cmd_cmpl_cb; /* Callback function to be called when LE test mode command has been sent successfully */ - BD_ADDR read_tx_pwr_addr; /* read TX power target address */ +BD_ADDR read_tx_pwr_addr; /* read TX power target address */ #define BTM_LE_SUPPORT_STATE_SIZE 8 UINT8 le_supported_states[BTM_LE_SUPPORT_STATE_SIZE]; @@ -180,20 +178,20 @@ tBTM_BLE_LOCAL_ID_KEYS id_keys; /* local BLE ID keys */ BT_OCTET16 ble_encryption_key_value; /* BLE encryption key */ #if BTM_BLE_CONFORMANCE_TESTING == TRUE - BOOLEAN no_disc_if_pair_fail; - BOOLEAN enable_test_mac_val; - BT_OCTET8 test_mac; - BOOLEAN enable_test_local_sign_cntr; - UINT32 test_local_sign_cntr; +BOOLEAN no_disc_if_pair_fail; +BOOLEAN enable_test_mac_val; +BT_OCTET8 test_mac; +BOOLEAN enable_test_local_sign_cntr; +UINT32 test_local_sign_cntr; #endif #endif /* BLE_INCLUDED */ - tBTM_IO_CAP loc_io_caps; /* IO capability of the local device */ - tBTM_AUTH_REQ loc_auth_req; /* the auth_req flag */ - BOOLEAN secure_connections_only; /* Rejects service level 0 connections if */ - /* itself or peer device doesn't support */ - /* secure connections */ +tBTM_IO_CAP loc_io_caps; /* IO capability of the local device */ +tBTM_AUTH_REQ loc_auth_req; /* the auth_req flag */ +BOOLEAN secure_connections_only; /* Rejects service level 0 connections if */ +/* itself or peer device doesn't support */ +/* secure connections */ } tBTM_DEVCB; @@ -211,42 +209,38 @@ BT_OCTET16 ble_encryption_key_value; /* BLE encryption key */ #define BTM_MIN_INQ_TX_POWER -70 #define BTM_MAX_INQ_TX_POWER 20 -typedef struct -{ - UINT32 inq_count; /* Used for determining if a response has already been */ - /* received for the current inquiry operation. (We do not */ - /* want to flood the caller with multiple responses from */ - /* the same device. */ - BD_ADDR bd_addr; +typedef struct { +UINT32 inq_count; /* Used for determining if a response has already been */ +/* received for the current inquiry operation. (We do not */ +/* want to flood the caller with multiple responses from */ +/* the same device. */ +BD_ADDR bd_addr; } tINQ_BDADDR; -typedef struct -{ - UINT32 time_of_resp; - UINT32 inq_count; /* "timestamps" the entry with a particular inquiry count */ - /* Used for determining if a response has already been */ - /* received for the current inquiry operation. (We do not */ - /* want to flood the caller with multiple responses from */ - /* the same device. */ - tBTM_INQ_INFO inq_info; - BOOLEAN in_use; +typedef struct { +UINT32 time_of_resp; +UINT32 inq_count; /* "timestamps" the entry with a particular inquiry count */ +/* Used for determining if a response has already been */ +/* received for the current inquiry operation. (We do not */ +/* want to flood the caller with multiple responses from */ +/* the same device. */ +tBTM_INQ_INFO inq_info; +BOOLEAN in_use; #if (BLE_INCLUDED == TRUE) - BOOLEAN scan_rsp; +BOOLEAN scan_rsp; #endif } tINQ_DB_ENT; -enum -{ - INQ_NONE, - INQ_LE_OBSERVE, - INQ_GENERAL +enum { +INQ_NONE, +INQ_LE_OBSERVE, +INQ_GENERAL }; typedef UINT8 tBTM_INQ_TYPE; -typedef struct -{ +typedef struct { tBTM_CMPL_CB *p_remname_cmpl_cb; #define BTM_EXT_RMT_NAME_TIMEOUT 40 @@ -277,8 +271,8 @@ typedef struct tBTM_INQ_RESULTS_CB *p_inq_ble_results_cb;/*results callback exclusively for LE observe*/ tBTM_CMPL_CB *p_inqfilter_cmpl_cb; /* Called (if not NULL) after inquiry filter completed */ UINT32 inq_counter; /* Counter incremented each time an inquiry completes */ - /* Used for determining whether or not duplicate devices */ - /* have responded to the same inquiry */ + /* Used for determining whether or not duplicate devices */ + /* have responded to the same inquiry */ TIMER_LIST_ENT inq_timer_ent; tINQ_BDADDR *p_bd_db; /* Pointer to memory that holds bdaddrs */ UINT16 num_bd_entries; /* Number of entries in database */ @@ -291,12 +285,12 @@ typedef struct UINT16 per_max_delay; /* Current periodic maximum delay */ BOOLEAN inqfilt_active; UINT8 pending_filt_complete_event; /* to take care of btm_event_filter_complete corresponding to */ - /* inquiry that has been cancelled*/ + /* inquiry that has been cancelled*/ UINT8 inqfilt_type; /* Contains the inquiry filter type (BD ADDR, COD, or Clear) */ #define BTM_INQ_INACTIVE_STATE 0 #define BTM_INQ_CLR_FILT_STATE 1 /* Currently clearing the inquiry filter preceeding the inquiry request */ - /* (bypassed if filtering is not used) */ + /* (bypassed if filtering is not used) */ #define BTM_INQ_SET_FILT_STATE 2 /* Sets the new filter (or turns off filtering) in this state */ #define BTM_INQ_ACTIVE_STATE 3 /* Actual inquiry or periodic inquiry is in progress */ #define BTM_INQ_REMNAME_STATE 4 /* Remote name requests are active */ @@ -359,8 +353,7 @@ typedef void (tBTM_SCO_IND_CBACK) (UINT16 sco_inx) ; #define BTM_SCO_ROUTE_UNKNOWN 0xff /* Define the structure that contains (e)SCO data */ -typedef struct -{ +typedef struct { tBTM_ESCO_CBACK *p_esco_cback; /* Callback for eSCO events */ tBTM_ESCO_PARAMS setup; tBTM_ESCO_DATA data; /* Connection complete information */ @@ -369,8 +362,7 @@ typedef struct /* Define the structure used for SCO Management */ -typedef struct -{ +typedef struct { tBTM_ESCO_INFO esco; /* Current settings */ #if BTM_SCO_HCI_INCLUDED == TRUE BUFFER_Q xmit_data_q; /* SCO data transmitting queue */ @@ -385,8 +377,7 @@ typedef struct } tSCO_CONN; /* SCO Management control block */ -typedef struct -{ +typedef struct { tBTM_SCO_IND_CBACK *app_sco_ind_cb; #if BTM_SCO_HCI_INCLUDED == TRUE tBTM_SCO_DATA_CB *p_data_cb; /* Callback for SCO data over HCI */ @@ -411,7 +402,7 @@ typedef struct #if BTM_SCO_INCLUDED == TRUE void btm_set_sco_ind_cback( tBTM_SCO_IND_CBACK *sco_ind_cb ); void btm_accept_sco_link(UINT16 sco_inx, tBTM_ESCO_PARAMS *p_setup, - tBTM_SCO_CB *p_conn_cb, tBTM_SCO_CB *p_disc_cb); + tBTM_SCO_CB *p_conn_cb, tBTM_SCO_CB *p_disc_cb); void btm_reject_sco_link(UINT16 sco_inx ); void btm_sco_chk_pend_rolechange (UINT16 hci_handle); #else @@ -425,8 +416,7 @@ void btm_sco_chk_pend_rolechange (UINT16 hci_handle); ** Define structure for Security Service Record. ** A record exists for each service registered with the Security Manager */ -typedef struct -{ +typedef struct { UINT32 mx_proto_id; /* Service runs over this multiplexer protocol */ UINT32 orig_mx_chan_id; /* Channel on the multiplexer protocol */ UINT32 term_mx_chan_id; /* Channel on the multiplexer protocol */ @@ -444,8 +434,7 @@ typedef struct #if BLE_INCLUDED == TRUE /* LE Security information of device in Slave Role */ -typedef struct -{ +typedef struct { BT_OCTET16 irk; /* peer diverified identity root */ BT_OCTET16 pltk; /* peer long term key */ BT_OCTET16 pcsrk; /* peer SRK peer device used to secured sign local data */ @@ -463,10 +452,9 @@ typedef struct UINT32 counter; /* peer sign counter for verifying rcv signed cmd */ UINT32 local_counter; /* local sign counter for sending signed write cmd*/ -}tBTM_SEC_BLE_KEYS; +} tBTM_SEC_BLE_KEYS; -typedef struct -{ +typedef struct { BD_ADDR pseudo_addr; /* LE pseudo address of the device if different from device address */ tBLE_ADDR_TYPE ble_addr_type; /* LE device type: public or random address */ tBLE_ADDR_TYPE static_addr_type; /* static address type */ @@ -495,8 +483,7 @@ typedef struct #endif /* BLE_INCLUDED */ /* Peering bond type */ -enum -{ +enum { BOND_TYPE_UNKNOWN, BOND_TYPE_PERSISTENT, BOND_TYPE_TEMPORARY @@ -507,8 +494,7 @@ typedef UINT8 tBTM_BOND_TYPE; ** Define structure for Security Device Record. ** A record exists for each device authenticated with this device */ -typedef struct -{ +typedef struct { tBTM_SEC_SERV_REC *p_cur_service; tBTM_SEC_CALLBACK *p_callback; void *p_ref_data; @@ -551,7 +537,7 @@ typedef struct #define BTM_SEC_STATE_SWITCHING_ROLE 5 #define BTM_SEC_STATE_DISCONNECTING 6 /* disconnecting BR/EDR */ #define BTM_SEC_STATE_DELAY_FOR_ENC 7 /* delay to check for encryption to work around */ - /* controller problems */ + /* controller problems */ #define BTM_SEC_STATE_DISCONNECTING_BLE 8 /* disconnecting BLE */ #define BTM_SEC_STATE_DISCONNECTING_BOTH 9 /* disconnecting BR/EDR and BLE */ @@ -559,7 +545,7 @@ typedef struct BOOLEAN is_originator; /* TRUE if device is originating connection */ #if (L2CAP_UCD_INCLUDED == TRUE) BOOLEAN is_ucd; /* TRUE if device is sending or receiving UCD */ - /* if incoming security failed, received UCD will be discarded */ + /* if incoming security failed, received UCD will be discarded */ #endif BOOLEAN role_master; /* TRUE if current mode is master */ UINT16 security_required; /* Security required for connection */ @@ -582,9 +568,9 @@ typedef struct tBTM_AUTH_REQ rmt_auth_req; /* the auth_req flag as in the IO caps rsp evt */ BOOLEAN remote_supports_secure_connections; BOOLEAN remote_features_needed; /* set to true if the local device is in */ - /* "Secure Connections Only" mode and it receives */ - /* HCI_IO_CAPABILITY_REQUEST_EVT from the peer before */ - /* it knows peer's support for Secure Connections */ + /* "Secure Connections Only" mode and it receives */ + /* HCI_IO_CAPABILITY_REQUEST_EVT from the peer before */ + /* it knows peer's support for Secure Connections */ UINT16 ble_hci_handle; /* use in DUMO connection */ UINT8 enc_key_size; /* current link encryption key size */ @@ -595,8 +581,8 @@ typedef struct ** for SM over BR/EDR. */ BOOLEAN no_smp_on_br; /* if set to TRUE then SMP on BR/EDR doesn't */ - /* work, i.e. link keys crosspairing */ - /* SC BR/EDR->SC LE doesn't happen */ + /* work, i.e. link keys crosspairing */ + /* SC BR/EDR->SC LE doesn't happen */ tBTM_BOND_TYPE bond_type; /* peering bond type */ #if BLE_INCLUDED == TRUE @@ -626,8 +612,7 @@ typedef struct /* ** Define device configuration structure */ -typedef struct -{ +typedef struct { #if BTM_MAX_LOC_BD_NAME_LEN > 0 tBTM_LOC_BD_NAME bd_name; /* local Bluetooth device name */ #endif @@ -638,8 +623,7 @@ typedef struct UINT8 def_inq_scan_mode; /* ??? limited/general/none */ } tBTM_CFG; -enum -{ +enum { BTM_PM_ST_ACTIVE = BTM_PM_STS_ACTIVE, BTM_PM_ST_HOLD = BTM_PM_STS_HOLD, BTM_PM_ST_SNIFF = BTM_PM_STS_SNIFF, @@ -648,43 +632,37 @@ enum }; typedef UINT8 tBTM_PM_STATE; -enum -{ +enum { BTM_PM_SET_MODE_EVT, /* Set power mode API is called. */ BTM_PM_UPDATE_EVT, BTM_PM_RD_MODE_EVT /* Read power mode API is called. */ }; typedef UINT8 tBTM_PM_EVENT; -typedef struct -{ +typedef struct { UINT16 event; UINT16 len; UINT8 link_ind; } tBTM_PM_MSG_DATA; -typedef struct -{ +typedef struct { UINT8 hci_status; UINT8 mode; UINT16 interval; } tBTM_PM_MD_CHG_DATA; -typedef struct -{ +typedef struct { UINT8 pm_id; /* the entity that calls SetPowerMode API */ tBTM_PM_PWR_MD *p_pmd; } tBTM_PM_SET_MD_DATA; -typedef struct -{ +typedef struct { void *p_data; UINT8 link_ind; } tBTM_PM_SM_DATA; -typedef struct -{ - tBTM_PM_PWR_MD req_mode[BTM_MAX_PM_RECORDS+1]; /* the desired mode and parameters of the connection*/ +typedef struct { + tBTM_PM_PWR_MD req_mode[BTM_MAX_PM_RECORDS + 1]; /* the desired mode and parameters of the connection*/ tBTM_PM_PWR_MD set_mode; /* the mode and parameters sent down to the host controller. */ UINT16 interval; /* the interval from last mode change event. */ #if (BTM_SSR_INCLUDED == TRUE) @@ -697,14 +675,12 @@ typedef struct } tBTM_PM_MCB; #define BTM_PM_REC_NOT_USED 0 -typedef struct -{ +typedef struct { tBTM_PM_STATUS_CBACK *cback;/* to notify the registered party of mode change event */ UINT8 mask; /* registered request mask. 0, if this entry is not used */ } tBTM_PM_RCB; -enum -{ +enum { BTM_BLI_ACL_UP_EVT, BTM_BLI_ACL_DOWN_EVT, BTM_BLI_PAGE_EVT, @@ -716,8 +692,7 @@ enum typedef UINT8 tBTM_BLI_EVENT; /* Pairing State */ -enum -{ +enum { BTM_PAIR_STATE_IDLE, /* Idle */ BTM_PAIR_STATE_GET_REM_NAME, /* Getting the remote name (to check for SM4) */ BTM_PAIR_STATE_WAIT_PIN_REQ, /* Started authentication, waiting for PIN req (PIN is pre-fetched) */ @@ -742,8 +717,7 @@ typedef UINT8 tBTM_PAIRING_STATE; #define BTM_PAIR_FLAGS_LE_ACTIVE 0x80 /* use this bit when SMP pairing is active */ -typedef struct -{ +typedef struct { BOOLEAN is_mux; BD_ADDR bd_addr; UINT16 psm; @@ -778,8 +752,7 @@ typedef BOOLEAN CONNECTION_TYPE; #define BTM_STATE_BUFFER_SIZE 5 /* size of state buffer */ -typedef struct -{ +typedef struct { tBTM_CFG cfg; /* Device configuration */ /**************************************************** @@ -797,7 +770,7 @@ typedef struct ** Power Management ****************************************************/ tBTM_PM_MCB pm_mode_db[MAX_L2CAP_LINKS]; /* per ACL link */ - tBTM_PM_RCB pm_reg_db[BTM_MAX_PM_RECORDS+1]; /* per application/module */ + tBTM_PM_RCB pm_reg_db[BTM_MAX_PM_RECORDS + 1]; /* per application/module */ UINT8 pm_pend_link; /* the index of acl_db, which has a pending PM cmd */ UINT8 pm_pend_id; /* the id pf the module, which has a pending PM cmd */ @@ -819,7 +792,7 @@ typedef struct tBTM_BLE_VSC_CB cmn_ble_vsc_cb; #endif - /* Packet types supported by the local device */ + /* Packet types supported by the local device */ UINT16 btm_acl_pkt_types_supported; UINT16 btm_sco_pkt_types_supported; @@ -915,12 +888,12 @@ void btm_init (void); ******************************************* */ tBTM_STATUS btm_initiate_rem_name (BD_ADDR remote_bda, - tBTM_INQ_INFO *p_cur, - UINT8 origin, UINT32 timeout, - tBTM_CMPL_CB *p_cb); + tBTM_INQ_INFO *p_cur, + UINT8 origin, UINT32 timeout, + tBTM_CMPL_CB *p_cb); void btm_process_remote_name (BD_ADDR bda, BD_NAME name, UINT16 evt_len, - UINT8 hci_status); + UINT8 hci_status); void btm_inq_rmt_name_failed(void); /* Inquiry related functions */ @@ -942,14 +915,14 @@ BOOLEAN btm_lookup_eir(BD_ADDR_PTR p_rem_addr); */ void btm_acl_init (void); void btm_acl_created (BD_ADDR bda, DEV_CLASS dc, BD_NAME bdn, - UINT16 hci_handle, UINT8 link_role, tBT_TRANSPORT transport); + UINT16 hci_handle, UINT8 link_role, tBT_TRANSPORT transport); void btm_acl_removed (BD_ADDR bda, tBT_TRANSPORT transport); void btm_acl_device_down (void); void btm_acl_update_busy_level (tBTM_BLI_EVENT event); void btm_cont_rswitch (tACL_CONN *p, - tBTM_SEC_DEV_REC *p_dev_rec, - UINT8 hci_status); + tBTM_SEC_DEV_REC *p_dev_rec, + UINT8 hci_status); UINT8 btm_handle_to_acl_index (UINT16 hci_handle); void btm_read_link_policy_complete (UINT8 *p); @@ -980,7 +953,7 @@ void btm_pm_reset(void); void btm_pm_sm_alloc(UINT8 ind); void btm_pm_proc_cmd_status(UINT8 status); void btm_pm_proc_mode_change (UINT8 hci_status, UINT16 hci_handle, UINT8 mode, - UINT16 interval); + UINT16 interval); void btm_pm_proc_ssr_evt (UINT8 *p, UINT16 evt_len); #if BTM_SCO_INCLUDED == TRUE void btm_sco_chk_pend_unpark (UINT8 hci_status, UINT16 hci_handle); @@ -995,10 +968,10 @@ void btm_qos_setup_complete (UINT8 status, UINT16 handle, FLOW_SPEC *p_flow); */ void btm_sco_init (void); void btm_sco_connected (UINT8 hci_status, BD_ADDR bda, UINT16 hci_handle, - tBTM_ESCO_DATA *p_esco_data); + tBTM_ESCO_DATA *p_esco_data); void btm_esco_proc_conn_chg (UINT8 status, UINT16 handle, UINT8 tx_interval, - UINT8 retrans_window, UINT16 rx_pkt_len, - UINT16 tx_pkt_len); + UINT8 retrans_window, UINT16 rx_pkt_len, + UINT16 tx_pkt_len); void btm_sco_conn_req (BD_ADDR bda, DEV_CLASS dev_class, UINT8 link_type); void btm_sco_removed (UINT16 hci_handle, UINT8 reason); void btm_sco_acl_removed (BD_ADDR bda); @@ -1030,7 +1003,7 @@ void btm_ble_resolving_list_remove_dev(tBTM_SEC_DEV_REC *p_dev_rec); /* Vendor Specific Command complete evt handler */ void btm_vsc_complete (UINT8 *p, UINT16 cc_opcode, UINT16 evt_len, - tBTM_CMPL_CB *p_vsc_cplt_cback); + tBTM_CMPL_CB *p_vsc_cplt_cback); void btm_inq_db_reset (void); void btm_vendor_specific_evt (UINT8 *p, UINT8 evt_len); void btm_delete_stored_link_key_complete (UINT8 *p); @@ -1049,7 +1022,7 @@ tBTM_SEC_DEV_REC *btm_find_or_alloc_dev (BD_ADDR bd_addr); tBTM_SEC_DEV_REC *btm_find_dev_by_handle (UINT16 handle); tBTM_BOND_TYPE btm_get_bond_type_dev(BD_ADDR bd_addr); BOOLEAN btm_set_bond_type_dev(BD_ADDR bd_addr, - tBTM_BOND_TYPE bond_type); + tBTM_BOND_TYPE bond_type); /* Internal functions provided by btm_sec.c ********************************************** diff --git a/components/bt/bluedroid/stack/include/btu.h b/components/bt/bluedroid/stack/include/btu.h old mode 100755 new mode 100644 index 176c121207..d82d96d79e --- a/components/bt/bluedroid/stack/include/btu.h +++ b/components/bt/bluedroid/stack/include/btu.h @@ -33,20 +33,20 @@ // HACK(zachoverflow): temporary dark magic #define BTU_POST_TO_TASK_NO_GOOD_HORRIBLE_HACK 0x1700 // didn't look used in bt_types...here goes nothing typedef struct { - void (*callback)(BT_HDR *); + void (*callback)(BT_HDR *); } post_to_task_hack_t; typedef struct { - void (*callback)(BT_HDR *); - BT_HDR *response; - void *context; + void (*callback)(BT_HDR *); + BT_HDR *response; + void *context; } command_complete_hack_t; typedef struct { - void (*callback)(BT_HDR *); - uint8_t status; - BT_HDR *command; - void *context; + void (*callback)(BT_HDR *); + uint8_t status; + BT_HDR *command; + void *context; } command_status_hack_t; /* callbacks @@ -164,8 +164,7 @@ typedef void (*tBTU_EVENT_CALLBACK)(BT_HDR *p_hdr); /* This is the inquiry response information held by BTU, and available ** to applications. */ -typedef struct -{ +typedef struct { BD_ADDR remote_bd_addr; UINT8 page_scan_rep_mode; UINT8 page_scan_per_mode; @@ -185,15 +184,13 @@ typedef struct #endif /* structure to hold registered timers */ -typedef struct -{ +typedef struct { TIMER_LIST_ENT *p_tle; /* timer entry */ tBTU_TIMER_CALLBACK timer_cb; /* callback triggered when timer expires */ } tBTU_TIMER_REG; /* structure to hold registered event callbacks */ -typedef struct -{ +typedef struct { UINT16 event_range; /* start of event range */ tBTU_EVENT_CALLBACK event_cb; /* callback triggered when event is in range */ } tBTU_EVENT_REG; @@ -206,8 +203,7 @@ typedef struct /* Define structure holding BTU variables */ -typedef struct -{ +typedef struct { tBTU_TIMER_REG timer_reg[BTU_MAX_REG_TIMER]; tBTU_EVENT_REG event_reg[BTU_MAX_REG_EVENT]; diff --git a/components/bt/bluedroid/stack/include/gap_api.h b/components/bt/bluedroid/stack/include/gap_api.h old mode 100755 new mode 100644 index 755c49c0b8..2dc9836a88 --- a/components/bt/bluedroid/stack/include/gap_api.h +++ b/components/bt/bluedroid/stack/include/gap_api.h @@ -99,30 +99,27 @@ typedef void (tGAP_CALLBACK) (UINT16 event, void *p_data); /* Definition of the GAP_FindAddrByName results structure */ -typedef struct -{ +typedef struct { UINT16 status; BD_ADDR bd_addr; tBTM_BD_NAME devname; } tGAP_FINDADDR_RESULTS; -typedef struct -{ +typedef struct { UINT16 int_min; UINT16 int_max; UINT16 latency; UINT16 sp_tout; -}tGAP_BLE_PREF_PARAM; +} tGAP_BLE_PREF_PARAM; -typedef union -{ +typedef union { tGAP_BLE_PREF_PARAM conn_param; BD_ADDR reconn_bda; UINT16 icon; UINT8 *p_dev_name; UINT8 addr_resolution; -}tGAP_BLE_ATTR_VALUE; +} tGAP_BLE_ATTR_VALUE; typedef void (tGAP_BLE_CMPL_CBACK)(BOOLEAN status, BD_ADDR addr, UINT16 length, char *p_name); @@ -143,9 +140,9 @@ typedef void (tGAP_BLE_CMPL_CBACK)(BOOLEAN status, BD_ADDR addr, UINT16 length, ** *******************************************************************************/ extern UINT16 GAP_ConnOpen (char *p_serv_name, UINT8 service_id, BOOLEAN is_server, - BD_ADDR p_rem_bda, UINT16 psm, tL2CAP_CFG_INFO *p_cfg, - tL2CAP_ERTM_INFO *ertm_info, - UINT16 security, UINT8 chan_mode_mask, tGAP_CONN_CALLBACK *p_cb); + BD_ADDR p_rem_bda, UINT16 psm, tL2CAP_CFG_INFO *p_cfg, + tL2CAP_ERTM_INFO *ertm_info, + UINT16 security, UINT8 chan_mode_mask, tGAP_CONN_CALLBACK *p_cb); /******************************************************************************* ** @@ -173,7 +170,7 @@ extern UINT16 GAP_ConnClose (UINT16 gap_handle); ** *******************************************************************************/ extern UINT16 GAP_ConnReadData (UINT16 gap_handle, UINT8 *p_data, - UINT16 max_len, UINT16 *p_len); + UINT16 max_len, UINT16 *p_len); /******************************************************************************* ** @@ -232,7 +229,7 @@ extern UINT16 GAP_ConnBTWrite (UINT16 gap_handle, BT_HDR *p_buf); ** *******************************************************************************/ extern UINT16 GAP_ConnWriteData (UINT16 gap_handle, UINT8 *p_data, - UINT16 max_len, UINT16 *p_len); + UINT16 max_len, UINT16 *p_len); /******************************************************************************* ** @@ -374,7 +371,7 @@ extern BOOLEAN GAP_BleReadPeerDevName (BD_ADDR peer_bda, tGAP_BLE_CMPL_CBACK *p_ ** *******************************************************************************/ extern BOOLEAN GAP_BleReadPeerAddressResolutionCap (BD_ADDR peer_bda, - tGAP_BLE_CMPL_CBACK *p_cback); + tGAP_BLE_CMPL_CBACK *p_cback); /******************************************************************************* ** diff --git a/components/bt/bluedroid/stack/include/gatt_api.h b/components/bt/bluedroid/stack/include/gatt_api.h old mode 100755 new mode 100644 index 6ef768763b..a365ca9dee --- a/components/bt/bluedroid/stack/include/gatt_api.h +++ b/components/bt/bluedroid/stack/include/gatt_api.h @@ -64,7 +64,7 @@ #define GATT_NOT_ENCRYPTED 0x8e #define GATT_CONGESTED 0x8f - /* 0xE0 ~ 0xFC reserved for future use */ +/* 0xE0 ~ 0xFC reserved for future use */ #define GATT_CCC_CFG_ERR 0xFD /* Client Characteristic Configuration Descriptor Improperly Configured */ #define GATT_PRC_IN_PROGRESS 0xFE /* Procedure Already in progress */ #define GATT_OUT_OF_RANGE 0xFF /* Attribute value out of range */ @@ -117,13 +117,13 @@ typedef UINT16 tGATT_DISCONN_REASON; /* MAX GATT MTU size */ #ifndef GATT_MAX_MTU_SIZE - #define GATT_MAX_MTU_SIZE 517 +#define GATT_MAX_MTU_SIZE 517 #endif /* max legth of an attribute value */ #ifndef GATT_MAX_ATTR_LEN - #define GATT_MAX_ATTR_LEN 600 +#define GATT_MAX_ATTR_LEN 600 #endif /* default GATT MTU size over LE link @@ -135,18 +135,18 @@ typedef UINT16 tGATT_DISCONN_REASON; #define GATT_INVALID_CONN_ID 0xFFFF #ifndef GATT_CL_MAX_LCB - #define GATT_CL_MAX_LCB 12 // 22 +#define GATT_CL_MAX_LCB 12 // 22 #endif #ifndef GATT_MAX_SCCB - #define GATT_MAX_SCCB 10 +#define GATT_MAX_SCCB 10 #endif /* GATT notification caching timer, default to be three seconds */ #ifndef GATTC_NOTIF_TIMEOUT - #define GATTC_NOTIF_TIMEOUT 3 +#define GATTC_NOTIF_TIMEOUT 3 #endif /***************************************************************************** @@ -200,8 +200,7 @@ typedef UINT8 tGATT_CHAR_PROP; /* Format of the value of a characteristic. enumeration type */ -enum -{ +enum { GATT_FORMAT_RES, /* rfu */ GATT_FORMAT_BOOL, /* 0x01 boolean */ GATT_FORMAT_2BITS, /* 0x02 2 bit */ @@ -236,8 +235,7 @@ typedef UINT8 tGATT_FORMAT; /* Characteristic Presentation Format Descriptor value */ -typedef struct -{ +typedef struct { UINT16 unit; /* as UUIUD defined by SIG */ UINT16 descr; /* as UUID as defined by SIG */ tGATT_FORMAT format; @@ -247,16 +245,14 @@ typedef struct /* Characteristic Report reference Descriptor format */ -typedef struct -{ +typedef struct { UINT8 rpt_id; /* report ID */ UINT8 rpt_type; /* report type */ } tGATT_CHAR_RPT_REF; #define GATT_VALID_RANGE_MAX_SIZE 16 -typedef struct -{ +typedef struct { UINT8 format; UINT16 len; UINT8 lower_range[GATT_VALID_RANGE_MAX_SIZE]; /* in little endian format */ @@ -266,8 +262,7 @@ typedef struct /* Characteristic Aggregate Format attribute value */ #define GATT_AGGR_HANDLE_NUM_MAX 10 -typedef struct -{ +typedef struct { UINT8 num_handle; UINT16 handle_list[GATT_AGGR_HANDLE_NUM_MAX]; } tGATT_CHAR_AGGRE; @@ -308,8 +303,7 @@ typedef UINT8 tGATT_AUTH_REQ; /* Attribute Value structure */ -typedef struct -{ +typedef struct { UINT16 conn_id; UINT16 handle; /* attribute handle */ UINT16 offset; /* attribute value offset, if no offfset is needed for the command, ignore it */ @@ -320,11 +314,10 @@ typedef struct /* Union of the event data which is used in the server respond API to carry the server response information */ -typedef union -{ +typedef union { /* data type member event */ tGATT_VALUE attr_value; /* READ, HANDLE_VALUE_IND, PREPARE_WRITE */ - /* READ_BLOB, READ_BY_TYPE */ + /* READ_BLOB, READ_BY_TYPE */ UINT16 handle; /* WRITE, WRITE_BLOB */ } tGATTS_RSP; @@ -340,16 +333,14 @@ typedef UINT8 tGATT_TRANSPORT; typedef UINT8 tGATT_EXEC_FLAG; /* read request always based on UUID */ -typedef struct -{ +typedef struct { UINT16 handle; UINT16 offset; BOOLEAN is_long; } tGATT_READ_REQ; /* write request data */ -typedef struct -{ +typedef struct { UINT16 handle; /* attribute handle */ UINT16 offset; /* attribute value offset, if no offfset is needed for the command, ignore it */ UINT16 len; /* length of attribute value */ @@ -359,13 +350,12 @@ typedef struct } tGATT_WRITE_REQ; /* callback data for server access request from client */ -typedef union -{ +typedef union { tGATT_READ_REQ read_req; /* read request, read by Type, read blob */ tGATT_WRITE_REQ write_req; /* write */ - /* prepare write */ - /* write blob */ + /* prepare write */ + /* write blob */ UINT16 handle; /* handle value confirmation */ UINT16 mtu; /* MTU exchange request */ tGATT_EXEC_FLAG exec_write; /* execute write */ @@ -373,8 +363,7 @@ typedef union typedef UINT8 tGATT_SERV_IF; /* GATT Service Interface */ -enum -{ +enum { GATTS_REQ_TYPE_READ = 1, /* Attribute read request */ GATTS_REQ_TYPE_WRITE, /* Attribute write request */ GATTS_REQ_TYPE_WRITE_EXEC, /* Execute write */ @@ -388,8 +377,7 @@ typedef UINT8 tGATTS_REQ_TYPE; /* Client Used Data Structure */ /* definition of different discovery types */ -enum -{ +enum { GATT_DISC_SRVC_ALL = 1, /* discover all services */ GATT_DISC_SRVC_BY_UUID, /* discover service of a special type */ GATT_DISC_INC_SRVC, /* discover the included service within a service */ @@ -401,17 +389,15 @@ typedef UINT8 tGATT_DISC_TYPE; /* Discover parameters of different discovery types */ -typedef struct -{ +typedef struct { tBT_UUID service; UINT16 s_handle; UINT16 e_handle; -}tGATT_DISC_PARAM; +} tGATT_DISC_PARAM; /* GATT read type enumeration */ -enum -{ +enum { GATT_READ_BY_TYPE = 1, GATT_READ_BY_HANDLE, GATT_READ_MULTIPLE, @@ -423,8 +409,7 @@ typedef UINT8 tGATT_READ_TYPE; /* Read By Type Request (GATT_READ_BY_TYPE) Data */ -typedef struct -{ +typedef struct { tGATT_AUTH_REQ auth_req; UINT16 s_handle; UINT16 e_handle; @@ -434,23 +419,20 @@ typedef struct /* GATT_READ_MULTIPLE request data */ #define GATT_MAX_READ_MULTI_HANDLES 10 /* Max attributes to read in one request */ -typedef struct -{ +typedef struct { tGATT_AUTH_REQ auth_req; UINT16 num_handles; /* number of handles to read */ UINT16 handles[GATT_MAX_READ_MULTI_HANDLES]; /* handles list to be read */ } tGATT_READ_MULTI; /* Read By Handle Request (GATT_READ_BY_HANDLE) data */ -typedef struct -{ +typedef struct { tGATT_AUTH_REQ auth_req; UINT16 handle; } tGATT_READ_BY_HANDLE; /* READ_BT_HANDLE_Request data */ -typedef struct -{ +typedef struct { tGATT_AUTH_REQ auth_req; UINT16 handle; UINT16 offset; @@ -458,8 +440,7 @@ typedef struct /* Read Request Data */ -typedef union -{ +typedef union { tGATT_READ_BY_TYPE service; tGATT_READ_BY_TYPE char_type; /* characterisitc type */ tGATT_READ_MULTI read_multiple; @@ -468,8 +449,7 @@ typedef union } tGATT_READ_PARAM; /* GATT write type enumeration */ -enum -{ +enum { GATT_WRITE_NO_RSP = 1, GATT_WRITE , GATT_WRITE_PREPARE @@ -478,8 +458,7 @@ typedef UINT8 tGATT_WRITE_TYPE; /* Client Operation Complete Callback Data */ -typedef union -{ +typedef union { tGATT_VALUE att_value; UINT16 mtu; UINT16 handle; @@ -499,8 +478,7 @@ typedef UINT8 tGATTC_OPTYPE; /* characteristic declaration */ -typedef struct -{ +typedef struct { tGATT_CHAR_PROP char_prop; /* characterisitc properties */ UINT16 val_handle; /* characteristic value attribute handle */ tBT_UUID char_uuid; /* characteristic UUID type */ @@ -508,8 +486,7 @@ typedef struct /* primary service group data */ -typedef struct -{ +typedef struct { UINT16 e_handle; /* ending handle of the group */ tBT_UUID service_type; /* group type */ } tGATT_GROUP_VALUE; @@ -517,15 +494,13 @@ typedef struct /* included service attribute value */ -typedef struct -{ +typedef struct { tBT_UUID service_type; /* included service UUID */ UINT16 s_handle; /* starting handle */ UINT16 e_handle; /* ending handle */ } tGATT_INCL_SRVC; -typedef union -{ +typedef union { tGATT_INCL_SRVC incl_service; /* include service value */ tGATT_GROUP_VALUE group_value; /* Service UUID type. This field is used with GATT_DISC_SRVC_ALL @@ -541,8 +516,7 @@ typedef union /* discover result record */ -typedef struct -{ +typedef struct { tBT_UUID type; UINT16 handle; tGATT_DISC_VALUE value; @@ -557,22 +531,22 @@ typedef struct #define GATT_INVALID_ACL_HANDLE 0xFFFF /* discover result callback function */ typedef void (tGATT_DISC_RES_CB) (UINT16 conn_id, tGATT_DISC_TYPE disc_type, - tGATT_DISC_RES *p_data); + tGATT_DISC_RES *p_data); /* discover complete callback function */ typedef void (tGATT_DISC_CMPL_CB) (UINT16 conn_id, tGATT_DISC_TYPE disc_type, tGATT_STATUS status); /* Define a callback function for when read/write/disc/config operation is completed. */ typedef void (tGATT_CMPL_CBACK) (UINT16 conn_id, tGATTC_OPTYPE op, tGATT_STATUS status, - tGATT_CL_COMPLETE *p_data); + tGATT_CL_COMPLETE *p_data); /* Define a callback function when an initialized connection is established. */ typedef void (tGATT_CONN_CBACK) (tGATT_IF gatt_if, BD_ADDR bda, UINT16 conn_id, BOOLEAN connected, - tGATT_DISCONN_REASON reason, tBT_TRANSPORT transport); + tGATT_DISCONN_REASON reason, tBT_TRANSPORT transport); /* attribute request callback for ATT server */ typedef void (tGATT_REQ_CBACK )(UINT16 conn_id, UINT32 trans_id, tGATTS_REQ_TYPE type, - tGATTS_DATA *p_data); + tGATTS_DATA *p_data); /* channel congestion/uncongestion callback */ typedef void (tGATT_CONGESTION_CBACK )(UINT16 conn_id, BOOLEAN congested); @@ -585,8 +559,7 @@ typedef void (tGATT_ENC_CMPL_CB)(tGATT_IF gatt_if, BD_ADDR bda); ** GATT. This structure includes callback functions. All functions ** MUST be provided. */ -typedef struct -{ +typedef struct { tGATT_CONN_CBACK *p_conn_cb; tGATT_CMPL_CBACK *p_cmpl_cb; tGATT_DISC_RES_CB *p_disc_res_cb; @@ -600,8 +573,7 @@ typedef struct */ -typedef struct -{ +typedef struct { tBT_UUID app_uuid128; tBT_UUID svc_uuid; UINT16 svc_inst; @@ -619,29 +591,25 @@ typedef struct #define GATTS_SRV_CHG_CMD_READ_CLENT 5 typedef UINT8 tGATTS_SRV_CHG_CMD; -typedef struct -{ +typedef struct { BD_ADDR bda; BOOLEAN srv_changed; } tGATTS_SRV_CHG; -typedef union -{ +typedef union { tGATTS_SRV_CHG srv_chg; UINT8 client_read_index; /* only used for sequential reading client srv chg info */ } tGATTS_SRV_CHG_REQ; -typedef union -{ +typedef union { tGATTS_SRV_CHG srv_chg; UINT8 num_clients; } tGATTS_SRV_CHG_RSP; -typedef struct -{ +typedef struct { tGATTS_HNDL_RANGE *p_new_srv_start; } tGATTS_PENDING_NEW_SRV_START; @@ -649,10 +617,9 @@ typedef struct */ typedef void (tGATTS_NV_SAVE_CBACK)(BOOLEAN is_saved, tGATTS_HNDL_RANGE *p_hndl_range); typedef BOOLEAN (tGATTS_NV_SRV_CHG_CBACK)(tGATTS_SRV_CHG_CMD cmd, tGATTS_SRV_CHG_REQ *p_req, - tGATTS_SRV_CHG_RSP *p_rsp); + tGATTS_SRV_CHG_RSP *p_rsp); -typedef struct -{ +typedef struct { tGATTS_NV_SAVE_CBACK *p_nv_save_callback; tGATTS_NV_SRV_CHG_CBACK *p_srv_chg_callback; } tGATT_APPL_INFO; @@ -774,7 +741,7 @@ extern UINT16 GATTS_AddIncludeService (UINT16 service_handle, ** *******************************************************************************/ extern UINT16 GATTS_AddCharacteristic (UINT16 service_handle, tBT_UUID *char_uuid, - tGATT_PERM perm,tGATT_CHAR_PROP property); + tGATT_PERM perm, tGATT_CHAR_PROP property); /******************************************************************************* ** @@ -796,7 +763,7 @@ extern UINT16 GATTS_AddCharacteristic (UINT16 service_handle, tBT_UUID *char_uui ** *******************************************************************************/ extern UINT16 GATTS_AddCharDescriptor (UINT16 service_handle, tGATT_PERM perm, - tBT_UUID * p_descr_uuid); + tBT_UUID *p_descr_uuid); /******************************************************************************* ** @@ -860,8 +827,8 @@ extern void GATTS_StopService (UINT16 service_handle); ** *******************************************************************************/ extern tGATT_STATUS GATTS_HandleValueIndication (UINT16 conn_id, - UINT16 attr_handle, - UINT16 val_len, UINT8 *p_val); + UINT16 attr_handle, + UINT16 val_len, UINT8 *p_val); /******************************************************************************* ** @@ -878,7 +845,7 @@ extern tGATT_STATUS GATTS_HandleValueIndication (UINT16 conn_id, ** *******************************************************************************/ extern tGATT_STATUS GATTS_HandleValueNotification (UINT16 conn_id, UINT16 attr_handle, - UINT16 val_len, UINT8 *p_val); + UINT16 val_len, UINT8 *p_val); /******************************************************************************* @@ -1149,7 +1116,7 @@ extern BOOLEAN GATT_GetConnectionInfor(UINT16 conn_id, tGATT_IF *p_gatt_if, ** *******************************************************************************/ extern BOOLEAN GATT_GetConnIdIfConnected(tGATT_IF gatt_if, BD_ADDR bd_addr, - UINT16 *p_conn_id, tBT_TRANSPORT transport); + UINT16 *p_conn_id, tBT_TRANSPORT transport); /******************************************************************************* @@ -1179,8 +1146,8 @@ extern BOOLEAN GATT_Listen (tGATT_IF gatt_if, BOOLEAN start, BD_ADDR_PTR bd_addr ** *******************************************************************************/ extern void GATT_ConfigServiceChangeCCC (BD_ADDR remote_bda, BOOLEAN enable, - tBT_TRANSPORT transport); - + tBT_TRANSPORT transport); + #ifdef __cplusplus } diff --git a/components/bt/bluedroid/stack/include/gattdefs.h b/components/bt/bluedroid/stack/include/gattdefs.h old mode 100755 new mode 100644 index 3edfa8b988..9380e2e9c6 --- a/components/bt/bluedroid/stack/include/gattdefs.h +++ b/components/bt/bluedroid/stack/include/gattdefs.h @@ -34,7 +34,7 @@ #define GATT_UUID_INCLUDE_SERVICE 0x2802 #define GATT_UUID_CHAR_DECLARE 0x2803 /* Characteristic Declaration*/ -#define GATT_UUID_CHAR_EXT_PROP 0x2900 /* Characteristic Extended Properties */ +#define GATT_UUID_CHAR_EXT_PROP 0x2900 /* Characteristic Extended Properties */ #define GATT_UUID_CHAR_DESCRIPTION 0x2901 /* Characteristic User Description*/ #define GATT_UUID_CHAR_CLIENT_CONFIG 0x2902 /* Client Characteristic Configuration */ #define GATT_UUID_CHAR_SRVR_CONFIG 0x2903 /* Server Characteristic Configuration */ diff --git a/components/bt/bluedroid/stack/include/hcidefs.h b/components/bt/bluedroid/stack/include/hcidefs.h old mode 100755 new mode 100644 index ff9f35cf20..faf04fd9f2 --- a/components/bt/bluedroid/stack/include/hcidefs.h +++ b/components/bt/bluedroid/stack/include/hcidefs.h @@ -332,7 +332,7 @@ #define HCI_BLE_LTK_REQ_REPLY (0x001A | HCI_GRP_BLE_CMDS) #define HCI_BLE_LTK_REQ_NEG_REPLY (0x001B | HCI_GRP_BLE_CMDS) #define HCI_BLE_READ_SUPPORTED_STATES (0x001C | HCI_GRP_BLE_CMDS) - /*0x001D, 0x001E and 0x001F are reserved*/ +/*0x001D, 0x001E and 0x001F are reserved*/ #define HCI_BLE_RECEIVER_TEST (0x001D | HCI_GRP_BLE_CMDS) #define HCI_BLE_TRANSMITTER_TEST (0x001E | HCI_GRP_BLE_CMDS) /* BLE TEST COMMANDS */ @@ -1333,8 +1333,7 @@ /* Define the extended flow specification fields used by AMP */ -typedef struct -{ +typedef struct { UINT8 id; UINT8 stype; UINT16 max_sdu_size; diff --git a/components/bt/bluedroid/stack/include/hcimsgs.h b/components/bt/bluedroid/stack/include/hcimsgs.h old mode 100755 new mode 100644 index dc440a20ce..d360a9a121 --- a/components/bt/bluedroid/stack/include/hcimsgs.h +++ b/components/bt/bluedroid/stack/include/hcimsgs.h @@ -29,7 +29,7 @@ void bte_main_lpm_allow_bt_device_sleep(void); /* Message by message.... */ BOOLEAN btsnd_hcic_inquiry(const LAP inq_lap, UINT8 duration, - UINT8 response_cnt); + UINT8 response_cnt); #define HCIC_PARAM_SIZE_INQUIRY 5 @@ -37,17 +37,17 @@ BOOLEAN btsnd_hcic_inquiry(const LAP inq_lap, UINT8 duration, #define HCIC_INQ_INQ_LAP_OFF 0 #define HCIC_INQ_DUR_OFF 3 #define HCIC_INQ_RSP_CNT_OFF 4 - /* Inquiry */ +/* Inquiry */ - /* Inquiry Cancel */ +/* Inquiry Cancel */ BOOLEAN btsnd_hcic_inq_cancel(void); #define HCIC_PARAM_SIZE_INQ_CANCEL 0 - /* Periodic Inquiry Mode */ +/* Periodic Inquiry Mode */ BOOLEAN btsnd_hcic_per_inq_mode(UINT16 max_period, UINT16 min_period, - const LAP inq_lap, UINT8 duration, - UINT8 response_cnt); + const LAP inq_lap, UINT8 duration, + UINT8 response_cnt); #define HCIC_PARAM_SIZE_PER_INQ_MODE 9 @@ -56,18 +56,18 @@ BOOLEAN btsnd_hcic_per_inq_mode(UINT16 max_period, UINT16 min_period, #define HCI_PER_INQ_INQ_LAP_OFF 4 #define HCI_PER_INQ_DURATION_OFF 7 #define HCI_PER_INQ_RSP_CNT_OFF 8 - /* Periodic Inquiry Mode */ +/* Periodic Inquiry Mode */ - /* Exit Periodic Inquiry Mode */ +/* Exit Periodic Inquiry Mode */ BOOLEAN btsnd_hcic_exit_per_inq(void); #define HCIC_PARAM_SIZE_EXIT_PER_INQ 0 - /* Create Connection */ +/* Create Connection */ BOOLEAN btsnd_hcic_create_conn(BD_ADDR dest, UINT16 packet_types, - UINT8 page_scan_rep_mode, - UINT8 page_scan_mode, - UINT16 clock_offset, - UINT8 allow_switch); + UINT8 page_scan_rep_mode, + UINT8 page_scan_mode, + UINT16 clock_offset, + UINT8 allow_switch); #define HCIC_PARAM_SIZE_CREATE_CONN 13 @@ -77,19 +77,19 @@ BOOLEAN btsnd_hcic_create_conn(BD_ADDR dest, UINT16 packet_types, #define HCIC_CR_CONN_PAGE_SCAN_MODE_OFF 9 #define HCIC_CR_CONN_CLK_OFF_OFF 10 #define HCIC_CR_CONN_ALLOW_SWITCH_OFF 12 - /* Create Connection */ +/* Create Connection */ - /* Disconnect */ +/* Disconnect */ BOOLEAN btsnd_hcic_disconnect(UINT16 handle, UINT8 reason); #define HCIC_PARAM_SIZE_DISCONNECT 3 #define HCI_DISC_HANDLE_OFF 0 #define HCI_DISC_REASON_OFF 2 - /* Disconnect */ +/* Disconnect */ #if BTM_SCO_INCLUDED == TRUE - /* Add SCO Connection */ +/* Add SCO Connection */ BOOLEAN btsnd_hcic_add_SCO_conn (UINT16 handle, UINT16 packet_types); #endif /* BTM_SCO_INCLUDED */ @@ -97,80 +97,80 @@ BOOLEAN btsnd_hcic_add_SCO_conn (UINT16 handle, UINT16 packet_types); #define HCI_ADD_SCO_HANDLE_OFF 0 #define HCI_ADD_SCO_PACKET_TYPES_OFF 2 - /* Add SCO Connection */ +/* Add SCO Connection */ - /* Create Connection Cancel */ +/* Create Connection Cancel */ BOOLEAN btsnd_hcic_create_conn_cancel(BD_ADDR dest); #define HCIC_PARAM_SIZE_CREATE_CONN_CANCEL 6 #define HCIC_CR_CONN_CANCEL_BD_ADDR_OFF 0 - /* Create Connection Cancel */ +/* Create Connection Cancel */ - /* Accept Connection Request */ +/* Accept Connection Request */ BOOLEAN btsnd_hcic_accept_conn (BD_ADDR bd_addr, UINT8 role); #define HCIC_PARAM_SIZE_ACCEPT_CONN 7 #define HCI_ACC_CONN_BD_ADDR_OFF 0 #define HCI_ACC_CONN_ROLE_OFF 6 - /* Accept Connection Request */ +/* Accept Connection Request */ - /* Reject Connection Request */ +/* Reject Connection Request */ BOOLEAN btsnd_hcic_reject_conn (BD_ADDR bd_addr, UINT8 reason); #define HCIC_PARAM_SIZE_REJECT_CONN 7 #define HCI_REJ_CONN_BD_ADDR_OFF 0 #define HCI_REJ_CONN_REASON_OFF 6 - /* Reject Connection Request */ +/* Reject Connection Request */ - /* Link Key Request Reply */ +/* Link Key Request Reply */ BOOLEAN btsnd_hcic_link_key_req_reply (BD_ADDR bd_addr, - LINK_KEY link_key); + LINK_KEY link_key); #define HCIC_PARAM_SIZE_LINK_KEY_REQ_REPLY 22 #define HCI_LINK_KEY_REPLY_BD_ADDR_OFF 0 #define HCI_LINK_KEY_REPLY_LINK_KEY_OFF 6 - /* Link Key Request Reply */ +/* Link Key Request Reply */ - /* Link Key Request Neg Reply */ +/* Link Key Request Neg Reply */ BOOLEAN btsnd_hcic_link_key_neg_reply (BD_ADDR bd_addr); #define HCIC_PARAM_SIZE_LINK_KEY_NEG_REPLY 6 #define HCI_LINK_KEY_NEG_REP_BD_ADR_OFF 0 - /* Link Key Request Neg Reply */ +/* Link Key Request Neg Reply */ - /* PIN Code Request Reply */ +/* PIN Code Request Reply */ BOOLEAN btsnd_hcic_pin_code_req_reply (BD_ADDR bd_addr, - UINT8 pin_code_len, - PIN_CODE pin_code); + UINT8 pin_code_len, + PIN_CODE pin_code); #define HCIC_PARAM_SIZE_PIN_CODE_REQ_REPLY 23 #define HCI_PIN_CODE_REPLY_BD_ADDR_OFF 0 #define HCI_PIN_CODE_REPLY_PIN_LEN_OFF 6 #define HCI_PIN_CODE_REPLY_PIN_CODE_OFF 7 - /* PIN Code Request Reply */ +/* PIN Code Request Reply */ - /* Link Key Request Neg Reply */ +/* Link Key Request Neg Reply */ BOOLEAN btsnd_hcic_pin_code_neg_reply (BD_ADDR bd_addr); #define HCIC_PARAM_SIZE_PIN_CODE_NEG_REPLY 6 #define HCI_PIN_CODE_NEG_REP_BD_ADR_OFF 0 - /* Link Key Request Neg Reply */ +/* Link Key Request Neg Reply */ - /* Change Connection Type */ +/* Change Connection Type */ BOOLEAN btsnd_hcic_change_conn_type (UINT16 handle, UINT16 packet_types); #define HCIC_PARAM_SIZE_CHANGE_CONN_TYPE 4 #define HCI_CHNG_PKT_TYPE_HANDLE_OFF 0 #define HCI_CHNG_PKT_TYPE_PKT_TYPE_OFF 2 - /* Change Connection Type */ +/* Change Connection Type */ #define HCIC_PARAM_SIZE_CMD_HANDLE 2 @@ -178,20 +178,20 @@ BOOLEAN btsnd_hcic_change_conn_type (UINT16 handle, UINT16 packet_types); BOOLEAN btsnd_hcic_auth_request (UINT16 handle); /* Authentication Request */ - /* Set Connection Encryption */ +/* Set Connection Encryption */ BOOLEAN btsnd_hcic_set_conn_encrypt (UINT16 handle, BOOLEAN enable); #define HCIC_PARAM_SIZE_SET_CONN_ENCRYPT 3 #define HCI_SET_ENCRYPT_HANDLE_OFF 0 #define HCI_SET_ENCRYPT_ENABLE_OFF 2 - /* Set Connection Encryption */ +/* Set Connection Encryption */ - /* Remote Name Request */ +/* Remote Name Request */ BOOLEAN btsnd_hcic_rmt_name_req (BD_ADDR bd_addr, - UINT8 page_scan_rep_mode, - UINT8 page_scan_mode, - UINT16 clock_offset); + UINT8 page_scan_rep_mode, + UINT8 page_scan_mode, + UINT16 clock_offset); #define HCIC_PARAM_SIZE_RMT_NAME_REQ 10 @@ -199,26 +199,26 @@ BOOLEAN btsnd_hcic_rmt_name_req (BD_ADDR bd_addr, #define HCI_RMT_NAME_REP_MODE_OFF 6 #define HCI_RMT_NAME_PAGE_SCAN_MODE_OFF 7 #define HCI_RMT_NAME_CLK_OFF_OFF 8 - /* Remote Name Request */ +/* Remote Name Request */ - /* Remote Name Request Cancel */ +/* Remote Name Request Cancel */ BOOLEAN btsnd_hcic_rmt_name_req_cancel(BD_ADDR bd_addr); #define HCIC_PARAM_SIZE_RMT_NAME_REQ_CANCEL 6 #define HCI_RMT_NAME_CANCEL_BD_ADDR_OFF 0 - /* Remote Name Request Cancel */ +/* Remote Name Request Cancel */ BOOLEAN btsnd_hcic_rmt_features_req(UINT16 handle); /* Remote Features Request */ - /* Remote Extended Features */ +/* Remote Extended Features */ BOOLEAN btsnd_hcic_rmt_ext_features(UINT16 handle, UINT8 page_num); #define HCIC_PARAM_SIZE_RMT_EXT_FEATURES 3 #define HCI_RMT_EXT_FEATURES_HANDLE_OFF 0 #define HCI_RMT_EXT_FEATURES_PAGE_NUM_OFF 2 - /* Remote Extended Features */ +/* Remote Extended Features */ BOOLEAN btsnd_hcic_rmt_ver_req(UINT16 handle); /* Remote Version Info Request */ @@ -226,10 +226,10 @@ BOOLEAN btsnd_hcic_read_rmt_clk_offset(UINT16 handle); /* Remote Clock Offset BOOLEAN btsnd_hcic_read_lmp_handle(UINT16 handle); /* Remote LMP Handle */ BOOLEAN btsnd_hcic_setup_esco_conn (UINT16 handle, - UINT32 tx_bw, UINT32 rx_bw, - UINT16 max_latency, UINT16 voice, - UINT8 retrans_effort, - UINT16 packet_types); + UINT32 tx_bw, UINT32 rx_bw, + UINT16 max_latency, UINT16 voice, + UINT8 retrans_effort, + UINT16 packet_types); #define HCIC_PARAM_SIZE_SETUP_ESCO 17 #define HCI_SETUP_ESCO_HANDLE_OFF 0 @@ -242,11 +242,11 @@ BOOLEAN btsnd_hcic_setup_esco_conn (UINT16 handle, BOOLEAN btsnd_hcic_accept_esco_conn (BD_ADDR bd_addr, - UINT32 tx_bw, UINT32 rx_bw, - UINT16 max_latency, - UINT16 content_fmt, - UINT8 retrans_effort, - UINT16 packet_types); + UINT32 tx_bw, UINT32 rx_bw, + UINT16 max_latency, + UINT16 content_fmt, + UINT8 retrans_effort, + UINT16 packet_types); #define HCIC_PARAM_SIZE_ACCEPT_ESCO 21 #define HCI_ACCEPT_ESCO_BDADDR_OFF 0 @@ -266,21 +266,21 @@ BOOLEAN btsnd_hcic_reject_esco_conn (BD_ADDR bd_addr, UINT8 reason); /* Hold Mode */ BOOLEAN btsnd_hcic_hold_mode(UINT16 handle, UINT16 max_hold_period, - UINT16 min_hold_period); + UINT16 min_hold_period); #define HCIC_PARAM_SIZE_HOLD_MODE 6 #define HCI_HOLD_MODE_HANDLE_OFF 0 #define HCI_HOLD_MODE_MAX_PER_OFF 2 #define HCI_HOLD_MODE_MIN_PER_OFF 4 - /* Hold Mode */ +/* Hold Mode */ - /* Sniff Mode */ +/* Sniff Mode */ BOOLEAN btsnd_hcic_sniff_mode(UINT16 handle, - UINT16 max_sniff_period, - UINT16 min_sniff_period, - UINT16 sniff_attempt, - UINT16 sniff_timeout); + UINT16 max_sniff_period, + UINT16 min_sniff_period, + UINT16 sniff_attempt, + UINT16 sniff_timeout); #define HCIC_PARAM_SIZE_SNIFF_MODE 10 @@ -290,29 +290,29 @@ BOOLEAN btsnd_hcic_sniff_mode(UINT16 handle, #define HCI_SNIFF_MODE_MIN_PER_OFF 4 #define HCI_SNIFF_MODE_ATTEMPT_OFF 6 #define HCI_SNIFF_MODE_TIMEOUT_OFF 8 - /* Sniff Mode */ +/* Sniff Mode */ BOOLEAN btsnd_hcic_exit_sniff_mode(UINT16 handle); /* Exit Sniff Mode */ - /* Park Mode */ +/* Park Mode */ BOOLEAN btsnd_hcic_park_mode (UINT16 handle, - UINT16 beacon_max_interval, - UINT16 beacon_min_interval); + UINT16 beacon_max_interval, + UINT16 beacon_min_interval); #define HCIC_PARAM_SIZE_PARK_MODE 6 #define HCI_PARK_MODE_HANDLE_OFF 0 #define HCI_PARK_MODE_MAX_PER_OFF 2 #define HCI_PARK_MODE_MIN_PER_OFF 4 - /* Park Mode */ +/* Park Mode */ BOOLEAN btsnd_hcic_exit_park_mode(UINT16 handle); /* Exit Park Mode */ - /* QoS Setup */ +/* QoS Setup */ BOOLEAN btsnd_hcic_qos_setup (UINT16 handle, UINT8 flags, - UINT8 service_type, - UINT32 token_rate, UINT32 peak, - UINT32 latency, UINT32 delay_var); + UINT8 service_type, + UINT32 token_rate, UINT32 peak, + UINT32 latency, UINT32 delay_var); #define HCIC_PARAM_SIZE_QOS_SETUP 20 @@ -323,42 +323,42 @@ BOOLEAN btsnd_hcic_qos_setup (UINT16 handle, UINT8 flags, #define HCI_QOS_PEAK_BANDWIDTH_OFF 8 #define HCI_QOS_LATENCY_OFF 12 #define HCI_QOS_DELAY_VAR_OFF 16 - /* QoS Setup */ +/* QoS Setup */ - /* Switch Role Request */ +/* Switch Role Request */ BOOLEAN btsnd_hcic_switch_role (BD_ADDR bd_addr, UINT8 role); #define HCIC_PARAM_SIZE_SWITCH_ROLE 7 #define HCI_SWITCH_BD_ADDR_OFF 0 #define HCI_SWITCH_ROLE_OFF 6 - /* Switch Role Request */ +/* Switch Role Request */ - /* Write Policy Settings */ +/* Write Policy Settings */ BOOLEAN btsnd_hcic_write_policy_set(UINT16 handle, UINT16 settings); #define HCIC_PARAM_SIZE_WRITE_POLICY_SET 4 #define HCI_WRITE_POLICY_HANDLE_OFF 0 #define HCI_WRITE_POLICY_SETTINGS_OFF 2 - /* Write Policy Settings */ +/* Write Policy Settings */ - /* Write Default Policy Settings */ +/* Write Default Policy Settings */ BOOLEAN btsnd_hcic_write_def_policy_set(UINT16 settings); #define HCIC_PARAM_SIZE_WRITE_DEF_POLICY_SET 2 #define HCI_WRITE_DEF_POLICY_SETTINGS_OFF 0 - /* Write Default Policy Settings */ +/* Write Default Policy Settings */ /****************************************** ** Lisbon Features *******************************************/ #if BTM_SSR_INCLUDED == TRUE - /* Sniff Subrating */ +/* Sniff Subrating */ BOOLEAN btsnd_hcic_sniff_sub_rate(UINT16 handle, UINT16 max_lat, - UINT16 min_remote_lat, - UINT16 min_local_lat); + UINT16 min_remote_lat, + UINT16 min_local_lat); #define HCIC_PARAM_SIZE_SNIFF_SUB_RATE 8 @@ -366,7 +366,7 @@ BOOLEAN btsnd_hcic_sniff_sub_rate(UINT16 handle, UINT16 max_lat, #define HCI_SNIFF_SUB_RATE_MAX_LAT_OFF 2 #define HCI_SNIFF_SUB_RATE_MIN_REM_LAT_OFF 4 #define HCI_SNIFF_SUB_RATE_MIN_LOC_LAT_OFF 6 - /* Sniff Subrating */ +/* Sniff Subrating */ #else /* BTM_SSR_INCLUDED == FALSE */ @@ -374,16 +374,16 @@ BOOLEAN btsnd_hcic_sniff_sub_rate(UINT16 handle, UINT16 max_lat, #endif /* BTM_SSR_INCLUDED */ - /* Extended Inquiry Response */ +/* Extended Inquiry Response */ void btsnd_hcic_write_ext_inquiry_response(void *buffer, UINT8 fec_req); #define HCIC_PARAM_SIZE_EXT_INQ_RESP 241 #define HCIC_EXT_INQ_RESP_FEC_OFF 0 #define HCIC_EXT_INQ_RESP_RESPONSE 1 - /* IO Capabilities Response */ +/* IO Capabilities Response */ BOOLEAN btsnd_hcic_io_cap_req_reply (BD_ADDR bd_addr, UINT8 capability, - UINT8 oob_present, UINT8 auth_req); + UINT8 oob_present, UINT8 auth_req); #define HCIC_PARAM_SIZE_IO_CAP_RESP 9 @@ -392,7 +392,7 @@ BOOLEAN btsnd_hcic_io_cap_req_reply (BD_ADDR bd_addr, UINT8 capability, #define HCI_IO_CAP_OOB_DATA_OFF 7 #define HCI_IO_CAP_AUTH_REQ_OFF 8 - /* IO Capabilities Req Neg Reply */ +/* IO Capabilities Req Neg Reply */ BOOLEAN btsnd_hcic_io_cap_req_neg_reply (BD_ADDR bd_addr, UINT8 err_code); #define HCIC_PARAM_SIZE_IO_CAP_NEG_REPLY 7 @@ -400,7 +400,7 @@ BOOLEAN btsnd_hcic_io_cap_req_neg_reply (BD_ADDR bd_addr, UINT8 err_code); #define HCI_IO_CAP_NR_BD_ADDR_OFF 0 #define HCI_IO_CAP_NR_ERR_CODE 6 - /* Read Local OOB Data */ +/* Read Local OOB Data */ BOOLEAN btsnd_hcic_read_local_oob_data (void); #define HCIC_PARAM_SIZE_R_LOCAL_OOB 0 @@ -427,9 +427,9 @@ BOOLEAN btsnd_hcic_user_passkey_neg_reply (BD_ADDR bd_addr); #define HCI_USER_PASSKEY_NEG_BD_ADDR_OFF 0 - /* Remote OOB Data Request Reply */ +/* Remote OOB Data Request Reply */ BOOLEAN btsnd_hcic_rem_oob_reply (BD_ADDR bd_addr, UINT8 *p_c, - UINT8 *p_r); + UINT8 *p_r); #define HCIC_PARAM_SIZE_REM_OOB_REPLY 38 @@ -437,19 +437,19 @@ BOOLEAN btsnd_hcic_rem_oob_reply (BD_ADDR bd_addr, UINT8 *p_c, #define HCI_REM_OOB_DATA_C_OFF 6 #define HCI_REM_OOB_DATA_R_OFF 22 - /* Remote OOB Data Request Negative Reply */ +/* Remote OOB Data Request Negative Reply */ BOOLEAN btsnd_hcic_rem_oob_neg_reply (BD_ADDR bd_addr); #define HCIC_PARAM_SIZE_REM_OOB_NEG_REPLY 6 #define HCI_REM_OOB_DATA_NEG_BD_ADDR_OFF 0 - /* Read Tx Power Level */ +/* Read Tx Power Level */ BOOLEAN btsnd_hcic_read_inq_tx_power (void); #define HCIC_PARAM_SIZE_R_TX_POWER 0 - /* Read Default Erroneous Data Reporting */ +/* Read Default Erroneous Data Reporting */ BOOLEAN btsnd_hcic_read_default_erroneous_data_rpt (void); #define HCIC_PARAM_SIZE_R_ERR_DATA_RPT 0 @@ -470,37 +470,37 @@ BOOLEAN btsnd_hcic_send_keypress_notif (BD_ADDR bd_addr, UINT8 notif); /**** end of Simple Pairing Commands ****/ - /* Store Current Settings */ +/* Store Current Settings */ #define MAX_FILT_COND (sizeof (BD_ADDR) + 1) BOOLEAN btsnd_hcic_set_event_filter(UINT8 filt_type, - UINT8 filt_cond_type, - UINT8 *filt_cond, - UINT8 filt_cond_len); + UINT8 filt_cond_type, + UINT8 *filt_cond, + UINT8 filt_cond_len); #define HCIC_PARAM_SIZE_SET_EVT_FILTER 9 #define HCI_FILT_COND_FILT_TYPE_OFF 0 #define HCI_FILT_COND_COND_TYPE_OFF 1 #define HCI_FILT_COND_FILT_OFF 2 - /* Set Event Filter */ +/* Set Event Filter */ - /* Delete Stored Key */ +/* Delete Stored Key */ BOOLEAN btsnd_hcic_delete_stored_key (BD_ADDR bd_addr, BOOLEAN delete_all_flag); #define HCIC_PARAM_SIZE_DELETE_STORED_KEY 7 #define HCI_DELETE_KEY_BD_ADDR_OFF 0 #define HCI_DELETE_KEY_ALL_FLAG_OFF 6 - /* Delete Stored Key */ +/* Delete Stored Key */ - /* Change Local Name */ +/* Change Local Name */ BOOLEAN btsnd_hcic_change_name(BD_NAME name); #define HCIC_PARAM_SIZE_CHANGE_NAME BD_NAME_LEN #define HCI_CHANGE_NAME_NAME_OFF 0 - /* Change Local Name */ +/* Change Local Name */ #define HCIC_PARAM_SIZE_READ_CMD 0 @@ -525,22 +525,22 @@ BOOLEAN btsnd_hcic_read_name (void); /* Read Local N BOOLEAN btsnd_hcic_write_page_tout(UINT16 timeout); /* Write Page Timout */ BOOLEAN btsnd_hcic_write_scan_enable(UINT8 flag); /* Write Scan Enable */ BOOLEAN btsnd_hcic_write_pagescan_cfg(UINT16 interval, - UINT16 window); /* Write Page Scan Activity */ + UINT16 window); /* Write Page Scan Activity */ #define HCIC_PARAM_SIZE_WRITE_PAGESCAN_CFG 4 #define HCI_SCAN_CFG_INTERVAL_OFF 0 #define HCI_SCAN_CFG_WINDOW_OFF 2 - /* Write Page Scan Activity */ +/* Write Page Scan Activity */ - /* Write Inquiry Scan Activity */ +/* Write Inquiry Scan Activity */ BOOLEAN btsnd_hcic_write_inqscan_cfg(UINT16 interval, UINT16 window); #define HCIC_PARAM_SIZE_WRITE_INQSCAN_CFG 4 #define HCI_SCAN_CFG_INTERVAL_OFF 0 #define HCI_SCAN_CFG_WINDOW_OFF 2 - /* Write Inquiry Scan Activity */ +/* Write Inquiry Scan Activity */ BOOLEAN btsnd_hcic_write_auth_enable(UINT8 flag); /* Write Authentication Enable */ BOOLEAN btsnd_hcic_write_dev_class(DEV_CLASS dev); /* Write Class of Device */ @@ -553,7 +553,7 @@ BOOLEAN btsnd_hcic_write_voice_settings(UINT16 flags); /* Write Voice #define HCI_HOST_FLOW_CTRL_BOTH_ON 3 BOOLEAN btsnd_hcic_write_auto_flush_tout(UINT16 handle, - UINT16 timeout); /* Write Retransmit Timout */ + UINT16 timeout); /* Write Retransmit Timout */ #define HCIC_PARAM_SIZE_WRITE_AUTO_FLUSH_TOUT 4 @@ -572,8 +572,8 @@ BOOLEAN btsnd_hcic_read_tx_power(UINT16 handle, UINT8 type); /* Read Tx Powe #define HCI_READ_MAXIMUM 0x01 BOOLEAN btsnd_hcic_host_num_xmitted_pkts (UINT8 num_handles, - UINT16 *handle, - UINT16 *num_pkts); /* Set Host Buffer Size */ + UINT16 *handle, + UINT16 *num_pkts); /* Set Host Buffer Size */ #define HCIC_PARAM_SIZE_NUM_PKTS_DONE_SIZE sizeof(btmsg_hcic_num_pkts_done_t) @@ -583,23 +583,23 @@ BOOLEAN btsnd_hcic_host_num_xmitted_pkts (UINT8 num_handles, #define HCI_PKTS_DONE_HANDLE_OFF 1 #define HCI_PKTS_DONE_NUM_PKTS_OFF 3 - /* Write Link Supervision Timeout */ +/* Write Link Supervision Timeout */ BOOLEAN btsnd_hcic_write_link_super_tout(UINT8 local_controller_id, UINT16 handle, UINT16 timeout); #define HCIC_PARAM_SIZE_WRITE_LINK_SUPER_TOUT 4 #define HCI_LINK_SUPER_TOUT_HANDLE_OFF 0 #define HCI_LINK_SUPER_TOUT_TOUT_OFF 2 - /* Write Link Supervision Timeout */ +/* Write Link Supervision Timeout */ BOOLEAN btsnd_hcic_write_cur_iac_lap (UINT8 num_cur_iac, - LAP * const iac_lap); /* Write Current IAC LAP */ + LAP *const iac_lap); /* Write Current IAC LAP */ #define MAX_IAC_LAPS 0x40 #define HCI_WRITE_IAC_LAP_NUM_OFF 0 #define HCI_WRITE_IAC_LAP_LAP_OFF 1 - /* Write Current IAC LAP */ +/* Write Current IAC LAP */ BOOLEAN btsnd_hcic_get_link_quality (UINT16 handle); /* Get Link Quality */ BOOLEAN btsnd_hcic_read_rssi (UINT16 handle); /* Read RSSI */ @@ -631,8 +631,8 @@ BOOLEAN btsnd_hcic_write_inquiry_mode(UINT8 type); /* Write Inquiry #define HCID_GET_SCO_LEN(p) (*((UINT8 *)((p) + 1) + p->offset + 2)) void btsnd_hcic_vendor_spec_cmd (void *buffer, UINT16 opcode, - UINT8 len, UINT8 *p_data, - void *p_cmd_cplt_cback); + UINT8 len, UINT8 *p_data, + void *p_cmd_cplt_cback); #if (BLE_INCLUDED == TRUE) /******************************************************************************** @@ -694,9 +694,9 @@ BOOLEAN btsnd_hcic_ble_set_local_used_feat (UINT8 feat_set[8]); BOOLEAN btsnd_hcic_ble_set_random_addr (BD_ADDR random_addr); BOOLEAN btsnd_hcic_ble_write_adv_params (UINT16 adv_int_min, UINT16 adv_int_max, - UINT8 adv_type, UINT8 addr_type_own, - UINT8 addr_type_dir, BD_ADDR direct_bda, - UINT8 channel_map, UINT8 adv_filter_policy); + UINT8 adv_type, UINT8 addr_type_own, + UINT8 addr_type_dir, BD_ADDR direct_bda, + UINT8 channel_map, UINT8 adv_filter_policy); BOOLEAN btsnd_hcic_ble_read_adv_chnl_tx_power (void); @@ -707,15 +707,15 @@ BOOLEAN btsnd_hcic_ble_set_scan_rsp_data (UINT8 data_len, UINT8 *p_scan_rsp); BOOLEAN btsnd_hcic_ble_set_adv_enable (UINT8 adv_enable); BOOLEAN btsnd_hcic_ble_set_scan_params (UINT8 scan_type, - UINT16 scan_int, UINT16 scan_win, - UINT8 addr_type, UINT8 scan_filter_policy); + UINT16 scan_int, UINT16 scan_win, + UINT8 addr_type, UINT8 scan_filter_policy); BOOLEAN btsnd_hcic_ble_set_scan_enable (UINT8 scan_enable, UINT8 duplicate); BOOLEAN btsnd_hcic_ble_create_ll_conn (UINT16 scan_int, UINT16 scan_win, - UINT8 init_filter_policy, UINT8 addr_type_peer, BD_ADDR bda_peer, UINT8 addr_type_own, - UINT16 conn_int_min, UINT16 conn_int_max, UINT16 conn_latency, UINT16 conn_timeout, - UINT16 min_ce_len, UINT16 max_ce_len); + UINT8 init_filter_policy, UINT8 addr_type_peer, BD_ADDR bda_peer, UINT8 addr_type_own, + UINT16 conn_int_min, UINT16 conn_int_max, UINT16 conn_latency, UINT16 conn_timeout, + UINT16 min_ce_len, UINT16 max_ce_len); BOOLEAN btsnd_hcic_ble_create_conn_cancel (void); @@ -728,7 +728,7 @@ BOOLEAN btsnd_hcic_ble_add_white_list (UINT8 addr_type, BD_ADDR bda); BOOLEAN btsnd_hcic_ble_remove_from_white_list (UINT8 addr_type, BD_ADDR bda); BOOLEAN btsnd_hcic_ble_upd_ll_conn_params (UINT16 handle, UINT16 conn_int_min, UINT16 conn_int_max, - UINT16 conn_latency, UINT16 conn_timeout, UINT16 min_len, UINT16 max_len); + UINT16 conn_latency, UINT16 conn_timeout, UINT16 min_len, UINT16 max_len); BOOLEAN btsnd_hcic_ble_set_host_chnl_class (UINT8 chnl_map[HCIC_BLE_CHNL_MAP_SIZE]); @@ -736,13 +736,13 @@ BOOLEAN btsnd_hcic_ble_read_chnl_map (UINT16 handle); BOOLEAN btsnd_hcic_ble_read_remote_feat ( UINT16 handle); -BOOLEAN btsnd_hcic_ble_encrypt (UINT8* key, UINT8 key_len, UINT8* plain_text, UINT8 pt_len, void *p_cmd_cplt_cback); +BOOLEAN btsnd_hcic_ble_encrypt (UINT8 *key, UINT8 key_len, UINT8 *plain_text, UINT8 pt_len, void *p_cmd_cplt_cback); BOOLEAN btsnd_hcic_ble_rand (void *p_cmd_cplt_cback); BOOLEAN btsnd_hcic_ble_start_enc ( UINT16 handle, - UINT8 rand[HCIC_BLE_RAND_DI_SIZE], - UINT16 ediv, UINT8 ltk[HCIC_BLE_ENCRYT_KEY_SIZE]); + UINT8 rand[HCIC_BLE_RAND_DI_SIZE], + UINT16 ediv, UINT8 ltk[HCIC_BLE_ENCRYT_KEY_SIZE]); BOOLEAN btsnd_hcic_ble_ltk_req_reply (UINT16 handle, UINT8 ltk[HCIC_BLE_ENCRYT_KEY_SIZE]); @@ -757,16 +757,16 @@ BOOLEAN btsnd_hcic_ble_read_host_supported (void); BOOLEAN btsnd_hcic_ble_receiver_test(UINT8 rx_freq); BOOLEAN btsnd_hcic_ble_transmitter_test(UINT8 tx_freq, UINT8 test_data_len, - UINT8 payload); + UINT8 payload); BOOLEAN btsnd_hcic_ble_test_end(void); #if (defined BLE_LLT_INCLUDED) && (BLE_LLT_INCLUDED == TRUE) #define HCIC_PARAM_SIZE_BLE_RC_PARAM_REQ_REPLY 14 BOOLEAN btsnd_hcic_ble_rc_param_req_reply(UINT16 handle, - UINT16 conn_int_min, UINT16 conn_int_max, - UINT16 conn_latency, UINT16 conn_timeout, - UINT16 min_ce_len, UINT16 max_ce_len); + UINT16 conn_int_min, UINT16 conn_int_max, + UINT16 conn_latency, UINT16 conn_timeout, + UINT16 min_ce_len, UINT16 max_ce_len); #define HCIC_PARAM_SIZE_BLE_RC_PARAM_REQ_NEG_REPLY 3 BOOLEAN btsnd_hcic_ble_rc_param_req_neg_reply(UINT16 handle, UINT8 reason); @@ -774,23 +774,23 @@ BOOLEAN btsnd_hcic_ble_rc_param_req_neg_reply(UINT16 handle, UINT8 reason); #endif /* BLE_LLT_INCLUDED */ BOOLEAN btsnd_hcic_ble_set_data_length(UINT16 conn_handle, UINT16 tx_octets, - UINT16 tx_time); + UINT16 tx_time); BOOLEAN btsnd_hcic_ble_add_device_resolving_list (UINT8 addr_type_peer, - BD_ADDR bda_peer, - UINT8 irk_peer[HCIC_BLE_IRK_SIZE], - UINT8 irk_local[HCIC_BLE_IRK_SIZE]); + BD_ADDR bda_peer, + UINT8 irk_peer[HCIC_BLE_IRK_SIZE], + UINT8 irk_local[HCIC_BLE_IRK_SIZE]); BOOLEAN btsnd_hcic_ble_rm_device_resolving_list (UINT8 addr_type_peer, - BD_ADDR bda_peer); + BD_ADDR bda_peer); BOOLEAN btsnd_hcic_ble_clear_resolving_list (void); BOOLEAN btsnd_hcic_ble_read_resolvable_addr_peer (UINT8 addr_type_peer, - BD_ADDR bda_peer); + BD_ADDR bda_peer); BOOLEAN btsnd_hcic_ble_read_resolvable_addr_local (UINT8 addr_type_peer, - BD_ADDR bda_peer); + BD_ADDR bda_peer); BOOLEAN btsnd_hcic_ble_set_addr_resolution_enable (UINT8 addr_resolution_enable); @@ -801,7 +801,7 @@ BOOLEAN btsnd_hcic_ble_set_rand_priv_addr_timeout (UINT16 rpa_timout); BOOLEAN btsnd_hcic_read_authenticated_payload_tout(UINT16 handle); BOOLEAN btsnd_hcic_write_authenticated_payload_tout(UINT16 handle, - UINT16 timeout); + UINT16 timeout); #define HCIC_PARAM_SIZE_WRITE_AUTHENT_PAYLOAD_TOUT 4 diff --git a/components/bt/bluedroid/stack/include/hiddefs.h b/components/bt/bluedroid/stack/include/hiddefs.h old mode 100755 new mode 100644 index bf5d0212e0..c8c3d3cbbe --- a/components/bt/bluedroid/stack/include/hiddefs.h +++ b/components/bt/bluedroid/stack/include/hiddefs.h @@ -29,29 +29,28 @@ /* ** tHID_STATUS: HID result codes, returned by HID and device and host functions. */ -enum -{ - HID_SUCCESS, - HID_ERR_NOT_REGISTERED, - HID_ERR_ALREADY_REGISTERED, - HID_ERR_NO_RESOURCES, - HID_ERR_NO_CONNECTION, - HID_ERR_INVALID_PARAM, - HID_ERR_UNSUPPORTED, - HID_ERR_UNKNOWN_COMMAND, - HID_ERR_CONGESTED, - HID_ERR_CONN_IN_PROCESS, - HID_ERR_ALREADY_CONN, - HID_ERR_DISCONNECTING, - HID_ERR_SET_CONNABLE_FAIL, - /* Device specific error codes */ - HID_ERR_HOST_UNKNOWN, - HID_ERR_L2CAP_FAILED, - HID_ERR_AUTH_FAILED, - HID_ERR_SDP_BUSY, - HID_ERR_GATT, +enum { + HID_SUCCESS, + HID_ERR_NOT_REGISTERED, + HID_ERR_ALREADY_REGISTERED, + HID_ERR_NO_RESOURCES, + HID_ERR_NO_CONNECTION, + HID_ERR_INVALID_PARAM, + HID_ERR_UNSUPPORTED, + HID_ERR_UNKNOWN_COMMAND, + HID_ERR_CONGESTED, + HID_ERR_CONN_IN_PROCESS, + HID_ERR_ALREADY_CONN, + HID_ERR_DISCONNECTING, + HID_ERR_SET_CONNABLE_FAIL, + /* Device specific error codes */ + HID_ERR_HOST_UNKNOWN, + HID_ERR_L2CAP_FAILED, + HID_ERR_AUTH_FAILED, + HID_ERR_SDP_BUSY, + HID_ERR_GATT, - HID_ERR_INVALID = 0xFF + HID_ERR_INVALID = 0xFF }; typedef UINT8 tHID_STATUS; @@ -129,16 +128,14 @@ typedef UINT8 tHID_STATUS; #define HID_SDP_DESCRIPTOR_REPORT (0x22) #define HID_SDP_DESCRIPTOR_PHYSICAL (0x23) -typedef struct desc_info -{ +typedef struct desc_info { UINT16 dl_len; UINT8 *dsc_list; } tHID_DEV_DSCP_INFO; #define HID_SSR_PARAM_INVALID 0xffff -typedef struct sdp_info -{ +typedef struct sdp_info { char svc_name[HID_MAX_SVC_NAME_LEN]; /*Service Name */ char svc_descr[HID_MAX_SVC_DESCR_LEN]; /*Service Description*/ char prov_name[HID_MAX_PROV_NAME_LEN]; /*Provider Name.*/ diff --git a/components/bt/bluedroid/stack/include/hidh_api.h b/components/bt/bluedroid/stack/include/hidh_api.h old mode 100755 new mode 100644 index 00b8fde6f5..499e646253 --- a/components/bt/bluedroid/stack/include/hidh_api.h +++ b/components/bt/bluedroid/stack/include/hidh_api.h @@ -26,7 +26,7 @@ *****************************************************************************/ enum { - HID_SDP_NO_SERV_UUID = (SDP_ILLEGAL_PARAMETER+1), + HID_SDP_NO_SERV_UUID = (SDP_ILLEGAL_PARAMETER + 1), HID_SDP_MANDATORY_MISSING }; @@ -64,8 +64,7 @@ HID_HDEV_EVT_HANDSHAKE Device sent SET_REPORT Data=Result-code pdata=N HID_HDEV_EVT_VC_UNPLUG Device sent Virtual Unplug Data=NA. pdata=NA. */ -enum -{ +enum { HID_HDEV_EVT_OPEN, HID_HDEV_EVT_CLOSE, HID_HDEV_EVT_RETRYING, @@ -101,9 +100,9 @@ extern "C" ** *******************************************************************************/ extern tHID_STATUS HID_HostGetSDPRecord (BD_ADDR addr, - tSDP_DISCOVERY_DB *p_db, - UINT32 db_len, - tHID_HOST_SDP_CALLBACK *sdp_cback ); + tSDP_DISCOVERY_DB *p_db, + UINT32 db_len, + tHID_HOST_SDP_CALLBACK *sdp_cback ); /******************************************************************************* ** diff --git a/components/bt/bluedroid/stack/include/l2c_api.h b/components/bt/bluedroid/stack/include/l2c_api.h old mode 100755 new mode 100644 index 837dbc8528..d79c17a1ba --- a/components/bt/bluedroid/stack/include/l2c_api.h +++ b/components/bt/bluedroid/stack/include/l2c_api.h @@ -89,18 +89,18 @@ typedef UINT8 tL2CAP_CHNL_DATA_RATE; /* length of the HCI header block */ /* HCI header(4) + SNK count(1) + FCR bits(1) + AV data length(2) */ -#define L2CAP_MULTI_AV_HCI_HDR_LEN 8 +#define L2CAP_MULTI_AV_HCI_HDR_LEN 8 /* length of padding for 4 bytes align */ #define L2CAP_MULTI_AV_PADDING_LEN 2 /* length of the HCI header block with padding for FCR */ /* HCI header(4) + SNK count(1) + FCR bits(1) + AV data length(2) + padding(2) */ -#define L2CAP_MULTI_AV_HCI_HDR_LEN_WITH_PADDING 10 +#define L2CAP_MULTI_AV_HCI_HDR_LEN_WITH_PADDING 10 /* length of the L2CAP header block */ /* HCI header(4) + L2CAP header(4) + padding(4) or control word(2) + FCS(2) */ -#define L2CAP_MULTI_AV_L2C_HDR_LEN 12 +#define L2CAP_MULTI_AV_L2C_HDR_LEN 12 /* definition used for L2CA_SetDesireRole */ #define L2CAP_ROLE_SLAVE HCI_ROLE_SLAVE @@ -129,8 +129,7 @@ typedef UINT8 tL2CAP_CHNL_DATA_RATE; ** Type Definitions *****************************************************************************/ -typedef struct -{ +typedef struct { #define L2CAP_FCR_BASIC_MODE 0x00 #define L2CAP_FCR_ERTM_MODE 0x03 #define L2CAP_FCR_STREAM_MODE 0x04 @@ -148,8 +147,7 @@ typedef struct ** parameters are optional, for each parameter there is a boolean to ** use to signify its presence or absence. */ -typedef struct -{ +typedef struct { UINT16 result; /* Only used in confirm messages */ BOOLEAN mtu_present; UINT16 mtu; @@ -287,8 +285,7 @@ typedef void (tL2CA_TX_COMPLETE_CB) (UINT16, UINT16); ** MUST be provided, with the exception of the "connect pending" ** callback and "congestion status" callback. */ -typedef struct -{ +typedef struct { tL2CA_CONNECT_IND_CB *pL2CA_ConnectInd_Cb; tL2CA_CONNECT_CFM_CB *pL2CA_ConnectCfm_Cb; tL2CA_CONNECT_PND_CB *pL2CA_ConnectPnd_Cb; @@ -306,8 +303,7 @@ typedef struct /* Define the structure that applications use to create or accept ** connections with enhanced retransmission mode. */ -typedef struct -{ +typedef struct { UINT8 preferred_mode; UINT8 allowed_modes; UINT8 user_rx_pool_id; @@ -401,7 +397,7 @@ extern UINT16 L2CA_ConnectReq (UINT16 psm, BD_ADDR p_bd_addr); ** *******************************************************************************/ extern BOOLEAN L2CA_ConnectRsp (BD_ADDR p_bd_addr, UINT8 id, UINT16 lcid, - UINT16 result, UINT16 status); + UINT16 result, UINT16 status); /******************************************************************************* ** @@ -417,7 +413,7 @@ extern BOOLEAN L2CA_ConnectRsp (BD_ADDR p_bd_addr, UINT8 id, UINT16 lcid, ** *******************************************************************************/ extern UINT16 L2CA_ErtmConnectReq (UINT16 psm, BD_ADDR p_bd_addr, - tL2CAP_ERTM_INFO *p_ertm_info); + tL2CAP_ERTM_INFO *p_ertm_info); // This function sets the callback routines for the L2CAP connection referred to by // |local_cid|. The callback routines can only be modified for outgoing connections @@ -439,8 +435,8 @@ bool L2CA_SetConnectionCallbacks(uint16_t local_cid, const tL2CAP_APPL_INFO *cal ** *******************************************************************************/ extern BOOLEAN L2CA_ErtmConnectRsp (BD_ADDR p_bd_addr, UINT8 id, UINT16 lcid, - UINT16 result, UINT16 status, - tL2CAP_ERTM_INFO *p_ertm_info); + UINT16 result, UINT16 status, + tL2CAP_ERTM_INFO *p_ertm_info); /******************************************************************************* ** @@ -546,7 +542,7 @@ bool L2CA_GetIdentifiers(uint16_t lcid, uint16_t *rcid, uint16_t *handle); ** *******************************************************************************/ extern BOOLEAN L2CA_SetIdleTimeout (UINT16 cid, UINT16 timeout, - BOOLEAN is_global); + BOOLEAN is_global); /******************************************************************************* ** @@ -568,7 +564,7 @@ extern BOOLEAN L2CA_SetIdleTimeout (UINT16 cid, UINT16 timeout, ** ACL link. *******************************************************************************/ extern BOOLEAN L2CA_SetIdleTimeoutByBdAddr(BD_ADDR bd_addr, UINT16 timeout, - tBT_TRANSPORT transport); + tBT_TRANSPORT transport); /******************************************************************************* ** @@ -664,7 +660,7 @@ extern BOOLEAN L2CA_FlowControl (UINT16 cid, BOOLEAN data_enabled); ** *******************************************************************************/ extern BOOLEAN L2CA_SendTestSFrame (UINT16 cid, UINT8 sup_type, - UINT8 back_track); + UINT8 back_track); /******************************************************************************* ** @@ -830,8 +826,7 @@ typedef void (tL2CA_UCD_CONGESTION_STATUS_CB) (BD_ADDR, BOOLEAN); /* UCD registration info (the callback addresses and PSM) */ -typedef struct -{ +typedef struct { tL2CA_UCD_DISCOVER_CB *pL2CA_UCD_Discover_Cb; tL2CA_UCD_DATA_CB *pL2CA_UCD_Data_Cb; tL2CA_UCD_CONGESTION_STATUS_CB *pL2CA_UCD_Congestion_Status_Cb; @@ -957,8 +952,7 @@ typedef void (tL2CA_FIXED_CONGESTION_STATUS_CB) (BD_ADDR, BOOLEAN); /* Fixed channel registration info (the callback addresses and channel config) */ -typedef struct -{ +typedef struct { tL2CA_FIXED_CHNL_CB *pL2CA_FixedConn_Cb; tL2CA_FIXED_DATA_CB *pL2CA_FixedData_Cb; tL2CA_FIXED_CONGESTION_STATUS_CB *pL2CA_FixedCong_Cb; @@ -1093,7 +1087,7 @@ extern BOOLEAN L2CA_CancelBleConnectReq (BD_ADDR rem_bda); ** *******************************************************************************/ extern BOOLEAN L2CA_UpdateBleConnParams (BD_ADDR rem_bdRa, UINT16 min_int, - UINT16 max_int, UINT16 latency, UINT16 timeout); + UINT16 max_int, UINT16 latency, UINT16 timeout); /******************************************************************************* ** diff --git a/components/bt/bluedroid/stack/include/l2cap_client.h b/components/bt/bluedroid/stack/include/l2cap_client.h old mode 100755 new mode 100644 index c7da782470..168c8db554 --- a/components/bt/bluedroid/stack/include/l2cap_client.h +++ b/components/bt/bluedroid/stack/include/l2cap_client.h @@ -27,10 +27,10 @@ typedef struct buffer_t buffer_t; typedef struct l2cap_client_t l2cap_client_t; typedef struct { - void (*connected)(l2cap_client_t *client, void *context); - void (*disconnected)(l2cap_client_t *client, void *context); - void (*read_ready)(l2cap_client_t *client, buffer_t *packet, void *context); - void (*write_ready)(l2cap_client_t *client, void *context); + void (*connected)(l2cap_client_t *client, void *context); + void (*disconnected)(l2cap_client_t *client, void *context); + void (*read_ready)(l2cap_client_t *client, buffer_t *packet, void *context); + void (*write_ready)(l2cap_client_t *client, void *context); } l2cap_client_callbacks_t; // Returns a new buffer with enough space for |size| bytes of L2CAP payload. diff --git a/components/bt/bluedroid/stack/include/l2cdefs.h b/components/bt/bluedroid/stack/include/l2cdefs.h old mode 100755 new mode 100644 index b4b6f5138d..e31ee24b15 --- a/components/bt/bluedroid/stack/include/l2cdefs.h +++ b/components/bt/bluedroid/stack/include/l2cdefs.h @@ -269,7 +269,7 @@ #define L2CAP_SDU_LEN_OFFSET 2 /* SDU length offset is 2 bytes */ #define L2CAP_EXT_CONTROL_OVERHEAD 4 /* Extended Control Field */ #define L2CAP_MAX_HEADER_FCS (L2CAP_PKT_OVERHEAD + L2CAP_EXT_CONTROL_OVERHEAD + L2CAP_SDU_LEN_OVERHEAD + L2CAP_FCS_LEN) - /* length(2), channel(2), control(4), SDU length(2) FCS(2) */ +/* length(2), channel(2), control(4), SDU length(2) FCS(2) */ /* To optimize this, it must be a multiplum of the L2CAP PDU length AND match the 3DH5 air * including the l2cap headers in each packet - to match the latter - the -5 is added */ diff --git a/components/bt/bluedroid/stack/include/port_api.h b/components/bt/bluedroid/stack/include/port_api.h old mode 100755 new mode 100644 index f24887b573..d5420f56b9 --- a/components/bt/bluedroid/stack/include/port_api.h +++ b/components/bt/bluedroid/stack/include/port_api.h @@ -34,8 +34,7 @@ ** Define port settings structure send from the application in the ** set settings request, or to the application in the set settings indication. */ -typedef struct -{ +typedef struct { #define PORT_BAUD_RATE_2400 0x00 #define PORT_BAUD_RATE_4800 0x01 @@ -101,7 +100,7 @@ typedef int (tPORT_DATA_CALLBACK) (UINT16 port_handle, void *p_data, UINT16 len #define DATA_CO_CALLBACK_TYPE_INCOMING 1 #define DATA_CO_CALLBACK_TYPE_OUTGOING_SIZE 2 #define DATA_CO_CALLBACK_TYPE_OUTGOING 3 -typedef int (tPORT_DATA_CO_CALLBACK) (UINT16 port_handle, UINT8* p_buf, UINT16 len, int type); +typedef int (tPORT_DATA_CO_CALLBACK) (UINT16 port_handle, UINT8 *p_buf, UINT16 len, int type); typedef void (tPORT_CALLBACK) (UINT32 code, UINT16 port_handle); @@ -126,7 +125,7 @@ typedef void (tPORT_CALLBACK) (UINT32 code, UINT16 port_handle); #define PORT_EV_CONNECTED 0x00000200 /* RFCOMM connection established */ #define PORT_EV_CONNECT_ERR 0x00008000 /* Was not able to establish connection */ - /* or disconnected */ +/* or disconnected */ #define PORT_EV_FC 0x00010000 /* data flow enabled flag changed by remote */ #define PORT_EV_FCS 0x00020000 /* data flow enable status true = enabled */ @@ -217,9 +216,9 @@ extern "C" ** *******************************************************************************/ extern int RFCOMM_CreateConnection (UINT16 uuid, UINT8 scn, - BOOLEAN is_server, UINT16 mtu, - BD_ADDR bd_addr, UINT16 *p_handle, - tPORT_CALLBACK *p_mgmt_cb); + BOOLEAN is_server, UINT16 mtu, + BD_ADDR bd_addr, UINT16 *p_handle, + tPORT_CALLBACK *p_mgmt_cb); /******************************************************************************* @@ -463,8 +462,7 @@ extern int PORT_GetModemStatus (UINT16 handle, UINT8 *p_control_signal); #define PORT_ERR_RXOVER 0x08 /* Input queue overflow occured */ #define PORT_ERR_TXFULL 0x10 /* Output queue overflow occured */ -typedef struct -{ +typedef struct { #define PORT_FLAG_CTS_HOLD 0x01 /* Tx is waiting for CTS signal */ #define PORT_FLAG_DSR_HOLD 0x02 /* Tx is waiting for DSR signal */ #define PORT_FLAG_RLSD_HOLD 0x04 /* Tx is waiting for RLSD signal */ @@ -600,7 +598,7 @@ extern int PORT_WriteData (UINT16 handle, char *p_data, UINT16 max_len, ** Parameters: handle - Handle returned in the RFCOMM_CreateConnection ** *******************************************************************************/ -extern int PORT_WriteDataCO (UINT16 handle, int* p_len); +extern int PORT_WriteDataCO (UINT16 handle, int *p_len); /******************************************************************************* ** diff --git a/components/bt/bluedroid/stack/include/profiles_api.h b/components/bt/bluedroid/stack/include/profiles_api.h old mode 100755 new mode 100644 index eee0dd8340..23306ff5a4 --- a/components/bt/bluedroid/stack/include/profiles_api.h +++ b/components/bt/bluedroid/stack/include/profiles_api.h @@ -61,8 +61,7 @@ ** This following definitions are used to indicate the security ** requirements for a service. */ -typedef struct -{ +typedef struct { UINT8 level; UINT8 mask; } tBT_SECURITY; diff --git a/components/bt/bluedroid/stack/include/sdp_api.h b/components/bt/bluedroid/stack/include/sdp_api.h old mode 100755 new mode 100644 index ff44bf5f6b..c35c124393 --- a/components/bt/bluedroid/stack/include/sdp_api.h +++ b/components/bt/bluedroid/stack/include/sdp_api.h @@ -70,22 +70,19 @@ /* Define a callback function for when discovery is complete. */ typedef void (tSDP_DISC_CMPL_CB) (UINT16 result); -typedef void (tSDP_DISC_CMPL_CB2) (UINT16 result, void* user_data); +typedef void (tSDP_DISC_CMPL_CB2) (UINT16 result, void *user_data); -typedef struct -{ +typedef struct { BD_ADDR peer_addr; UINT16 peer_mtu; } tSDP_DR_OPEN; -typedef struct -{ +typedef struct { UINT8 *p_data; UINT16 data_len; } tSDP_DR_DATA; -typedef union -{ +typedef union { tSDP_DR_OPEN open; tSDP_DR_DATA data; } tSDP_DATA; @@ -94,10 +91,8 @@ typedef union typedef void (tSDP_DISC_RES_CB) (UINT16 event, tSDP_DATA *p_data); /* Define a structure to hold the discovered service information. */ -typedef struct -{ - union - { +typedef struct { + union { UINT8 u8; /* 8-bit integer */ UINT16 u16; /* 16-bit integer */ UINT32 u32; /* 32-bit integer */ @@ -107,24 +102,21 @@ typedef struct } tSDP_DISC_ATVAL; -typedef struct t_sdp_disc_attr -{ +typedef struct t_sdp_disc_attr { struct t_sdp_disc_attr *p_next_attr; /* Addr of next linked attr */ UINT16 attr_id; /* Attribute ID */ UINT16 attr_len_type; /* Length and type fields */ tSDP_DISC_ATVAL attr_value; /* Variable length entry data */ } tSDP_DISC_ATTR; -typedef struct t_sdp_disc_rec -{ +typedef struct t_sdp_disc_rec { tSDP_DISC_ATTR *p_first_attr; /* First attribute of record */ struct t_sdp_disc_rec *p_next_rec; /* Addr of next linked record */ UINT32 time_read; /* The time the record was read */ BD_ADDR remote_bd_addr; /* Remote BD address */ } tSDP_DISC_REC; -typedef struct -{ +typedef struct { UINT32 mem_size; /* Memory size of the DB */ UINT32 mem_free; /* Memory still available */ tSDP_DISC_REC *p_first_rec; /* Addr of first record in DB */ @@ -138,18 +130,16 @@ typedef struct UINT32 raw_size; /* size of raw_data */ UINT32 raw_used; /* length of raw_data used */ #endif -}tSDP_DISCOVERY_DB; +} tSDP_DISCOVERY_DB; /* This structure is used to add protocol lists and find protocol elements */ -typedef struct -{ +typedef struct { UINT16 protocol_uuid; UINT16 num_params; UINT16 params[SDP_MAX_PROTOCOL_PARAMS]; } tSDP_PROTOCOL_ELEM; -typedef struct -{ +typedef struct { UINT16 num_elems; tSDP_PROTOCOL_ELEM list_elem[SDP_MAX_LIST_ELEMS]; } tSDP_PROTO_LIST_ELEM; @@ -157,8 +147,7 @@ typedef struct /* Device Identification (DI) data structure */ /* Used to set the DI record */ -typedef struct t_sdp_di_record -{ +typedef struct t_sdp_di_record { UINT16 vendor; UINT16 vendor_id_source; UINT16 product; @@ -167,14 +156,13 @@ typedef struct t_sdp_di_record char client_executable_url[SDP_MAX_ATTR_LEN]; /* optional */ char service_description[SDP_MAX_ATTR_LEN]; /* optional */ char documentation_url[SDP_MAX_ATTR_LEN]; /* optional */ -}tSDP_DI_RECORD; +} tSDP_DI_RECORD; /* Used to get the DI record */ -typedef struct t_sdp_di_get_record -{ +typedef struct t_sdp_di_get_record { UINT16 spec_id; tSDP_DI_RECORD rec; -}tSDP_DI_GET_RECORD; +} tSDP_DI_GET_RECORD; /***************************************************************************** @@ -223,8 +211,8 @@ extern BOOLEAN SDP_CancelServiceSearch (tSDP_DISCOVERY_DB *p_db); ** *******************************************************************************/ extern BOOLEAN SDP_ServiceSearchRequest (UINT8 *p_bd_addr, - tSDP_DISCOVERY_DB *p_db, - tSDP_DISC_CMPL_CB *p_cb); + tSDP_DISCOVERY_DB *p_db, + tSDP_DISC_CMPL_CB *p_cb); /******************************************************************************* @@ -241,8 +229,8 @@ extern BOOLEAN SDP_ServiceSearchRequest (UINT8 *p_bd_addr, ** *******************************************************************************/ extern BOOLEAN SDP_ServiceSearchAttributeRequest (UINT8 *p_bd_addr, - tSDP_DISCOVERY_DB *p_db, - tSDP_DISC_CMPL_CB *p_cb); + tSDP_DISCOVERY_DB *p_db, + tSDP_DISC_CMPL_CB *p_cb); /******************************************************************************* ** @@ -259,8 +247,8 @@ extern BOOLEAN SDP_ServiceSearchAttributeRequest (UINT8 *p_bd_addr, ** *******************************************************************************/ extern BOOLEAN SDP_ServiceSearchAttributeRequest2 (UINT8 *p_bd_addr, - tSDP_DISCOVERY_DB *p_db, - tSDP_DISC_CMPL_CB2 *p_cb, void * user_data); + tSDP_DISCOVERY_DB *p_db, + tSDP_DISC_CMPL_CB2 *p_cb, void *user_data); /* API of utilities to find data in the local discovery database */ @@ -277,8 +265,8 @@ extern BOOLEAN SDP_ServiceSearchAttributeRequest2 (UINT8 *p_bd_addr, ** *******************************************************************************/ extern tSDP_DISC_REC *SDP_FindAttributeInDb (tSDP_DISCOVERY_DB *p_db, - UINT16 attr_id, - tSDP_DISC_REC *p_start_rec); + UINT16 attr_id, + tSDP_DISC_REC *p_start_rec); /******************************************************************************* @@ -292,7 +280,7 @@ extern tSDP_DISC_REC *SDP_FindAttributeInDb (tSDP_DISCOVERY_DB *p_db, ** *******************************************************************************/ extern tSDP_DISC_ATTR *SDP_FindAttributeInRec (tSDP_DISC_REC *p_rec, - UINT16 attr_id); + UINT16 attr_id); /******************************************************************************* @@ -308,8 +296,8 @@ extern tSDP_DISC_ATTR *SDP_FindAttributeInRec (tSDP_DISC_REC *p_rec, ** *******************************************************************************/ extern tSDP_DISC_REC *SDP_FindServiceInDb (tSDP_DISCOVERY_DB *p_db, - UINT16 service_uuid, - tSDP_DISC_REC *p_start_rec); + UINT16 service_uuid, + tSDP_DISC_REC *p_start_rec); /******************************************************************************* @@ -329,8 +317,8 @@ extern tSDP_DISC_REC *SDP_FindServiceInDb (tSDP_DISCOVERY_DB *p_db, ** *******************************************************************************/ extern tSDP_DISC_REC *SDP_FindServiceUUIDInDb (tSDP_DISCOVERY_DB *p_db, - tBT_UUID *p_uuid, - tSDP_DISC_REC *p_start_rec); + tBT_UUID *p_uuid, + tSDP_DISC_REC *p_start_rec); /******************************************************************************* ** @@ -345,7 +333,7 @@ extern tSDP_DISC_REC *SDP_FindServiceUUIDInDb (tSDP_DISCOVERY_DB *p_db, ** Returns TRUE if found, otherwise FALSE. ** *******************************************************************************/ -extern BOOLEAN SDP_FindServiceUUIDInRec_128bit(tSDP_DISC_REC *p_rec, tBT_UUID * p_uuid); +extern BOOLEAN SDP_FindServiceUUIDInRec_128bit(tSDP_DISC_REC *p_rec, tBT_UUID *p_uuid); /******************************************************************************* ** @@ -360,7 +348,7 @@ extern BOOLEAN SDP_FindServiceUUIDInRec_128bit(tSDP_DISC_REC *p_rec, tBT_UUID * ** *******************************************************************************/ extern tSDP_DISC_REC *SDP_FindServiceInDb_128bit(tSDP_DISCOVERY_DB *p_db, - tSDP_DISC_REC *p_start_rec); + tSDP_DISC_REC *p_start_rec); /******************************************************************************* ** @@ -374,8 +362,8 @@ extern tSDP_DISC_REC *SDP_FindServiceInDb_128bit(tSDP_DISCOVERY_DB *p_db, ** *******************************************************************************/ extern BOOLEAN SDP_FindProtocolListElemInRec (tSDP_DISC_REC *p_rec, - UINT16 layer_uuid, - tSDP_PROTOCOL_ELEM *p_elem); + UINT16 layer_uuid, + tSDP_PROTOCOL_ELEM *p_elem); /******************************************************************************* @@ -390,8 +378,8 @@ extern BOOLEAN SDP_FindProtocolListElemInRec (tSDP_DISC_REC *p_rec, ** *******************************************************************************/ extern BOOLEAN SDP_FindAddProtoListsElemInRec (tSDP_DISC_REC *p_rec, - UINT16 layer_uuid, - tSDP_PROTOCOL_ELEM *p_elem); + UINT16 layer_uuid, + tSDP_PROTOCOL_ELEM *p_elem); /******************************************************************************* @@ -409,8 +397,8 @@ extern BOOLEAN SDP_FindAddProtoListsElemInRec (tSDP_DISC_REC *p_rec, ** *******************************************************************************/ extern BOOLEAN SDP_FindProfileVersionInRec (tSDP_DISC_REC *p_rec, - UINT16 profile_uuid, - UINT16 *p_version); + UINT16 profile_uuid, + UINT16 *p_version); /* API into SDP for local service database updates */ @@ -544,7 +532,7 @@ extern BOOLEAN SDP_AddProtocolList (UINT32 handle, UINT16 num_elem, ** *******************************************************************************/ extern BOOLEAN SDP_AddAdditionProtoLists (UINT32 handle, UINT16 num_elem, - tSDP_PROTO_LIST_ELEM *p_proto_list); + tSDP_PROTO_LIST_ELEM *p_proto_list); /******************************************************************************* @@ -560,8 +548,8 @@ extern BOOLEAN SDP_AddAdditionProtoLists (UINT32 handle, UINT16 num_elem, ** *******************************************************************************/ extern BOOLEAN SDP_AddProfileDescriptorList (UINT32 handle, - UINT16 profile_uuid, - UINT16 version); + UINT16 profile_uuid, + UINT16 version); /******************************************************************************* @@ -577,8 +565,8 @@ extern BOOLEAN SDP_AddProfileDescriptorList (UINT32 handle, ** *******************************************************************************/ extern BOOLEAN SDP_AddLanguageBaseAttrIDList (UINT32 handle, - UINT16 lang, UINT16 char_enc, - UINT16 base_id); + UINT16 lang, UINT16 char_enc, + UINT16 base_id); /******************************************************************************* @@ -594,8 +582,8 @@ extern BOOLEAN SDP_AddLanguageBaseAttrIDList (UINT32 handle, ** *******************************************************************************/ extern BOOLEAN SDP_AddServiceClassIdList (UINT32 handle, - UINT16 num_services, - UINT16 *p_service_uuids); + UINT16 num_services, + UINT16 *p_service_uuids); /******************************************************************************* diff --git a/components/bt/bluedroid/stack/include/smp_api.h b/components/bt/bluedroid/stack/include/smp_api.h old mode 100755 new mode 100644 index 62ef1db24f..cb043fdfa0 --- a/components/bt/bluedroid/stack/include/smp_api.h +++ b/components/bt/bluedroid/stack/include/smp_api.h @@ -60,9 +60,9 @@ #define SMP_COMPLT_EVT 7 /* SMP complete event */ #define SMP_PEER_KEYPR_NOT_EVT 8 /* Peer keypress notification received event */ #define SMP_SC_OOB_REQ_EVT 9 /* SC OOB request event (both local and peer OOB data */ - /* can be expected in response) */ +/* can be expected in response) */ #define SMP_SC_LOC_OOB_DATA_UP_EVT 10 /* SC OOB local data set is created */ - /* (as result of SMP_CrLocScOobData(...)) */ +/* (as result of SMP_CrLocScOobData(...)) */ #define SMP_BR_KEYS_REQ_EVT 12 /* SMP over BR keys request event */ typedef UINT8 tSMP_EVT; @@ -117,12 +117,11 @@ typedef UINT8 tSMP_STATUS; typedef UINT8 tSMP_IO_CAP; #ifndef SMP_DEFAULT_IO_CAPS - #define SMP_DEFAULT_IO_CAPS SMP_IO_CAP_KBDISP +#define SMP_DEFAULT_IO_CAPS SMP_IO_CAP_KBDISP #endif /* OOB data present or not */ -enum -{ +enum { SMP_OOB_NONE, SMP_OOB_PRESENT, SMP_OOB_UNKNOWN @@ -130,8 +129,7 @@ enum typedef UINT8 tSMP_OOB_FLAG; /* type of OOB data required from application */ -enum -{ +enum { SMP_OOB_INVALID_TYPE, SMP_OOB_PEER, SMP_OOB_LOCAL, @@ -175,7 +173,7 @@ typedef UINT8 tSMP_OOB_DATA_TYPE; /* Secure Connections, MITM, Bonding */ #define SMP_AUTH_SC_MITM_GB (SMP_SC_SUPPORT_BIT | SMP_AUTH_YN_BIT | SMP_AUTH_GEN_BOND) - /* All AuthReq RFU bits are set to 1 - NOTE: reserved bit in Bonding_Flags is not set */ +/* All AuthReq RFU bits are set to 1 - NOTE: reserved bit in Bonding_Flags is not set */ #define SMP_AUTH_ALL_RFU_SET 0xF8 typedef UINT8 tSMP_AUTH_REQ; @@ -212,8 +210,7 @@ typedef UINT8 tSMP_KEYS; typedef UINT8 tSMP_SC_KEY_TYPE; /* data type for BTM_SP_IO_REQ_EVT */ -typedef struct -{ +typedef struct { tSMP_IO_CAP io_cap; /* local IO capabilities */ tSMP_OOB_FLAG oob_data; /* OOB data present (locally) for the peer device */ tSMP_AUTH_REQ auth_req; /* Authentication required (for local device) */ @@ -222,64 +219,57 @@ typedef struct tSMP_KEYS resp_keys; /* responder keys */ } tSMP_IO_REQ; -typedef struct -{ +typedef struct { tSMP_STATUS reason; tSMP_SEC_LEVEL sec_level; BOOLEAN is_pair_cancel; BOOLEAN smp_over_br; } tSMP_CMPL; -typedef struct -{ +typedef struct { BT_OCTET32 x; BT_OCTET32 y; } tSMP_PUBLIC_KEY; /* the data associated with the info sent to the peer via OOB interface */ -typedef struct -{ +typedef struct { BOOLEAN present; BT_OCTET16 randomizer; BT_OCTET16 commitment; tBLE_BD_ADDR addr_sent_to; BT_OCTET32 private_key_used; /* is used to calculate: */ - /* publ_key_used = P-256(private_key_used, curve_p256.G) - send it to the */ - /* other side */ - /* dhkey = P-256(private_key_used, publ key rcvd from the other side) */ + /* publ_key_used = P-256(private_key_used, curve_p256.G) - send it to the */ + /* other side */ + /* dhkey = P-256(private_key_used, publ key rcvd from the other side) */ tSMP_PUBLIC_KEY publ_key_used; /* P-256(private_key_used, curve_p256.G) */ } tSMP_LOC_OOB_DATA; /* the data associated with the info received from the peer via OOB interface */ -typedef struct -{ +typedef struct { BOOLEAN present; BT_OCTET16 randomizer; BT_OCTET16 commitment; tBLE_BD_ADDR addr_rcvd_from; } tSMP_PEER_OOB_DATA; -typedef struct -{ +typedef struct { tSMP_LOC_OOB_DATA loc_oob_data; tSMP_PEER_OOB_DATA peer_oob_data; } tSMP_SC_OOB_DATA; -typedef union -{ +typedef union { UINT32 passkey; tSMP_IO_REQ io_req; /* IO request */ tSMP_CMPL cmplt; tSMP_OOB_DATA_TYPE req_oob_type; tSMP_LOC_OOB_DATA loc_oob_data; -}tSMP_EVT_DATA; +} tSMP_EVT_DATA; /* AES Encryption output */ -typedef struct -{ +typedef struct { UINT8 status; UINT8 param_len; UINT16 opcode; @@ -486,7 +476,7 @@ extern void SMP_KeypressNotification (BD_ADDR bd_addr, UINT8 value); ** Returns Boolean - TRUE: creation of local SC OOB data set started. *******************************************************************************/ extern BOOLEAN SMP_CreateLocalSecureConnectionsOobData ( - tBLE_BD_ADDR *addr_to_send_to); + tBLE_BD_ADDR *addr_to_send_to); #ifdef __cplusplus } diff --git a/components/bt/bluedroid/stack/l2cap/include/l2c_int.h b/components/bt/bluedroid/stack/l2cap/include/l2c_int.h old mode 100755 new mode 100644 index cbaca82517..56fdd0c943 --- a/components/bt/bluedroid/stack/l2cap/include/l2c_int.h +++ b/components/bt/bluedroid/stack/l2cap/include/l2c_int.h @@ -66,8 +66,7 @@ ** the states may seem a bit strange, but they are taken from ** the Bluetooth specification. */ -typedef enum -{ +typedef enum { CST_CLOSED, /* Channel is in clodes state */ CST_ORIG_W4_SEC_COMP, /* Originator waits security clearence */ CST_TERM_W4_SEC_COMP, /* Acceptor waits security clearence */ @@ -81,8 +80,7 @@ typedef enum /* Define the possible L2CAP link states */ -typedef enum -{ +typedef enum { LST_DISCONNECTED, LST_CONNECT_HOLDING, LST_CONNECTING_WAIT_SWITCH, @@ -157,8 +155,7 @@ typedef enum typedef uint8_t tL2C_BLE_FIXED_CHNLS_MASK; -typedef struct -{ +typedef struct { UINT8 next_tx_seq; /* Next sequence number to be Tx'ed */ UINT8 last_rx_ack; /* Last sequence number ack'ed by the peer */ UINT8 next_seq_expected; /* Next peer sequence number expected */ @@ -193,7 +190,7 @@ typedef struct UINT32 s_frames_rcvd[4]; /* S-frames rcvd (RR, REJ, RNR, SREJ) */ UINT32 xmit_window_closed; /* # of times the xmit window was closed */ UINT32 controller_idle; /* # of times less than 2 packets in controller */ - /* when the xmit window was closed */ + /* when the xmit window was closed */ UINT32 pkts_retransmitted; /* # of packets that were retransmitted */ UINT32 retrans_touts; /* # of retransmission timouts */ UINT32 xmit_ack_touts; /* # of xmit ack timouts */ @@ -224,19 +221,17 @@ typedef struct #define L2C_UCD_STATE_W4_RECEPTION 0x02 #define L2C_UCD_STATE_W4_MTU 0x04 -typedef struct -{ +typedef struct { UINT8 state; tL2CAP_UCD_CB_INFO cb_info; } tL2C_UCD_REG; #endif -typedef struct -{ +typedef struct { BOOLEAN in_use; UINT16 psm; UINT16 real_psm; /* This may be a dummy RCB for an o/b connection but */ - /* this is the real PSM that we need to connect to */ + /* this is the real PSM that we need to connect to */ #if (L2CAP_UCD_INCLUDED == TRUE) tL2C_UCD_REG ucd; #endif @@ -250,8 +245,7 @@ typedef struct ** Each CCB has unique local and remote CIDs. All channel control blocks on ** the same physical link and are chained together. */ -typedef struct t_l2c_ccb -{ +typedef struct t_l2c_ccb { BOOLEAN in_use; /* TRUE when in use, FALSE when not */ tL2C_CHNL_STATE chnl_state; /* Channel state */ @@ -319,8 +313,7 @@ typedef struct t_l2c_ccb /*********************************************************************** ** Define a queue of linked CCBs. */ -typedef struct -{ +typedef struct { tL2C_CCB *p_first_ccb; /* The first channel in this queue */ tL2C_CCB *p_last_ccb; /* The last channel in this queue */ } tL2C_CCB_Q; @@ -337,8 +330,7 @@ typedef struct /* can be sent to headset even if higher priority channel (for example, AV media channel) */ /* is congested. */ -typedef struct -{ +typedef struct { tL2C_CCB *p_serve_ccb; /* current serving ccb within priority group */ tL2C_CCB *p_first_ccb; /* first ccb of priority group */ UINT8 num_ccb; /* number of channels in priority group */ @@ -350,8 +342,7 @@ typedef struct /* Define a link control block. There is one link control block between ** this device and any other device (i.e. BD ADDR). */ -typedef struct t_l2c_linkcb -{ +typedef struct t_l2c_linkcb { BOOLEAN in_use; /* TRUE when in use, FALSE when not */ tL2C_LINK_STATE link_state; @@ -377,7 +368,7 @@ typedef struct t_l2c_linkcb UINT16 sent_not_acked; /* Num packets sent but not acked */ BOOLEAN partial_segment_being_sent; /* Set TRUE when a partial segment */ - /* is being sent. */ + /* is being sent. */ BOOLEAN w4_info_rsp; /* TRUE when info request is active */ UINT8 info_rx_bits; /* set 1 if received info type */ UINT32 peer_ext_fea; /* Peer's extended features mask */ @@ -429,8 +420,7 @@ typedef struct t_l2c_linkcb /* Define the L2CAP control structure */ -typedef struct -{ +typedef struct { UINT8 l2cap_trace_level; UINT16 controller_xmit_window; /* Total ACL window for all links */ @@ -460,7 +450,7 @@ typedef struct #if (L2CAP_NON_FLUSHABLE_PB_INCLUDED == TRUE) UINT16 non_flushable_pbf; /* L2CAP_PKT_START_NON_FLUSHABLE if controller supports */ - /* Otherwise, L2CAP_PKT_START */ + /* Otherwise, L2CAP_PKT_START */ BOOLEAN is_flush_active; /* TRUE if an HCI_Enhanced_Flush has been sent */ #endif @@ -499,8 +489,7 @@ typedef struct ** This structure is used to pass between functions, and not all the ** fields will always be filled in. */ -typedef struct -{ +typedef struct { BD_ADDR bd_addr; /* Remote BD address */ UINT8 status; /* Connection status */ UINT16 psm; /* PSM of the connection */ @@ -577,7 +566,7 @@ extern void l2cu_adj_id (tL2C_LCB *p_lcb, UINT8 adj_mask); extern BOOLEAN l2c_is_cmd_rejected (UINT8 cmd_code, UINT8 id, tL2C_LCB *p_lcb); extern void l2cu_send_peer_cmd_reject (tL2C_LCB *p_lcb, UINT16 reason, - UINT8 rem_id,UINT16 p1, UINT16 p2); + UINT8 rem_id, UINT16 p1, UINT16 p2); extern void l2cu_send_peer_connect_req (tL2C_CCB *p_ccb); extern void l2cu_send_peer_connect_rsp (tL2C_CCB *p_ccb, UINT16 result, UINT16 status); extern void l2cu_send_peer_config_req (tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg); @@ -743,14 +732,14 @@ extern void l2cble_process_conn_update_evt (UINT16 handle, UINT8 status); #if (defined BLE_LLT_INCLUDED) && (BLE_LLT_INCLUDED == TRUE) extern void l2cble_process_rc_param_request_evt(UINT16 handle, UINT16 int_min, UINT16 int_max, - UINT16 latency, UINT16 timeout); + UINT16 latency, UINT16 timeout); #endif extern void l2cble_update_data_length(tL2C_LCB *p_lcb); extern void l2cble_set_fixed_channel_tx_data_length(BD_ADDR remote_bda, UINT16 fix_cid, - UINT16 tx_mtu); + UINT16 tx_mtu); extern void l2cble_process_data_length_change_event(UINT16 handle, UINT16 tx_data_len, - UINT16 rx_data_len); + UINT16 rx_data_len); #endif extern void l2cu_process_fixed_disc_cback (tL2C_LCB *p_lcb); diff --git a/components/bt/bluedroid/stack/l2cap/l2c_api.c b/components/bt/bluedroid/stack/l2cap/l2c_api.c old mode 100755 new mode 100644 index 5b06f35cc5..6aef4afc08 --- a/components/bt/bluedroid/stack/l2cap/l2c_api.c +++ b/components/bt/bluedroid/stack/l2cap/l2c_api.c @@ -64,39 +64,34 @@ UINT16 L2CA_Register (UINT16 psm, tL2CAP_APPL_INFO *p_cb_info) ** or only a server. */ if ((!p_cb_info->pL2CA_ConfigCfm_Cb) - || (!p_cb_info->pL2CA_ConfigInd_Cb) - || (!p_cb_info->pL2CA_DataInd_Cb) - || (!p_cb_info->pL2CA_DisconnectInd_Cb)) - { + || (!p_cb_info->pL2CA_ConfigInd_Cb) + || (!p_cb_info->pL2CA_DataInd_Cb) + || (!p_cb_info->pL2CA_DisconnectInd_Cb)) { L2CAP_TRACE_ERROR ("L2CAP - no cb registering PSM: 0x%04x", psm); return (0); } /* Verify PSM is valid */ - if (L2C_INVALID_PSM(psm)) - { + if (L2C_INVALID_PSM(psm)) { L2CAP_TRACE_ERROR ("L2CAP - invalid PSM value, PSM: 0x%04x", psm); return (0); } /* Check if this is a registration for an outgoing-only connection to */ /* a dynamic PSM. If so, allocate a "virtual" PSM for the app to use. */ - if ( (psm >= 0x1001) && (p_cb_info->pL2CA_ConnectInd_Cb == NULL) ) - { - for (vpsm = 0x1002; vpsm < 0x8000; vpsm += 2) - { - if ((p_rcb = l2cu_find_rcb_by_psm (vpsm)) == NULL) + if ( (psm >= 0x1001) && (p_cb_info->pL2CA_ConnectInd_Cb == NULL) ) { + for (vpsm = 0x1002; vpsm < 0x8000; vpsm += 2) { + if ((p_rcb = l2cu_find_rcb_by_psm (vpsm)) == NULL) { break; + } } //L2CAP_TRACE_API ("L2CA_Register - Real PSM: 0x%04x Virtual PSM: 0x%04x", psm, vpsm); } /* If registration block already there, just overwrite it */ - if ((p_rcb = l2cu_find_rcb_by_psm (vpsm)) == NULL) - { - if ((p_rcb = l2cu_allocate_rcb (vpsm)) == NULL) - { + if ((p_rcb = l2cu_find_rcb_by_psm (vpsm)) == NULL) { + if ((p_rcb = l2cu_allocate_rcb (vpsm)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no RCB available, PSM: 0x%04x vPSM: 0x%04x", psm, vpsm); return (0); } @@ -128,30 +123,28 @@ void L2CA_Deregister (UINT16 psm) int ii; - if ((p_rcb = l2cu_find_rcb_by_psm (psm)) != NULL) - { + if ((p_rcb = l2cu_find_rcb_by_psm (psm)) != NULL) { p_lcb = &l2cb.lcb_pool[0]; - for (ii = 0; ii < MAX_L2CAP_LINKS; ii++, p_lcb++) - { - if (p_lcb->in_use) - { + for (ii = 0; ii < MAX_L2CAP_LINKS; ii++, p_lcb++) { + if (p_lcb->in_use) { if (((p_ccb = p_lcb->ccb_queue.p_first_ccb) == NULL) - || (p_lcb->link_state == LST_DISCONNECTING)) + || (p_lcb->link_state == LST_DISCONNECTING)) { continue; + } if ((p_ccb->in_use) && - ((p_ccb->chnl_state == CST_W4_L2CAP_DISCONNECT_RSP) || - (p_ccb->chnl_state == CST_W4_L2CA_DISCONNECT_RSP))) + ((p_ccb->chnl_state == CST_W4_L2CAP_DISCONNECT_RSP) || + (p_ccb->chnl_state == CST_W4_L2CA_DISCONNECT_RSP))) { continue; + } - if (p_ccb->p_rcb == p_rcb) + if (p_ccb->p_rcb == p_rcb) { l2c_csm_execute (p_ccb, L2CEVT_L2CA_DISCONNECT_REQ, NULL); + } } } l2cu_release_rcb (p_rcb); - } - else - { + } else { L2CAP_TRACE_WARNING ("L2CAP - PSM: 0x%04x not found for deregistration", psm); } } @@ -171,30 +164,28 @@ UINT16 L2CA_AllocatePSM(void) BOOLEAN done = FALSE; UINT16 psm = l2cb.dyn_psm; - while (!done) - { + while (!done) { psm += 2; - if (psm > 0xfeff) - { + if (psm > 0xfeff) { psm = 0x1001; - } - else if (psm & 0x0100) - { + } else if (psm & 0x0100) { /* the upper byte must be even */ psm += 0x0100; } /* if psm is in range of reserved BRCM Aware features */ - if ((BRCM_RESERVED_PSM_START <= psm)&&(psm <= BRCM_RESERVED_PSM_END)) + if ((BRCM_RESERVED_PSM_START <= psm) && (psm <= BRCM_RESERVED_PSM_END)) { continue; + } /* make sure the newlly allocated psm is not used right now */ - if ((l2cu_find_rcb_by_psm (psm)) == NULL) + if ((l2cu_find_rcb_by_psm (psm)) == NULL) { done = TRUE; + } } l2cb.dyn_psm = psm; - return(psm); + return (psm); } /******************************************************************************* @@ -238,41 +229,36 @@ UINT16 L2CA_ErtmConnectReq (UINT16 psm, BD_ADDR p_bd_addr, tL2CAP_ERTM_INFO *p_e //counter_add("l2cap.conn.req", 1); L2CAP_TRACE_API ("L2CA_ErtmConnectReq() PSM: 0x%04x BDA: %08x%04x p_ertm_info: 0x%08x allowed:0x%x preferred:%d", psm, - (p_bd_addr[0]<<24)+(p_bd_addr[1]<<16)+(p_bd_addr[2]<<8)+p_bd_addr[3], - (p_bd_addr[4]<<8)+p_bd_addr[5], p_ertm_info, - (p_ertm_info) ? p_ertm_info->allowed_modes : 0, - (p_ertm_info) ? p_ertm_info->preferred_mode : 0); + (p_bd_addr[0] << 24) + (p_bd_addr[1] << 16) + (p_bd_addr[2] << 8) + p_bd_addr[3], + (p_bd_addr[4] << 8) + p_bd_addr[5], p_ertm_info, + (p_ertm_info) ? p_ertm_info->allowed_modes : 0, + (p_ertm_info) ? p_ertm_info->preferred_mode : 0); /* Fail if we have not established communications with the controller */ - if (!BTM_IsDeviceUp()) - { + if (!BTM_IsDeviceUp()) { L2CAP_TRACE_WARNING ("L2CAP connect req - BTU not ready"); return (0); } /* Fail if the PSM is not registered */ - if ((p_rcb = l2cu_find_rcb_by_psm (psm)) == NULL) - { + if ((p_rcb = l2cu_find_rcb_by_psm (psm)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no RCB for L2CA_conn_req, PSM: 0x%04x", psm); return (0); } /* First, see if we already have a link to the remote */ /* assume all ERTM l2cap connection is going over BR/EDR for now */ - if ((p_lcb = l2cu_find_lcb_by_bd_addr (p_bd_addr, BT_TRANSPORT_BR_EDR)) == NULL) - { + if ((p_lcb = l2cu_find_lcb_by_bd_addr (p_bd_addr, BT_TRANSPORT_BR_EDR)) == NULL) { /* No link. Get an LCB and start link establishment */ if ( ((p_lcb = l2cu_allocate_lcb (p_bd_addr, FALSE, BT_TRANSPORT_BR_EDR)) == NULL) - /* currently use BR/EDR for ERTM mode l2cap connection */ - || (l2cu_create_conn(p_lcb, BT_TRANSPORT_BR_EDR) == FALSE) ) - { + /* currently use BR/EDR for ERTM mode l2cap connection */ + || (l2cu_create_conn(p_lcb, BT_TRANSPORT_BR_EDR) == FALSE) ) { L2CAP_TRACE_WARNING ("L2CAP - conn not started for PSM: 0x%04x p_lcb: 0x%08x", psm, p_lcb); return (0); } } /* Allocate a channel control block */ - if ((p_ccb = l2cu_allocate_ccb (p_lcb, 0)) == NULL) - { + if ((p_ccb = l2cu_allocate_ccb (p_lcb, 0)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no CCB for L2CA_conn_req, PSM: 0x%04x", psm); return (0); } @@ -280,30 +266,32 @@ UINT16 L2CA_ErtmConnectReq (UINT16 psm, BD_ADDR p_bd_addr, tL2CAP_ERTM_INFO *p_e /* Save registration info */ p_ccb->p_rcb = p_rcb; - if (p_ertm_info) - { + if (p_ertm_info) { p_ccb->ertm_info = *p_ertm_info; /* Replace default indicators with the actual default pool */ - if (p_ccb->ertm_info.fcr_rx_pool_id == L2CAP_DEFAULT_ERM_POOL_ID) + if (p_ccb->ertm_info.fcr_rx_pool_id == L2CAP_DEFAULT_ERM_POOL_ID) { p_ccb->ertm_info.fcr_rx_pool_id = L2CAP_FCR_RX_POOL_ID; + } - if (p_ccb->ertm_info.fcr_tx_pool_id == L2CAP_DEFAULT_ERM_POOL_ID) + if (p_ccb->ertm_info.fcr_tx_pool_id == L2CAP_DEFAULT_ERM_POOL_ID) { p_ccb->ertm_info.fcr_tx_pool_id = L2CAP_FCR_TX_POOL_ID; + } - if (p_ccb->ertm_info.user_rx_pool_id == L2CAP_DEFAULT_ERM_POOL_ID) + if (p_ccb->ertm_info.user_rx_pool_id == L2CAP_DEFAULT_ERM_POOL_ID) { p_ccb->ertm_info.user_rx_pool_id = HCI_ACL_POOL_ID; + } - if (p_ccb->ertm_info.user_tx_pool_id == L2CAP_DEFAULT_ERM_POOL_ID) + if (p_ccb->ertm_info.user_tx_pool_id == L2CAP_DEFAULT_ERM_POOL_ID) { p_ccb->ertm_info.user_tx_pool_id = HCI_ACL_POOL_ID; + } p_ccb->max_rx_mtu = GKI_get_pool_bufsize (p_ertm_info->user_rx_pool_id) - - (L2CAP_MIN_OFFSET + L2CAP_SDU_LEN_OFFSET + L2CAP_FCS_LEN); + (L2CAP_MIN_OFFSET + L2CAP_SDU_LEN_OFFSET + L2CAP_FCS_LEN); } /* If link is up, start the L2CAP connection */ - if (p_lcb->link_state == LST_CONNECTED) - { + if (p_lcb->link_state == LST_CONNECTED) { l2c_csm_execute (p_ccb, L2CEVT_L2CA_CONNECT_REQ, NULL); } @@ -313,8 +301,7 @@ UINT16 L2CA_ErtmConnectReq (UINT16 psm, BD_ADDR p_bd_addr, tL2CAP_ERTM_INFO *p_e * ccb will be automatically retried after link disconnect * arrives */ - else if (p_lcb->link_state == LST_DISCONNECTING) - { + else if (p_lcb->link_state == LST_DISCONNECTING) { L2CAP_TRACE_DEBUG ("L2CAP API - link disconnecting: RETRY LATER"); /* Save ccb so it can be started after disconnect is finished */ @@ -327,43 +314,44 @@ UINT16 L2CA_ErtmConnectReq (UINT16 psm, BD_ADDR p_bd_addr, tL2CAP_ERTM_INFO *p_e return (p_ccb->local_cid); } -bool L2CA_SetConnectionCallbacks(uint16_t local_cid, const tL2CAP_APPL_INFO *callbacks) { - assert(callbacks != NULL); - assert(callbacks->pL2CA_ConnectInd_Cb == NULL); - assert(callbacks->pL2CA_ConnectCfm_Cb != NULL); - assert(callbacks->pL2CA_ConfigInd_Cb != NULL); - assert(callbacks->pL2CA_ConfigCfm_Cb != NULL); - assert(callbacks->pL2CA_DisconnectInd_Cb != NULL); - assert(callbacks->pL2CA_DisconnectCfm_Cb != NULL); - assert(callbacks->pL2CA_CongestionStatus_Cb != NULL); - assert(callbacks->pL2CA_DataInd_Cb != NULL); - assert(callbacks->pL2CA_TxComplete_Cb != NULL); +bool L2CA_SetConnectionCallbacks(uint16_t local_cid, const tL2CAP_APPL_INFO *callbacks) +{ + assert(callbacks != NULL); + assert(callbacks->pL2CA_ConnectInd_Cb == NULL); + assert(callbacks->pL2CA_ConnectCfm_Cb != NULL); + assert(callbacks->pL2CA_ConfigInd_Cb != NULL); + assert(callbacks->pL2CA_ConfigCfm_Cb != NULL); + assert(callbacks->pL2CA_DisconnectInd_Cb != NULL); + assert(callbacks->pL2CA_DisconnectCfm_Cb != NULL); + assert(callbacks->pL2CA_CongestionStatus_Cb != NULL); + assert(callbacks->pL2CA_DataInd_Cb != NULL); + assert(callbacks->pL2CA_TxComplete_Cb != NULL); - tL2C_CCB *channel_control_block = l2cu_find_ccb_by_cid(NULL, local_cid); - if (!channel_control_block) { - LOG_ERROR("%s no channel control block found for L2CAP LCID=0x%04x.", __func__, local_cid); - return false; - } - - // We're making a connection-specific registration control block so we check if - // we already have a private one allocated to us on the heap. If not, we make a - // new allocation, mark it as heap-allocated, and inherit the fields from the old - // control block. - tL2C_RCB *registration_control_block = channel_control_block->p_rcb; - if (!channel_control_block->should_free_rcb) { - registration_control_block = (tL2C_RCB *)osi_calloc(sizeof(tL2C_RCB)); - if (!registration_control_block) { - LOG_ERROR("%s unable to allocate registration control block.", __func__); - return false; + tL2C_CCB *channel_control_block = l2cu_find_ccb_by_cid(NULL, local_cid); + if (!channel_control_block) { + LOG_ERROR("%s no channel control block found for L2CAP LCID=0x%04x.", __func__, local_cid); + return false; } - *registration_control_block = *channel_control_block->p_rcb; - channel_control_block->p_rcb = registration_control_block; - channel_control_block->should_free_rcb = true; - } + // We're making a connection-specific registration control block so we check if + // we already have a private one allocated to us on the heap. If not, we make a + // new allocation, mark it as heap-allocated, and inherit the fields from the old + // control block. + tL2C_RCB *registration_control_block = channel_control_block->p_rcb; + if (!channel_control_block->should_free_rcb) { + registration_control_block = (tL2C_RCB *)osi_calloc(sizeof(tL2C_RCB)); + if (!registration_control_block) { + LOG_ERROR("%s unable to allocate registration control block.", __func__); + return false; + } - registration_control_block->api = *callbacks; - return true; + *registration_control_block = *channel_control_block->p_rcb; + channel_control_block->p_rcb = registration_control_block; + channel_control_block->should_free_rcb = true; + } + + registration_control_block->api = *callbacks; + return true; } /******************************************************************************* @@ -378,7 +366,7 @@ bool L2CA_SetConnectionCallbacks(uint16_t local_cid, const tL2CAP_APPL_INFO *cal ** *******************************************************************************/ BOOLEAN L2CA_ConnectRsp (BD_ADDR p_bd_addr, UINT8 id, UINT16 lcid, - UINT16 result, UINT16 status) + UINT16 result, UINT16 status) { return L2CA_ErtmConnectRsp (p_bd_addr, id, lcid, result, status, NULL); } @@ -403,67 +391,65 @@ BOOLEAN L2CA_ErtmConnectRsp (BD_ADDR p_bd_addr, UINT8 id, UINT16 lcid, UINT16 re //counter_add("l2cap.conn.rsp", 1); L2CAP_TRACE_API ("L2CA_ErtmConnectRsp() CID: 0x%04x Result: %d Status: %d BDA: %08x%04x p_ertm_info:0x%08x", - lcid, result, status, - (p_bd_addr[0]<<24)+(p_bd_addr[1]<<16)+(p_bd_addr[2]<<8)+p_bd_addr[3], - (p_bd_addr[4]<<8)+p_bd_addr[5], p_ertm_info); + lcid, result, status, + (p_bd_addr[0] << 24) + (p_bd_addr[1] << 16) + (p_bd_addr[2] << 8) + p_bd_addr[3], + (p_bd_addr[4] << 8) + p_bd_addr[5], p_ertm_info); /* First, find the link control block */ - if ((p_lcb = l2cu_find_lcb_by_bd_addr (p_bd_addr, BT_TRANSPORT_BR_EDR)) == NULL) - { + if ((p_lcb = l2cu_find_lcb_by_bd_addr (p_bd_addr, BT_TRANSPORT_BR_EDR)) == NULL) { /* No link. Get an LCB and start link establishment */ L2CAP_TRACE_WARNING ("L2CAP - no LCB for L2CA_conn_rsp"); return (FALSE); } /* Now, find the channel control block */ - if ((p_ccb = l2cu_find_ccb_by_cid (p_lcb, lcid)) == NULL) - { + if ((p_ccb = l2cu_find_ccb_by_cid (p_lcb, lcid)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no CCB for L2CA_conn_rsp"); return (FALSE); } /* The IDs must match */ - if (p_ccb->remote_id != id) - { + if (p_ccb->remote_id != id) { L2CAP_TRACE_WARNING ("L2CAP - bad id in L2CA_conn_rsp. Exp: %d Got: %d", p_ccb->remote_id, id); return (FALSE); } - if (p_ertm_info) - { + if (p_ertm_info) { p_ccb->ertm_info = *p_ertm_info; /* Replace default indicators with the actual default pool */ - if (p_ccb->ertm_info.fcr_rx_pool_id == L2CAP_DEFAULT_ERM_POOL_ID) + if (p_ccb->ertm_info.fcr_rx_pool_id == L2CAP_DEFAULT_ERM_POOL_ID) { p_ccb->ertm_info.fcr_rx_pool_id = L2CAP_FCR_RX_POOL_ID; + } - if (p_ccb->ertm_info.fcr_tx_pool_id == L2CAP_DEFAULT_ERM_POOL_ID) + if (p_ccb->ertm_info.fcr_tx_pool_id == L2CAP_DEFAULT_ERM_POOL_ID) { p_ccb->ertm_info.fcr_tx_pool_id = L2CAP_FCR_TX_POOL_ID; + } - if (p_ccb->ertm_info.user_rx_pool_id == L2CAP_DEFAULT_ERM_POOL_ID) + if (p_ccb->ertm_info.user_rx_pool_id == L2CAP_DEFAULT_ERM_POOL_ID) { p_ccb->ertm_info.user_rx_pool_id = HCI_ACL_POOL_ID; + } - if (p_ccb->ertm_info.user_tx_pool_id == L2CAP_DEFAULT_ERM_POOL_ID) + if (p_ccb->ertm_info.user_tx_pool_id == L2CAP_DEFAULT_ERM_POOL_ID) { p_ccb->ertm_info.user_tx_pool_id = HCI_ACL_POOL_ID; + } p_ccb->max_rx_mtu = GKI_get_pool_bufsize (p_ertm_info->user_rx_pool_id) - (L2CAP_MIN_OFFSET + L2CAP_SDU_LEN_OFFSET + L2CAP_FCS_LEN); } - if (result == L2CAP_CONN_OK) - { + if (result == L2CAP_CONN_OK) { l2c_csm_execute (p_ccb, L2CEVT_L2CA_CONNECT_RSP, NULL); - } - else - { + } else { tL2C_CONN_INFO conn_info; conn_info.l2cap_result = result; conn_info.l2cap_status = status; - if (result == L2CAP_CONN_PENDING) + if (result == L2CAP_CONN_PENDING) { l2c_csm_execute (p_ccb, L2CEVT_L2CA_CONNECT_RSP, &conn_info); - else + } else { l2c_csm_execute (p_ccb, L2CEVT_L2CA_CONNECT_RSP_NEG, &conn_info); + } } return (TRUE); @@ -487,28 +473,26 @@ BOOLEAN L2CA_ConfigReq (UINT16 cid, tL2CAP_CFG_INFO *p_cfg) //counter_add("l2cap.cfg.req", 1); L2CAP_TRACE_API ("L2CA_ConfigReq() CID 0x%04x: fcr_present:%d (mode %d) mtu_present:%d (%d)", - cid, p_cfg->fcr_present, p_cfg->fcr.mode, p_cfg->mtu_present, p_cfg->mtu); + cid, p_cfg->fcr_present, p_cfg->fcr.mode, p_cfg->mtu_present, p_cfg->mtu); /* Find the channel control block. We don't know the link it is on. */ - if ((p_ccb = l2cu_find_ccb_by_cid (NULL, cid)) == NULL) - { + if ((p_ccb = l2cu_find_ccb_by_cid (NULL, cid)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no CCB for L2CA_cfg_req, CID: %d", cid); return (FALSE); } /* We need to have at least one mode type common with the peer */ - if (!l2c_fcr_adj_our_req_options(p_ccb, p_cfg)) + if (!l2c_fcr_adj_our_req_options(p_ccb, p_cfg)) { return (FALSE); + } /* Don't adjust FCR options if not used */ - if ((!p_cfg->fcr_present)||(p_cfg->fcr.mode == L2CAP_FCR_BASIC_MODE)) - { + if ((!p_cfg->fcr_present) || (p_cfg->fcr.mode == L2CAP_FCR_BASIC_MODE)) { /* FCR and FCS options are not used in basic mode */ p_cfg->fcs_present = FALSE; p_cfg->ext_flow_spec_present = FALSE; - if ( (p_cfg->mtu_present) && (p_cfg->mtu > L2CAP_MTU_SIZE) ) - { + if ( (p_cfg->mtu_present) && (p_cfg->mtu > L2CAP_MTU_SIZE) ) { L2CAP_TRACE_WARNING ("L2CAP - adjust MTU: %u too large", p_cfg->mtu); p_cfg->mtu = L2CAP_MTU_SIZE; } @@ -539,28 +523,29 @@ BOOLEAN L2CA_ConfigRsp (UINT16 cid, tL2CAP_CFG_INFO *p_cfg) //counter_add("l2cap.cfg.rsp", 1); L2CAP_TRACE_API ("L2CA_ConfigRsp() CID: 0x%04x Result: %d MTU present:%d Flush TO:%d FCR:%d FCS:%d", - cid, p_cfg->result, p_cfg->mtu_present, p_cfg->flush_to_present, p_cfg->fcr_present, p_cfg->fcs_present); + cid, p_cfg->result, p_cfg->mtu_present, p_cfg->flush_to_present, p_cfg->fcr_present, p_cfg->fcs_present); /* Find the channel control block. We don't know the link it is on. */ - if ((p_ccb = l2cu_find_ccb_by_cid (NULL, cid)) == NULL) - { + if ((p_ccb = l2cu_find_ccb_by_cid (NULL, cid)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no CCB for L2CA_cfg_rsp, CID: %d", cid); return (FALSE); } - if ( (p_cfg->result == L2CAP_CFG_OK) || (p_cfg->result == L2CAP_CFG_PENDING) ) + if ( (p_cfg->result == L2CAP_CFG_OK) || (p_cfg->result == L2CAP_CFG_PENDING) ) { l2c_csm_execute (p_ccb, L2CEVT_L2CA_CONFIG_RSP, p_cfg); - else - { + } else { p_cfg->fcr_present = FALSE; /* FCR options already negotiated before this point */ /* Clear out any cached options that are being returned as an error (excluding FCR) */ - if (p_cfg->mtu_present) + if (p_cfg->mtu_present) { p_ccb->peer_cfg.mtu_present = FALSE; - if (p_cfg->flush_to_present) + } + if (p_cfg->flush_to_present) { p_ccb->peer_cfg.flush_to_present = FALSE; - if (p_cfg->qos_present) + } + if (p_cfg->qos_present) { p_ccb->peer_cfg.qos_present = FALSE; + } l2c_csm_execute (p_ccb, L2CEVT_L2CA_CONFIG_RSP_NEG, p_cfg); } @@ -586,8 +571,7 @@ BOOLEAN L2CA_DisconnectReq (UINT16 cid) L2CAP_TRACE_API ("L2CA_DisconnectReq() CID: 0x%04x", cid); /* Find the channel control block. We don't know the link it is on. */ - if ((p_ccb = l2cu_find_ccb_by_cid (NULL, cid)) == NULL) - { + if ((p_ccb = l2cu_find_ccb_by_cid (NULL, cid)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no CCB for L2CA_disc_req, CID: %d", cid); return (FALSE); } @@ -615,8 +599,7 @@ BOOLEAN L2CA_DisconnectRsp (UINT16 cid) L2CAP_TRACE_API ("L2CA_DisconnectRsp() CID: 0x%04x", cid); /* Find the channel control block. We don't know the link it is on. */ - if ((p_ccb = l2cu_find_ccb_by_cid (NULL, cid)) == NULL) - { + if ((p_ccb = l2cu_find_ccb_by_cid (NULL, cid)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no CCB for L2CA_disc_rsp, CID: %d", cid); return (FALSE); } @@ -640,23 +623,21 @@ BOOLEAN L2CA_Ping (BD_ADDR p_bd_addr, tL2CA_ECHO_RSP_CB *p_callback) tL2C_LCB *p_lcb; L2CAP_TRACE_API ("L2CA_Ping() BDA: %02x-%02x-%02x-%02x-%02x-%02x", - p_bd_addr[0], p_bd_addr[1], p_bd_addr[2], p_bd_addr[3], p_bd_addr[4], p_bd_addr[5]); + p_bd_addr[0], p_bd_addr[1], p_bd_addr[2], p_bd_addr[3], p_bd_addr[4], p_bd_addr[5]); /* Fail if we have not established communications with the controller */ - if (!BTM_IsDeviceUp()) + if (!BTM_IsDeviceUp()) { return (FALSE); + } /* First, see if we already have a link to the remote */ - if ((p_lcb = l2cu_find_lcb_by_bd_addr (p_bd_addr, BT_TRANSPORT_BR_EDR)) == NULL) - { + if ((p_lcb = l2cu_find_lcb_by_bd_addr (p_bd_addr, BT_TRANSPORT_BR_EDR)) == NULL) { /* No link. Get an LCB and start link establishment */ - if ((p_lcb = l2cu_allocate_lcb (p_bd_addr, FALSE, BT_TRANSPORT_BR_EDR)) == NULL) - { + if ((p_lcb = l2cu_allocate_lcb (p_bd_addr, FALSE, BT_TRANSPORT_BR_EDR)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no LCB for L2CA_ping"); return (FALSE); } - if (l2cu_create_conn(p_lcb, BT_TRANSPORT_BR_EDR) == FALSE) - { + if (l2cu_create_conn(p_lcb, BT_TRANSPORT_BR_EDR) == FALSE) { return (FALSE); } @@ -666,15 +647,13 @@ BOOLEAN L2CA_Ping (BD_ADDR p_bd_addr, tL2CA_ECHO_RSP_CB *p_callback) } /* We only allow 1 ping outstanding at a time */ - if (p_lcb->p_echo_rsp_cb != NULL) - { + if (p_lcb->p_echo_rsp_cb != NULL) { L2CAP_TRACE_WARNING ("L2CAP - rejected second L2CA_ping"); return (FALSE); } /* Have a link control block. If link is disconnecting, tell user to retry later */ - if (p_lcb->link_state == LST_DISCONNECTING) - { + if (p_lcb->link_state == LST_DISCONNECTING) { L2CAP_TRACE_WARNING ("L2CAP - L2CA_ping rejected - link disconnecting"); return (FALSE); } @@ -682,8 +661,7 @@ BOOLEAN L2CA_Ping (BD_ADDR p_bd_addr, tL2CA_ECHO_RSP_CB *p_callback) /* Save address of callback */ p_lcb->p_echo_rsp_cb = p_callback; - if (p_lcb->link_state == LST_CONNECTED) - { + if (p_lcb->link_state == LST_CONNECTED) { l2cu_adj_id(p_lcb, L2CAP_ADJ_BRCM_ID); /* Make sure not using Broadcom ID */ l2cu_send_peer_echo_req (p_lcb, NULL, 0); btu_start_timer (&p_lcb->timer_entry, BTU_TTYPE_L2CAP_LINK, L2CAP_ECHO_RSP_TOUT); @@ -708,29 +686,27 @@ BOOLEAN L2CA_Echo (BD_ADDR p_bd_addr, BT_HDR *p_data, tL2CA_ECHO_DATA_CB *p_cal UINT8 *pp; L2CAP_TRACE_API ("L2CA_Echo() BDA: %08X%04X", - ((p_bd_addr[0] << 24) + (p_bd_addr[1] << 16) + (p_bd_addr[2] << 8) + (p_bd_addr[3])), - ((p_bd_addr[4] << 8) + (p_bd_addr[5]))); + ((p_bd_addr[0] << 24) + (p_bd_addr[1] << 16) + (p_bd_addr[2] << 8) + (p_bd_addr[3])), + ((p_bd_addr[4] << 8) + (p_bd_addr[5]))); /* Fail if we have not established communications with the controller */ - if (!BTM_IsDeviceUp()) + if (!BTM_IsDeviceUp()) { return (FALSE); + } - if ((memcmp(BT_BD_ANY, p_bd_addr, BD_ADDR_LEN) == 0) && (p_data == NULL)) - { + if ((memcmp(BT_BD_ANY, p_bd_addr, BD_ADDR_LEN) == 0) && (p_data == NULL)) { /* Only register callback without sending message. */ l2cb.p_echo_data_cb = p_callback; return TRUE; } /* We assume the upper layer will call this function only when the link is established. */ - if ((p_lcb = l2cu_find_lcb_by_bd_addr (p_bd_addr, BT_TRANSPORT_BR_EDR)) == NULL) - { + if ((p_lcb = l2cu_find_lcb_by_bd_addr (p_bd_addr, BT_TRANSPORT_BR_EDR)) == NULL) { L2CAP_TRACE_ERROR ("L2CA_Echo ERROR : link not established"); return FALSE; } - if (p_lcb->link_state != LST_CONNECTED) - { + if (p_lcb->link_state != LST_CONNECTED) { L2CAP_TRACE_ERROR ("L2CA_Echo ERROR : link is not connected"); return FALSE; } @@ -747,17 +723,21 @@ BOOLEAN L2CA_Echo (BD_ADDR p_bd_addr, BT_HDR *p_data, tL2CA_ECHO_DATA_CB *p_cal } -bool L2CA_GetIdentifiers(uint16_t lcid, uint16_t *rcid, uint16_t *handle) { - tL2C_CCB *control_block = l2cu_find_ccb_by_cid(NULL, lcid); - if (!control_block) - return false; +bool L2CA_GetIdentifiers(uint16_t lcid, uint16_t *rcid, uint16_t *handle) +{ + tL2C_CCB *control_block = l2cu_find_ccb_by_cid(NULL, lcid); + if (!control_block) { + return false; + } - if (rcid) - *rcid = control_block->remote_cid; - if (handle) - *handle = control_block->p_lcb->handle; + if (rcid) { + *rcid = control_block->remote_cid; + } + if (handle) { + *handle = control_block->p_lcb->handle; + } - return true; + return true; } /******************************************************************************* @@ -784,25 +764,22 @@ BOOLEAN L2CA_SetIdleTimeout (UINT16 cid, UINT16 timeout, BOOLEAN is_global) tL2C_CCB *p_ccb; tL2C_LCB *p_lcb; - if (is_global) - { + if (is_global) { l2cb.idle_timeout = timeout; - } - else - { + } else { /* Find the channel control block. We don't know the link it is on. */ - if ((p_ccb = l2cu_find_ccb_by_cid (NULL, cid)) == NULL) - { + if ((p_ccb = l2cu_find_ccb_by_cid (NULL, cid)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no CCB for L2CA_SetIdleTimeout, CID: %d", cid); return (FALSE); } p_lcb = p_ccb->p_lcb; - if ((p_lcb) && (p_lcb->in_use) && (p_lcb->link_state == LST_CONNECTED)) + if ((p_lcb) && (p_lcb->in_use) && (p_lcb->link_state == LST_CONNECTED)) { p_lcb->idle_timeout = timeout; - else + } else { return (FALSE); + } } return (TRUE); @@ -831,32 +808,28 @@ BOOLEAN L2CA_SetIdleTimeoutByBdAddr(BD_ADDR bd_addr, UINT16 timeout, tBT_TRANSPO { tL2C_LCB *p_lcb; - if (memcmp (BT_BD_ANY, bd_addr, BD_ADDR_LEN)) - { + if (memcmp (BT_BD_ANY, bd_addr, BD_ADDR_LEN)) { p_lcb = l2cu_find_lcb_by_bd_addr( bd_addr, transport); - if ((p_lcb) && (p_lcb->in_use) && (p_lcb->link_state == LST_CONNECTED)) - { + if ((p_lcb) && (p_lcb->in_use) && (p_lcb->link_state == LST_CONNECTED)) { p_lcb->idle_timeout = timeout; - if (!p_lcb->ccb_queue.p_first_ccb) + if (!p_lcb->ccb_queue.p_first_ccb) { l2cu_no_dynamic_ccbs (p_lcb); - } - else + } + } else { return FALSE; - } - else - { + } + } else { int xx; tL2C_LCB *p_lcb = &l2cb.lcb_pool[0]; - for (xx = 0; xx < MAX_L2CAP_LINKS; xx++, p_lcb++) - { - if ((p_lcb->in_use) && (p_lcb->link_state == LST_CONNECTED)) - { + for (xx = 0; xx < MAX_L2CAP_LINKS; xx++, p_lcb++) { + if ((p_lcb->in_use) && (p_lcb->link_state == LST_CONNECTED)) { p_lcb->idle_timeout = timeout; - if (!p_lcb->ccb_queue.p_first_ccb) + if (!p_lcb->ccb_queue.p_first_ccb) { l2cu_no_dynamic_ccbs (p_lcb); + } } } } @@ -876,8 +849,9 @@ BOOLEAN L2CA_SetIdleTimeoutByBdAddr(BD_ADDR bd_addr, UINT16 timeout, tBT_TRANSPO *******************************************************************************/ UINT8 L2CA_SetTraceLevel (UINT8 new_level) { - if (new_level != 0xFF) + if (new_level != 0xFF) { l2cb.l2cap_trace_level = new_level; + } return (l2cb.l2cap_trace_level); } @@ -902,23 +876,21 @@ UINT8 L2CA_SetTraceLevel (UINT8 new_level) UINT8 L2CA_SetDesireRole (UINT8 new_role) { L2CAP_TRACE_API ("L2CA_SetDesireRole() new:x%x, disallow_switch:%d", - new_role, l2cb.disallow_switch); + new_role, l2cb.disallow_switch); - if (L2CAP_ROLE_CHECK_SWITCH != (L2CAP_ROLE_CHECK_SWITCH & new_role)) - { + if (L2CAP_ROLE_CHECK_SWITCH != (L2CAP_ROLE_CHECK_SWITCH & new_role)) { /* do not process the allow_switch when both bits are set */ - if (new_role & L2CAP_ROLE_ALLOW_SWITCH) - { + if (new_role & L2CAP_ROLE_ALLOW_SWITCH) { l2cb.disallow_switch = FALSE; } - if (new_role & L2CAP_ROLE_DISALLOW_SWITCH) - { + if (new_role & L2CAP_ROLE_DISALLOW_SWITCH) { l2cb.disallow_switch = TRUE; } } - if (new_role == HCI_ROLE_MASTER || new_role == HCI_ROLE_SLAVE) + if (new_role == HCI_ROLE_MASTER || new_role == HCI_ROLE_SLAVE) { l2cb.desire_role = new_role; + } return (l2cb.desire_role); } @@ -941,21 +913,18 @@ UINT16 L2CA_LocalLoopbackReq (UINT16 psm, UINT16 handle, BD_ADDR p_bd_addr) L2CAP_TRACE_API ("L2CA_LocalLoopbackReq() PSM: %d Handle: 0x%04x", psm, handle); /* Fail if we have not established communications with the controller */ - if (!BTM_IsDeviceUp()) - { + if (!BTM_IsDeviceUp()) { L2CAP_TRACE_WARNING ("L2CAP loop req - BTU not ready"); return (0); } /* Fail if the PSM is not registered */ - if ((p_rcb = l2cu_find_rcb_by_psm (psm)) == NULL) - { + if ((p_rcb = l2cu_find_rcb_by_psm (psm)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no RCB for L2CA_conn_req, PSM: %d", psm); return (0); } - if ((p_lcb = l2cu_allocate_lcb (p_bd_addr, FALSE, BT_TRANSPORT_BR_EDR)) == NULL) - { + if ((p_lcb = l2cu_allocate_lcb (p_bd_addr, FALSE, BT_TRANSPORT_BR_EDR)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no LCB for L2CA_conn_req"); return (0); } @@ -964,8 +933,7 @@ UINT16 L2CA_LocalLoopbackReq (UINT16 psm, UINT16 handle, BD_ADDR p_bd_addr) p_lcb->handle = handle; /* Allocate a channel control block */ - if ((p_ccb = l2cu_allocate_ccb (p_lcb, 0)) == NULL) - { + if ((p_ccb = l2cu_allocate_ccb (p_lcb, 0)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no CCB for L2CA_conn_req"); return (0); } @@ -994,8 +962,8 @@ UINT16 L2CA_LocalLoopbackReq (UINT16 psm, UINT16 handle, BD_ADDR p_bd_addr) BOOLEAN L2CA_SetAclPriority (BD_ADDR bd_addr, UINT8 priority) { L2CAP_TRACE_API ("L2CA_SetAclPriority() bdaddr: %02x%02x%02x%02x%04x, priority:%d", - bd_addr[0], bd_addr[1], bd_addr[2], - bd_addr[3], (bd_addr[4] << 8) + bd_addr[5], priority); + bd_addr[0], bd_addr[1], bd_addr[2], + bd_addr[3], (bd_addr[4] << 8) + bd_addr[5], priority); return (l2cu_set_acl_priority(bd_addr, priority, FALSE)); } @@ -1019,27 +987,24 @@ BOOLEAN L2CA_FlowControl (UINT16 cid, BOOLEAN data_enabled) L2CAP_TRACE_API ("L2CA_FlowControl(%d) CID: 0x%04x", on_off, cid); /* Find the channel control block. We don't know the link it is on. */ - if ((p_ccb = l2cu_find_ccb_by_cid (NULL, cid)) == NULL) - { + if ((p_ccb = l2cu_find_ccb_by_cid (NULL, cid)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no CCB for L2CA_FlowControl, CID: 0x%04x data_enabled: %d", cid, data_enabled); return (FALSE); } - if (p_ccb->peer_cfg.fcr.mode != L2CAP_FCR_ERTM_MODE) - { + if (p_ccb->peer_cfg.fcr.mode != L2CAP_FCR_ERTM_MODE) { L2CAP_TRACE_EVENT ("L2CA_FlowControl() invalid mode:%d", p_ccb->peer_cfg.fcr.mode); return (FALSE); } - if (p_ccb->fcrb.local_busy != on_off) - { + if (p_ccb->fcrb.local_busy != on_off) { p_ccb->fcrb.local_busy = on_off; - if ( (p_ccb->chnl_state == CST_OPEN) && (!p_ccb->fcrb.wait_ack) ) - { - if (on_off) + if ( (p_ccb->chnl_state == CST_OPEN) && (!p_ccb->fcrb.wait_ack) ) { + if (on_off) { l2c_fcr_send_S_frame (p_ccb, L2CAP_FCR_SUP_RNR, 0); - else + } else { l2c_fcr_send_S_frame (p_ccb, L2CAP_FCR_SUP_RR, L2CAP_FCR_P_BIT); + } } } @@ -1062,14 +1027,14 @@ BOOLEAN L2CA_SendTestSFrame (UINT16 cid, UINT8 sup_type, UINT8 back_track) L2CAP_TRACE_API ("L2CA_SendTestSFrame() CID: 0x%04x Type: 0x%02x back_track: %u", cid, sup_type, back_track); /* Find the channel control block. We don't know the link it is on. */ - if ((p_ccb = l2cu_find_ccb_by_cid (NULL, cid)) == NULL) - { + if ((p_ccb = l2cu_find_ccb_by_cid (NULL, cid)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no CCB for L2CA_SendTestSFrame, CID: %d", cid); return (FALSE); } - if ( (p_ccb->chnl_state != CST_OPEN) || (p_ccb->peer_cfg.fcr.mode != L2CAP_FCR_ERTM_MODE) ) + if ( (p_ccb->chnl_state != CST_OPEN) || (p_ccb->peer_cfg.fcr.mode != L2CAP_FCR_ERTM_MODE) ) { return (FALSE); + } p_ccb->fcrb.next_seq_expected -= back_track; @@ -1095,8 +1060,7 @@ BOOLEAN L2CA_SetTxPriority (UINT16 cid, tL2CAP_CHNL_PRIORITY priority) L2CAP_TRACE_API ("L2CA_SetTxPriority() CID: 0x%04x, priority:%d", cid, priority); /* Find the channel control block. We don't know the link it is on. */ - if ((p_ccb = l2cu_find_ccb_by_cid (NULL, cid)) == NULL) - { + if ((p_ccb = l2cu_find_ccb_by_cid (NULL, cid)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no CCB for L2CA_SetTxPriority, CID: %d", cid); return (FALSE); } @@ -1123,8 +1087,7 @@ BOOLEAN L2CA_SetChnlDataRate (UINT16 cid, tL2CAP_CHNL_DATA_RATE tx, tL2CAP_CHNL_ L2CAP_TRACE_API ("L2CA_SetChnlDataRate() CID: 0x%04x, tx:%d, rx:%d", cid, tx, rx); /* Find the channel control block. We don't know the link it is on. */ - if ((p_ccb = l2cu_find_ccb_by_cid (NULL, cid)) == NULL) - { + if ((p_ccb = l2cu_find_ccb_by_cid (NULL, cid)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no CCB for L2CA_SetChnlDataRate, CID: %d", cid); return (FALSE); } @@ -1135,7 +1098,7 @@ BOOLEAN L2CA_SetChnlDataRate (UINT16 cid, tL2CAP_CHNL_DATA_RATE tx, tL2CAP_CHNL_ /* Adjust channel buffer allocation */ l2c_link_adjust_chnl_allocation (); - return(TRUE); + return (TRUE); } /******************************************************************************* @@ -1166,84 +1129,68 @@ BOOLEAN L2CA_SetFlushTimeout (BD_ADDR bd_addr, UINT16 flush_tout) UINT32 temp; /* no automatic flush (infinite timeout) */ - if (flush_tout == 0x0000) - { + if (flush_tout == 0x0000) { hci_flush_to = flush_tout; flush_tout = L2CAP_NO_AUTOMATIC_FLUSH; } /* no retransmission */ - else if (flush_tout == L2CAP_NO_RETRANSMISSION) - { + else if (flush_tout == L2CAP_NO_RETRANSMISSION) { /* not mandatory range for controller */ /* Packet is flushed before getting any ACK/NACK */ /* To do this, flush timeout should be 1 baseband slot */ hci_flush_to = flush_tout; } /* no automatic flush (infinite timeout) */ - else if (flush_tout == L2CAP_NO_AUTOMATIC_FLUSH) - { + else if (flush_tout == L2CAP_NO_AUTOMATIC_FLUSH) { hci_flush_to = 0x0000; - } - else - { + } else { /* convert L2CAP flush_to to 0.625 ms units, with round */ temp = (((UINT32)flush_tout * 8) + 3) / 5; /* if L2CAP flush_to within range of HCI, set HCI flush timeout */ - if (temp > HCI_MAX_AUTO_FLUSH_TOUT) - { + if (temp > HCI_MAX_AUTO_FLUSH_TOUT) { L2CAP_TRACE_WARNING("WARNING L2CA_SetFlushTimeout timeout(0x%x) is out of range", flush_tout); return FALSE; - } - else - { + } else { hci_flush_to = (UINT16)temp; } } - if (memcmp (BT_BD_ANY, bd_addr, BD_ADDR_LEN)) - { + if (memcmp (BT_BD_ANY, bd_addr, BD_ADDR_LEN)) { p_lcb = l2cu_find_lcb_by_bd_addr (bd_addr, BT_TRANSPORT_BR_EDR); - if ((p_lcb) && (p_lcb->in_use) && (p_lcb->link_state == LST_CONNECTED)) - { - if (p_lcb->link_flush_tout != flush_tout) - { + if ((p_lcb) && (p_lcb->in_use) && (p_lcb->link_state == LST_CONNECTED)) { + if (p_lcb->link_flush_tout != flush_tout) { p_lcb->link_flush_tout = flush_tout; L2CAP_TRACE_API ("L2CA_SetFlushTimeout 0x%04x ms for bd_addr [...;%02x%02x%02x]", - flush_tout, bd_addr[3], bd_addr[4], bd_addr[5]); + flush_tout, bd_addr[3], bd_addr[4], bd_addr[5]); - if (!btsnd_hcic_write_auto_flush_tout (p_lcb->handle, hci_flush_to)) + if (!btsnd_hcic_write_auto_flush_tout (p_lcb->handle, hci_flush_to)) { return (FALSE); + } } - } - else - { + } else { L2CAP_TRACE_WARNING ("WARNING L2CA_SetFlushTimeout No lcb for bd_addr [...;%02x%02x%02x]", - bd_addr[3], bd_addr[4], bd_addr[5]); + bd_addr[3], bd_addr[4], bd_addr[5]); return (FALSE); } - } - else - { + } else { int xx; p_lcb = &l2cb.lcb_pool[0]; - for (xx = 0; xx < MAX_L2CAP_LINKS; xx++, p_lcb++) - { - if ((p_lcb->in_use) && (p_lcb->link_state == LST_CONNECTED)) - { - if (p_lcb->link_flush_tout != flush_tout) - { + for (xx = 0; xx < MAX_L2CAP_LINKS; xx++, p_lcb++) { + if ((p_lcb->in_use) && (p_lcb->link_state == LST_CONNECTED)) { + if (p_lcb->link_flush_tout != flush_tout) { p_lcb->link_flush_tout = flush_tout; L2CAP_TRACE_API ("L2CA_SetFlushTimeout 0x%04x ms for bd_addr [...;%02x%02x%02x]", - flush_tout, p_lcb->remote_bd_addr[3], - p_lcb->remote_bd_addr[4], p_lcb->remote_bd_addr[5]); + flush_tout, p_lcb->remote_bd_addr[3], + p_lcb->remote_bd_addr[4], p_lcb->remote_bd_addr[5]); - if (!btsnd_hcic_write_auto_flush_tout(p_lcb->handle, hci_flush_to)) + if (!btsnd_hcic_write_auto_flush_tout(p_lcb->handle, hci_flush_to)) { return (FALSE); + } } } } @@ -1269,17 +1216,16 @@ BOOLEAN L2CA_GetPeerFeatures (BD_ADDR bd_addr, UINT32 *p_ext_feat, UINT8 *p_chnl tL2C_LCB *p_lcb; /* We must already have a link to the remote */ - if ((p_lcb = l2cu_find_lcb_by_bd_addr (bd_addr, BT_TRANSPORT_BR_EDR)) == NULL) - { + if ((p_lcb = l2cu_find_lcb_by_bd_addr (bd_addr, BT_TRANSPORT_BR_EDR)) == NULL) { L2CAP_TRACE_WARNING ("L2CA_GetPeerFeatures() No BDA: %08x%04x", - (bd_addr[0]<<24)+(bd_addr[1]<<16)+(bd_addr[2]<<8)+bd_addr[3], - (bd_addr[4]<<8)+bd_addr[5]); + (bd_addr[0] << 24) + (bd_addr[1] << 16) + (bd_addr[2] << 8) + bd_addr[3], + (bd_addr[4] << 8) + bd_addr[5]); return (FALSE); } L2CAP_TRACE_API ("L2CA_GetPeerFeatures() BDA: %08x%04x ExtFea: 0x%08x Chnl_Mask[0]: 0x%02x", - (bd_addr[0]<<24)+(bd_addr[1]<<16)+(bd_addr[2]<<8)+bd_addr[3], - (bd_addr[4]<<8)+bd_addr[5], p_lcb->peer_ext_fea, p_lcb->peer_chnl_mask[0]); + (bd_addr[0] << 24) + (bd_addr[1] << 16) + (bd_addr[2] << 8) + bd_addr[3], + (bd_addr[4] << 8) + bd_addr[5], p_lcb->peer_ext_fea, p_lcb->peer_chnl_mask[0]); *p_ext_feat = p_lcb->peer_ext_fea; @@ -1306,8 +1252,7 @@ BOOLEAN L2CA_GetBDAddrbyHandle (UINT16 handle, BD_ADDR bd_addr) BOOLEAN found_dev = FALSE; p_lcb = l2cu_find_lcb_by_handle (handle); - if (p_lcb) - { + if (p_lcb) { found_dev = TRUE; memcpy (bd_addr, p_lcb->remote_bd_addr, BD_ADDR_LEN); } @@ -1330,8 +1275,7 @@ UINT8 L2CA_GetChnlFcrMode (UINT16 lcid) { tL2C_CCB *p_ccb = l2cu_find_ccb_by_cid (NULL, lcid); - if (p_ccb) - { + if (p_ccb) { L2CAP_TRACE_API ("L2CA_GetChnlFcrMode() returns mode %d", p_ccb->peer_cfg.fcr.mode); return (p_ccb->peer_cfg.fcr.mode); } @@ -1355,8 +1299,7 @@ UINT8 L2CA_GetChnlFcrMode (UINT16 lcid) *******************************************************************************/ BOOLEAN L2CA_RegisterFixedChannel (UINT16 fixed_cid, tL2CAP_FIXED_CHNL_REG *p_freg) { - if ( (fixed_cid < L2CAP_FIRST_FIXED_CHNL) || (fixed_cid > L2CAP_LAST_FIXED_CHNL) ) - { + if ( (fixed_cid < L2CAP_FIRST_FIXED_CHNL) || (fixed_cid > L2CAP_LAST_FIXED_CHNL) ) { L2CAP_TRACE_ERROR ("L2CA_RegisterFixedChannel() Invalid CID: 0x%04x", fixed_cid); return (FALSE); @@ -1384,63 +1327,58 @@ BOOLEAN L2CA_ConnectFixedChnl (UINT16 fixed_cid, BD_ADDR rem_bda) tBT_TRANSPORT transport = BT_TRANSPORT_BR_EDR; L2CAP_TRACE_API ("%s() CID: 0x%04x BDA: %08x%04x", __func__, fixed_cid, - (rem_bda[0]<<24)+(rem_bda[1]<<16)+(rem_bda[2]<<8)+rem_bda[3], (rem_bda[4]<<8)+rem_bda[5]); + (rem_bda[0] << 24) + (rem_bda[1] << 16) + (rem_bda[2] << 8) + rem_bda[3], (rem_bda[4] << 8) + rem_bda[5]); // Check CID is valid and registered if ( (fixed_cid < L2CAP_FIRST_FIXED_CHNL) || (fixed_cid > L2CAP_LAST_FIXED_CHNL) - || (l2cb.fixed_reg[fixed_cid - L2CAP_FIRST_FIXED_CHNL].pL2CA_FixedData_Cb == NULL) ) - { + || (l2cb.fixed_reg[fixed_cid - L2CAP_FIRST_FIXED_CHNL].pL2CA_FixedData_Cb == NULL) ) { L2CAP_TRACE_ERROR ("%s() Invalid CID: 0x%04x", __func__, fixed_cid); return (FALSE); } // Fail if BT is not yet up - if (!BTM_IsDeviceUp()) - { + if (!BTM_IsDeviceUp()) { L2CAP_TRACE_WARNING ("%s(0x%04x) - BTU not ready", __func__, fixed_cid); return (FALSE); } #if BLE_INCLUDED == TRUE - if (fixed_cid >= L2CAP_ATT_CID && fixed_cid <= L2CAP_SMP_CID) + if (fixed_cid >= L2CAP_ATT_CID && fixed_cid <= L2CAP_SMP_CID) { transport = BT_TRANSPORT_LE; + } #endif tL2C_BLE_FIXED_CHNLS_MASK peer_channel_mask; // If we already have a link to the remote, check if it supports that CID - if ((p_lcb = l2cu_find_lcb_by_bd_addr (rem_bda, transport)) != NULL) - { + if ((p_lcb = l2cu_find_lcb_by_bd_addr (rem_bda, transport)) != NULL) { // Fixed channels are mandatory on LE transports so ignore the received // channel mask and use the locally cached LE channel mask. #if BLE_INCLUDED == TRUE - if (transport == BT_TRANSPORT_LE) + if (transport == BT_TRANSPORT_LE) { peer_channel_mask = l2cb.l2c_ble_fixed_chnls_mask; - else + } else #endif peer_channel_mask = p_lcb->peer_chnl_mask[0]; // Check for supported channel - if (!(peer_channel_mask & (1 << fixed_cid))) - { + if (!(peer_channel_mask & (1 << fixed_cid))) { L2CAP_TRACE_EVENT ("%s() CID:0x%04x BDA: %08x%04x not supported", __func__, - fixed_cid,(rem_bda[0]<<24)+(rem_bda[1]<<16)+(rem_bda[2]<<8)+rem_bda[3], - (rem_bda[4]<<8)+rem_bda[5]); + fixed_cid, (rem_bda[0] << 24) + (rem_bda[1] << 16) + (rem_bda[2] << 8) + rem_bda[3], + (rem_bda[4] << 8) + rem_bda[5]); return FALSE; } // Get a CCB and link the lcb to it if (!l2cu_initialize_fixed_ccb (p_lcb, fixed_cid, - &l2cb.fixed_reg[fixed_cid - L2CAP_FIRST_FIXED_CHNL].fixed_chnl_opts)) - { + &l2cb.fixed_reg[fixed_cid - L2CAP_FIRST_FIXED_CHNL].fixed_chnl_opts)) { L2CAP_TRACE_WARNING ("%s(0x%04x) - LCB but no CCB", __func__, fixed_cid); return FALSE; } // racing with disconnecting, queue the connection request - if (p_lcb->link_state == LST_DISCONNECTING) - { + if (p_lcb->link_state == LST_DISCONNECTING) { L2CAP_TRACE_DEBUG ("%s() - link disconnecting: RETRY LATER", __func__); /* Save ccb so it can be started after disconnect is finished */ p_lcb->p_pending_ccb = p_lcb->p_fixed_ccbs[fixed_cid - L2CAP_FIRST_FIXED_CHNL]; @@ -1449,7 +1387,7 @@ BOOLEAN L2CA_ConnectFixedChnl (UINT16 fixed_cid, BD_ADDR rem_bda) #if BLE_INCLUDED == TRUE (*l2cb.fixed_reg[fixed_cid - L2CAP_FIRST_FIXED_CHNL].pL2CA_FixedConn_Cb) - (fixed_cid,p_lcb->remote_bd_addr, TRUE, 0, p_lcb->transport); + (fixed_cid, p_lcb->remote_bd_addr, TRUE, 0, p_lcb->transport); #else (*l2cb.fixed_reg[fixed_cid - L2CAP_FIRST_FIXED_CHNL].pL2CA_FixedConn_Cb) (fixed_cid, p_lcb->remote_bd_addr, TRUE, 0, BT_TRANSPORT_BR_EDR); @@ -1458,24 +1396,21 @@ BOOLEAN L2CA_ConnectFixedChnl (UINT16 fixed_cid, BD_ADDR rem_bda) } // No link. Get an LCB and start link establishment - if ((p_lcb = l2cu_allocate_lcb (rem_bda, FALSE, transport)) == NULL) - { + if ((p_lcb = l2cu_allocate_lcb (rem_bda, FALSE, transport)) == NULL) { L2CAP_TRACE_WARNING ("%s(0x%04x) - no LCB", __func__, fixed_cid); return FALSE; } // Get a CCB and link the lcb to it if (!l2cu_initialize_fixed_ccb (p_lcb, fixed_cid, - &l2cb.fixed_reg[fixed_cid - L2CAP_FIRST_FIXED_CHNL].fixed_chnl_opts)) - { + &l2cb.fixed_reg[fixed_cid - L2CAP_FIRST_FIXED_CHNL].fixed_chnl_opts)) { p_lcb->disc_reason = L2CAP_CONN_NO_RESOURCES; L2CAP_TRACE_WARNING ("%s(0x%04x) - no CCB", __func__, fixed_cid); l2cu_release_lcb (p_lcb); return FALSE; } - if (!l2cu_create_conn(p_lcb, transport)) - { + if (!l2cu_create_conn(p_lcb, transport)) { L2CAP_TRACE_WARNING ("%s() - create_conn failed", __func__); l2cu_release_lcb (p_lcb); return FALSE; @@ -1503,25 +1438,24 @@ UINT16 L2CA_SendFixedChnlData (UINT16 fixed_cid, BD_ADDR rem_bda, BT_HDR *p_buf) tBT_TRANSPORT transport = BT_TRANSPORT_BR_EDR; L2CAP_TRACE_API ("L2CA_SendFixedChnlData() CID: 0x%04x BDA: %08x%04x", fixed_cid, - (rem_bda[0]<<24)+(rem_bda[1]<<16)+(rem_bda[2]<<8)+rem_bda[3], (rem_bda[4]<<8)+rem_bda[5]); + (rem_bda[0] << 24) + (rem_bda[1] << 16) + (rem_bda[2] << 8) + rem_bda[3], (rem_bda[4] << 8) + rem_bda[5]); #if BLE_INCLUDED == TRUE - if (fixed_cid >= L2CAP_ATT_CID && fixed_cid <= L2CAP_SMP_CID) + if (fixed_cid >= L2CAP_ATT_CID && fixed_cid <= L2CAP_SMP_CID) { transport = BT_TRANSPORT_LE; + } #endif // Check CID is valid and registered if ( (fixed_cid < L2CAP_FIRST_FIXED_CHNL) || (fixed_cid > L2CAP_LAST_FIXED_CHNL) - || (l2cb.fixed_reg[fixed_cid - L2CAP_FIRST_FIXED_CHNL].pL2CA_FixedData_Cb == NULL) ) - { + || (l2cb.fixed_reg[fixed_cid - L2CAP_FIRST_FIXED_CHNL].pL2CA_FixedData_Cb == NULL) ) { L2CAP_TRACE_ERROR ("L2CA_SendFixedChnlData() Invalid CID: 0x%04x", fixed_cid); GKI_freebuf (p_buf); return (L2CAP_DW_FAILED); } // Fail if BT is not yet up - if (!BTM_IsDeviceUp()) - { + if (!BTM_IsDeviceUp()) { L2CAP_TRACE_WARNING ("L2CA_SendFixedChnlData(0x%04x) - BTU not ready", fixed_cid); GKI_freebuf (p_buf); return (L2CAP_DW_FAILED); @@ -1529,9 +1463,8 @@ UINT16 L2CA_SendFixedChnlData (UINT16 fixed_cid, BD_ADDR rem_bda, BT_HDR *p_buf) // We need to have a link up if ((p_lcb = l2cu_find_lcb_by_bd_addr (rem_bda, transport)) == NULL || - /* if link is disconnecting, also report data sending failure */ - p_lcb->link_state == LST_DISCONNECTING) - { + /* if link is disconnecting, also report data sending failure */ + p_lcb->link_state == LST_DISCONNECTING) { L2CAP_TRACE_WARNING ("L2CA_SendFixedChnlData(0x%04x) - no LCB", fixed_cid); GKI_freebuf (p_buf); return (L2CAP_DW_FAILED); @@ -1541,14 +1474,13 @@ UINT16 L2CA_SendFixedChnlData (UINT16 fixed_cid, BD_ADDR rem_bda, BT_HDR *p_buf) // Select peer channels mask to use depending on transport #if BLE_INCLUDED == TRUE - if (transport == BT_TRANSPORT_LE) + if (transport == BT_TRANSPORT_LE) { peer_channel_mask = l2cb.l2c_ble_fixed_chnls_mask; - else + } else #endif peer_channel_mask = p_lcb->peer_chnl_mask[0]; - if ((peer_channel_mask & (1 << fixed_cid)) == 0) - { + if ((peer_channel_mask & (1 << fixed_cid)) == 0) { L2CAP_TRACE_WARNING ("L2CA_SendFixedChnlData() - peer does not support fixed chnl: 0x%04x", fixed_cid); GKI_freebuf (p_buf); return (L2CAP_DW_FAILED); @@ -1557,10 +1489,8 @@ UINT16 L2CA_SendFixedChnlData (UINT16 fixed_cid, BD_ADDR rem_bda, BT_HDR *p_buf) p_buf->event = 0; p_buf->layer_specific = L2CAP_FLUSHABLE_CH_BASED; - if (!p_lcb->p_fixed_ccbs[fixed_cid - L2CAP_FIRST_FIXED_CHNL]) - { - if (!l2cu_initialize_fixed_ccb (p_lcb, fixed_cid, &l2cb.fixed_reg[fixed_cid - L2CAP_FIRST_FIXED_CHNL].fixed_chnl_opts)) - { + if (!p_lcb->p_fixed_ccbs[fixed_cid - L2CAP_FIRST_FIXED_CHNL]) { + if (!l2cu_initialize_fixed_ccb (p_lcb, fixed_cid, &l2cb.fixed_reg[fixed_cid - L2CAP_FIRST_FIXED_CHNL].fixed_chnl_opts)) { L2CAP_TRACE_WARNING ("L2CA_SendFixedChnlData() - no CCB for chnl: 0x%4x", fixed_cid); GKI_freebuf (p_buf); return (L2CAP_DW_FAILED); @@ -1568,12 +1498,11 @@ UINT16 L2CA_SendFixedChnlData (UINT16 fixed_cid, BD_ADDR rem_bda, BT_HDR *p_buf) } // If already congested, do not accept any more packets - if (p_lcb->p_fixed_ccbs[fixed_cid - L2CAP_FIRST_FIXED_CHNL]->cong_sent) - { + if (p_lcb->p_fixed_ccbs[fixed_cid - L2CAP_FIRST_FIXED_CHNL]->cong_sent) { L2CAP_TRACE_ERROR ("L2CAP - CID: 0x%04x cannot send, already congested \ xmit_hold_q.count: %u buff_quota: %u", fixed_cid, - GKI_queue_length(&p_lcb->p_fixed_ccbs[fixed_cid - L2CAP_FIRST_FIXED_CHNL]->xmit_hold_q), - p_lcb->p_fixed_ccbs[fixed_cid - L2CAP_FIRST_FIXED_CHNL]->buff_quota); + GKI_queue_length(&p_lcb->p_fixed_ccbs[fixed_cid - L2CAP_FIRST_FIXED_CHNL]->xmit_hold_q), + p_lcb->p_fixed_ccbs[fixed_cid - L2CAP_FIRST_FIXED_CHNL]->buff_quota); GKI_freebuf (p_buf); return (L2CAP_DW_FAILED); } @@ -1583,13 +1512,13 @@ UINT16 L2CA_SendFixedChnlData (UINT16 fixed_cid, BD_ADDR rem_bda, BT_HDR *p_buf) l2c_link_check_send_pkts (p_lcb, NULL, NULL); // If there is no dynamic CCB on the link, restart the idle timer each time something is sent - if (p_lcb->in_use && p_lcb->link_state == LST_CONNECTED && !p_lcb->ccb_queue.p_first_ccb) - { + if (p_lcb->in_use && p_lcb->link_state == LST_CONNECTED && !p_lcb->ccb_queue.p_first_ccb) { l2cu_no_dynamic_ccbs (p_lcb); } - if (p_lcb->p_fixed_ccbs[fixed_cid - L2CAP_FIRST_FIXED_CHNL]->cong_sent) + if (p_lcb->p_fixed_ccbs[fixed_cid - L2CAP_FIRST_FIXED_CHNL]->cong_sent) { return (L2CAP_DW_CONGESTED); + } return (L2CAP_DW_SUCCESS); } @@ -1615,29 +1544,28 @@ BOOLEAN L2CA_RemoveFixedChnl (UINT16 fixed_cid, BD_ADDR rem_bda) /* Check CID is valid and registered */ if ( (fixed_cid < L2CAP_FIRST_FIXED_CHNL) || (fixed_cid > L2CAP_LAST_FIXED_CHNL) - || (l2cb.fixed_reg[fixed_cid - L2CAP_FIRST_FIXED_CHNL].pL2CA_FixedData_Cb == NULL) ) - { + || (l2cb.fixed_reg[fixed_cid - L2CAP_FIRST_FIXED_CHNL].pL2CA_FixedData_Cb == NULL) ) { L2CAP_TRACE_ERROR ("L2CA_RemoveFixedChnl() Invalid CID: 0x%04x", fixed_cid); return (FALSE); } #if BLE_INCLUDED == TRUE - if (fixed_cid >= L2CAP_ATT_CID && fixed_cid <= L2CAP_SMP_CID) + if (fixed_cid >= L2CAP_ATT_CID && fixed_cid <= L2CAP_SMP_CID) { transport = BT_TRANSPORT_LE; + } #endif /* Is a fixed channel connected to the remote BDA ?*/ p_lcb = l2cu_find_lcb_by_bd_addr (rem_bda, transport); - if ( ((p_lcb) == NULL) || (!p_lcb->p_fixed_ccbs[fixed_cid - L2CAP_FIRST_FIXED_CHNL]) ) - { + if ( ((p_lcb) == NULL) || (!p_lcb->p_fixed_ccbs[fixed_cid - L2CAP_FIRST_FIXED_CHNL]) ) { L2CAP_TRACE_WARNING ("L2CA_RemoveFixedChnl() CID: 0x%04x BDA: %08x%04x not connected", fixed_cid, - (rem_bda[0]<<24)+(rem_bda[1]<<16)+(rem_bda[2]<<8)+rem_bda[3], (rem_bda[4]<<8)+rem_bda[5]); + (rem_bda[0] << 24) + (rem_bda[1] << 16) + (rem_bda[2] << 8) + rem_bda[3], (rem_bda[4] << 8) + rem_bda[5]); return (FALSE); } L2CAP_TRACE_API ("L2CA_RemoveFixedChnl() CID: 0x%04x BDA: %08x%04x", fixed_cid, - (rem_bda[0]<<24)+(rem_bda[1]<<16)+(rem_bda[2]<<8)+rem_bda[3], (rem_bda[4]<<8)+rem_bda[5]); + (rem_bda[0] << 24) + (rem_bda[1] << 16) + (rem_bda[2] << 8) + rem_bda[3], (rem_bda[4] << 8) + rem_bda[5]); /* Release the CCB, starting an inactivity timeout on the LCB if no other CCBs exist */ p_ccb = p_lcb->p_fixed_ccbs[fixed_cid - L2CAP_FIRST_FIXED_CHNL]; @@ -1652,8 +1580,9 @@ BOOLEAN L2CA_RemoveFixedChnl (UINT16 fixed_cid, BD_ADDR rem_bda) // discovery. // Some devices do not do auto advertising when link is dropped, thus fail the second // connection and service discovery. - if ((fixed_cid == L2CAP_ATT_CID ) && !p_lcb->ccb_queue.p_first_ccb) + if ((fixed_cid == L2CAP_ATT_CID ) && !p_lcb->ccb_queue.p_first_ccb) { p_lcb->idle_timeout = 0; + } #endif l2cu_release_ccb (p_ccb); @@ -1684,23 +1613,22 @@ BOOLEAN L2CA_SetFixedChannelTout (BD_ADDR rem_bda, UINT16 fixed_cid, UINT16 idle tBT_TRANSPORT transport = BT_TRANSPORT_BR_EDR; #if BLE_INCLUDED == TRUE - if (fixed_cid >= L2CAP_ATT_CID && fixed_cid <= L2CAP_SMP_CID) + if (fixed_cid >= L2CAP_ATT_CID && fixed_cid <= L2CAP_SMP_CID) { transport = BT_TRANSPORT_LE; + } #endif /* Is a fixed channel connected to the remote BDA ?*/ p_lcb = l2cu_find_lcb_by_bd_addr (rem_bda, transport); - if ( ((p_lcb) == NULL) || (!p_lcb->p_fixed_ccbs[fixed_cid - L2CAP_FIRST_FIXED_CHNL]) ) - { + if ( ((p_lcb) == NULL) || (!p_lcb->p_fixed_ccbs[fixed_cid - L2CAP_FIRST_FIXED_CHNL]) ) { L2CAP_TRACE_WARNING ("L2CA_SetFixedChannelTout() CID: 0x%04x BDA: %08x%04x not connected", fixed_cid, - (rem_bda[0]<<24)+(rem_bda[1]<<16)+(rem_bda[2]<<8)+rem_bda[3], (rem_bda[4]<<8)+rem_bda[5]); + (rem_bda[0] << 24) + (rem_bda[1] << 16) + (rem_bda[2] << 8) + rem_bda[3], (rem_bda[4] << 8) + rem_bda[5]); return (FALSE); } p_lcb->p_fixed_ccbs[fixed_cid - L2CAP_FIRST_FIXED_CHNL]->fixed_chnl_idle_tout = idle_tout; - if (p_lcb->in_use && p_lcb->link_state == LST_CONNECTED && !p_lcb->ccb_queue.p_first_ccb) - { + if (p_lcb->in_use && p_lcb->link_state == LST_CONNECTED && !p_lcb->ccb_queue.p_first_ccb) { /* If there are no dynamic CCBs, (re)start the idle timer in case we changed it */ l2cu_no_dynamic_ccbs (p_lcb); } @@ -1733,32 +1661,35 @@ BOOLEAN L2CA_GetCurrentConfig (UINT16 lcid, p_ccb = l2cu_find_ccb_by_cid(NULL, lcid); - if (p_ccb) - { + if (p_ccb) { *pp_our_cfg = &(p_ccb->our_cfg); /* convert valid config items into bitmap */ *p_our_cfg_bits = 0; - if (p_ccb->our_cfg.mtu_present) + if (p_ccb->our_cfg.mtu_present) { *p_our_cfg_bits |= L2CAP_CH_CFG_MASK_MTU; - if (p_ccb->our_cfg.qos_present) + } + if (p_ccb->our_cfg.qos_present) { *p_our_cfg_bits |= L2CAP_CH_CFG_MASK_QOS; - if (p_ccb->our_cfg.flush_to_present) + } + if (p_ccb->our_cfg.flush_to_present) { *p_our_cfg_bits |= L2CAP_CH_CFG_MASK_FLUSH_TO; - if (p_ccb->our_cfg.fcr_present) + } + if (p_ccb->our_cfg.fcr_present) { *p_our_cfg_bits |= L2CAP_CH_CFG_MASK_FCR; - if (p_ccb->our_cfg.fcs_present) + } + if (p_ccb->our_cfg.fcs_present) { *p_our_cfg_bits |= L2CAP_CH_CFG_MASK_FCS; - if (p_ccb->our_cfg.ext_flow_spec_present) + } + if (p_ccb->our_cfg.ext_flow_spec_present) { *p_our_cfg_bits |= L2CAP_CH_CFG_MASK_EXT_FLOW_SPEC; + } *pp_peer_cfg = &(p_ccb->peer_cfg); *p_peer_cfg_bits = p_ccb->peer_cfg_bits; return TRUE; - } - else - { + } else { L2CAP_TRACE_ERROR ("No CCB for CID:0x%04x", lcid); return FALSE; } @@ -1784,8 +1715,9 @@ BOOLEAN L2CA_RegForNoCPEvt(tL2CA_NOCP_CB *p_cb, BD_ADDR p_bda) p_lcb = l2cu_find_lcb_by_bd_addr (p_bda, BT_TRANSPORT_BR_EDR); /* If no link for this handle, nothing to do. */ - if (!p_lcb) + if (!p_lcb) { return FALSE; + } p_lcb->p_nocp_cb = p_cb; @@ -1826,8 +1758,7 @@ BOOLEAN L2CA_SetChnlFlushability (UINT16 cid, BOOLEAN is_flushable) tL2C_CCB *p_ccb; /* Find the channel control block. We don't know the link it is on. */ - if ((p_ccb = l2cu_find_ccb_by_cid (NULL, cid)) == NULL) - { + if ((p_ccb = l2cu_find_ccb_by_cid (NULL, cid)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no CCB for L2CA_SetChnlFlushability, CID: %d", cid); return (FALSE); } @@ -1859,7 +1790,7 @@ BOOLEAN L2CA_SetChnlFlushability (UINT16 cid, BOOLEAN is_flushable) UINT8 L2CA_DataWriteEx (UINT16 cid, BT_HDR *p_data, UINT16 flags) { L2CAP_TRACE_API ("L2CA_DataWriteEx() CID: 0x%04x Len: %d Flags:0x%04X", - cid, p_data->len, flags); + cid, p_data->len, flags); return l2c_data_write (cid, p_data, flags); } @@ -1887,34 +1818,26 @@ UINT16 L2CA_FlushChannel (UINT16 lcid, UINT16 num_to_flush) p_ccb = l2cu_find_ccb_by_cid(NULL, lcid); - if ( !p_ccb || ((p_lcb = p_ccb->p_lcb) == NULL) ) - { + if ( !p_ccb || ((p_lcb = p_ccb->p_lcb) == NULL) ) { L2CAP_TRACE_WARNING ("L2CA_FlushChannel() abnormally returning 0 CID: 0x%04x", lcid); return (0); } - if (num_to_flush != L2CAP_FLUSH_CHANS_GET) - { + if (num_to_flush != L2CAP_FLUSH_CHANS_GET) { L2CAP_TRACE_API ("L2CA_FlushChannel (FLUSH) CID: 0x%04x NumToFlush: %d QC: %u pFirst: 0x%08x", - lcid, num_to_flush, GKI_queue_length(&p_ccb->xmit_hold_q), GKI_getfirst(&p_ccb->xmit_hold_q)); - } - else - { + lcid, num_to_flush, GKI_queue_length(&p_ccb->xmit_hold_q), GKI_getfirst(&p_ccb->xmit_hold_q)); + } else { L2CAP_TRACE_API ("L2CA_FlushChannel (QUERY) CID: 0x%04x", lcid); } /* Cannot flush eRTM buffers once they have a sequence number */ - if (p_ccb->peer_cfg.fcr.mode != L2CAP_FCR_ERTM_MODE) - { + if (p_ccb->peer_cfg.fcr.mode != L2CAP_FCR_ERTM_MODE) { #if L2CAP_NON_FLUSHABLE_PB_INCLUDED == TRUE - if (num_to_flush != L2CAP_FLUSH_CHANS_GET) - { + if (num_to_flush != L2CAP_FLUSH_CHANS_GET) { /* If the controller supports enhanced flush, flush the data queued at the controller */ if ( (HCI_NON_FLUSHABLE_PB_SUPPORTED(BTM_ReadLocalFeatures ())) - && (BTM_GetNumScoLinks() == 0) ) - { - if ( l2cb.is_flush_active == FALSE ) - { + && (BTM_GetNumScoLinks() == 0) ) { + if ( l2cb.is_flush_active == FALSE ) { l2cb.is_flush_active = TRUE; /* The only packet type defined - 0 - Automatically-Flushable Only */ @@ -1927,41 +1850,43 @@ UINT16 L2CA_FlushChannel (UINT16 lcid, UINT16 num_to_flush) // Iterate though list and flush the amount requested from // the transmit data queue that satisfy the layer and event conditions. for (const list_node_t *node = list_begin(p_lcb->link_xmit_data_q); - (num_to_flush > 0) && node != list_end(p_lcb->link_xmit_data_q);) { - BT_HDR *p_buf = (BT_HDR *)list_node(node); - node = list_next(node); - if ((p_buf->layer_specific == 0) && (p_buf->event == lcid)) { - num_to_flush--; - num_flushed1++; + (num_to_flush > 0) && node != list_end(p_lcb->link_xmit_data_q);) { + BT_HDR *p_buf = (BT_HDR *)list_node(node); + node = list_next(node); + if ((p_buf->layer_specific == 0) && (p_buf->event == lcid)) { + num_to_flush--; + num_flushed1++; - list_remove(p_lcb->link_xmit_data_q, p_buf); - GKI_freebuf(p_buf); - } + list_remove(p_lcb->link_xmit_data_q, p_buf); + GKI_freebuf(p_buf); + } } } /* If needed, flush buffers in the CCB xmit hold queue */ - while ( (num_to_flush != 0) && (!GKI_queue_is_empty(&p_ccb->xmit_hold_q))) - { + while ( (num_to_flush != 0) && (!GKI_queue_is_empty(&p_ccb->xmit_hold_q))) { BT_HDR *p_buf = (BT_HDR *)GKI_dequeue (&p_ccb->xmit_hold_q); - if (p_buf) + if (p_buf) { GKI_freebuf (p_buf); + } num_to_flush--; num_flushed2++; } /* If app needs to track all packets, call him */ - if ( (p_ccb->p_rcb) && (p_ccb->p_rcb->api.pL2CA_TxComplete_Cb) && (num_flushed2) ) + if ( (p_ccb->p_rcb) && (p_ccb->p_rcb->api.pL2CA_TxComplete_Cb) && (num_flushed2) ) { (*p_ccb->p_rcb->api.pL2CA_TxComplete_Cb)(p_ccb->local_cid, num_flushed2); + } /* Now count how many are left */ for (const list_node_t *node = list_begin(p_lcb->link_xmit_data_q); - node != list_end(p_lcb->link_xmit_data_q); - node = list_next(node)) { + node != list_end(p_lcb->link_xmit_data_q); + node = list_next(node)) { - BT_HDR *p_buf = (BT_HDR *)list_node(node); - if (p_buf->event == lcid) - num_left++; + BT_HDR *p_buf = (BT_HDR *)list_node(node); + if (p_buf->event == lcid) { + num_left++; + } } /* Add in the number in the CCB xmit queue */ diff --git a/components/bt/bluedroid/stack/l2cap/l2c_ble.c b/components/bt/bluedroid/stack/l2cap/l2c_ble.c old mode 100755 new mode 100644 index d3d34ac47f..3888feb47e --- a/components/bt/bluedroid/stack/l2cap/l2c_ble.c +++ b/components/bt/bluedroid/stack/l2cap/l2c_ble.c @@ -51,39 +51,35 @@ BOOLEAN L2CA_CancelBleConnectReq (BD_ADDR rem_bda) tL2C_LCB *p_lcb; /* There can be only one BLE connection request outstanding at a time */ - if (btm_ble_get_conn_st() == BLE_CONN_IDLE) - { + if (btm_ble_get_conn_st() == BLE_CONN_IDLE) { L2CAP_TRACE_WARNING ("L2CA_CancelBleConnectReq - no connection pending"); - return(FALSE); + return (FALSE); } - if (memcmp (rem_bda, l2cb.ble_connecting_bda, BD_ADDR_LEN)) - { + if (memcmp (rem_bda, l2cb.ble_connecting_bda, BD_ADDR_LEN)) { L2CAP_TRACE_WARNING ("L2CA_CancelBleConnectReq - different BDA Connecting: %08x%04x Cancel: %08x%04x", - (l2cb.ble_connecting_bda[0]<<24)+(l2cb.ble_connecting_bda[1]<<16)+(l2cb.ble_connecting_bda[2]<<8)+l2cb.ble_connecting_bda[3], - (l2cb.ble_connecting_bda[4]<<8)+l2cb.ble_connecting_bda[5], - (rem_bda[0]<<24)+(rem_bda[1]<<16)+(rem_bda[2]<<8)+rem_bda[3], (rem_bda[4]<<8)+rem_bda[5]); + (l2cb.ble_connecting_bda[0] << 24) + (l2cb.ble_connecting_bda[1] << 16) + (l2cb.ble_connecting_bda[2] << 8) + l2cb.ble_connecting_bda[3], + (l2cb.ble_connecting_bda[4] << 8) + l2cb.ble_connecting_bda[5], + (rem_bda[0] << 24) + (rem_bda[1] << 16) + (rem_bda[2] << 8) + rem_bda[3], (rem_bda[4] << 8) + rem_bda[5]); - return(FALSE); + return (FALSE); } - if (btsnd_hcic_ble_create_conn_cancel()) - { + if (btsnd_hcic_ble_create_conn_cancel()) { p_lcb = l2cu_find_lcb_by_bd_addr(rem_bda, BT_TRANSPORT_LE); /* Do not remove lcb if an LE link is already up as a peripheral */ if (p_lcb != NULL && - !(p_lcb->link_role == HCI_ROLE_SLAVE && BTM_ACL_IS_CONNECTED(rem_bda))) - { + !(p_lcb->link_role == HCI_ROLE_SLAVE && BTM_ACL_IS_CONNECTED(rem_bda))) { p_lcb->disc_reason = L2CAP_CONN_CANCEL; l2cu_release_lcb (p_lcb); } /* update state to be cancel, wait for connection cancel complete */ btm_ble_set_conn_st (BLE_CONN_CANCEL); - return(TRUE); + return (TRUE); + } else { + return (FALSE); } - else - return(FALSE); } /******************************************************************************* @@ -98,7 +94,7 @@ BOOLEAN L2CA_CancelBleConnectReq (BD_ADDR rem_bda) ** *******************************************************************************/ BOOLEAN L2CA_UpdateBleConnParams (BD_ADDR rem_bda, UINT16 min_int, UINT16 max_int, - UINT16 latency, UINT16 timeout) + UINT16 latency, UINT16 timeout) { tL2C_LCB *p_lcb; tACL_CONN *p_acl_cb = btm_bda_to_acl(rem_bda, BT_TRANSPORT_LE); @@ -107,20 +103,18 @@ BOOLEAN L2CA_UpdateBleConnParams (BD_ADDR rem_bda, UINT16 min_int, UINT16 max_in p_lcb = l2cu_find_lcb_by_bd_addr (rem_bda, BT_TRANSPORT_LE); /* If we don't have one, create one and accept the connection. */ - if (!p_lcb || !p_acl_cb) - { + if (!p_lcb || !p_acl_cb) { L2CAP_TRACE_WARNING ("L2CA_UpdateBleConnParams - unknown BD_ADDR %08x%04x", - (rem_bda[0]<<24)+(rem_bda[1]<<16)+(rem_bda[2]<<8)+rem_bda[3], - (rem_bda[4]<<8)+rem_bda[5]); - return(FALSE); + (rem_bda[0] << 24) + (rem_bda[1] << 16) + (rem_bda[2] << 8) + rem_bda[3], + (rem_bda[4] << 8) + rem_bda[5]); + return (FALSE); } - if (p_lcb->transport != BT_TRANSPORT_LE) - { + if (p_lcb->transport != BT_TRANSPORT_LE) { L2CAP_TRACE_WARNING ("L2CA_UpdateBleConnParams - BD_ADDR %08x%04x not LE", - (rem_bda[0]<<24)+(rem_bda[1]<<16)+(rem_bda[2]<<8)+rem_bda[3], - (rem_bda[4]<<8)+rem_bda[5]); - return(FALSE); + (rem_bda[0] << 24) + (rem_bda[1] << 16) + (rem_bda[2] << 8) + rem_bda[3], + (rem_bda[4] << 8) + rem_bda[5]); + return (FALSE); } p_lcb->min_interval = min_int; @@ -131,7 +125,7 @@ BOOLEAN L2CA_UpdateBleConnParams (BD_ADDR rem_bda, UINT16 min_int, UINT16 max_in l2cble_start_conn_update(p_lcb); - return(TRUE); + return (TRUE); } @@ -153,30 +147,29 @@ BOOLEAN L2CA_EnableUpdateBleConnParams (BD_ADDR rem_bda, BOOLEAN enable) /* See if we have a link control block for the remote device */ p_lcb = l2cu_find_lcb_by_bd_addr (rem_bda, BT_TRANSPORT_LE); - if (!p_lcb) - { + if (!p_lcb) { L2CAP_TRACE_WARNING ("L2CA_EnableUpdateBleConnParams - unknown BD_ADDR %08x%04x", - (rem_bda[0]<<24)+(rem_bda[1]<<16)+(rem_bda[2]<<8)+rem_bda[3], - (rem_bda[4]<<8)+rem_bda[5]); + (rem_bda[0] << 24) + (rem_bda[1] << 16) + (rem_bda[2] << 8) + rem_bda[3], + (rem_bda[4] << 8) + rem_bda[5]); return (FALSE); } - L2CAP_TRACE_API ("%s - BD_ADDR %08x%04x enable %d current upd state 0x%02x",__FUNCTION__, - (rem_bda[0]<<24)+(rem_bda[1]<<16)+(rem_bda[2]<<8)+rem_bda[3], - (rem_bda[4]<<8)+rem_bda[5], enable, p_lcb->conn_update_mask); + L2CAP_TRACE_API ("%s - BD_ADDR %08x%04x enable %d current upd state 0x%02x", __FUNCTION__, + (rem_bda[0] << 24) + (rem_bda[1] << 16) + (rem_bda[2] << 8) + rem_bda[3], + (rem_bda[4] << 8) + rem_bda[5], enable, p_lcb->conn_update_mask); - if (p_lcb->transport != BT_TRANSPORT_LE) - { + if (p_lcb->transport != BT_TRANSPORT_LE) { L2CAP_TRACE_WARNING ("%s - BD_ADDR %08x%04x not LE (link role %d)", __FUNCTION__, - (rem_bda[0]<<24)+(rem_bda[1]<<16)+(rem_bda[2]<<8)+rem_bda[3], - (rem_bda[4]<<8)+rem_bda[5], p_lcb->link_role); + (rem_bda[0] << 24) + (rem_bda[1] << 16) + (rem_bda[2] << 8) + rem_bda[3], + (rem_bda[4] << 8) + rem_bda[5], p_lcb->link_role); return (FALSE); } - if (enable) + if (enable) { p_lcb->conn_update_mask &= ~L2C_BLE_CONN_UPDATE_DISABLE; - else + } else { p_lcb->conn_update_mask |= L2C_BLE_CONN_UPDATE_DISABLE; + } l2cble_start_conn_update(p_lcb); @@ -199,8 +192,9 @@ UINT8 L2CA_GetBleConnRole (BD_ADDR bd_addr) tL2C_LCB *p_lcb; - if ((p_lcb = l2cu_find_lcb_by_bd_addr (bd_addr, BT_TRANSPORT_LE)) != NULL) + if ((p_lcb = l2cu_find_lcb_by_bd_addr (bd_addr, BT_TRANSPORT_LE)) != NULL) { role = p_lcb->link_role; + } return role; } @@ -218,10 +212,11 @@ UINT16 L2CA_GetDisconnectReason (BD_ADDR remote_bda, tBT_TRANSPORT transport) tL2C_LCB *p_lcb; UINT16 reason = 0; - if ((p_lcb = l2cu_find_lcb_by_bd_addr (remote_bda, transport)) != NULL) + if ((p_lcb = l2cu_find_lcb_by_bd_addr (remote_bda, transport)) != NULL) { reason = p_lcb->disc_reason; + } - L2CAP_TRACE_DEBUG ("L2CA_GetDisconnectReason=%d ",reason); + L2CAP_TRACE_DEBUG ("L2CA_GetDisconnectReason=%d ", reason); return reason; } @@ -240,8 +235,7 @@ void l2cble_notify_le_connection (BD_ADDR bda) tL2C_LCB *p_lcb = l2cu_find_lcb_by_bd_addr (bda, BT_TRANSPORT_LE); tACL_CONN *p_acl = btm_bda_to_acl(bda, BT_TRANSPORT_LE) ; - if (p_lcb != NULL && p_acl != NULL && p_lcb->link_state != LST_CONNECTED) - { + if (p_lcb != NULL && p_acl != NULL && p_lcb->link_state != LST_CONNECTED) { /* update link status */ btm_establish_continue(p_acl); /* update l2cap link status and send callback */ @@ -268,7 +262,7 @@ void l2cble_scanner_conn_comp (UINT16 handle, BD_ADDR bda, tBLE_ADDR_TYPE type, tBTM_SEC_DEV_REC *p_dev_rec = btm_find_or_alloc_dev (bda); L2CAP_TRACE_DEBUG ("l2cble_scanner_conn_comp: HANDLE=%d addr_type=%d conn_interval=%d slave_latency=%d supervision_tout=%d", - handle, type, conn_interval, conn_latency, conn_timeout); + handle, type, conn_interval, conn_latency, conn_timeout); l2cb.is_ble_connecting = FALSE; @@ -276,27 +270,20 @@ void l2cble_scanner_conn_comp (UINT16 handle, BD_ADDR bda, tBLE_ADDR_TYPE type, p_lcb = l2cu_find_lcb_by_bd_addr (bda, BT_TRANSPORT_LE); /* If we don't have one, create one. this is auto connection complete. */ - if (!p_lcb) - { + if (!p_lcb) { p_lcb = l2cu_allocate_lcb (bda, FALSE, BT_TRANSPORT_LE); - if (!p_lcb) - { + if (!p_lcb) { btm_sec_disconnect (handle, HCI_ERR_NO_CONNECTION); L2CAP_TRACE_ERROR ("l2cble_scanner_conn_comp - failed to allocate LCB"); return; - } - else - { - if (!l2cu_initialize_fixed_ccb (p_lcb, L2CAP_ATT_CID, &l2cb.fixed_reg[L2CAP_ATT_CID - L2CAP_FIRST_FIXED_CHNL].fixed_chnl_opts)) - { + } else { + if (!l2cu_initialize_fixed_ccb (p_lcb, L2CAP_ATT_CID, &l2cb.fixed_reg[L2CAP_ATT_CID - L2CAP_FIRST_FIXED_CHNL].fixed_chnl_opts)) { btm_sec_disconnect (handle, HCI_ERR_NO_CONNECTION); L2CAP_TRACE_WARNING ("l2cble_scanner_conn_comp - LCB but no CCB"); return ; } } - } - else if (p_lcb->link_state != LST_CONNECTING) - { + } else if (p_lcb->link_state != LST_CONNECTING) { L2CAP_TRACE_ERROR ("L2CAP got BLE scanner conn_comp in bad state: %d", p_lcb->link_state); return; } @@ -317,21 +304,20 @@ void l2cble_scanner_conn_comp (UINT16 handle, BD_ADDR bda, tBLE_ADDR_TYPE type, /* If there are any preferred connection parameters, set them now */ if ( (p_dev_rec->conn_params.min_conn_int >= BTM_BLE_CONN_INT_MIN ) && - (p_dev_rec->conn_params.min_conn_int <= BTM_BLE_CONN_INT_MAX ) && - (p_dev_rec->conn_params.max_conn_int >= BTM_BLE_CONN_INT_MIN ) && - (p_dev_rec->conn_params.max_conn_int <= BTM_BLE_CONN_INT_MAX ) && - (p_dev_rec->conn_params.slave_latency <= BTM_BLE_CONN_LATENCY_MAX ) && - (p_dev_rec->conn_params.supervision_tout >= BTM_BLE_CONN_SUP_TOUT_MIN) && - (p_dev_rec->conn_params.supervision_tout <= BTM_BLE_CONN_SUP_TOUT_MAX) && - ((conn_interval < p_dev_rec->conn_params.min_conn_int && - p_dev_rec->conn_params.min_conn_int != BTM_BLE_CONN_PARAM_UNDEF) || - (conn_interval > p_dev_rec->conn_params.max_conn_int) || - (conn_latency > p_dev_rec->conn_params.slave_latency) || - (conn_timeout > p_dev_rec->conn_params.supervision_tout))) - { + (p_dev_rec->conn_params.min_conn_int <= BTM_BLE_CONN_INT_MAX ) && + (p_dev_rec->conn_params.max_conn_int >= BTM_BLE_CONN_INT_MIN ) && + (p_dev_rec->conn_params.max_conn_int <= BTM_BLE_CONN_INT_MAX ) && + (p_dev_rec->conn_params.slave_latency <= BTM_BLE_CONN_LATENCY_MAX ) && + (p_dev_rec->conn_params.supervision_tout >= BTM_BLE_CONN_SUP_TOUT_MIN) && + (p_dev_rec->conn_params.supervision_tout <= BTM_BLE_CONN_SUP_TOUT_MAX) && + ((conn_interval < p_dev_rec->conn_params.min_conn_int && + p_dev_rec->conn_params.min_conn_int != BTM_BLE_CONN_PARAM_UNDEF) || + (conn_interval > p_dev_rec->conn_params.max_conn_int) || + (conn_latency > p_dev_rec->conn_params.slave_latency) || + (conn_timeout > p_dev_rec->conn_params.supervision_tout))) { L2CAP_TRACE_ERROR ("upd_ll_conn_params: HANDLE=%d min_conn_int=%d max_conn_int=%d slave_latency=%d supervision_tout=%d", - handle, p_dev_rec->conn_params.min_conn_int, p_dev_rec->conn_params.max_conn_int, - p_dev_rec->conn_params.slave_latency, p_dev_rec->conn_params.supervision_tout); + handle, p_dev_rec->conn_params.min_conn_int, p_dev_rec->conn_params.max_conn_int, + p_dev_rec->conn_params.slave_latency, p_dev_rec->conn_params.supervision_tout); p_lcb->min_interval = p_dev_rec->conn_params.min_conn_int; p_lcb->max_interval = p_dev_rec->conn_params.max_conn_int; @@ -384,19 +370,14 @@ void l2cble_advertiser_conn_comp (UINT16 handle, BD_ADDR bda, tBLE_ADDR_TYPE typ p_lcb = l2cu_find_lcb_by_bd_addr (bda, BT_TRANSPORT_LE); /* If we don't have one, create one and accept the connection. */ - if (!p_lcb) - { + if (!p_lcb) { p_lcb = l2cu_allocate_lcb (bda, FALSE, BT_TRANSPORT_LE); - if (!p_lcb) - { + if (!p_lcb) { btm_sec_disconnect (handle, HCI_ERR_NO_CONNECTION); L2CAP_TRACE_ERROR ("l2cble_advertiser_conn_comp - failed to allocate LCB"); return; - } - else - { - if (!l2cu_initialize_fixed_ccb (p_lcb, L2CAP_ATT_CID, &l2cb.fixed_reg[L2CAP_ATT_CID - L2CAP_FIRST_FIXED_CHNL].fixed_chnl_opts)) - { + } else { + if (!l2cu_initialize_fixed_ccb (p_lcb, L2CAP_ATT_CID, &l2cb.fixed_reg[L2CAP_ATT_CID - L2CAP_FIRST_FIXED_CHNL].fixed_chnl_opts)) { btm_sec_disconnect (handle, HCI_ERR_NO_CONNECTION); L2CAP_TRACE_WARNING ("l2cble_scanner_conn_comp - LCB but no CCB"); return ; @@ -428,15 +409,13 @@ void l2cble_advertiser_conn_comp (UINT16 handle, BD_ADDR bda, tBLE_ADDR_TYPE typ p_lcb->peer_chnl_mask[0] = L2CAP_FIXED_CHNL_ATT_BIT | L2CAP_FIXED_CHNL_BLE_SIG_BIT | L2CAP_FIXED_CHNL_SMP_BIT; - if (!HCI_LE_SLAVE_INIT_FEAT_EXC_SUPPORTED(controller_get_interface()->get_features_ble()->as_array)) - { + if (!HCI_LE_SLAVE_INIT_FEAT_EXC_SUPPORTED(controller_get_interface()->get_features_ble()->as_array)) { p_lcb->link_state = LST_CONNECTED; l2cu_process_fixed_chnl_resp (p_lcb); } /* when adv and initiating are both active, cancel the direct connection */ - if (l2cb.is_ble_connecting && memcmp(bda, l2cb.ble_connecting_bda, BD_ADDR_LEN) == 0) - { + if (l2cb.is_ble_connecting && memcmp(bda, l2cb.ble_connecting_bda, BD_ADDR_LEN) == 0) { L2CA_CancelBleConnectReq(bda); } } @@ -456,12 +435,9 @@ void l2cble_conn_comp(UINT16 handle, UINT8 role, BD_ADDR bda, tBLE_ADDR_TYPE typ { btm_ble_update_link_topology_mask(role, TRUE); - if (role == HCI_ROLE_MASTER) - { + if (role == HCI_ROLE_MASTER) { l2cble_scanner_conn_comp(handle, bda, type, conn_interval, conn_latency, conn_timeout); - } - else - { + } else { l2cble_advertiser_conn_comp(handle, bda, type, conn_interval, conn_latency, conn_timeout); } } @@ -483,17 +459,17 @@ static void l2cble_start_conn_update (tL2C_LCB *p_lcb) tBTM_SEC_DEV_REC *p_dev_rec = btm_find_or_alloc_dev(p_lcb->remote_bd_addr); tACL_CONN *p_acl_cb = btm_bda_to_acl(p_lcb->remote_bd_addr, BT_TRANSPORT_LE); - if (p_lcb->conn_update_mask & L2C_BLE_UPDATE_PENDING) return; + if (p_lcb->conn_update_mask & L2C_BLE_UPDATE_PENDING) { + return; + } - if (p_lcb->conn_update_mask & L2C_BLE_CONN_UPDATE_DISABLE) - { + if (p_lcb->conn_update_mask & L2C_BLE_CONN_UPDATE_DISABLE) { /* application requests to disable parameters update. If parameters are already updated, lets set them up to what has been requested during connection establishement */ if (p_lcb->conn_update_mask & L2C_BLE_NOT_DEFAULT_PARAM && - /* current connection interval is greater than default min */ - p_lcb->min_interval > BTM_BLE_CONN_INT_MIN) - { + /* current connection interval is greater than default min */ + p_lcb->min_interval > BTM_BLE_CONN_INT_MIN) { /* use 7.5 ms as fast connection parameter, 0 slave latency */ min_conn_int = max_conn_int = BTM_BLE_CONN_INT_MIN; slave_latency = BTM_BLE_CONN_SLAVE_LATENCY_DEF; @@ -502,42 +478,33 @@ static void l2cble_start_conn_update (tL2C_LCB *p_lcb) /* if both side 4.1, or we are master device, send HCI command */ if (p_lcb->link_role == HCI_ROLE_MASTER #if (defined BLE_LLT_INCLUDED) && (BLE_LLT_INCLUDED == TRUE) - || (HCI_LE_CONN_PARAM_REQ_SUPPORTED(controller_get_interface()->get_features_ble()->as_array) && - HCI_LE_CONN_PARAM_REQ_SUPPORTED(p_acl_cb->peer_le_features)) + || (HCI_LE_CONN_PARAM_REQ_SUPPORTED(controller_get_interface()->get_features_ble()->as_array) && + HCI_LE_CONN_PARAM_REQ_SUPPORTED(p_acl_cb->peer_le_features)) #endif - ) - { + ) { btsnd_hcic_ble_upd_ll_conn_params(p_lcb->handle, min_conn_int, max_conn_int, slave_latency, supervision_tout, 0, 0); p_lcb->conn_update_mask |= L2C_BLE_UPDATE_PENDING; - } - else - { + } else { l2cu_send_peer_ble_par_req (p_lcb, min_conn_int, max_conn_int, slave_latency, supervision_tout); } p_lcb->conn_update_mask &= ~L2C_BLE_NOT_DEFAULT_PARAM; p_lcb->conn_update_mask |= L2C_BLE_NEW_CONN_PARAM; - } - } - else - { + } + } else { /* application allows to do update, if we were delaying one do it now */ - if (p_lcb->conn_update_mask & L2C_BLE_NEW_CONN_PARAM) - { - /* if both side 4.1, or we are master device, send HCI command */ + if (p_lcb->conn_update_mask & L2C_BLE_NEW_CONN_PARAM) { + /* if both side 4.1, or we are master device, send HCI command */ if (p_lcb->link_role == HCI_ROLE_MASTER #if (defined BLE_LLT_INCLUDED) && (BLE_LLT_INCLUDED == TRUE) - || (HCI_LE_CONN_PARAM_REQ_SUPPORTED(controller_get_interface()->get_features_ble()->as_array) && - HCI_LE_CONN_PARAM_REQ_SUPPORTED(p_acl_cb->peer_le_features)) + || (HCI_LE_CONN_PARAM_REQ_SUPPORTED(controller_get_interface()->get_features_ble()->as_array) && + HCI_LE_CONN_PARAM_REQ_SUPPORTED(p_acl_cb->peer_le_features)) #endif - ) - { + ) { btsnd_hcic_ble_upd_ll_conn_params(p_lcb->handle, p_lcb->min_interval, - p_lcb->max_interval, p_lcb->latency, p_lcb->timeout, 0, 0); + p_lcb->max_interval, p_lcb->latency, p_lcb->timeout, 0, 0); p_lcb->conn_update_mask |= L2C_BLE_UPDATE_PENDING; - } - else - { + } else { l2cu_send_peer_ble_par_req (p_lcb, p_lcb->min_interval, p_lcb->max_interval, p_lcb->latency, p_lcb->timeout); } @@ -565,16 +532,14 @@ void l2cble_process_conn_update_evt (UINT16 handle, UINT8 status) /* See if we have a link control block for the remote device */ p_lcb = l2cu_find_lcb_by_handle(handle); - if (!p_lcb) - { + if (!p_lcb) { L2CAP_TRACE_WARNING("l2cble_process_conn_update_evt: Invalid handle: %d", handle); return; } p_lcb->conn_update_mask &= ~L2C_BLE_UPDATE_PENDING; - if (status != HCI_SUCCESS) - { + if (status != HCI_SUCCESS) { L2CAP_TRACE_WARNING("l2cble_process_conn_update_evt: Error status: %d", status); } @@ -606,70 +571,65 @@ void l2cble_process_sig_cmd (tL2C_LCB *p_lcb, UINT8 *p, UINT16 pkt_len) STREAM_TO_UINT16 (cmd_len, p); /* Check command length does not exceed packet length */ - if ((p + cmd_len) > p_pkt_end) - { + if ((p + cmd_len) > p_pkt_end) { L2CAP_TRACE_WARNING ("L2CAP - LE - format error, pkt_len: %d cmd_len: %d code: %d", pkt_len, cmd_len, cmd_code); return; } - switch (cmd_code) - { - case L2CAP_CMD_REJECT: - case L2CAP_CMD_ECHO_RSP: - case L2CAP_CMD_INFO_RSP: - p += 2; - break; - case L2CAP_CMD_ECHO_REQ: - case L2CAP_CMD_INFO_REQ: - l2cu_send_peer_cmd_reject (p_lcb, L2CAP_CMD_REJ_NOT_UNDERSTOOD, id, 0, 0); - break; + switch (cmd_code) { + case L2CAP_CMD_REJECT: + case L2CAP_CMD_ECHO_RSP: + case L2CAP_CMD_INFO_RSP: + p += 2; + break; + case L2CAP_CMD_ECHO_REQ: + case L2CAP_CMD_INFO_REQ: + l2cu_send_peer_cmd_reject (p_lcb, L2CAP_CMD_REJ_NOT_UNDERSTOOD, id, 0, 0); + break; - case L2CAP_CMD_BLE_UPDATE_REQ: - STREAM_TO_UINT16 (min_interval, p); /* 0x0006 - 0x0C80 */ - STREAM_TO_UINT16 (max_interval, p); /* 0x0006 - 0x0C80 */ - STREAM_TO_UINT16 (latency, p); /* 0x0000 - 0x03E8 */ - STREAM_TO_UINT16 (timeout, p); /* 0x000A - 0x0C80 */ - /* If we are a master, the slave wants to update the parameters */ - if (p_lcb->link_role == HCI_ROLE_MASTER) - { - if (min_interval < BTM_BLE_CONN_INT_MIN_LIMIT) - min_interval = BTM_BLE_CONN_INT_MIN_LIMIT; + case L2CAP_CMD_BLE_UPDATE_REQ: + STREAM_TO_UINT16 (min_interval, p); /* 0x0006 - 0x0C80 */ + STREAM_TO_UINT16 (max_interval, p); /* 0x0006 - 0x0C80 */ + STREAM_TO_UINT16 (latency, p); /* 0x0000 - 0x03E8 */ + STREAM_TO_UINT16 (timeout, p); /* 0x000A - 0x0C80 */ + /* If we are a master, the slave wants to update the parameters */ + if (p_lcb->link_role == HCI_ROLE_MASTER) { + if (min_interval < BTM_BLE_CONN_INT_MIN_LIMIT) { + min_interval = BTM_BLE_CONN_INT_MIN_LIMIT; + } - if (min_interval < BTM_BLE_CONN_INT_MIN || min_interval > BTM_BLE_CONN_INT_MAX || + if (min_interval < BTM_BLE_CONN_INT_MIN || min_interval > BTM_BLE_CONN_INT_MAX || max_interval < BTM_BLE_CONN_INT_MIN || max_interval > BTM_BLE_CONN_INT_MAX || latency > BTM_BLE_CONN_LATENCY_MAX || /*(timeout >= max_interval && latency > (timeout * 10/(max_interval * 1.25) - 1)) ||*/ timeout < BTM_BLE_CONN_SUP_TOUT_MIN || timeout > BTM_BLE_CONN_SUP_TOUT_MAX || - max_interval < min_interval) - { - l2cu_send_peer_ble_par_rsp (p_lcb, L2CAP_CFG_UNACCEPTABLE_PARAMS, id); - } - else - { + max_interval < min_interval) { + l2cu_send_peer_ble_par_rsp (p_lcb, L2CAP_CFG_UNACCEPTABLE_PARAMS, id); + } else { - l2cu_send_peer_ble_par_rsp (p_lcb, L2CAP_CFG_OK, id); + l2cu_send_peer_ble_par_rsp (p_lcb, L2CAP_CFG_OK, id); - p_lcb->min_interval = min_interval; - p_lcb->max_interval = max_interval; - p_lcb->latency = latency; - p_lcb->timeout = timeout; - p_lcb->conn_update_mask |= L2C_BLE_NEW_CONN_PARAM; + p_lcb->min_interval = min_interval; + p_lcb->max_interval = max_interval; + p_lcb->latency = latency; + p_lcb->timeout = timeout; + p_lcb->conn_update_mask |= L2C_BLE_NEW_CONN_PARAM; - l2cble_start_conn_update(p_lcb); - } + l2cble_start_conn_update(p_lcb); } - else - l2cu_send_peer_cmd_reject (p_lcb, L2CAP_CMD_REJ_NOT_UNDERSTOOD, id, 0, 0); - break; - - case L2CAP_CMD_BLE_UPDATE_RSP: - p += 2; - break; - - default: - L2CAP_TRACE_WARNING ("L2CAP - LE - unknown cmd code: %d", cmd_code); + } else { l2cu_send_peer_cmd_reject (p_lcb, L2CAP_CMD_REJ_NOT_UNDERSTOOD, id, 0, 0); - return; + } + break; + + case L2CAP_CMD_BLE_UPDATE_RSP: + p += 2; + break; + + default: + L2CAP_TRACE_WARNING ("L2CAP - LE - unknown cmd code: %d", cmd_code); + l2cu_send_peer_cmd_reject (p_lcb, L2CAP_CMD_REJ_NOT_UNDERSTOOD, id, 0, 0); + return; } } @@ -693,10 +653,9 @@ BOOLEAN l2cble_init_direct_conn (tL2C_LCB *p_lcb) UINT8 own_addr_type = BLE_ADDR_PUBLIC; /* There can be only one BLE connection request outstanding at a time */ - if (p_dev_rec == NULL) - { + if (p_dev_rec == NULL) { L2CAP_TRACE_WARNING ("unknown device, can not initate connection"); - return(FALSE); + return (FALSE); } scan_int = (p_cb->scan_int == BTM_BLE_SCAN_PARAM_UNDEF) ? BTM_BLE_SCAN_FAST_INT : p_cb->scan_int; @@ -707,20 +666,19 @@ BOOLEAN l2cble_init_direct_conn (tL2C_LCB *p_lcb) #if ( (defined BLE_PRIVACY_SPT) && (BLE_PRIVACY_SPT == TRUE)) own_addr_type = btm_cb.ble_ctr_cb.privacy_mode ? BLE_ADDR_RANDOM : BLE_ADDR_PUBLIC; - if (p_dev_rec->ble.in_controller_list & BTM_RESOLVING_LIST_BIT) - { - if (btm_cb.ble_ctr_cb.privacy_mode >= BTM_PRIVACY_1_2) + if (p_dev_rec->ble.in_controller_list & BTM_RESOLVING_LIST_BIT) { + if (btm_cb.ble_ctr_cb.privacy_mode >= BTM_PRIVACY_1_2) { own_addr_type |= BLE_ADDR_TYPE_ID_BIT; + } btm_ble_enable_resolving_list(BTM_BLE_RL_INIT); btm_random_pseudo_to_identity_addr(peer_addr, &peer_addr_type); - } - else + } else { btm_ble_disable_resolving_list(BTM_BLE_RL_INIT, TRUE); + } #endif - if (!btm_ble_topology_check(BTM_BLE_STATE_INIT)) - { + if (!btm_ble_topology_check(BTM_BLE_STATE_INIT)) { l2cu_release_lcb (p_lcb); L2CAP_TRACE_ERROR("initate direct connection fail, topology limitation"); return FALSE; @@ -732,23 +690,20 @@ BOOLEAN l2cble_init_direct_conn (tL2C_LCB *p_lcb) peer_addr_type, /* UINT8 addr_type_peer */ peer_addr, /* BD_ADDR bda_peer */ own_addr_type, /* UINT8 addr_type_own */ - (UINT16) ((p_dev_rec->conn_params.min_conn_int != BTM_BLE_CONN_PARAM_UNDEF) ? - p_dev_rec->conn_params.min_conn_int : BTM_BLE_CONN_INT_MIN_DEF), /* UINT16 conn_int_min */ - (UINT16) ((p_dev_rec->conn_params.max_conn_int != BTM_BLE_CONN_PARAM_UNDEF) ? - p_dev_rec->conn_params.max_conn_int : BTM_BLE_CONN_INT_MAX_DEF), /* UINT16 conn_int_max */ - (UINT16) ((p_dev_rec->conn_params.slave_latency != BTM_BLE_CONN_PARAM_UNDEF) ? - p_dev_rec->conn_params.slave_latency : BTM_BLE_CONN_SLAVE_LATENCY_DEF), /* UINT16 conn_latency */ - (UINT16) ((p_dev_rec->conn_params.supervision_tout != BTM_BLE_CONN_PARAM_UNDEF) ? - p_dev_rec->conn_params.supervision_tout : BTM_BLE_CONN_TIMEOUT_DEF), /* conn_timeout */ + (UINT16) ((p_dev_rec->conn_params.min_conn_int != BTM_BLE_CONN_PARAM_UNDEF) ? + p_dev_rec->conn_params.min_conn_int : BTM_BLE_CONN_INT_MIN_DEF), /* UINT16 conn_int_min */ + (UINT16) ((p_dev_rec->conn_params.max_conn_int != BTM_BLE_CONN_PARAM_UNDEF) ? + p_dev_rec->conn_params.max_conn_int : BTM_BLE_CONN_INT_MAX_DEF), /* UINT16 conn_int_max */ + (UINT16) ((p_dev_rec->conn_params.slave_latency != BTM_BLE_CONN_PARAM_UNDEF) ? + p_dev_rec->conn_params.slave_latency : BTM_BLE_CONN_SLAVE_LATENCY_DEF), /* UINT16 conn_latency */ + (UINT16) ((p_dev_rec->conn_params.supervision_tout != BTM_BLE_CONN_PARAM_UNDEF) ? + p_dev_rec->conn_params.supervision_tout : BTM_BLE_CONN_TIMEOUT_DEF), /* conn_timeout */ 0, /* UINT16 min_len */ - 0)) /* UINT16 max_len */ - { + 0)) { /* UINT16 max_len */ l2cu_release_lcb (p_lcb); L2CAP_TRACE_ERROR("initate direct connection fail, no resources"); return (FALSE); - } - else - { + } else { p_lcb->link_state = LST_CONNECTING; l2cb.is_ble_connecting = TRUE; memcpy (l2cb.ble_connecting_bda, p_lcb->remote_bd_addr, BD_ADDR_LEN); @@ -774,18 +729,16 @@ BOOLEAN l2cble_create_conn (tL2C_LCB *p_lcb) BOOLEAN rt = FALSE; /* There can be only one BLE connection request outstanding at a time */ - if (conn_st == BLE_CONN_IDLE) - { + if (conn_st == BLE_CONN_IDLE) { rt = l2cble_init_direct_conn(p_lcb); - } - else - { + } else { L2CAP_TRACE_WARNING ("L2CAP - LE - cannot start new connection at conn st: %d", conn_st); btm_ble_enqueue_direct_conn_req(p_lcb); - if (conn_st == BLE_BG_CONN) + if (conn_st == BLE_BG_CONN) { btm_ble_suspend_bg_conn(); + } rt = TRUE; } @@ -805,8 +758,7 @@ BOOLEAN l2cble_create_conn (tL2C_LCB *p_lcb) *******************************************************************************/ void l2c_link_processs_ble_num_bufs (UINT16 num_lm_ble_bufs) { - if (num_lm_ble_bufs == 0) - { + if (num_lm_ble_bufs == 0) { num_lm_ble_bufs = L2C_DEF_NUM_BLE_BUF_SHARED; l2cb.num_lm_acl_bufs -= L2C_DEF_NUM_BLE_BUF_SHARED; } @@ -840,29 +792,28 @@ void l2c_ble_link_adjust_allocation (void) UINT16 high_pri_link_quota = L2CAP_HIGH_PRI_MIN_XMIT_QUOTA_A; /* If no links active, reset buffer quotas and controller buffers */ - if (l2cb.num_ble_links_active == 0) - { + if (l2cb.num_ble_links_active == 0) { l2cb.controller_le_xmit_window = l2cb.num_lm_ble_bufs; l2cb.ble_round_robin_quota = l2cb.ble_round_robin_unacked = 0; return; } /* First, count the links */ - for (yy = 0, p_lcb = &l2cb.lcb_pool[0]; yy < MAX_L2CAP_LINKS; yy++, p_lcb++) - { - if (p_lcb->in_use && p_lcb->transport == BT_TRANSPORT_LE) - { - if (p_lcb->acl_priority == L2CAP_PRIORITY_HIGH) + for (yy = 0, p_lcb = &l2cb.lcb_pool[0]; yy < MAX_L2CAP_LINKS; yy++, p_lcb++) { + if (p_lcb->in_use && p_lcb->transport == BT_TRANSPORT_LE) { + if (p_lcb->acl_priority == L2CAP_PRIORITY_HIGH) { num_hipri_links++; - else + } else { num_lowpri_links++; + } } } /* now adjust high priority link quota */ low_quota = num_lowpri_links ? 1 : 0; - while ( (num_hipri_links * high_pri_link_quota + low_quota) > controller_xmit_quota ) + while ( (num_hipri_links * high_pri_link_quota + low_quota) > controller_xmit_quota ) { high_pri_link_quota--; + } /* Work out the xmit quota and buffer quota high and low priorities */ @@ -872,68 +823,61 @@ void l2c_ble_link_adjust_allocation (void) /* Work out and save the HCI xmit quota for each low priority link */ /* If each low priority link cannot have at least one buffer */ - if (num_lowpri_links > low_quota) - { + if (num_lowpri_links > low_quota) { l2cb.ble_round_robin_quota = low_quota; qq = qq_remainder = 0; } /* If each low priority link can have at least one buffer */ - else if (num_lowpri_links > 0) - { + else if (num_lowpri_links > 0) { l2cb.ble_round_robin_quota = 0; l2cb.ble_round_robin_unacked = 0; qq = low_quota / num_lowpri_links; qq_remainder = low_quota % num_lowpri_links; } /* If no low priority link */ - else - { + else { l2cb.ble_round_robin_quota = 0; l2cb.ble_round_robin_unacked = 0; qq = qq_remainder = 0; } L2CAP_TRACE_EVENT ("l2c_ble_link_adjust_allocation num_hipri: %u num_lowpri: %u low_quota: %u round_robin_quota: %u qq: %u", - num_hipri_links, num_lowpri_links, low_quota, - l2cb.ble_round_robin_quota, qq); + num_hipri_links, num_lowpri_links, low_quota, + l2cb.ble_round_robin_quota, qq); /* Now, assign the quotas to each link */ - for (yy = 0, p_lcb = &l2cb.lcb_pool[0]; yy < MAX_L2CAP_LINKS; yy++, p_lcb++) - { - if (p_lcb->in_use && p_lcb->transport == BT_TRANSPORT_LE) - { - if (p_lcb->acl_priority == L2CAP_PRIORITY_HIGH) - { + for (yy = 0, p_lcb = &l2cb.lcb_pool[0]; yy < MAX_L2CAP_LINKS; yy++, p_lcb++) { + if (p_lcb->in_use && p_lcb->transport == BT_TRANSPORT_LE) { + if (p_lcb->acl_priority == L2CAP_PRIORITY_HIGH) { p_lcb->link_xmit_quota = high_pri_link_quota; - } - else - { + } else { /* Safety check in case we switched to round-robin with something outstanding */ /* if sent_not_acked is added into round_robin_unacked then don't add it again */ /* l2cap keeps updating sent_not_acked for exiting from round robin */ - if (( p_lcb->link_xmit_quota > 0 )&&( qq == 0 )) + if (( p_lcb->link_xmit_quota > 0 ) && ( qq == 0 )) { l2cb.ble_round_robin_unacked += p_lcb->sent_not_acked; + } p_lcb->link_xmit_quota = qq; - if (qq_remainder > 0) - { + if (qq_remainder > 0) { p_lcb->link_xmit_quota++; qq_remainder--; } } L2CAP_TRACE_EVENT("l2c_ble_link_adjust_allocation LCB %d Priority: %d XmitQuota: %d", - yy, p_lcb->acl_priority, p_lcb->link_xmit_quota); + yy, p_lcb->acl_priority, p_lcb->link_xmit_quota); L2CAP_TRACE_EVENT(" SentNotAcked: %d RRUnacked: %d", - p_lcb->sent_not_acked, l2cb.round_robin_unacked); + p_lcb->sent_not_acked, l2cb.round_robin_unacked); /* There is a special case where we have readjusted the link quotas and */ /* this link may have sent anything but some other link sent packets so */ /* so we may need a timer to kick off this link's transmissions. */ if ( (p_lcb->link_state == LST_CONNECTED) - && (!list_is_empty(p_lcb->link_xmit_data_q)) - && (p_lcb->sent_not_acked < p_lcb->link_xmit_quota) ) + && (!list_is_empty(p_lcb->link_xmit_data_q)) + && (p_lcb->sent_not_acked < p_lcb->link_xmit_quota) ) { btu_start_timer (&p_lcb->timer_entry, BTU_TTYPE_L2CAP_LINK, L2CAP_LINK_FLOW_CONTROL_TOUT); + } } } } @@ -949,32 +893,26 @@ void l2c_ble_link_adjust_allocation (void) ** *******************************************************************************/ void l2cble_process_rc_param_request_evt(UINT16 handle, UINT16 int_min, UINT16 int_max, - UINT16 latency, UINT16 timeout) + UINT16 latency, UINT16 timeout) { tL2C_LCB *p_lcb = l2cu_find_lcb_by_handle (handle); - if (p_lcb != NULL) - { + if (p_lcb != NULL) { p_lcb->min_interval = int_min; p_lcb->max_interval = int_max; p_lcb->latency = latency; p_lcb->timeout = timeout; /* if update is enabled, always accept connection parameter update */ - if ((p_lcb->conn_update_mask & L2C_BLE_CONN_UPDATE_DISABLE) == 0) - { + if ((p_lcb->conn_update_mask & L2C_BLE_CONN_UPDATE_DISABLE) == 0) { btsnd_hcic_ble_rc_param_req_reply(handle, int_min, int_max, latency, timeout, 0, 0); - } - else - { + } else { L2CAP_TRACE_EVENT ("L2CAP - LE - update currently disabled"); p_lcb->conn_update_mask |= L2C_BLE_NEW_CONN_PARAM; - btsnd_hcic_ble_rc_param_req_neg_reply (handle,HCI_ERR_UNACCEPT_CONN_INTERVAL); + btsnd_hcic_ble_rc_param_req_neg_reply (handle, HCI_ERR_UNACCEPT_CONN_INTERVAL); } - } - else - { + } else { L2CAP_TRACE_WARNING("No link to update connection parameter") } } @@ -997,25 +935,27 @@ void l2cble_update_data_length(tL2C_LCB *p_lcb) L2CAP_TRACE_DEBUG("%s", __FUNCTION__); /* See if we have a link control block for the connection */ - if (p_lcb == NULL) + if (p_lcb == NULL) { return; + } - for (i = 0; i < L2CAP_NUM_FIXED_CHNLS; i++) - { - if (i + L2CAP_FIRST_FIXED_CHNL != L2CAP_BLE_SIGNALLING_CID) - { + for (i = 0; i < L2CAP_NUM_FIXED_CHNLS; i++) { + if (i + L2CAP_FIRST_FIXED_CHNL != L2CAP_BLE_SIGNALLING_CID) { if ((p_lcb->p_fixed_ccbs[i] != NULL) && - (tx_mtu < (p_lcb->p_fixed_ccbs[i]->tx_data_len + L2CAP_PKT_OVERHEAD))) + (tx_mtu < (p_lcb->p_fixed_ccbs[i]->tx_data_len + L2CAP_PKT_OVERHEAD))) { tx_mtu = p_lcb->p_fixed_ccbs[i]->tx_data_len + L2CAP_PKT_OVERHEAD; + } } } - if (tx_mtu > BTM_BLE_DATA_SIZE_MAX) + if (tx_mtu > BTM_BLE_DATA_SIZE_MAX) { tx_mtu = BTM_BLE_DATA_SIZE_MAX; + } /* update TX data length if changed */ - if (p_lcb->tx_data_len != tx_mtu) + if (p_lcb->tx_data_len != tx_mtu) { BTM_SetBleDataLength(p_lcb->remote_bd_addr, tx_mtu); + } } @@ -1033,11 +973,13 @@ void l2cble_process_data_length_change_event(UINT16 handle, UINT16 tx_data_len, tL2C_LCB *p_lcb = l2cu_find_lcb_by_handle(handle); L2CAP_TRACE_DEBUG("%s TX data len = %d", __FUNCTION__, tx_data_len); - if (p_lcb == NULL) + if (p_lcb == NULL) { return; + } - if (tx_data_len > 0) + if (tx_data_len > 0) { p_lcb->tx_data_len = tx_data_len; + } /* ignore rx_data len for now */ } @@ -1058,20 +1000,20 @@ void l2cble_set_fixed_channel_tx_data_length(BD_ADDR remote_bda, UINT16 fix_cid, L2CAP_TRACE_DEBUG("%s TX MTU = %d", __FUNCTION__, tx_mtu); - if (!controller_get_interface()->supports_ble_packet_extension()) - { + if (!controller_get_interface()->supports_ble_packet_extension()) { L2CAP_TRACE_WARNING("%s, request not supported", __FUNCTION__); return; } /* See if we have a link control block for the connection */ - if (p_lcb == NULL) + if (p_lcb == NULL) { return; + } - if (p_lcb->p_fixed_ccbs[cid] != NULL) - { - if (tx_mtu > BTM_BLE_DATA_SIZE_MAX) + if (p_lcb->p_fixed_ccbs[cid] != NULL) { + if (tx_mtu > BTM_BLE_DATA_SIZE_MAX) { tx_mtu = BTM_BLE_DATA_SIZE_MAX; + } p_lcb->p_fixed_ccbs[cid]->tx_data_len = tx_mtu; } diff --git a/components/bt/bluedroid/stack/l2cap/l2c_csm.c b/components/bt/bluedroid/stack/l2cap/l2c_csm.c old mode 100755 new mode 100644 index 7a77f36f18..13d9beed57 --- a/components/bt/bluedroid/stack/l2cap/l2c_csm.c +++ b/components/bt/bluedroid/stack/l2cap/l2c_csm.c @@ -64,8 +64,7 @@ static char *l2c_csm_get_event_name (UINT16 event); *******************************************************************************/ void l2c_csm_execute (tL2C_CCB *p_ccb, UINT16 event, void *p_data) { - switch (p_ccb->chnl_state) - { + switch (p_ccb->chnl_state) { case CST_CLOSED: l2c_csm_closed (p_ccb, event, p_data); break; @@ -103,7 +102,7 @@ void l2c_csm_execute (tL2C_CCB *p_ccb, UINT16 event, void *p_data) break; default: - L2CAP_TRACE_DEBUG("Unhandled event! event = %d",event); + L2CAP_TRACE_DEBUG("Unhandled event! event = %d", event); break; } } @@ -126,8 +125,7 @@ static void l2c_csm_closed (tL2C_CCB *p_ccb, UINT16 event, void *p_data) tL2CA_DISCONNECT_IND_CB *disconnect_ind; tL2CA_CONNECT_CFM_CB *connect_cfm; - if (p_ccb->p_rcb == NULL) - { + if (p_ccb->p_rcb == NULL) { #if (BT_TRACE_VERBOSE == TRUE) L2CAP_TRACE_ERROR ("L2CAP - LCID: 0x%04x st: CLOSED evt: %s p_rcb == NULL", p_ccb->local_cid, l2c_csm_get_event_name (event)); #else @@ -137,11 +135,9 @@ static void l2c_csm_closed (tL2C_CCB *p_ccb, UINT16 event, void *p_data) } #if (L2CAP_UCD_INCLUDED == TRUE) - if ( local_cid == L2CAP_CONNECTIONLESS_CID ) - { + if ( local_cid == L2CAP_CONNECTIONLESS_CID ) { /* check if this event can be processed by UCD */ - if ( l2c_ucd_process_event (p_ccb, event, p_data) ) - { + if ( l2c_ucd_process_event (p_ccb, event, p_data) ) { /* The event is processed by UCD state machine */ return; } @@ -157,8 +153,7 @@ static void l2c_csm_closed (tL2C_CCB *p_ccb, UINT16 event, void *p_data) L2CAP_TRACE_EVENT ("L2CAP - st: CLOSED evt: %d", event); #endif - switch (event) - { + switch (event) { case L2CEVT_LP_DISCONNECT_IND: /* Link was disconnected */ L2CAP_TRACE_API ("L2CAP - Calling Disconnect_Ind_Cb(), CID: 0x%04x No Conf Needed", p_ccb->local_cid); l2cu_release_ccb (p_ccb); @@ -174,8 +169,7 @@ static void l2c_csm_closed (tL2C_CCB *p_ccb, UINT16 event, void *p_data) case L2CEVT_LP_CONNECT_CFM_NEG: /* Link failed */ /* Disconnect unless ACL collision and upper layer wants to handle it */ if (p_ci->status != HCI_ERR_CONNECTION_EXISTS - || !btm_acl_notif_conn_collision(p_ccb->p_lcb->remote_bd_addr)) - { + || !btm_acl_notif_conn_collision(p_ccb->p_lcb->remote_bd_addr)) { L2CAP_TRACE_API ("L2CAP - Calling ConnectCfm_Cb(), CID: 0x%04x Status: %d", p_ccb->local_cid, p_ci->status); l2cu_release_ccb (p_ccb); (*connect_cfm)(local_cid, p_ci->status); @@ -184,42 +178,39 @@ static void l2c_csm_closed (tL2C_CCB *p_ccb, UINT16 event, void *p_data) case L2CEVT_L2CA_CONNECT_REQ: /* API connect request */ /* Cancel sniff mode if needed */ - { - tBTM_PM_PWR_MD settings; + { + tBTM_PM_PWR_MD settings; // btla-specific ++ - memset((void*)&settings, 0, sizeof(settings)); + memset((void *)&settings, 0, sizeof(settings)); // btla-specific -- - settings.mode = BTM_PM_MD_ACTIVE; -/* COVERITY -Event uninit_use_in_call: Using uninitialized value "settings" (field "settings".timeout uninitialized) in call to function "BTM_SetPowerMode" [details] -Event uninit_use_in_call: Using uninitialized value "settings.max" in call to function "BTM_SetPowerMode" [details] -Event uninit_use_in_call: Using uninitialized value "settings.min" in call to function "BTM_SetPowerMode" -// FALSE-POSITIVE error from Coverity test-tool. Please do NOT remove following comment. -// coverity[uninit_use_in_call] False-positive: setting the mode to BTM_PM_MD_ACTIVE only uses settings.mode the other data members of tBTM_PM_PWR_MD are ignored -*/ - BTM_SetPowerMode (BTM_PM_SET_ONLY_ID, p_ccb->p_lcb->remote_bd_addr, &settings); - } + settings.mode = BTM_PM_MD_ACTIVE; + /* COVERITY + Event uninit_use_in_call: Using uninitialized value "settings" (field "settings".timeout uninitialized) in call to function "BTM_SetPowerMode" [details] + Event uninit_use_in_call: Using uninitialized value "settings.max" in call to function "BTM_SetPowerMode" [details] + Event uninit_use_in_call: Using uninitialized value "settings.min" in call to function "BTM_SetPowerMode" + // FALSE-POSITIVE error from Coverity test-tool. Please do NOT remove following comment. + // coverity[uninit_use_in_call] False-positive: setting the mode to BTM_PM_MD_ACTIVE only uses settings.mode the other data members of tBTM_PM_PWR_MD are ignored + */ + BTM_SetPowerMode (BTM_PM_SET_ONLY_ID, p_ccb->p_lcb->remote_bd_addr, &settings); + } /* If sec access does not result in started SEC_COM or COMP_NEG are already processed */ - if (btm_sec_l2cap_access_req (p_ccb->p_lcb->remote_bd_addr, p_ccb->p_rcb->psm, - p_ccb->p_lcb->handle, TRUE, &l2c_link_sec_comp, p_ccb) == BTM_CMD_STARTED) - p_ccb->chnl_state = CST_ORIG_W4_SEC_COMP; - break; + if (btm_sec_l2cap_access_req (p_ccb->p_lcb->remote_bd_addr, p_ccb->p_rcb->psm, + p_ccb->p_lcb->handle, TRUE, &l2c_link_sec_comp, p_ccb) == BTM_CMD_STARTED) { + p_ccb->chnl_state = CST_ORIG_W4_SEC_COMP; + } + break; case L2CEVT_SEC_COMP: p_ccb->chnl_state = CST_W4_L2CAP_CONNECT_RSP; /* Wait for the info resp in this state before sending connect req (if needed) */ - if (!p_ccb->p_lcb->w4_info_rsp) - { + if (!p_ccb->p_lcb->w4_info_rsp) { /* Need to have at least one compatible channel to continue */ - if (!l2c_fcr_chk_chan_modes(p_ccb)) - { + if (!l2c_fcr_chk_chan_modes(p_ccb)) { l2cu_release_ccb (p_ccb); (*p_ccb->p_rcb->api.pL2CA_ConnectCfm_Cb)(local_cid, L2CAP_CONN_NO_LINK); - } - else - { + } else { l2cu_send_peer_connect_req (p_ccb); btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_CONNECT_TOUT); } @@ -240,23 +231,22 @@ Event uninit_use_in_call: Using uninitialized value "settings.min" in call to fu { tBTM_PM_PWR_MD settings; // btla-specific ++ - memset((void*)&settings, 0, sizeof(settings)); + memset((void *)&settings, 0, sizeof(settings)); // btla-specific -- settings.mode = BTM_PM_MD_ACTIVE; -/* COVERITY -Event uninit_use_in_call: Using uninitialized value "settings" (field "settings".timeout uninitialized) in call to function "BTM_SetPowerMode" [details] -Event uninit_use_in_call: Using uninitialized value "settings.max" in call to function "BTM_SetPowerMode" [details] -Event uninit_use_in_call: Using uninitialized value "settings.min" in call to function "BTM_SetPowerMode" -// FALSE-POSITIVE error from Coverity test-tool. Please do NOT remove following comment. -// coverity[uninit_use_in_call] False-positive: setting the mode to BTM_PM_MD_ACTIVE only uses settings.mode the other data members of tBTM_PM_PWR_MD are ignored -*/ + /* COVERITY + Event uninit_use_in_call: Using uninitialized value "settings" (field "settings".timeout uninitialized) in call to function "BTM_SetPowerMode" [details] + Event uninit_use_in_call: Using uninitialized value "settings.max" in call to function "BTM_SetPowerMode" [details] + Event uninit_use_in_call: Using uninitialized value "settings.min" in call to function "BTM_SetPowerMode" + // FALSE-POSITIVE error from Coverity test-tool. Please do NOT remove following comment. + // coverity[uninit_use_in_call] False-positive: setting the mode to BTM_PM_MD_ACTIVE only uses settings.mode the other data members of tBTM_PM_PWR_MD are ignored + */ BTM_SetPowerMode (BTM_PM_SET_ONLY_ID, p_ccb->p_lcb->remote_bd_addr, &settings); } p_ccb->chnl_state = CST_TERM_W4_SEC_COMP; if (btm_sec_l2cap_access_req (p_ccb->p_lcb->remote_bd_addr, p_ccb->p_rcb->psm, - p_ccb->p_lcb->handle, FALSE, &l2c_link_sec_comp, p_ccb) == BTM_CMD_STARTED) - { + p_ccb->p_lcb->handle, FALSE, &l2c_link_sec_comp, p_ccb) == BTM_CMD_STARTED) { /* started the security process, tell the peer to set a longer timer */ l2cu_send_peer_connect_rsp(p_ccb, L2CAP_CONN_PENDING, 0); } @@ -303,19 +293,16 @@ static void l2c_csm_orig_w4_sec_comp (tL2C_CCB *p_ccb, UINT16 event, void *p_dat #endif #if (L2CAP_UCD_INCLUDED == TRUE) - if ( local_cid == L2CAP_CONNECTIONLESS_CID ) - { + if ( local_cid == L2CAP_CONNECTIONLESS_CID ) { /* check if this event can be processed by UCD */ - if ( l2c_ucd_process_event (p_ccb, event, p_data) ) - { + if ( l2c_ucd_process_event (p_ccb, event, p_data) ) { /* The event is processed by UCD state machine */ return; } } #endif - switch (event) - { + switch (event) { case L2CEVT_LP_DISCONNECT_IND: /* Link was disconnected */ L2CAP_TRACE_API ("L2CAP - Calling Disconnect_Ind_Cb(), CID: 0x%04x No Conf Needed", p_ccb->local_cid); l2cu_release_ccb (p_ccb); @@ -331,16 +318,12 @@ static void l2c_csm_orig_w4_sec_comp (tL2C_CCB *p_ccb, UINT16 event, void *p_dat case L2CEVT_SEC_COMP: /* Security completed success */ /* Wait for the info resp in this state before sending connect req (if needed) */ p_ccb->chnl_state = CST_W4_L2CAP_CONNECT_RSP; - if (!p_ccb->p_lcb->w4_info_rsp) - { + if (!p_ccb->p_lcb->w4_info_rsp) { /* Need to have at least one compatible channel to continue */ - if (!l2c_fcr_chk_chan_modes(p_ccb)) - { + if (!l2c_fcr_chk_chan_modes(p_ccb)) { l2cu_release_ccb (p_ccb); (*connect_cfm)(local_cid, L2CAP_CONN_NO_LINK); - } - else - { + } else { btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_CONNECT_TOUT); l2cu_send_peer_connect_req (p_ccb); /* Start Connection */ } @@ -352,8 +335,7 @@ static void l2c_csm_orig_w4_sec_comp (tL2C_CCB *p_ccb, UINT16 event, void *p_dat /* If last channel immediately disconnect the ACL for better security. Also prevents a race condition between BTM and L2CAP */ - if ( (p_ccb == p_ccb->p_lcb->ccb_queue.p_first_ccb) && (p_ccb == p_ccb->p_lcb->ccb_queue.p_last_ccb) ) - { + if ( (p_ccb == p_ccb->p_lcb->ccb_queue.p_first_ccb) && (p_ccb == p_ccb->p_lcb->ccb_queue.p_last_ccb) ) { p_ccb->p_lcb->idle_timeout = 0; } @@ -395,19 +377,16 @@ static void l2c_csm_term_w4_sec_comp (tL2C_CCB *p_ccb, UINT16 event, void *p_dat #endif #if (L2CAP_UCD_INCLUDED == TRUE) - if ( p_ccb->local_cid == L2CAP_CONNECTIONLESS_CID ) - { + if ( p_ccb->local_cid == L2CAP_CONNECTIONLESS_CID ) { /* check if this event can be processed by UCD */ - if ( l2c_ucd_process_event (p_ccb, event, p_data) ) - { + if ( l2c_ucd_process_event (p_ccb, event, p_data) ) { /* The event is processed by UCD state machine */ return; } } #endif - switch (event) - { + switch (event) { case L2CEVT_LP_DISCONNECT_IND: /* Link was disconnected */ /* Tell security manager to abort */ btm_sec_abort_access_req (p_ccb->p_lcb->remote_bd_addr); @@ -419,17 +398,14 @@ static void l2c_csm_term_w4_sec_comp (tL2C_CCB *p_ccb, UINT16 event, void *p_dat p_ccb->chnl_state = CST_W4_L2CA_CONNECT_RSP; /* Wait for the info resp in next state before sending connect ind (if needed) */ - if (!p_ccb->p_lcb->w4_info_rsp) - { + if (!p_ccb->p_lcb->w4_info_rsp) { /* Don't need to get info from peer or already retrieved so continue */ btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_CONNECT_TOUT); L2CAP_TRACE_API ("L2CAP - Calling Connect_Ind_Cb(), CID: 0x%04x", p_ccb->local_cid); (*p_ccb->p_rcb->api.pL2CA_ConnectInd_Cb) (p_ccb->p_lcb->remote_bd_addr, p_ccb->local_cid, - p_ccb->p_rcb->psm, p_ccb->remote_id); - } - else - { + p_ccb->p_rcb->psm, p_ccb->remote_id); + } else { /* ** L2CAP Connect Response will be sent out by 3 sec timer expiration ** because Bluesoleil doesn't respond to L2CAP Information Request. @@ -445,13 +421,10 @@ static void l2c_csm_term_w4_sec_comp (tL2C_CCB *p_ccb, UINT16 event, void *p_dat break; case L2CEVT_SEC_COMP_NEG: - if (((tL2C_CONN_INFO *)p_data)->status == BTM_DELAY_CHECK) - { + if (((tL2C_CONN_INFO *)p_data)->status == BTM_DELAY_CHECK) { /* start a timer - encryption change not received before L2CAP connect req */ btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_DELAY_CHECK_SM4); - } - else - { + } else { l2cu_send_peer_connect_rsp (p_ccb, L2CAP_CONN_SECURITY_BLOCK, 0); l2cu_release_ccb (p_ccb); } @@ -477,8 +450,7 @@ static void l2c_csm_term_w4_sec_comp (tL2C_CCB *p_ccb, UINT16 event, void *p_dat case L2CEVT_TIMEOUT: /* SM4 related. */ - if (!btsnd_hcic_disconnect (p_ccb->p_lcb->handle, HCI_ERR_AUTH_FAILURE)) - { + if (!btsnd_hcic_disconnect (p_ccb->p_lcb->handle, HCI_ERR_AUTH_FAILURE)) { L2CAP_TRACE_API ("L2CAP - Calling btsnd_hcic_disconnect for handle %i failed", p_ccb->p_lcb->handle); btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, 1); } @@ -515,16 +487,14 @@ static void l2c_csm_w4_l2cap_connect_rsp (tL2C_CCB *p_ccb, UINT16 event, void *p L2CAP_TRACE_EVENT ("L2CAP - st: W4_L2CAP_CON_RSP evt: %d", event); #endif - switch (event) - { + switch (event) { case L2CEVT_LP_DISCONNECT_IND: /* Link was disconnected */ /* Send disc indication unless peer to peer race condition AND normal disconnect */ /* *((UINT8 *)p_data) != HCI_ERR_PEER_USER happens when peer device try to disconnect for normal reason */ p_ccb->chnl_state = CST_CLOSED; - if ((p_ccb->flags & CCB_FLAG_NO_RETRY) || !p_data || (*((UINT8 *)p_data) != HCI_ERR_PEER_USER)) - { + if ((p_ccb->flags & CCB_FLAG_NO_RETRY) || !p_data || (*((UINT8 *)p_data) != HCI_ERR_PEER_USER)) { L2CAP_TRACE_API ("L2CAP - Calling Disconnect_Ind_Cb(), CID: 0x%04x No Conf Needed", - p_ccb->local_cid); + p_ccb->local_cid); l2cu_release_ccb (p_ccb); (*disconnect_ind)(local_cid, FALSE); } @@ -543,8 +513,7 @@ static void l2c_csm_w4_l2cap_connect_rsp (tL2C_CCB *p_ccb, UINT16 event, void *p case L2CEVT_L2CAP_CONNECT_RSP_PND: /* Got peer connect pending */ p_ccb->remote_cid = p_ci->remote_cid; btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_CONNECT_TOUT_EXT); - if (p_ccb->p_rcb->api.pL2CA_ConnectPnd_Cb) - { + if (p_ccb->p_rcb->api.pL2CA_ConnectPnd_Cb) { L2CAP_TRACE_API ("L2CAP - Calling Connect_Pnd_Cb(), CID: 0x%04x", p_ccb->local_cid); (*p_ccb->p_rcb->api.pL2CA_ConnectPnd_Cb)(p_ccb->local_cid); } @@ -564,14 +533,13 @@ static void l2c_csm_w4_l2cap_connect_rsp (tL2C_CCB *p_ccb, UINT16 event, void *p case L2CEVT_L2CA_DISCONNECT_REQ: /* Upper wants to disconnect */ /* If we know peer CID from connect pending, we can send disconnect */ - if (p_ccb->remote_cid != 0) - { + if (p_ccb->remote_cid != 0) { l2cu_send_peer_disc_req (p_ccb); p_ccb->chnl_state = CST_W4_L2CAP_DISCONNECT_RSP; btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_DISCONNECT_TOUT); - } - else + } else { l2cu_release_ccb (p_ccb); + } break; case L2CEVT_L2CA_DATA_WRITE: /* Upper layer data to send */ @@ -581,13 +549,10 @@ static void l2c_csm_w4_l2cap_connect_rsp (tL2C_CCB *p_ccb, UINT16 event, void *p case L2CEVT_L2CAP_INFO_RSP: /* Need to have at least one compatible channel to continue */ - if (!l2c_fcr_chk_chan_modes(p_ccb)) - { + if (!l2c_fcr_chk_chan_modes(p_ccb)) { l2cu_release_ccb (p_ccb); (*connect_cfm)(local_cid, L2CAP_CONN_NO_LINK); - } - else - { + } else { /* We have feature info, so now send peer connect request */ btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_CONNECT_TOUT); l2cu_send_peer_connect_req (p_ccb); /* Start Connection */ @@ -619,8 +584,7 @@ static void l2c_csm_w4_l2ca_connect_rsp (tL2C_CCB *p_ccb, UINT16 event, void *p_ L2CAP_TRACE_EVENT ("L2CAP - st: W4_L2CA_CON_RSP evt: %d", event); #endif - switch (event) - { + switch (event) { case L2CEVT_LP_DISCONNECT_IND: /* Link was disconnected */ L2CAP_TRACE_API ("L2CAP - Calling Disconnect_Ind_Cb(), CID: 0x%04x No Conf Needed", p_ccb->local_cid); l2cu_release_ccb (p_ccb); @@ -631,14 +595,11 @@ static void l2c_csm_w4_l2ca_connect_rsp (tL2C_CCB *p_ccb, UINT16 event, void *p_ p_ci = (tL2C_CONN_INFO *)p_data; /* Result should be OK or PENDING */ - if ((!p_ci) || (p_ci->l2cap_result == L2CAP_CONN_OK)) - { + if ((!p_ci) || (p_ci->l2cap_result == L2CAP_CONN_OK)) { l2cu_send_peer_connect_rsp (p_ccb, L2CAP_CONN_OK, 0); p_ccb->chnl_state = CST_CONFIG; btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_CFG_TIMEOUT); - } - else - { + } else { /* If pending, stay in same state and start extended timer */ l2cu_send_peer_connect_rsp (p_ccb, p_ci->l2cap_result, p_ci->l2cap_status); btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_CONNECT_TOUT_EXT); @@ -675,9 +636,9 @@ static void l2c_csm_w4_l2ca_connect_rsp (tL2C_CCB *p_ccb, UINT16 event, void *p_ L2CAP_TRACE_API ("L2CAP - Calling Connect_Ind_Cb(), CID: 0x%04x", p_ccb->local_cid); (*p_ccb->p_rcb->api.pL2CA_ConnectInd_Cb) (p_ccb->p_lcb->remote_bd_addr, - p_ccb->local_cid, - p_ccb->p_rcb->psm, - p_ccb->remote_id); + p_ccb->local_cid, + p_ccb->p_rcb->psm, + p_ccb->remote_id); break; } } @@ -706,8 +667,7 @@ static void l2c_csm_config (tL2C_CCB *p_ccb, UINT16 event, void *p_data) L2CAP_TRACE_EVENT ("L2CAP - st: CONFIG evt: %d", event); #endif - switch (event) - { + switch (event) { case L2CEVT_LP_DISCONNECT_IND: /* Link was disconnected */ L2CAP_TRACE_API ("L2CAP - Calling Disconnect_Ind_Cb(), CID: 0x%04x No Conf Needed", p_ccb->local_cid); l2cu_release_ccb (p_ccb); @@ -716,42 +676,34 @@ static void l2c_csm_config (tL2C_CCB *p_ccb, UINT16 event, void *p_data) case L2CEVT_L2CAP_CONFIG_REQ: /* Peer config request */ - if ((cfg_result = l2cu_process_peer_cfg_req (p_ccb, p_cfg)) == L2CAP_PEER_CFG_OK) - { + if ((cfg_result = l2cu_process_peer_cfg_req (p_ccb, p_cfg)) == L2CAP_PEER_CFG_OK) { L2CAP_TRACE_EVENT ("L2CAP - Calling Config_Req_Cb(), CID: 0x%04x, C-bit %d", - p_ccb->local_cid, (p_cfg->flags & L2CAP_CFG_FLAGS_MASK_CONT)); + p_ccb->local_cid, (p_cfg->flags & L2CAP_CFG_FLAGS_MASK_CONT)); (*p_ccb->p_rcb->api.pL2CA_ConfigInd_Cb)(p_ccb->local_cid, p_cfg); - } - else if (cfg_result == L2CAP_PEER_CFG_DISCONNECT) - { + } else if (cfg_result == L2CAP_PEER_CFG_DISCONNECT) { /* Disconnect if channels are incompatible */ L2CAP_TRACE_EVENT ("L2CAP - incompatible configurations disconnect"); l2cu_disconnect_chnl (p_ccb); - } - else /* Return error to peer so he can renegotiate if possible */ - { + } else { /* Return error to peer so he can renegotiate if possible */ L2CAP_TRACE_EVENT ("L2CAP - incompatible configurations trying reconfig"); l2cu_send_peer_config_rsp (p_ccb, p_cfg); } break; case L2CEVT_L2CAP_CONFIG_RSP: /* Peer config response */ - l2cu_process_peer_cfg_rsp (p_ccb, p_cfg); + l2cu_process_peer_cfg_rsp (p_ccb, p_cfg); - if (p_cfg->result != L2CAP_CFG_PENDING) - { - /* TBD: When config options grow beyong minimum MTU (48 bytes) - * logic needs to be added to handle responses with - * continuation bit set in flags field. - * 1. Send additional config request out until C-bit is cleared in response - */ - p_ccb->config_done |= OB_CFG_DONE; + if (p_cfg->result != L2CAP_CFG_PENDING) { + /* TBD: When config options grow beyong minimum MTU (48 bytes) + * logic needs to be added to handle responses with + * continuation bit set in flags field. + * 1. Send additional config request out until C-bit is cleared in response + */ + p_ccb->config_done |= OB_CFG_DONE; - if (p_ccb->config_done & IB_CFG_DONE) - { + if (p_ccb->config_done & IB_CFG_DONE) { /* Verify two sides are in compatible modes before continuing */ - if (p_ccb->our_cfg.fcr.mode != p_ccb->peer_cfg.fcr.mode) - { + if (p_ccb->our_cfg.fcr.mode != p_ccb->peer_cfg.fcr.mode) { l2cu_send_peer_disc_req (p_ccb); L2CAP_TRACE_WARNING ("L2CAP - Calling Disconnect_Ind_Cb(Incompatible CFG), CID: 0x%04x No Conf Needed", p_ccb->local_cid); l2cu_release_ccb (p_ccb); @@ -765,16 +717,16 @@ static void l2c_csm_config (tL2C_CCB *p_ccb, UINT16 event, void *p_data) btu_stop_timer (&p_ccb->timer_entry); /* If using eRTM and waiting for an ACK, restart the ACK timer */ - if (p_ccb->fcrb.wait_ack) + if (p_ccb->fcrb.wait_ack) { l2c_fcr_start_timer(p_ccb); + } /* ** check p_ccb->our_cfg.fcr.mon_tout and p_ccb->our_cfg.fcr.rtrans_tout ** we may set them to zero when sending config request during renegotiation */ if ((p_ccb->our_cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) - &&((p_ccb->our_cfg.fcr.mon_tout == 0)||(p_ccb->our_cfg.fcr.rtrans_tout))) - { + && ((p_ccb->our_cfg.fcr.mon_tout == 0) || (p_ccb->our_cfg.fcr.rtrans_tout))) { l2c_fcr_adj_monitor_retran_timeout (p_ccb); } @@ -782,8 +734,7 @@ static void l2c_csm_config (tL2C_CCB *p_ccb, UINT16 event, void *p_data) p_ccb->fcrb.connect_tick_count = GKI_get_os_tick_count(); #endif /* See if we can forward anything on the hold queue */ - if (!GKI_queue_is_empty(&p_ccb->xmit_hold_q)) - { + if (!GKI_queue_is_empty(&p_ccb->xmit_hold_q)) { l2c_link_check_send_pkts (p_ccb->p_lcb, NULL, NULL); } } @@ -795,11 +746,10 @@ static void l2c_csm_config (tL2C_CCB *p_ccb, UINT16 event, void *p_data) case L2CEVT_L2CAP_CONFIG_RSP_NEG: /* Peer config error rsp */ /* Disable the Timer */ - btu_stop_timer (&p_ccb->timer_entry); + btu_stop_timer (&p_ccb->timer_entry); /* If failure was channel mode try to renegotiate */ - if (l2c_fcr_renegotiate_chan(p_ccb, p_cfg) == FALSE) - { + if (l2c_fcr_renegotiate_chan(p_ccb, p_cfg) == FALSE) { L2CAP_TRACE_API ("L2CAP - Calling Config_Rsp_Cb(), CID: 0x%04x, Failure: %d", p_ccb->local_cid, p_cfg->result); (*p_ccb->p_rcb->api.pL2CA_ConfigCfm_Cb)(p_ccb->local_cid, p_cfg); } @@ -822,8 +772,7 @@ static void l2c_csm_config (tL2C_CCB *p_ccb, UINT16 event, void *p_data) l2cu_process_our_cfg_rsp (p_ccb, p_cfg); /* Not finished if continuation flag is set */ - if ( (p_cfg->flags & L2CAP_CFG_FLAGS_MASK_CONT) || (p_cfg->result == L2CAP_CFG_PENDING) ) - { + if ( (p_cfg->flags & L2CAP_CFG_FLAGS_MASK_CONT) || (p_cfg->result == L2CAP_CFG_PENDING) ) { /* Send intermediate response; remain in cfg state */ l2cu_send_peer_config_rsp (p_ccb, p_cfg); break; @@ -836,11 +785,9 @@ static void l2c_csm_config (tL2C_CCB *p_ccb, UINT16 event, void *p_data) p_ccb->config_done |= IB_CFG_DONE; - if (p_ccb->config_done & OB_CFG_DONE) - { + if (p_ccb->config_done & OB_CFG_DONE) { /* Verify two sides are in compatible modes before continuing */ - if (p_ccb->our_cfg.fcr.mode != p_ccb->peer_cfg.fcr.mode) - { + if (p_ccb->our_cfg.fcr.mode != p_ccb->peer_cfg.fcr.mode) { l2cu_send_peer_disc_req (p_ccb); L2CAP_TRACE_WARNING ("L2CAP - Calling Disconnect_Ind_Cb(Incompatible CFG), CID: 0x%04x No Conf Needed", p_ccb->local_cid); l2cu_release_ccb (p_ccb); @@ -857,16 +804,16 @@ static void l2c_csm_config (tL2C_CCB *p_ccb, UINT16 event, void *p_data) l2cu_send_peer_config_rsp (p_ccb, p_cfg); /* If using eRTM and waiting for an ACK, restart the ACK timer */ - if (p_ccb->fcrb.wait_ack) + if (p_ccb->fcrb.wait_ack) { l2c_fcr_start_timer(p_ccb); + } #if (L2CAP_ERTM_STATS == TRUE) p_ccb->fcrb.connect_tick_count = GKI_get_os_tick_count(); #endif /* See if we can forward anything on the hold queue */ - if ( (p_ccb->chnl_state == CST_OPEN) && (!GKI_queue_is_empty(&p_ccb->xmit_hold_q))) - { + if ( (p_ccb->chnl_state == CST_OPEN) && (!GKI_queue_is_empty(&p_ccb->xmit_hold_q))) { l2c_link_check_send_pkts (p_ccb->p_lcb, NULL, NULL); } break; @@ -886,16 +833,15 @@ static void l2c_csm_config (tL2C_CCB *p_ccb, UINT16 event, void *p_data) L2CAP_TRACE_API ("L2CAP - Calling DataInd_Cb(), CID: 0x%04x", p_ccb->local_cid); #if (L2CAP_NUM_FIXED_CHNLS > 0) if (p_ccb->local_cid >= L2CAP_FIRST_FIXED_CHNL && - p_ccb->local_cid <= L2CAP_LAST_FIXED_CHNL) - { - if (p_ccb->local_cid < L2CAP_BASE_APPL_CID) - { + p_ccb->local_cid <= L2CAP_LAST_FIXED_CHNL) { + if (p_ccb->local_cid < L2CAP_BASE_APPL_CID) { if (l2cb.fixed_reg[p_ccb->local_cid - L2CAP_FIRST_FIXED_CHNL].pL2CA_FixedData_Cb) (*l2cb.fixed_reg[p_ccb->local_cid - L2CAP_FIRST_FIXED_CHNL].pL2CA_FixedData_Cb) - (p_ccb->local_cid, p_ccb->p_lcb->remote_bd_addr,(BT_HDR *)p_data); - else + (p_ccb->local_cid, p_ccb->p_lcb->remote_bd_addr, (BT_HDR *)p_data); + else { GKI_freebuf (p_data); - break; + } + break; } } #endif @@ -903,16 +849,17 @@ static void l2c_csm_config (tL2C_CCB *p_ccb, UINT16 event, void *p_data) break; case L2CEVT_L2CA_DATA_WRITE: /* Upper layer data to send */ - if (p_ccb->config_done & OB_CFG_DONE) + if (p_ccb->config_done & OB_CFG_DONE) { l2c_enqueue_peer_data (p_ccb, (BT_HDR *)p_data); - else + } else { GKI_freebuf (p_data); + } break; case L2CEVT_TIMEOUT: l2cu_send_peer_disc_req (p_ccb); L2CAP_TRACE_API ("L2CAP - Calling Disconnect_Ind_Cb(), CID: 0x%04x No Conf Needed", - p_ccb->local_cid); + p_ccb->local_cid); l2cu_release_ccb (p_ccb); (*disconnect_ind)(local_cid, FALSE); break; @@ -940,37 +887,36 @@ static void l2c_csm_open (tL2C_CCB *p_ccb, UINT16 event, void *p_data) #if (BT_TRACE_VERBOSE == TRUE) L2CAP_TRACE_EVENT ("L2CAP - LCID: 0x%04x st: OPEN evt: %s", - p_ccb->local_cid, l2c_csm_get_event_name (event)); + p_ccb->local_cid, l2c_csm_get_event_name (event)); #else L2CAP_TRACE_EVENT ("L2CAP - st: OPEN evt: %d", event); #endif #if (L2CAP_UCD_INCLUDED == TRUE) - if ( local_cid == L2CAP_CONNECTIONLESS_CID ) - { + if ( local_cid == L2CAP_CONNECTIONLESS_CID ) { /* check if this event can be processed by UCD */ - if ( l2c_ucd_process_event (p_ccb, event, p_data) ) - { + if ( l2c_ucd_process_event (p_ccb, event, p_data) ) { /* The event is processed by UCD state machine */ return; } } #endif - switch (event) - { + switch (event) { case L2CEVT_LP_DISCONNECT_IND: /* Link was disconnected */ L2CAP_TRACE_API ("L2CAP - Calling Disconnect_Ind_Cb(), CID: 0x%04x No Conf Needed", - p_ccb->local_cid); + p_ccb->local_cid); l2cu_release_ccb (p_ccb); - if (p_ccb->p_rcb) + if (p_ccb->p_rcb) { (*p_ccb->p_rcb->api.pL2CA_DisconnectInd_Cb)(local_cid, FALSE); + } break; case L2CEVT_LP_QOS_VIOLATION_IND: /* QOS violation */ /* Tell upper layer. If service guaranteed, then clear the channel */ - if (p_ccb->p_rcb->api.pL2CA_QoSViolationInd_Cb) + if (p_ccb->p_rcb->api.pL2CA_QoSViolationInd_Cb) { (*p_ccb->p_rcb->api.pL2CA_QoSViolationInd_Cb)(p_ccb->p_lcb->remote_bd_addr); + } break; case L2CEVT_L2CAP_CONFIG_REQ: /* Peer config request */ @@ -983,21 +929,17 @@ static void l2c_csm_open (tL2C_CCB *p_ccb, UINT16 event, void *p_data) btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_CFG_TIMEOUT); - if ((cfg_result = l2cu_process_peer_cfg_req (p_ccb, p_cfg)) == L2CAP_PEER_CFG_OK) - { + if ((cfg_result = l2cu_process_peer_cfg_req (p_ccb, p_cfg)) == L2CAP_PEER_CFG_OK) { (*p_ccb->p_rcb->api.pL2CA_ConfigInd_Cb)(p_ccb->local_cid, p_cfg); } /* Error in config parameters: reset state and config flag */ - else if (cfg_result == L2CAP_PEER_CFG_UNACCEPTABLE) - { + else if (cfg_result == L2CAP_PEER_CFG_UNACCEPTABLE) { btu_stop_timer(&p_ccb->timer_entry); p_ccb->chnl_state = tempstate; p_ccb->config_done = tempcfgdone; l2cu_send_peer_config_rsp (p_ccb, p_cfg); - } - else /* L2CAP_PEER_CFG_DISCONNECT */ - { + } else { /* L2CAP_PEER_CFG_DISCONNECT */ /* Disconnect if channels are incompatible * Note this should not occur if reconfigure * since this should have never passed original config. @@ -1009,38 +951,39 @@ static void l2c_csm_open (tL2C_CCB *p_ccb, UINT16 event, void *p_data) case L2CEVT_L2CAP_DISCONNECT_REQ: /* Peer disconnected request */ // btla-specific ++ /* Make sure we are not in sniff mode */ - { - tBTM_PM_PWR_MD settings; - memset((void*)&settings, 0, sizeof(settings)); - settings.mode = BTM_PM_MD_ACTIVE; - BTM_SetPowerMode (BTM_PM_SET_ONLY_ID, p_ccb->p_lcb->remote_bd_addr, &settings); - } + { + tBTM_PM_PWR_MD settings; + memset((void *)&settings, 0, sizeof(settings)); + settings.mode = BTM_PM_MD_ACTIVE; + BTM_SetPowerMode (BTM_PM_SET_ONLY_ID, p_ccb->p_lcb->remote_bd_addr, &settings); + } // btla-specific -- - p_ccb->chnl_state = CST_W4_L2CA_DISCONNECT_RSP; - btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_DISCONNECT_TOUT); - L2CAP_TRACE_API ("L2CAP - Calling Disconnect_Ind_Cb(), CID: 0x%04x Conf Needed", p_ccb->local_cid); - (*p_ccb->p_rcb->api.pL2CA_DisconnectInd_Cb)(p_ccb->local_cid, TRUE); - break; + p_ccb->chnl_state = CST_W4_L2CA_DISCONNECT_RSP; + btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_DISCONNECT_TOUT); + L2CAP_TRACE_API ("L2CAP - Calling Disconnect_Ind_Cb(), CID: 0x%04x Conf Needed", p_ccb->local_cid); + (*p_ccb->p_rcb->api.pL2CA_DisconnectInd_Cb)(p_ccb->local_cid, TRUE); + break; case L2CEVT_L2CAP_DATA: /* Peer data packet rcvd */ - if((p_ccb->p_rcb) && (p_ccb->p_rcb->api.pL2CA_DataInd_Cb)) + if ((p_ccb->p_rcb) && (p_ccb->p_rcb->api.pL2CA_DataInd_Cb)) { (*p_ccb->p_rcb->api.pL2CA_DataInd_Cb)(p_ccb->local_cid, (BT_HDR *)p_data); + } break; case L2CEVT_L2CA_DISCONNECT_REQ: /* Upper wants to disconnect */ /* Make sure we are not in sniff mode */ - { - tBTM_PM_PWR_MD settings; - memset((void*)&settings, 0, sizeof(settings)); - settings.mode = BTM_PM_MD_ACTIVE; - BTM_SetPowerMode (BTM_PM_SET_ONLY_ID, p_ccb->p_lcb->remote_bd_addr, &settings); - } + { + tBTM_PM_PWR_MD settings; + memset((void *)&settings, 0, sizeof(settings)); + settings.mode = BTM_PM_MD_ACTIVE; + BTM_SetPowerMode (BTM_PM_SET_ONLY_ID, p_ccb->p_lcb->remote_bd_addr, &settings); + } - l2cu_send_peer_disc_req (p_ccb); - p_ccb->chnl_state = CST_W4_L2CAP_DISCONNECT_RSP; - btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_DISCONNECT_TOUT); - break; + l2cu_send_peer_disc_req (p_ccb); + p_ccb->chnl_state = CST_W4_L2CAP_DISCONNECT_RSP; + btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_DISCONNECT_TOUT); + break; case L2CEVT_L2CA_DATA_WRITE: /* Upper layer data to send */ l2c_enqueue_peer_data (p_ccb, (BT_HDR *)p_data); @@ -1057,8 +1000,9 @@ static void l2c_csm_open (tL2C_CCB *p_ccb, UINT16 event, void *p_data) case L2CEVT_TIMEOUT: /* Process the monitor/retransmission time-outs in flow control/retrans mode */ - if (p_ccb->peer_cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) + if (p_ccb->peer_cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) { l2c_fcr_proc_tout (p_ccb); + } break; case L2CEVT_ACK_TIMEOUT: @@ -1089,12 +1033,10 @@ static void l2c_csm_w4_l2cap_disconnect_rsp (tL2C_CCB *p_ccb, UINT16 event, void L2CAP_TRACE_EVENT ("L2CAP - st: W4_L2CAP_DISC_RSP evt: %d", event); #endif - switch (event) - { + switch (event) { case L2CEVT_L2CAP_DISCONNECT_RSP: /* Peer disconnect response */ l2cu_release_ccb (p_ccb); - if (disconnect_cfm) - { + if (disconnect_cfm) { L2CAP_TRACE_API ("L2CAP - Calling DisconnectCfm_Cb(), CID: 0x%04x", local_cid); (*disconnect_cfm)(local_cid, L2CAP_DISC_OK); } @@ -1103,18 +1045,16 @@ static void l2c_csm_w4_l2cap_disconnect_rsp (tL2C_CCB *p_ccb, UINT16 event, void case L2CEVT_L2CAP_DISCONNECT_REQ: /* Peer disconnect request */ l2cu_send_peer_disc_rsp (p_ccb->p_lcb, p_ccb->remote_id, p_ccb->local_cid, p_ccb->remote_cid); l2cu_release_ccb (p_ccb); - if (disconnect_cfm) - { + if (disconnect_cfm) { L2CAP_TRACE_API ("L2CAP - Calling DisconnectCfm_Cb(), CID: 0x%04x", local_cid); (*disconnect_cfm)(local_cid, L2CAP_DISC_OK); } - break; + break; case L2CEVT_LP_DISCONNECT_IND: /* Link was disconnected */ case L2CEVT_TIMEOUT: /* Timeout */ l2cu_release_ccb (p_ccb); - if (disconnect_cfm) - { + if (disconnect_cfm) { L2CAP_TRACE_API ("L2CAP - Calling DisconnectCfm_Cb(), CID: 0x%04x", local_cid); (*disconnect_cfm)(local_cid, L2CAP_DISC_TIMEOUT); } @@ -1149,8 +1089,7 @@ static void l2c_csm_w4_l2ca_disconnect_rsp (tL2C_CCB *p_ccb, UINT16 event, void L2CAP_TRACE_EVENT ("L2CAP - st: W4_L2CA_DISC_RSP evt: %d", event); #endif - switch (event) - { + switch (event) { case L2CEVT_LP_DISCONNECT_IND: /* Link was disconnected */ L2CAP_TRACE_API ("L2CAP - Calling Disconnect_Ind_Cb(), CID: 0x%04x No Conf Needed", p_ccb->local_cid); l2cu_release_ccb (p_ccb); @@ -1192,8 +1131,7 @@ static void l2c_csm_w4_l2ca_disconnect_rsp (tL2C_CCB *p_ccb, UINT16 event, void *******************************************************************************/ static char *l2c_csm_get_event_name (UINT16 event) { - switch (event) - { + switch (event) { case L2CEVT_LP_CONNECT_CFM: /* Lower layer connect confirm */ return ("LOWER_LAYER_CONNECT_CFM"); case L2CEVT_LP_CONNECT_CFM_NEG: /* Lower layer connect confirm (failed) */ @@ -1285,12 +1223,9 @@ void l2c_enqueue_peer_data (tL2C_CCB *p_ccb, BT_HDR *p_buf) { UINT8 *p; - if (p_ccb->peer_cfg.fcr.mode != L2CAP_FCR_BASIC_MODE) - { + if (p_ccb->peer_cfg.fcr.mode != L2CAP_FCR_BASIC_MODE) { p_buf->event = 0; - } - else - { + } else { /* Save the channel ID for faster counting */ p_buf->event = p_ccb->local_cid; @@ -1313,16 +1248,16 @@ void l2c_enqueue_peer_data (tL2C_CCB *p_ccb, BT_HDR *p_buf) #if (L2CAP_ROUND_ROBIN_CHANNEL_SERVICE == TRUE) /* if new packet is higher priority than serving ccb and it is not overrun */ if (( p_ccb->p_lcb->rr_pri > p_ccb->ccb_priority ) - &&( p_ccb->p_lcb->rr_serv[p_ccb->ccb_priority].quota > 0)) - { + && ( p_ccb->p_lcb->rr_serv[p_ccb->ccb_priority].quota > 0)) { /* send out higher priority packet */ p_ccb->p_lcb->rr_pri = p_ccb->ccb_priority; } #endif /* if we are doing a round robin scheduling, set the flag */ - if (p_ccb->p_lcb->link_xmit_quota == 0) + if (p_ccb->p_lcb->link_xmit_quota == 0) { l2cb.check_round_robin = TRUE; + } } diff --git a/components/bt/bluedroid/stack/l2cap/l2c_fcr.c b/components/bt/bluedroid/stack/l2cap/l2c_fcr.c old mode 100755 new mode 100644 index 5e5f0f45d4..4ce718f3b0 --- a/components/bt/bluedroid/stack/l2cap/l2c_fcr.c +++ b/components/bt/bluedroid/stack/l2cap/l2c_fcr.c @@ -112,12 +112,11 @@ static unsigned short l2c_fcr_updcrc(unsigned short icrc, unsigned char *icp, in register unsigned char *cp = icp; register int cnt = icnt; - while (cnt--) - { + while (cnt--) { crc = ((crc >> 8) & 0xff) ^ crctab[(crc & 0xff) ^ *cp++]; } - return(crc); + return (crc); } @@ -171,18 +170,16 @@ void l2c_fcr_start_timer (tL2C_CCB *p_ccb) UINT32 tout; /* The timers which are in milliseconds */ - if (p_ccb->fcrb.wait_ack) - { + if (p_ccb->fcrb.wait_ack) { tout = (UINT32)p_ccb->our_cfg.fcr.mon_tout; - } - else - { + } else { tout = (UINT32)p_ccb->our_cfg.fcr.rtrans_tout; } /* Only start a timer that was not started */ - if (p_ccb->fcrb.mon_retrans_timer.in_use == 0) - btu_start_quick_timer (&p_ccb->fcrb.mon_retrans_timer, BTU_TTYPE_L2CAP_CHNL, tout*QUICK_TIMER_TICKS_PER_SEC/1000); + if (p_ccb->fcrb.mon_retrans_timer.in_use == 0) { + btu_start_quick_timer (&p_ccb->fcrb.mon_retrans_timer, BTU_TTYPE_L2CAP_CHNL, tout * QUICK_TIMER_TICKS_PER_SEC / 1000); + } } /******************************************************************************* @@ -197,8 +194,7 @@ void l2c_fcr_start_timer (tL2C_CCB *p_ccb) void l2c_fcr_stop_timer (tL2C_CCB *p_ccb) { assert(p_ccb != NULL); - if (p_ccb->fcrb.mon_retrans_timer.in_use) - { + if (p_ccb->fcrb.mon_retrans_timer.in_use) { btu_stop_quick_timer (&p_ccb->fcrb.mon_retrans_timer); } } @@ -219,51 +215,53 @@ void l2c_fcr_cleanup (tL2C_CCB *p_ccb) l2c_fcr_stop_timer (p_ccb); - if (p_fcrb->p_rx_sdu) + if (p_fcrb->p_rx_sdu) { GKI_freebuf (p_fcrb->p_rx_sdu); + } - while (!GKI_queue_is_empty(&p_fcrb->waiting_for_ack_q)) + while (!GKI_queue_is_empty(&p_fcrb->waiting_for_ack_q)) { GKI_freebuf (GKI_dequeue (&p_fcrb->waiting_for_ack_q)); + } - while (!GKI_queue_is_empty(&p_fcrb->srej_rcv_hold_q)) + while (!GKI_queue_is_empty(&p_fcrb->srej_rcv_hold_q)) { GKI_freebuf (GKI_dequeue (&p_fcrb->srej_rcv_hold_q)); + } - while (!GKI_queue_is_empty(&p_fcrb->retrans_q)) + while (!GKI_queue_is_empty(&p_fcrb->retrans_q)) { GKI_freebuf (GKI_dequeue (&p_fcrb->retrans_q)); + } btu_stop_quick_timer (&p_fcrb->ack_timer); btu_stop_quick_timer (&p_ccb->fcrb.mon_retrans_timer); #if (L2CAP_ERTM_STATS == TRUE) - if ( (p_ccb->local_cid >= L2CAP_BASE_APPL_CID) && (p_ccb->peer_cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) ) - { + if ( (p_ccb->local_cid >= L2CAP_BASE_APPL_CID) && (p_ccb->peer_cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) ) { UINT32 dur = GKI_get_os_tick_count() - p_ccb->fcrb.connect_tick_count; char *p_str = (char *)GKI_getbuf(120); UINT16 i; UINT32 throughput_avg, ack_delay_avg, ack_q_count_avg; BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI , TRACE_TYPE_GENERIC, - "--- L2CAP ERTM Stats for CID: 0x%04x Duration: %08ums", p_ccb->local_cid, dur); + "--- L2CAP ERTM Stats for CID: 0x%04x Duration: %08ums", p_ccb->local_cid, dur); BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI , TRACE_TYPE_GENERIC, - "Retransmissions:%08u Times Flow Controlled:%08u Retrans Touts:%08u Ack Touts:%08u", - p_ccb->fcrb.pkts_retransmitted, p_ccb->fcrb.xmit_window_closed, p_ccb->fcrb.retrans_touts, p_ccb->fcrb.xmit_ack_touts); + "Retransmissions:%08u Times Flow Controlled:%08u Retrans Touts:%08u Ack Touts:%08u", + p_ccb->fcrb.pkts_retransmitted, p_ccb->fcrb.xmit_window_closed, p_ccb->fcrb.retrans_touts, p_ccb->fcrb.xmit_ack_touts); BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI , TRACE_TYPE_GENERIC, - "Times there is less than 2 packets in controller when flow controlled:%08u", p_ccb->fcrb.controller_idle); + "Times there is less than 2 packets in controller when flow controlled:%08u", p_ccb->fcrb.controller_idle); BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI , TRACE_TYPE_GENERIC, - "max_held_acks:%08u, in_cfg.fcr.tx_win_sz:%08u", p_ccb->fcrb.max_held_acks, p_ccb->peer_cfg.fcr.tx_win_sz ); - if (p_str) - { + "max_held_acks:%08u, in_cfg.fcr.tx_win_sz:%08u", p_ccb->fcrb.max_held_acks, p_ccb->peer_cfg.fcr.tx_win_sz ); + if (p_str) { sprintf(p_str, "Sent Pkts:%08u Bytes:%10u(%06u/sec) RR:%08u REJ:%08u RNR:%08u SREJ:%08u", - p_ccb->fcrb.ertm_pkt_counts[0], p_ccb->fcrb.ertm_byte_counts[0], - (dur >= 10 ? (p_ccb->fcrb.ertm_byte_counts[0] * 100) / (dur / 10) : 0), - p_ccb->fcrb.s_frames_sent[0], p_ccb->fcrb.s_frames_sent[1], p_ccb->fcrb.s_frames_sent[2], p_ccb->fcrb.s_frames_sent[3]); + p_ccb->fcrb.ertm_pkt_counts[0], p_ccb->fcrb.ertm_byte_counts[0], + (dur >= 10 ? (p_ccb->fcrb.ertm_byte_counts[0] * 100) / (dur / 10) : 0), + p_ccb->fcrb.s_frames_sent[0], p_ccb->fcrb.s_frames_sent[1], p_ccb->fcrb.s_frames_sent[2], p_ccb->fcrb.s_frames_sent[3]); BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI , TRACE_TYPE_GENERIC, "%s", p_str); sprintf(p_str, "Rcvd Pkts:%08u Bytes:%10u(%06u/sec) RR:%08u REJ:%08u RNR:%08u SREJ:%08u", - p_ccb->fcrb.ertm_pkt_counts[1], p_ccb->fcrb.ertm_byte_counts[1], - (dur >= 10 ? (p_ccb->fcrb.ertm_byte_counts[1] * 100) / (dur / 10) : 0), - p_ccb->fcrb.s_frames_rcvd[0], p_ccb->fcrb.s_frames_rcvd[1], p_ccb->fcrb.s_frames_rcvd[2], p_ccb->fcrb.s_frames_rcvd[3]); + p_ccb->fcrb.ertm_pkt_counts[1], p_ccb->fcrb.ertm_byte_counts[1], + (dur >= 10 ? (p_ccb->fcrb.ertm_byte_counts[1] * 100) / (dur / 10) : 0), + p_ccb->fcrb.s_frames_rcvd[0], p_ccb->fcrb.s_frames_rcvd[1], p_ccb->fcrb.s_frames_rcvd[2], p_ccb->fcrb.s_frames_rcvd[3]); BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI , TRACE_TYPE_GENERIC, "%s", p_str); @@ -271,12 +269,10 @@ void l2c_fcr_cleanup (tL2C_CCB *p_ccb) ack_delay_avg = 0; ack_q_count_avg = 0; - for (i = 0; i < L2CAP_ERTM_STATS_NUM_AVG; i++ ) - { - if (i == p_ccb->fcrb.ack_delay_avg_index ) - { + for (i = 0; i < L2CAP_ERTM_STATS_NUM_AVG; i++ ) { + if (i == p_ccb->fcrb.ack_delay_avg_index ) { BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI , TRACE_TYPE_GENERIC, - "[%02u] collecting data ...", i ); + "[%02u] collecting data ...", i ); continue; } @@ -297,14 +293,14 @@ void l2c_fcr_cleanup (tL2C_CCB *p_ccb) ack_q_count_avg /= (L2CAP_ERTM_STATS_NUM_AVG - 1); BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI , TRACE_TYPE_GENERIC, - "throughput_avg: %8u (kbytes/sec), ack_delay_avg: %8u ms, ack_q_count_avg: %8u", - throughput_avg, ack_delay_avg, ack_q_count_avg ); + "throughput_avg: %8u (kbytes/sec), ack_delay_avg: %8u ms, ack_q_count_avg: %8u", + throughput_avg, ack_delay_avg, ack_q_count_avg ); GKI_freebuf(p_str); } BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI , TRACE_TYPE_GENERIC, - "---"); + "---"); } #endif @@ -327,23 +323,20 @@ BT_HDR *l2c_fcr_clone_buf (BT_HDR *p_buf, UINT16 new_offset, UINT16 no_of_bytes, BT_HDR *p_buf2; /* If using the common pool, should be at least 10% free. */ - if ( (pool == HCI_ACL_POOL_ID) && (GKI_poolutilization (pool) > 90) ) - { + if ( (pool == HCI_ACL_POOL_ID) && (GKI_poolutilization (pool) > 90) ) { L2CAP_TRACE_ERROR ("L2CAP - failed to clone buffer on HCI_ACL_POOL_ID Utilization: %u", GKI_poolutilization(pool)); return (NULL); } - if ((p_buf2 = (BT_HDR *)GKI_getpoolbuf(pool)) != NULL) - { + if ((p_buf2 = (BT_HDR *)GKI_getpoolbuf(pool)) != NULL) { UINT16 pool_buf_size = GKI_get_pool_bufsize (pool); /* Make sure buffer fits into buffer pool */ - if ((no_of_bytes + sizeof(BT_HDR) + new_offset) > pool_buf_size) - { + if ((no_of_bytes + sizeof(BT_HDR) + new_offset) > pool_buf_size) { L2CAP_TRACE_ERROR("##### l2c_fcr_clone_buf (NumBytes %d) -> Exceeds poolsize %d [bytes %d + BT_HDR %d + offset %d]", - (no_of_bytes + sizeof(BT_HDR) + new_offset), - pool_buf_size, no_of_bytes, sizeof(BT_HDR), - new_offset); + (no_of_bytes + sizeof(BT_HDR) + new_offset), + pool_buf_size, no_of_bytes, sizeof(BT_HDR), + new_offset); GKI_freebuf(p_buf2); return (NULL); @@ -355,9 +348,7 @@ BT_HDR *l2c_fcr_clone_buf (BT_HDR *p_buf, UINT16 new_offset, UINT16 no_of_bytes, memcpy (((UINT8 *)(p_buf2 + 1)) + p_buf2->offset, ((UINT8 *)(p_buf + 1)) + p_buf->offset, no_of_bytes); - } - else - { + } else { L2CAP_TRACE_ERROR ("L2CAP - failed to clone buffer, Pool: %u Count: %u", pool, GKI_poolfreecount(pool)); } @@ -376,19 +367,17 @@ BT_HDR *l2c_fcr_clone_buf (BT_HDR *p_buf, UINT16 new_offset, UINT16 no_of_bytes, BOOLEAN l2c_fcr_is_flow_controlled (tL2C_CCB *p_ccb) { assert(p_ccb != NULL); - if (p_ccb->peer_cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) - { + if (p_ccb->peer_cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) { /* Check if remote side flowed us off or the transmit window is full */ if ( (p_ccb->fcrb.remote_busy == TRUE) - || (GKI_queue_length(&p_ccb->fcrb.waiting_for_ack_q) >= p_ccb->peer_cfg.fcr.tx_win_sz) ) - { + || (GKI_queue_length(&p_ccb->fcrb.waiting_for_ack_q) >= p_ccb->peer_cfg.fcr.tx_win_sz) ) { #if (L2CAP_ERTM_STATS == TRUE) - if (!GKI_queue_is_empty(&p_ccb->xmit_hold_q)) - { + if (!GKI_queue_is_empty(&p_ccb->xmit_hold_q)) { p_ccb->fcrb.xmit_window_closed++; - if ((p_ccb->p_lcb->sent_not_acked < 2)&&(l2cb.controller_xmit_window > 0)) + if ((p_ccb->p_lcb->sent_not_acked < 2) && (l2cb.controller_xmit_window > 0)) { p_ccb->fcrb.controller_idle++; + } } #endif return (TRUE); @@ -420,17 +409,14 @@ static void prepare_I_frame (tL2C_CCB *p_ccb, BT_HDR *p_buf, BOOLEAN is_retransm p_fcrb->send_f_rsp = FALSE; - if (is_retransmission) - { + if (is_retransmission) { /* Get the old control word and clear out the old req_seq and F bits */ - p = ((UINT8 *) (p_buf+1)) + p_buf->offset + L2CAP_PKT_OVERHEAD; + p = ((UINT8 *) (p_buf + 1)) + p_buf->offset + L2CAP_PKT_OVERHEAD; STREAM_TO_UINT16 (ctrl_word, p); ctrl_word &= ~(L2CAP_FCR_REQ_SEQ_BITS + L2CAP_FCR_F_BIT); - } - else - { + } else { ctrl_word = p_buf->layer_specific & L2CAP_FCR_SEG_BITS; /* SAR bits */ ctrl_word |= (p_fcrb->next_tx_seq << L2CAP_FCR_TX_SEQ_BITS_SHIFT); /* Tx Seq */ @@ -438,36 +424,36 @@ static void prepare_I_frame (tL2C_CCB *p_ccb, BT_HDR *p_buf, BOOLEAN is_retransm } /* Set the F-bit and reqseq only if using re-transmission mode */ - if (p_ccb->peer_cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) - { - if (set_f_bit) + if (p_ccb->peer_cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) { + if (set_f_bit) { ctrl_word |= L2CAP_FCR_F_BIT; + } ctrl_word |= (p_fcrb->next_seq_expected) << L2CAP_FCR_REQ_SEQ_BITS_SHIFT; p_fcrb->last_ack_sent = p_ccb->fcrb.next_seq_expected; - if (p_ccb->fcrb.ack_timer.in_use) + if (p_ccb->fcrb.ack_timer.in_use) { btu_stop_quick_timer (&p_ccb->fcrb.ack_timer); + } } /* Set the control word */ - p = ((UINT8 *) (p_buf+1)) + p_buf->offset + L2CAP_PKT_OVERHEAD; + p = ((UINT8 *) (p_buf + 1)) + p_buf->offset + L2CAP_PKT_OVERHEAD; UINT16_TO_STREAM (p, ctrl_word); /* Compute the FCS and add to the end of the buffer if not bypassed */ - if (p_ccb->bypass_fcs != L2CAP_BYPASS_FCS) - { + if (p_ccb->bypass_fcs != L2CAP_BYPASS_FCS) { /* length field in l2cap header has to include FCS length */ - p = ((UINT8 *) (p_buf+1)) + p_buf->offset; + p = ((UINT8 *) (p_buf + 1)) + p_buf->offset; UINT16_TO_STREAM (p, p_buf->len + L2CAP_FCS_LEN - L2CAP_PKT_OVERHEAD); /* Calculate the FCS */ fcs = l2c_fcr_tx_get_fcs(p_buf); /* Point to the end of the buffer and put the FCS there */ - p = ((UINT8 *) (p_buf+1)) + p_buf->offset + p_buf->len; + p = ((UINT8 *) (p_buf + 1)) + p_buf->offset + p_buf->len; UINT16_TO_STREAM (p, fcs); @@ -475,29 +461,27 @@ static void prepare_I_frame (tL2C_CCB *p_ccb, BT_HDR *p_buf, BOOLEAN is_retransm } #if BT_TRACE_VERBOSE == TRUE - if (is_retransmission) - { + if (is_retransmission) { L2CAP_TRACE_EVENT ("L2CAP eRTM ReTx I-frame CID: 0x%04x Len: %u SAR: %s TxSeq: %u ReqSeq: %u F: %u", - p_ccb->local_cid, p_buf->len, - SAR_types[(ctrl_word & L2CAP_FCR_SAR_BITS) >> L2CAP_FCR_SAR_BITS_SHIFT], - (ctrl_word & L2CAP_FCR_TX_SEQ_BITS) >> L2CAP_FCR_TX_SEQ_BITS_SHIFT, - (ctrl_word & L2CAP_FCR_REQ_SEQ_BITS) >> L2CAP_FCR_REQ_SEQ_BITS_SHIFT, - (ctrl_word & L2CAP_FCR_F_BIT) >> L2CAP_FCR_F_BIT_SHIFT); - } - else - { + p_ccb->local_cid, p_buf->len, + SAR_types[(ctrl_word & L2CAP_FCR_SAR_BITS) >> L2CAP_FCR_SAR_BITS_SHIFT], + (ctrl_word & L2CAP_FCR_TX_SEQ_BITS) >> L2CAP_FCR_TX_SEQ_BITS_SHIFT, + (ctrl_word & L2CAP_FCR_REQ_SEQ_BITS) >> L2CAP_FCR_REQ_SEQ_BITS_SHIFT, + (ctrl_word & L2CAP_FCR_F_BIT) >> L2CAP_FCR_F_BIT_SHIFT); + } else { L2CAP_TRACE_EVENT ("L2CAP eRTM Tx I-frame CID: 0x%04x Len: %u SAR: %-12s TxSeq: %u ReqSeq: %u F: %u", - p_ccb->local_cid, p_buf->len, - SAR_types[(ctrl_word & L2CAP_FCR_SAR_BITS) >> L2CAP_FCR_SAR_BITS_SHIFT], - (ctrl_word & L2CAP_FCR_TX_SEQ_BITS) >> L2CAP_FCR_TX_SEQ_BITS_SHIFT, - (ctrl_word & L2CAP_FCR_REQ_SEQ_BITS) >> L2CAP_FCR_REQ_SEQ_BITS_SHIFT, - (ctrl_word & L2CAP_FCR_F_BIT) >> L2CAP_FCR_F_BIT_SHIFT); + p_ccb->local_cid, p_buf->len, + SAR_types[(ctrl_word & L2CAP_FCR_SAR_BITS) >> L2CAP_FCR_SAR_BITS_SHIFT], + (ctrl_word & L2CAP_FCR_TX_SEQ_BITS) >> L2CAP_FCR_TX_SEQ_BITS_SHIFT, + (ctrl_word & L2CAP_FCR_REQ_SEQ_BITS) >> L2CAP_FCR_REQ_SEQ_BITS_SHIFT, + (ctrl_word & L2CAP_FCR_F_BIT) >> L2CAP_FCR_F_BIT_SHIFT); } #endif /* Start the retransmission timer if not already running */ - if (p_ccb->peer_cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) + if (p_ccb->peer_cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) { l2c_fcr_start_timer (p_ccb); + } } /******************************************************************************* @@ -517,15 +501,15 @@ void l2c_fcr_send_S_frame (tL2C_CCB *p_ccb, UINT16 function_code, UINT16 pf_bit) UINT16 ctrl_word; UINT16 fcs; - if ((!p_ccb->in_use) || (p_ccb->chnl_state != CST_OPEN)) + if ((!p_ccb->in_use) || (p_ccb->chnl_state != CST_OPEN)) { return; + } #if (L2CAP_ERTM_STATS == TRUE) - p_ccb->fcrb.s_frames_sent[function_code]++; + p_ccb->fcrb.s_frames_sent[function_code]++; #endif - if (pf_bit == L2CAP_FCR_P_BIT) - { + if (pf_bit == L2CAP_FCR_P_BIT) { p_ccb->fcrb.wait_ack = TRUE; l2c_fcr_stop_timer (p_ccb); /* Restart the monitor timer */ @@ -537,8 +521,7 @@ void l2c_fcr_send_S_frame (tL2C_CCB *p_ccb, UINT16 function_code, UINT16 pf_bit) ctrl_word |= (p_ccb->fcrb.next_seq_expected << L2CAP_FCR_REQ_SEQ_BITS_SHIFT); ctrl_word |= pf_bit; - if ((p_buf = (BT_HDR *)GKI_getpoolbuf (L2CAP_CMD_POOL_ID)) != NULL) - { + if ((p_buf = (BT_HDR *)GKI_getpoolbuf (L2CAP_CMD_POOL_ID)) != NULL) { p_buf->offset = HCI_DATA_PREAMBLE_SIZE; p_buf->len = L2CAP_PKT_OVERHEAD + L2CAP_FCR_OVERHEAD; @@ -551,15 +534,12 @@ void l2c_fcr_send_S_frame (tL2C_CCB *p_ccb, UINT16 function_code, UINT16 pf_bit) UINT16_TO_STREAM (p, ctrl_word); /* Compute the FCS and add to the end of the buffer if not bypassed */ - if (p_ccb->bypass_fcs != L2CAP_BYPASS_FCS) - { + if (p_ccb->bypass_fcs != L2CAP_BYPASS_FCS) { fcs = l2c_fcr_tx_get_fcs (p_buf); UINT16_TO_STREAM (p, fcs); p_buf->len += L2CAP_FCS_LEN; - } - else /* rewrite the length without FCS length */ - { + } else { /* rewrite the length without FCS length */ p -= 6; UINT16_TO_STREAM (p, L2CAP_FCR_OVERHEAD); } @@ -570,24 +550,21 @@ void l2c_fcr_send_S_frame (tL2C_CCB *p_ccb, UINT16 function_code, UINT16 pf_bit) #if BT_TRACE_VERBOSE == TRUE if ((((ctrl_word & L2CAP_FCR_SUP_BITS) >> L2CAP_FCR_SUP_SHIFT) == 1) - || (((ctrl_word & L2CAP_FCR_SUP_BITS) >> L2CAP_FCR_SUP_SHIFT) == 3)) - { + || (((ctrl_word & L2CAP_FCR_SUP_BITS) >> L2CAP_FCR_SUP_SHIFT) == 3)) { L2CAP_TRACE_WARNING ("L2CAP eRTM Tx S-frame CID: 0x%04x ctrlword: 0x%04x Type: %s ReqSeq: %u P: %u F: %u", - p_ccb->local_cid, ctrl_word, - SUP_types[(ctrl_word & L2CAP_FCR_SUP_BITS) >> L2CAP_FCR_SUP_SHIFT], - (ctrl_word & L2CAP_FCR_REQ_SEQ_BITS) >> L2CAP_FCR_REQ_SEQ_BITS_SHIFT, - (ctrl_word & L2CAP_FCR_P_BIT) >> L2CAP_FCR_P_BIT_SHIFT, - (ctrl_word & L2CAP_FCR_F_BIT) >> L2CAP_FCR_F_BIT_SHIFT); + p_ccb->local_cid, ctrl_word, + SUP_types[(ctrl_word & L2CAP_FCR_SUP_BITS) >> L2CAP_FCR_SUP_SHIFT], + (ctrl_word & L2CAP_FCR_REQ_SEQ_BITS) >> L2CAP_FCR_REQ_SEQ_BITS_SHIFT, + (ctrl_word & L2CAP_FCR_P_BIT) >> L2CAP_FCR_P_BIT_SHIFT, + (ctrl_word & L2CAP_FCR_F_BIT) >> L2CAP_FCR_F_BIT_SHIFT); L2CAP_TRACE_WARNING (" Buf Len: %u", p_buf->len); - } - else - { + } else { L2CAP_TRACE_EVENT ("L2CAP eRTM Tx S-frame CID: 0x%04x ctrlword: 0x%04x Type: %s ReqSeq: %u P: %u F: %u", - p_ccb->local_cid, ctrl_word, - SUP_types[(ctrl_word & L2CAP_FCR_SUP_BITS) >> L2CAP_FCR_SUP_SHIFT], - (ctrl_word & L2CAP_FCR_REQ_SEQ_BITS) >> L2CAP_FCR_REQ_SEQ_BITS_SHIFT, - (ctrl_word & L2CAP_FCR_P_BIT) >> L2CAP_FCR_P_BIT_SHIFT, - (ctrl_word & L2CAP_FCR_F_BIT) >> L2CAP_FCR_F_BIT_SHIFT); + p_ccb->local_cid, ctrl_word, + SUP_types[(ctrl_word & L2CAP_FCR_SUP_BITS) >> L2CAP_FCR_SUP_SHIFT], + (ctrl_word & L2CAP_FCR_REQ_SEQ_BITS) >> L2CAP_FCR_REQ_SEQ_BITS_SHIFT, + (ctrl_word & L2CAP_FCR_P_BIT) >> L2CAP_FCR_P_BIT_SHIFT, + (ctrl_word & L2CAP_FCR_F_BIT) >> L2CAP_FCR_F_BIT_SHIFT); L2CAP_TRACE_EVENT (" Buf Len: %u", p_buf->len); } #endif /* BT_TRACE_VERBOSE */ @@ -596,13 +573,12 @@ void l2c_fcr_send_S_frame (tL2C_CCB *p_ccb, UINT16 function_code, UINT16 pf_bit) p_ccb->fcrb.last_ack_sent = p_ccb->fcrb.next_seq_expected; - if (p_ccb->fcrb.ack_timer.in_use) + if (p_ccb->fcrb.ack_timer.in_use) { btu_stop_quick_timer (&p_ccb->fcrb.ack_timer); - } - else - { + } + } else { L2CAP_TRACE_ERROR ("l2c_fcr_send_S_frame(No Resources) cid 0x%04x, Type: 0x%4x", - p_ccb->local_cid, function_code); + p_ccb->local_cid, function_code); } } @@ -630,74 +606,64 @@ void l2c_fcr_proc_pdu (tL2C_CCB *p_ccb, BT_HDR *p_buf) min_pdu_len = (p_ccb->bypass_fcs == L2CAP_BYPASS_FCS) ? (UINT16)L2CAP_FCR_OVERHEAD : (UINT16)(L2CAP_FCS_LEN + L2CAP_FCR_OVERHEAD); - if (p_buf->len < min_pdu_len) - { + if (p_buf->len < min_pdu_len) { L2CAP_TRACE_WARNING ("Rx L2CAP PDU: CID: 0x%04x Len too short: %u", p_ccb->local_cid, p_buf->len); GKI_freebuf (p_buf); return; } - if (p_ccb->peer_cfg.fcr.mode == L2CAP_FCR_STREAM_MODE) - { + if (p_ccb->peer_cfg.fcr.mode == L2CAP_FCR_STREAM_MODE) { process_stream_frame (p_ccb, p_buf); return; } #if BT_TRACE_VERBOSE == TRUE /* Get the control word */ - p = ((UINT8 *)(p_buf+1)) + p_buf->offset; + p = ((UINT8 *)(p_buf + 1)) + p_buf->offset; STREAM_TO_UINT16 (ctrl_word, p); - if (ctrl_word & L2CAP_FCR_S_FRAME_BIT) - { + if (ctrl_word & L2CAP_FCR_S_FRAME_BIT) { if ((((ctrl_word & L2CAP_FCR_SUP_BITS) >> L2CAP_FCR_SUP_SHIFT) == 1) - || (((ctrl_word & L2CAP_FCR_SUP_BITS) >> L2CAP_FCR_SUP_SHIFT) == 3)) - { + || (((ctrl_word & L2CAP_FCR_SUP_BITS) >> L2CAP_FCR_SUP_SHIFT) == 3)) { /* REJ or SREJ */ L2CAP_TRACE_WARNING ("L2CAP eRTM Rx S-frame: cid: 0x%04x Len: %u Type: %s ReqSeq: %u P: %u F: %u", - p_ccb->local_cid, p_buf->len, - SUP_types[(ctrl_word & L2CAP_FCR_SUP_BITS) >> L2CAP_FCR_SUP_SHIFT], - (ctrl_word & L2CAP_FCR_REQ_SEQ_BITS) >> L2CAP_FCR_REQ_SEQ_BITS_SHIFT, - (ctrl_word & L2CAP_FCR_P_BIT) >> L2CAP_FCR_P_BIT_SHIFT, - (ctrl_word & L2CAP_FCR_F_BIT) >> L2CAP_FCR_F_BIT_SHIFT); - } - else - { + p_ccb->local_cid, p_buf->len, + SUP_types[(ctrl_word & L2CAP_FCR_SUP_BITS) >> L2CAP_FCR_SUP_SHIFT], + (ctrl_word & L2CAP_FCR_REQ_SEQ_BITS) >> L2CAP_FCR_REQ_SEQ_BITS_SHIFT, + (ctrl_word & L2CAP_FCR_P_BIT) >> L2CAP_FCR_P_BIT_SHIFT, + (ctrl_word & L2CAP_FCR_F_BIT) >> L2CAP_FCR_F_BIT_SHIFT); + } else { L2CAP_TRACE_EVENT ("L2CAP eRTM Rx S-frame: cid: 0x%04x Len: %u Type: %s ReqSeq: %u P: %u F: %u", - p_ccb->local_cid, p_buf->len, - SUP_types[(ctrl_word & L2CAP_FCR_SUP_BITS) >> L2CAP_FCR_SUP_SHIFT], - (ctrl_word & L2CAP_FCR_REQ_SEQ_BITS) >> L2CAP_FCR_REQ_SEQ_BITS_SHIFT, - (ctrl_word & L2CAP_FCR_P_BIT) >> L2CAP_FCR_P_BIT_SHIFT, - (ctrl_word & L2CAP_FCR_F_BIT) >> L2CAP_FCR_F_BIT_SHIFT); + p_ccb->local_cid, p_buf->len, + SUP_types[(ctrl_word & L2CAP_FCR_SUP_BITS) >> L2CAP_FCR_SUP_SHIFT], + (ctrl_word & L2CAP_FCR_REQ_SEQ_BITS) >> L2CAP_FCR_REQ_SEQ_BITS_SHIFT, + (ctrl_word & L2CAP_FCR_P_BIT) >> L2CAP_FCR_P_BIT_SHIFT, + (ctrl_word & L2CAP_FCR_F_BIT) >> L2CAP_FCR_F_BIT_SHIFT); } - } - else - { + } else { L2CAP_TRACE_EVENT ("L2CAP eRTM Rx I-frame: cid: 0x%04x Len: %u SAR: %-12s TxSeq: %u ReqSeq: %u F: %u", - p_ccb->local_cid, p_buf->len, - SAR_types[(ctrl_word & L2CAP_FCR_SAR_BITS) >> L2CAP_FCR_SAR_BITS_SHIFT], - (ctrl_word & L2CAP_FCR_TX_SEQ_BITS) >> L2CAP_FCR_TX_SEQ_BITS_SHIFT, - (ctrl_word & L2CAP_FCR_REQ_SEQ_BITS) >> L2CAP_FCR_REQ_SEQ_BITS_SHIFT, - (ctrl_word & L2CAP_FCR_F_BIT) >> L2CAP_FCR_F_BIT_SHIFT); + p_ccb->local_cid, p_buf->len, + SAR_types[(ctrl_word & L2CAP_FCR_SAR_BITS) >> L2CAP_FCR_SAR_BITS_SHIFT], + (ctrl_word & L2CAP_FCR_TX_SEQ_BITS) >> L2CAP_FCR_TX_SEQ_BITS_SHIFT, + (ctrl_word & L2CAP_FCR_REQ_SEQ_BITS) >> L2CAP_FCR_REQ_SEQ_BITS_SHIFT, + (ctrl_word & L2CAP_FCR_F_BIT) >> L2CAP_FCR_F_BIT_SHIFT); } L2CAP_TRACE_EVENT (" eRTM Rx Nxt_tx_seq %u, Lst_rx_ack %u, Nxt_seq_exp %u, Lst_ack_snt %u, wt_q.cnt %u, tries %u", - p_ccb->fcrb.next_tx_seq, p_ccb->fcrb.last_rx_ack, p_ccb->fcrb.next_seq_expected, - p_ccb->fcrb.last_ack_sent, GKI_queue_length(&p_ccb->fcrb.waiting_for_ack_q), p_ccb->fcrb.num_tries); + p_ccb->fcrb.next_tx_seq, p_ccb->fcrb.last_rx_ack, p_ccb->fcrb.next_seq_expected, + p_ccb->fcrb.last_ack_sent, GKI_queue_length(&p_ccb->fcrb.waiting_for_ack_q), p_ccb->fcrb.num_tries); #endif /* BT_TRACE_VERBOSE */ /* Verify FCS if using */ - if (p_ccb->bypass_fcs != L2CAP_BYPASS_FCS) - { - p = ((UINT8 *)(p_buf+1)) + p_buf->offset + p_buf->len - L2CAP_FCS_LEN; + if (p_ccb->bypass_fcs != L2CAP_BYPASS_FCS) { + p = ((UINT8 *)(p_buf + 1)) + p_buf->offset + p_buf->len - L2CAP_FCS_LEN; /* Extract and drop the FCS from the packet */ STREAM_TO_UINT16 (fcs, p); p_buf->len -= L2CAP_FCS_LEN; - if (l2c_fcr_rx_get_fcs(p_buf) != fcs) - { + if (l2c_fcr_rx_get_fcs(p_buf) != fcs) { L2CAP_TRACE_WARNING ("Rx L2CAP PDU: CID: 0x%04x BAD FCS", p_ccb->local_cid); GKI_freebuf(p_buf); return; @@ -705,7 +671,7 @@ void l2c_fcr_proc_pdu (tL2C_CCB *p_ccb, BT_HDR *p_buf) } /* Get the control word */ - p = ((UINT8 *)(p_buf+1)) + p_buf->offset; + p = ((UINT8 *)(p_buf + 1)) + p_buf->offset; STREAM_TO_UINT16 (ctrl_word, p); @@ -713,19 +679,17 @@ void l2c_fcr_proc_pdu (tL2C_CCB *p_ccb, BT_HDR *p_buf) p_buf->offset += L2CAP_FCR_OVERHEAD; /* If we had a poll bit outstanding, check if we got a final response */ - if (p_ccb->fcrb.wait_ack) - { + if (p_ccb->fcrb.wait_ack) { /* If final bit not set, ignore the frame unless it is a polled S-frame */ - if ( !(ctrl_word & L2CAP_FCR_F_BIT) ) - { - if ( (ctrl_word & L2CAP_FCR_P_BIT) && (ctrl_word & L2CAP_FCR_S_FRAME_BIT) ) - { - if (p_ccb->fcrb.srej_sent) + if ( !(ctrl_word & L2CAP_FCR_F_BIT) ) { + if ( (ctrl_word & L2CAP_FCR_P_BIT) && (ctrl_word & L2CAP_FCR_S_FRAME_BIT) ) { + if (p_ccb->fcrb.srej_sent) { l2c_fcr_send_S_frame (p_ccb, L2CAP_FCR_SUP_SREJ, L2CAP_FCR_F_BIT); - else if (p_ccb->fcrb.local_busy) + } else if (p_ccb->fcrb.local_busy) { l2c_fcr_send_S_frame (p_ccb, L2CAP_FCR_SUP_RNR, L2CAP_FCR_F_BIT); - else + } else { l2c_fcr_send_S_frame (p_ccb, L2CAP_FCR_SUP_RR, L2CAP_FCR_F_BIT); + } /* Got a poll while in wait_ack state, so re-start our timer with 1-second */ /* This is a small optimization... the monitor timer is 12 secs, but we saw */ @@ -740,66 +704,63 @@ void l2c_fcr_proc_pdu (tL2C_CCB *p_ccb, BT_HDR *p_buf) p_ccb->fcrb.wait_ack = FALSE; /* P and F are mutually exclusive */ - if (ctrl_word & L2CAP_FCR_S_FRAME_BIT) + if (ctrl_word & L2CAP_FCR_S_FRAME_BIT) { ctrl_word &= ~L2CAP_FCR_P_BIT; + } - if (GKI_queue_is_empty(&p_ccb->fcrb.waiting_for_ack_q)) + if (GKI_queue_is_empty(&p_ccb->fcrb.waiting_for_ack_q)) { p_ccb->fcrb.num_tries = 0; + } l2c_fcr_stop_timer (p_ccb); - } - else - { + } else { /* Otherwise, ensure the final bit is ignored */ ctrl_word &= ~L2CAP_FCR_F_BIT; } /* Process receive sequence number */ - if (!process_reqseq (p_ccb, ctrl_word)) - { + if (!process_reqseq (p_ccb, ctrl_word)) { GKI_freebuf (p_buf); return; } - /* Process based on whether it is an S-frame or an I-frame */ - if (ctrl_word & L2CAP_FCR_S_FRAME_BIT) + /* Process based on whether it is an S-frame or an I-frame */ + if (ctrl_word & L2CAP_FCR_S_FRAME_BIT) { process_s_frame (p_ccb, p_buf, ctrl_word); - else + } else { process_i_frame (p_ccb, p_buf, ctrl_word, FALSE); + } /* Return if the channel got disconnected by a bad packet or max retransmissions */ - if ( (!p_ccb->in_use) || (p_ccb->chnl_state != CST_OPEN) ) + if ( (!p_ccb->in_use) || (p_ccb->chnl_state != CST_OPEN) ) { return; + } /* If we have some buffers held while doing SREJ, and SREJ has cleared, process them now */ - if ( (!p_ccb->fcrb.local_busy) && (!p_ccb->fcrb.srej_sent) && (!GKI_queue_is_empty(&p_ccb->fcrb.srej_rcv_hold_q))) - { + if ( (!p_ccb->fcrb.local_busy) && (!p_ccb->fcrb.srej_sent) && (!GKI_queue_is_empty(&p_ccb->fcrb.srej_rcv_hold_q))) { BUFFER_Q temp_q = p_ccb->fcrb.srej_rcv_hold_q; GKI_init_q (&p_ccb->fcrb.srej_rcv_hold_q); - while ((p_buf = (BT_HDR *)GKI_dequeue (&temp_q)) != NULL) - { - if (p_ccb->in_use && (p_ccb->chnl_state == CST_OPEN)) - { + while ((p_buf = (BT_HDR *)GKI_dequeue (&temp_q)) != NULL) { + if (p_ccb->in_use && (p_ccb->chnl_state == CST_OPEN)) { /* Get the control word */ - p = ((UINT8 *)(p_buf+1)) + p_buf->offset - L2CAP_FCR_OVERHEAD; + p = ((UINT8 *)(p_buf + 1)) + p_buf->offset - L2CAP_FCR_OVERHEAD; STREAM_TO_UINT16 (ctrl_word, p); L2CAP_TRACE_DEBUG ("l2c_fcr_proc_pdu() CID: 0x%04x Process Buffer from SREJ_Hold_Q TxSeq: %u Expected_Seq: %u", - p_ccb->local_cid, (ctrl_word & L2CAP_FCR_TX_SEQ_BITS) >> L2CAP_FCR_TX_SEQ_BITS_SHIFT, - p_ccb->fcrb.next_seq_expected); + p_ccb->local_cid, (ctrl_word & L2CAP_FCR_TX_SEQ_BITS) >> L2CAP_FCR_TX_SEQ_BITS_SHIFT, + p_ccb->fcrb.next_seq_expected); /* Process the SREJ held I-frame, but do not send an RR for each individual frame */ process_i_frame (p_ccb, p_buf, ctrl_word, TRUE); - } - else + } else { GKI_freebuf (p_buf); + } /* If more frames were lost during SREJ, send a REJ */ - if (p_ccb->fcrb.rej_after_srej) - { + if (p_ccb->fcrb.rej_after_srej) { p_ccb->fcrb.rej_after_srej = FALSE; p_ccb->fcrb.rej_sent = TRUE; @@ -809,21 +770,19 @@ void l2c_fcr_proc_pdu (tL2C_CCB *p_ccb, BT_HDR *p_buf) /* Now, if needed, send one RR for the whole held queue */ if ( (!p_ccb->fcrb.local_busy) && (!p_ccb->fcrb.rej_sent) && (!p_ccb->fcrb.srej_sent) - && (p_ccb->fcrb.next_seq_expected != p_ccb->fcrb.last_ack_sent) ) + && (p_ccb->fcrb.next_seq_expected != p_ccb->fcrb.last_ack_sent) ) { l2c_fcr_send_S_frame (p_ccb, L2CAP_FCR_SUP_RR, 0); - else - { + } else { L2CAP_TRACE_DEBUG ("l2c_fcr_proc_pdu() not sending RR CID: 0x%04x local_busy:%d rej_sent:%d srej_sent:%d Expected_Seq:%u Last_Ack:%u", - p_ccb->local_cid, p_ccb->fcrb.local_busy, p_ccb->fcrb.rej_sent, p_ccb->fcrb.srej_sent, p_ccb->fcrb.next_seq_expected, - p_ccb->fcrb.last_ack_sent); + p_ccb->local_cid, p_ccb->fcrb.local_busy, p_ccb->fcrb.rej_sent, p_ccb->fcrb.srej_sent, p_ccb->fcrb.next_seq_expected, + p_ccb->fcrb.last_ack_sent); } } /* If a window has opened, check if we can send any more packets */ if ( (!GKI_queue_is_empty(&p_ccb->fcrb.retrans_q) || !GKI_queue_is_empty(&p_ccb->xmit_hold_q)) - && (p_ccb->fcrb.wait_ack == FALSE) - && (l2c_fcr_is_flow_controlled (p_ccb) == FALSE) ) - { + && (p_ccb->fcrb.wait_ack == FALSE) + && (l2c_fcr_is_flow_controlled (p_ccb) == FALSE) ) { l2c_link_check_send_pkts (p_ccb->p_lcb, NULL, NULL); } } @@ -841,25 +800,22 @@ void l2c_fcr_proc_tout (tL2C_CCB *p_ccb) { assert(p_ccb != NULL); L2CAP_TRACE_DEBUG ("l2c_fcr_proc_tout: CID: 0x%04x num_tries: %u (max: %u) wait_ack: %u ack_q_count: %u", - p_ccb->local_cid, p_ccb->fcrb.num_tries, p_ccb->peer_cfg.fcr.max_transmit, - p_ccb->fcrb.wait_ack, GKI_queue_length(&p_ccb->fcrb.waiting_for_ack_q)); + p_ccb->local_cid, p_ccb->fcrb.num_tries, p_ccb->peer_cfg.fcr.max_transmit, + p_ccb->fcrb.wait_ack, GKI_queue_length(&p_ccb->fcrb.waiting_for_ack_q)); #if (L2CAP_ERTM_STATS == TRUE) p_ccb->fcrb.retrans_touts++; #endif - if ( (p_ccb->peer_cfg.fcr.max_transmit != 0) && (++p_ccb->fcrb.num_tries > p_ccb->peer_cfg.fcr.max_transmit) ) - { + if ( (p_ccb->peer_cfg.fcr.max_transmit != 0) && (++p_ccb->fcrb.num_tries > p_ccb->peer_cfg.fcr.max_transmit) ) { l2cu_disconnect_chnl (p_ccb); - } - else - { - if (!p_ccb->fcrb.srej_sent && !p_ccb->fcrb.rej_sent) - { - if (p_ccb->fcrb.local_busy) + } else { + if (!p_ccb->fcrb.srej_sent && !p_ccb->fcrb.rej_sent) { + if (p_ccb->fcrb.local_busy) { l2c_fcr_send_S_frame (p_ccb, L2CAP_FCR_SUP_RNR, L2CAP_FCR_P_BIT); - else + } else { l2c_fcr_send_S_frame (p_ccb, L2CAP_FCR_SUP_RR, L2CAP_FCR_P_BIT); + } } } } @@ -878,18 +834,18 @@ void l2c_fcr_proc_ack_tout (tL2C_CCB *p_ccb) { assert(p_ccb != NULL); L2CAP_TRACE_DEBUG ("l2c_fcr_proc_ack_tout: CID: 0x%04x State: %u Wack:%u Rq:%d Acked:%d", p_ccb->local_cid, - p_ccb->chnl_state, p_ccb->fcrb.wait_ack, p_ccb->fcrb.next_seq_expected, p_ccb->fcrb.last_ack_sent); + p_ccb->chnl_state, p_ccb->fcrb.wait_ack, p_ccb->fcrb.next_seq_expected, p_ccb->fcrb.last_ack_sent); if ( (p_ccb->chnl_state == CST_OPEN) && (!p_ccb->fcrb.wait_ack) - && (p_ccb->fcrb.last_ack_sent != p_ccb->fcrb.next_seq_expected) ) - { + && (p_ccb->fcrb.last_ack_sent != p_ccb->fcrb.next_seq_expected) ) { #if (L2CAP_ERTM_STATS == TRUE) p_ccb->fcrb.xmit_ack_touts++; #endif - if (p_ccb->fcrb.local_busy) + if (p_ccb->fcrb.local_busy) { l2c_fcr_send_S_frame (p_ccb, L2CAP_FCR_SUP_RNR, 0); - else + } else { l2c_fcr_send_S_frame (p_ccb, L2CAP_FCR_SUP_RR, 0); + } } } @@ -913,12 +869,12 @@ static BOOLEAN process_reqseq (tL2C_CCB *p_ccb, UINT16 ctrl_word) /* Receive sequence number does not ack anything for SREJ with P-bit set to zero */ if ( (ctrl_word & L2CAP_FCR_S_FRAME_BIT) - && ((ctrl_word & L2CAP_FCR_SUP_BITS) == (L2CAP_FCR_SUP_SREJ << L2CAP_FCR_SUP_SHIFT)) - && ((ctrl_word & L2CAP_FCR_P_BIT) == 0) ) - { + && ((ctrl_word & L2CAP_FCR_SUP_BITS) == (L2CAP_FCR_SUP_SREJ << L2CAP_FCR_SUP_SHIFT)) + && ((ctrl_word & L2CAP_FCR_P_BIT) == 0) ) { /* If anything still waiting for ack, restart the timer if it was stopped */ - if (!GKI_queue_is_empty(&p_fcrb->waiting_for_ack_q)) + if (!GKI_queue_is_empty(&p_fcrb->waiting_for_ack_q)) { l2c_fcr_start_timer (p_ccb); + } return (TRUE); } @@ -929,11 +885,10 @@ static BOOLEAN process_reqseq (tL2C_CCB *p_ccb, UINT16 ctrl_word) num_bufs_acked = (req_seq - p_fcrb->last_rx_ack) & L2CAP_FCR_SEQ_MODULO; /* Verify the request sequence is in range before proceeding */ - if (num_bufs_acked > GKI_queue_length(&p_fcrb->waiting_for_ack_q)) - { + if (num_bufs_acked > GKI_queue_length(&p_fcrb->waiting_for_ack_q)) { /* The channel is closed if ReqSeq is not in range */ L2CAP_TRACE_WARNING ("L2CAP eRTM Frame BAD Req_Seq - ctrl_word: 0x%04x req_seq 0x%02x last_rx_ack: 0x%02x QCount: %u", - ctrl_word, req_seq, p_fcrb->last_rx_ack, GKI_queue_length(&p_fcrb->waiting_for_ack_q)); + ctrl_word, req_seq, p_fcrb->last_rx_ack, GKI_queue_length(&p_fcrb->waiting_for_ack_q)); l2cu_disconnect_chnl (p_ccb); return (FALSE); @@ -942,8 +897,7 @@ static BOOLEAN process_reqseq (tL2C_CCB *p_ccb, UINT16 ctrl_word) p_fcrb->last_rx_ack = req_seq; /* Now we can release all acknowledged frames, and restart the retransmission timer if needed */ - if (num_bufs_acked != 0) - { + if (num_bufs_acked != 0) { p_fcrb->num_tries = 0; full_sdus_xmitted = 0; @@ -951,34 +905,36 @@ static BOOLEAN process_reqseq (tL2C_CCB *p_ccb, UINT16 ctrl_word) l2c_fcr_collect_ack_delay (p_ccb, num_bufs_acked); #endif - for (xx = 0; xx < num_bufs_acked; xx++) - { + for (xx = 0; xx < num_bufs_acked; xx++) { ls = ((BT_HDR *)(GKI_getfirst(&p_fcrb->waiting_for_ack_q)))->layer_specific & L2CAP_FCR_SAR_BITS; - if ( (ls == L2CAP_FCR_UNSEG_SDU) || (ls == L2CAP_FCR_END_SDU) ) + if ( (ls == L2CAP_FCR_UNSEG_SDU) || (ls == L2CAP_FCR_END_SDU) ) { full_sdus_xmitted++; + } GKI_freebuf (GKI_dequeue (&p_fcrb->waiting_for_ack_q)); } /* If we are still in a wait_ack state, do not mess with the timer */ - if (!p_ccb->fcrb.wait_ack) + if (!p_ccb->fcrb.wait_ack) { l2c_fcr_stop_timer (p_ccb); + } /* Check if we need to call the "packet_sent" callback */ - if ( (p_ccb->p_rcb) && (p_ccb->p_rcb->api.pL2CA_TxComplete_Cb) && (full_sdus_xmitted) ) - { + if ( (p_ccb->p_rcb) && (p_ccb->p_rcb->api.pL2CA_TxComplete_Cb) && (full_sdus_xmitted) ) { /* Special case for eRTM, if all packets sent, send 0xFFFF */ - if (GKI_queue_is_empty(&p_fcrb->waiting_for_ack_q) && (GKI_queue_is_empty(&p_ccb->xmit_hold_q))) + if (GKI_queue_is_empty(&p_fcrb->waiting_for_ack_q) && (GKI_queue_is_empty(&p_ccb->xmit_hold_q))) { full_sdus_xmitted = 0xFFFF; + } (*p_ccb->p_rcb->api.pL2CA_TxComplete_Cb)(p_ccb->local_cid, full_sdus_xmitted); } } /* If anything still waiting for ack, restart the timer if it was stopped */ - if (!GKI_queue_is_empty(&p_fcrb->waiting_for_ack_q)) + if (!GKI_queue_is_empty(&p_fcrb->waiting_for_ack_q)) { l2c_fcr_start_timer (p_ccb); + } return (TRUE); } @@ -1003,8 +959,7 @@ static void process_s_frame (tL2C_CCB *p_ccb, BT_HDR *p_buf, UINT16 ctrl_word) BOOLEAN remote_was_busy; BOOLEAN all_ok = TRUE; - if (p_buf->len != 0) - { + if (p_buf->len != 0) { L2CAP_TRACE_WARNING ("Incorrect S-frame Length (%d)", p_buf->len); } @@ -1014,20 +969,19 @@ static void process_s_frame (tL2C_CCB *p_ccb, BT_HDR *p_buf, UINT16 ctrl_word) p_ccb->fcrb.s_frames_rcvd[s_frame_type]++; #endif - if (ctrl_word & L2CAP_FCR_P_BIT) - { + if (ctrl_word & L2CAP_FCR_P_BIT) { p_fcrb->rej_sent = FALSE; /* After checkpoint, we can send anoher REJ */ p_fcrb->send_f_rsp = TRUE; /* Set a flag in case an I-frame is pending */ } - switch (s_frame_type) - { + switch (s_frame_type) { case L2CAP_FCR_SUP_RR: remote_was_busy = p_fcrb->remote_busy; p_fcrb->remote_busy = FALSE; - if ( (ctrl_word & L2CAP_FCR_F_BIT) || (remote_was_busy) ) + if ( (ctrl_word & L2CAP_FCR_F_BIT) || (remote_was_busy) ) { all_ok = retransmit_i_frames (p_ccb, L2C_FCR_RETX_ALL_PKTS); + } break; case L2CAP_FCR_SUP_REJ: @@ -1046,23 +1000,20 @@ static void process_s_frame (tL2C_CCB *p_ccb, BT_HDR *p_buf, UINT16 ctrl_word) break; } - if (all_ok) - { + if (all_ok) { /* If polled, we need to respond with F-bit. Note, we may have sent a I-frame with the F-bit */ - if (p_fcrb->send_f_rsp) - { - if (p_fcrb->srej_sent) + if (p_fcrb->send_f_rsp) { + if (p_fcrb->srej_sent) { l2c_fcr_send_S_frame (p_ccb, L2CAP_FCR_SUP_SREJ, L2CAP_FCR_F_BIT); - else if (p_fcrb->local_busy) + } else if (p_fcrb->local_busy) { l2c_fcr_send_S_frame (p_ccb, L2CAP_FCR_SUP_RNR, L2CAP_FCR_F_BIT); - else + } else { l2c_fcr_send_S_frame (p_ccb, L2CAP_FCR_SUP_RR, L2CAP_FCR_F_BIT); + } p_fcrb->send_f_rsp = FALSE; } - } - else - { + } else { L2CAP_TRACE_DEBUG ("process_s_frame hit_max_retries"); } @@ -1088,10 +1039,8 @@ static void process_i_frame (tL2C_CCB *p_ccb, BT_HDR *p_buf, UINT16 ctrl_word, B UINT8 tx_seq, num_lost, num_to_ack, next_srej; /* If we were doing checkpoint recovery, first retransmit all unacked I-frames */ - if (ctrl_word & L2CAP_FCR_F_BIT) - { - if (!retransmit_i_frames (p_ccb, L2C_FCR_RETX_ALL_PKTS)) - { + if (ctrl_word & L2CAP_FCR_F_BIT) { + if (!retransmit_i_frames (p_ccb, L2C_FCR_RETX_ALL_PKTS)) { GKI_freebuf(p_buf); return; } @@ -1106,8 +1055,7 @@ static void process_i_frame (tL2C_CCB *p_ccb, BT_HDR *p_buf, UINT16 ctrl_word, B tx_seq = (ctrl_word & L2CAP_FCR_TX_SEQ_BITS) >> L2CAP_FCR_TX_SEQ_BITS_SHIFT; /* If we have flow controlled the peer, ignore any bad I-frames from him */ - if ( (tx_seq != p_fcrb->next_seq_expected) && (p_fcrb->local_busy) ) - { + if ( (tx_seq != p_fcrb->next_seq_expected) && (p_fcrb->local_busy) ) { L2CAP_TRACE_WARNING ("Dropping bad I-Frame since we flowed off, tx_seq:%u", tx_seq); l2c_fcr_send_S_frame (p_ccb, L2CAP_FCR_SUP_RNR, 0); GKI_freebuf(p_buf); @@ -1116,42 +1064,34 @@ static void process_i_frame (tL2C_CCB *p_ccb, BT_HDR *p_buf, UINT16 ctrl_word, B /* If there are no free buffers in the user Rx queue, drop the */ /* received buffer now before we update any sequence numbers */ - if (GKI_poolfreecount (p_ccb->ertm_info.user_rx_pool_id) == 0) - { + if (GKI_poolfreecount (p_ccb->ertm_info.user_rx_pool_id) == 0) { L2CAP_TRACE_WARNING ("L2CAP CID: 0x%04x Dropping I-Frame seq: %u User RX Pool: %u (Size: %u) has no free buffers!!", - p_ccb->local_cid, tx_seq, p_ccb->ertm_info.user_rx_pool_id, - GKI_poolcount (p_ccb->ertm_info.user_rx_pool_id)); + p_ccb->local_cid, tx_seq, p_ccb->ertm_info.user_rx_pool_id, + GKI_poolcount (p_ccb->ertm_info.user_rx_pool_id)); GKI_freebuf(p_buf); return; } /* Check if tx-sequence is the expected one */ - if (tx_seq != p_fcrb->next_seq_expected) - { + if (tx_seq != p_fcrb->next_seq_expected) { num_lost = (tx_seq - p_fcrb->next_seq_expected) & L2CAP_FCR_SEQ_MODULO; /* Is the frame a duplicate ? If so, just drop it */ - if (num_lost >= p_ccb->our_cfg.fcr.tx_win_sz) - { + if (num_lost >= p_ccb->our_cfg.fcr.tx_win_sz) { /* Duplicate - simply drop it */ L2CAP_TRACE_WARNING ("process_i_frame() Dropping Duplicate Frame tx_seq:%u ExpectedTxSeq %u", tx_seq, p_fcrb->next_seq_expected); GKI_freebuf(p_buf); - } - else - { + } else { L2CAP_TRACE_WARNING ("process_i_frame() CID: 0x%04x Lost: %u tx_seq:%u ExpTxSeq %u Rej: %u SRej: %u", p_ccb->local_cid, num_lost, tx_seq, p_fcrb->next_seq_expected, p_fcrb->rej_sent, p_fcrb->srej_sent); - if (p_fcrb->srej_sent) - { + if (p_fcrb->srej_sent) { /* If SREJ sent, save the frame for later processing as long as it is in sequence */ next_srej = (((BT_HDR *)GKI_getlast(&p_fcrb->srej_rcv_hold_q))->layer_specific + 1) & L2CAP_FCR_SEQ_MODULO; - if ( (tx_seq == next_srej) && (GKI_queue_length(&p_fcrb->srej_rcv_hold_q) < p_ccb->our_cfg.fcr.tx_win_sz) ) - { + if ( (tx_seq == next_srej) && (GKI_queue_length(&p_fcrb->srej_rcv_hold_q) < p_ccb->our_cfg.fcr.tx_win_sz) ) { /* If user gave us a pool for held rx buffers, use that */ - if (p_ccb->ertm_info.fcr_rx_pool_id != HCI_ACL_POOL_ID) - { + if (p_ccb->ertm_info.fcr_rx_pool_id != HCI_ACL_POOL_ID) { BT_HDR *p_buf2; /* Adjust offset and len so that control word is copied */ @@ -1160,8 +1100,7 @@ static void process_i_frame (tL2C_CCB *p_ccb, BT_HDR *p_buf, UINT16 ctrl_word, B p_buf2 = l2c_fcr_clone_buf (p_buf, p_buf->offset, p_buf->len, p_ccb->ertm_info.fcr_rx_pool_id); - if (p_buf2) - { + if (p_buf2) { GKI_freebuf (p_buf); p_buf = p_buf2; } @@ -1169,46 +1108,36 @@ static void process_i_frame (tL2C_CCB *p_ccb, BT_HDR *p_buf, UINT16 ctrl_word, B p_buf->len -= L2CAP_FCR_OVERHEAD; } L2CAP_TRACE_DEBUG ("process_i_frame() Lost: %u tx_seq:%u ExpTxSeq %u Rej: %u SRej1", - num_lost, tx_seq, p_fcrb->next_seq_expected, p_fcrb->rej_sent); + num_lost, tx_seq, p_fcrb->next_seq_expected, p_fcrb->rej_sent); p_buf->layer_specific = tx_seq; GKI_enqueue (&p_fcrb->srej_rcv_hold_q, p_buf); - } - else - { + } else { L2CAP_TRACE_WARNING ("process_i_frame() CID: 0x%04x frame dropped in Srej Sent next_srej:%u hold_q.count:%u win_sz:%u", p_ccb->local_cid, next_srej, GKI_queue_length(&p_fcrb->srej_rcv_hold_q), p_ccb->our_cfg.fcr.tx_win_sz); p_fcrb->rej_after_srej = TRUE; GKI_freebuf (p_buf); } - } - else if (p_fcrb->rej_sent) - { + } else if (p_fcrb->rej_sent) { L2CAP_TRACE_WARNING ("process_i_frame() CID: 0x%04x Lost: %u tx_seq:%u ExpTxSeq %u Rej: 1 SRej: %u", p_ccb->local_cid, num_lost, tx_seq, p_fcrb->next_seq_expected, p_fcrb->srej_sent); /* If REJ sent, just drop the frame */ GKI_freebuf (p_buf); - } - else - { + } else { L2CAP_TRACE_DEBUG ("process_i_frame() CID: 0x%04x tx_seq:%u ExpTxSeq %u Rej: %u", - p_ccb->local_cid, tx_seq, p_fcrb->next_seq_expected, p_fcrb->rej_sent); + p_ccb->local_cid, tx_seq, p_fcrb->next_seq_expected, p_fcrb->rej_sent); /* If only one lost, we will send SREJ, otherwise we will send REJ */ - if (num_lost > 1) - { + if (num_lost > 1) { GKI_freebuf (p_buf); p_fcrb->rej_sent = TRUE; l2c_fcr_send_S_frame (p_ccb, L2CAP_FCR_SUP_REJ, 0); - } - else - { - if (!GKI_queue_is_empty(&p_fcrb->srej_rcv_hold_q)) - { + } else { + if (!GKI_queue_is_empty(&p_fcrb->srej_rcv_hold_q)) { L2CAP_TRACE_ERROR ("process_i_frame() CID: 0x%04x sending SREJ tx_seq:%d hold_q.count:%u", - p_ccb->local_cid, tx_seq, GKI_queue_length(&p_fcrb->srej_rcv_hold_q)); + p_ccb->local_cid, tx_seq, GKI_queue_length(&p_fcrb->srej_rcv_hold_q)); } p_buf->layer_specific = tx_seq; GKI_enqueue (&p_fcrb->srej_rcv_hold_q, p_buf); @@ -1229,8 +1158,7 @@ static void process_i_frame (tL2C_CCB *p_ccb, BT_HDR *p_buf, UINT16 ctrl_word, B p_fcrb->next_seq_expected = (tx_seq + 1) & L2CAP_FCR_SEQ_MODULO; /* If any SAR problem in eRTM mode, spec says disconnect. */ - if (!do_sar_reassembly (p_ccb, p_buf, ctrl_word)) - { + if (!do_sar_reassembly (p_ccb, p_buf, ctrl_word)) { L2CAP_TRACE_WARNING ("process_i_frame() CID: 0x%04x reassembly failed", p_ccb->local_cid); l2cu_disconnect_chnl (p_ccb); return; @@ -1239,29 +1167,26 @@ static void process_i_frame (tL2C_CCB *p_ccb, BT_HDR *p_buf, UINT16 ctrl_word, B /* RR optimization - if peer can still send us more, then start an ACK timer */ num_to_ack = (p_fcrb->next_seq_expected - p_fcrb->last_ack_sent) & L2CAP_FCR_SEQ_MODULO; - if ( (num_to_ack < p_ccb->fcrb.max_held_acks) && (!p_fcrb->local_busy) ) + if ( (num_to_ack < p_ccb->fcrb.max_held_acks) && (!p_fcrb->local_busy) ) { delay_ack = TRUE; + } /* We should neve never ack frame if we are not in OPEN state */ - if ((num_to_ack != 0) && p_ccb->in_use && (p_ccb->chnl_state == CST_OPEN)) - { + if ((num_to_ack != 0) && p_ccb->in_use && (p_ccb->chnl_state == CST_OPEN)) { /* If no frames are awaiting transmission or are held, send an RR or RNR S-frame for ack */ - if (delay_ack) - { + if (delay_ack) { /* If it is the first I frame we did not ack, start ack timer */ - if (!p_ccb->fcrb.ack_timer.in_use) - { + if (!p_ccb->fcrb.ack_timer.in_use) { btu_start_quick_timer (&p_ccb->fcrb.ack_timer, BTU_TTYPE_L2CAP_FCR_ACK, - (L2CAP_FCR_ACK_TOUT*QUICK_TIMER_TICKS_PER_SEC)/1000); + (L2CAP_FCR_ACK_TOUT * QUICK_TIMER_TICKS_PER_SEC) / 1000); } - } - else if ( ((GKI_queue_is_empty(&p_ccb->xmit_hold_q)) || (l2c_fcr_is_flow_controlled (p_ccb))) - && (GKI_queue_is_empty(&p_ccb->fcrb.srej_rcv_hold_q))) - { - if (p_fcrb->local_busy) + } else if ( ((GKI_queue_is_empty(&p_ccb->xmit_hold_q)) || (l2c_fcr_is_flow_controlled (p_ccb))) + && (GKI_queue_is_empty(&p_ccb->fcrb.srej_rcv_hold_q))) { + if (p_fcrb->local_busy) { l2c_fcr_send_S_frame (p_ccb, L2CAP_FCR_SUP_RNR, 0); - else + } else { l2c_fcr_send_S_frame (p_ccb, L2CAP_FCR_SUP_RR, 0); + } } } } @@ -1287,16 +1212,14 @@ static void process_stream_frame (tL2C_CCB *p_ccb, BT_HDR *p_buf) UINT8 tx_seq; /* Verify FCS if using */ - if (p_ccb->bypass_fcs != L2CAP_BYPASS_FCS) - { - p = ((UINT8 *)(p_buf+1)) + p_buf->offset + p_buf->len - L2CAP_FCS_LEN; + if (p_ccb->bypass_fcs != L2CAP_BYPASS_FCS) { + p = ((UINT8 *)(p_buf + 1)) + p_buf->offset + p_buf->len - L2CAP_FCS_LEN; /* Extract and drop the FCS from the packet */ STREAM_TO_UINT16 (fcs, p); p_buf->len -= L2CAP_FCS_LEN; - if (l2c_fcr_rx_get_fcs(p_buf) != fcs) - { + if (l2c_fcr_rx_get_fcs(p_buf) != fcs) { L2CAP_TRACE_WARNING ("Rx L2CAP PDU: CID: 0x%04x BAD FCS", p_ccb->local_cid); GKI_freebuf(p_buf); return; @@ -1304,7 +1227,7 @@ static void process_stream_frame (tL2C_CCB *p_ccb, BT_HDR *p_buf) } /* Get the control word */ - p = ((UINT8 *)(p_buf+1)) + p_buf->offset; + p = ((UINT8 *)(p_buf + 1)) + p_buf->offset; STREAM_TO_UINT16 (ctrl_word, p); @@ -1312,8 +1235,7 @@ static void process_stream_frame (tL2C_CCB *p_ccb, BT_HDR *p_buf) p_buf->offset += L2CAP_FCR_OVERHEAD; /* Make sure it is an I-frame */ - if (ctrl_word & L2CAP_FCR_S_FRAME_BIT) - { + if (ctrl_word & L2CAP_FCR_S_FRAME_BIT) { L2CAP_TRACE_WARNING ("Rx L2CAP PDU: CID: 0x%04x BAD S-frame in streaming mode ctrl_word: 0x%04x", p_ccb->local_cid, ctrl_word); GKI_freebuf (p_buf); return; @@ -1321,25 +1243,23 @@ static void process_stream_frame (tL2C_CCB *p_ccb, BT_HDR *p_buf) #if BT_TRACE_VERBOSE == TRUE L2CAP_TRACE_EVENT ("L2CAP eRTM Rx I-frame: cid: 0x%04x Len: %u SAR: %-12s TxSeq: %u ReqSeq: %u F: %u", - p_ccb->local_cid, p_buf->len, - SAR_types[(ctrl_word & L2CAP_FCR_SAR_BITS) >> L2CAP_FCR_SAR_BITS_SHIFT], - (ctrl_word & L2CAP_FCR_TX_SEQ_BITS) >> L2CAP_FCR_TX_SEQ_BITS_SHIFT, - (ctrl_word & L2CAP_FCR_REQ_SEQ_BITS) >> L2CAP_FCR_REQ_SEQ_BITS_SHIFT, - (ctrl_word & L2CAP_FCR_F_BIT) >> L2CAP_FCR_F_BIT_SHIFT); + p_ccb->local_cid, p_buf->len, + SAR_types[(ctrl_word & L2CAP_FCR_SAR_BITS) >> L2CAP_FCR_SAR_BITS_SHIFT], + (ctrl_word & L2CAP_FCR_TX_SEQ_BITS) >> L2CAP_FCR_TX_SEQ_BITS_SHIFT, + (ctrl_word & L2CAP_FCR_REQ_SEQ_BITS) >> L2CAP_FCR_REQ_SEQ_BITS_SHIFT, + (ctrl_word & L2CAP_FCR_F_BIT) >> L2CAP_FCR_F_BIT_SHIFT); #endif /* Extract the sequence number */ tx_seq = (ctrl_word & L2CAP_FCR_TX_SEQ_BITS) >> L2CAP_FCR_TX_SEQ_BITS_SHIFT; /* Check if tx-sequence is the expected one */ - if (tx_seq != p_ccb->fcrb.next_seq_expected) - { + if (tx_seq != p_ccb->fcrb.next_seq_expected) { L2CAP_TRACE_WARNING ("Rx L2CAP PDU: CID: 0x%04x Lost frames Exp: %u Got: %u p_rx_sdu: 0x%08x", - p_ccb->local_cid, p_ccb->fcrb.next_seq_expected, tx_seq, p_ccb->fcrb.p_rx_sdu); + p_ccb->local_cid, p_ccb->fcrb.next_seq_expected, tx_seq, p_ccb->fcrb.p_rx_sdu); /* Lost one or more packets, so flush the SAR queue */ - if (p_ccb->fcrb.p_rx_sdu != NULL) - { + if (p_ccb->fcrb.p_rx_sdu != NULL) { GKI_freebuf (p_ccb->fcrb.p_rx_sdu); p_ccb->fcrb.p_rx_sdu = NULL; } @@ -1347,11 +1267,9 @@ static void process_stream_frame (tL2C_CCB *p_ccb, BT_HDR *p_buf) p_ccb->fcrb.next_seq_expected = (tx_seq + 1) & L2CAP_FCR_SEQ_MODULO; - if (!do_sar_reassembly (p_ccb, p_buf, ctrl_word)) - { + if (!do_sar_reassembly (p_ccb, p_buf, ctrl_word)) { /* Some sort of SAR error, so flush the SAR queue */ - if (p_ccb->fcrb.p_rx_sdu != NULL) - { + if (p_ccb->fcrb.p_rx_sdu != NULL) { GKI_freebuf (p_ccb->fcrb.p_rx_sdu); p_ccb->fcrb.p_rx_sdu = NULL; } @@ -1379,76 +1297,57 @@ static BOOLEAN do_sar_reassembly (tL2C_CCB *p_ccb, BT_HDR *p_buf, UINT16 ctrl_wo UINT8 *p; /* Check if the SAR state is correct */ - if ((sar_type == L2CAP_FCR_UNSEG_SDU) || (sar_type == L2CAP_FCR_START_SDU)) - { - if (p_fcrb->p_rx_sdu != NULL) - { + if ((sar_type == L2CAP_FCR_UNSEG_SDU) || (sar_type == L2CAP_FCR_START_SDU)) { + if (p_fcrb->p_rx_sdu != NULL) { L2CAP_TRACE_WARNING ("SAR - got unexpected unsegmented or start SDU Expected len: %u Got so far: %u", - p_fcrb->rx_sdu_len, p_fcrb->p_rx_sdu->len); + p_fcrb->rx_sdu_len, p_fcrb->p_rx_sdu->len); packet_ok = FALSE; } /* Check the length of the packet */ - if ( (sar_type == L2CAP_FCR_START_SDU) && (p_buf->len < L2CAP_SDU_LEN_OVERHEAD) ) - { + if ( (sar_type == L2CAP_FCR_START_SDU) && (p_buf->len < L2CAP_SDU_LEN_OVERHEAD) ) { L2CAP_TRACE_WARNING ("SAR start packet too short: %u", p_buf->len); packet_ok = FALSE; } - } - else - { - if (p_fcrb->p_rx_sdu == NULL) - { + } else { + if (p_fcrb->p_rx_sdu == NULL) { L2CAP_TRACE_WARNING ("SAR - got unexpected cont or end SDU"); packet_ok = FALSE; } } - if ( (packet_ok) && (sar_type != L2CAP_FCR_UNSEG_SDU) ) - { + if ( (packet_ok) && (sar_type != L2CAP_FCR_UNSEG_SDU) ) { p = ((UINT8 *)(p_buf + 1)) + p_buf->offset; /* For start SDU packet, extract the SDU length */ - if (sar_type == L2CAP_FCR_START_SDU) - { + if (sar_type == L2CAP_FCR_START_SDU) { /* Get the SDU length */ STREAM_TO_UINT16 (p_fcrb->rx_sdu_len, p); p_buf->offset += 2; p_buf->len -= 2; - if (p_fcrb->rx_sdu_len > p_ccb->max_rx_mtu) - { + if (p_fcrb->rx_sdu_len > p_ccb->max_rx_mtu) { L2CAP_TRACE_WARNING ("SAR - SDU len: %u larger than MTU: %u", p_fcrb->rx_sdu_len, p_fcrb->rx_sdu_len); packet_ok = FALSE; - } - else if ((p_fcrb->p_rx_sdu = (BT_HDR *)GKI_getpoolbuf (p_ccb->ertm_info.user_rx_pool_id)) == NULL) - { + } else if ((p_fcrb->p_rx_sdu = (BT_HDR *)GKI_getpoolbuf (p_ccb->ertm_info.user_rx_pool_id)) == NULL) { L2CAP_TRACE_ERROR ("SAR - no buffer for SDU start user_rx_pool_id:%d", p_ccb->ertm_info.user_rx_pool_id); packet_ok = FALSE; - } - else - { + } else { p_fcrb->p_rx_sdu->offset = 4; /* this is the minimal offset required by OBX to process incoming packets */ p_fcrb->p_rx_sdu->len = 0; } } - if (packet_ok) - { - if ((p_fcrb->p_rx_sdu->len + p_buf->len) > p_fcrb->rx_sdu_len) - { + if (packet_ok) { + if ((p_fcrb->p_rx_sdu->len + p_buf->len) > p_fcrb->rx_sdu_len) { L2CAP_TRACE_ERROR ("SAR - SDU len exceeded Type: %u Lengths: %u %u %u", - sar_type, p_fcrb->p_rx_sdu->len, p_buf->len, p_fcrb->rx_sdu_len); + sar_type, p_fcrb->p_rx_sdu->len, p_buf->len, p_fcrb->rx_sdu_len); packet_ok = FALSE; - } - else if ( (sar_type == L2CAP_FCR_END_SDU) && ((p_fcrb->p_rx_sdu->len + p_buf->len) != p_fcrb->rx_sdu_len) ) - { + } else if ( (sar_type == L2CAP_FCR_END_SDU) && ((p_fcrb->p_rx_sdu->len + p_buf->len) != p_fcrb->rx_sdu_len) ) { L2CAP_TRACE_WARNING ("SAR - SDU end rcvd but SDU incomplete: %u %u %u", - p_fcrb->p_rx_sdu->len, p_buf->len, p_fcrb->rx_sdu_len); + p_fcrb->p_rx_sdu->len, p_buf->len, p_fcrb->rx_sdu_len); packet_ok = FALSE; - } - else - { + } else { memcpy (((UINT8 *) (p_fcrb->p_rx_sdu + 1)) + p_fcrb->p_rx_sdu->offset + p_fcrb->p_rx_sdu->len, p, p_buf->len); p_fcrb->p_rx_sdu->len += p_buf->len; @@ -1456,8 +1355,7 @@ static BOOLEAN do_sar_reassembly (tL2C_CCB *p_ccb, BT_HDR *p_buf, UINT16 ctrl_wo GKI_freebuf (p_buf); p_buf = NULL; - if (sar_type == L2CAP_FCR_END_SDU) - { + if (sar_type == L2CAP_FCR_END_SDU) { p_buf = p_fcrb->p_rx_sdu; p_fcrb->p_rx_sdu = NULL; } @@ -1465,21 +1363,16 @@ static BOOLEAN do_sar_reassembly (tL2C_CCB *p_ccb, BT_HDR *p_buf, UINT16 ctrl_wo } } - if (packet_ok == FALSE) - { + if (packet_ok == FALSE) { GKI_freebuf (p_buf); - } - else if (p_buf != NULL) - { + } else if (p_buf != NULL) { #if (L2CAP_NUM_FIXED_CHNLS > 0) if (p_ccb->local_cid < L2CAP_BASE_APPL_CID && - (p_ccb->local_cid >= L2CAP_FIRST_FIXED_CHNL && p_ccb->local_cid <= L2CAP_LAST_FIXED_CHNL)) - { + (p_ccb->local_cid >= L2CAP_FIRST_FIXED_CHNL && p_ccb->local_cid <= L2CAP_LAST_FIXED_CHNL)) { if (l2cb.fixed_reg[p_ccb->local_cid - L2CAP_FIRST_FIXED_CHNL].pL2CA_FixedData_Cb) (*l2cb.fixed_reg[p_ccb->local_cid - L2CAP_FIRST_FIXED_CHNL].pL2CA_FixedData_Cb) - (p_ccb->local_cid, p_ccb->p_lcb->remote_bd_addr, p_buf); - } - else + (p_ccb->local_cid, p_ccb->p_lcb->remote_bd_addr, p_buf); + } else #endif l2c_csm_execute (p_ccb, L2CEVT_L2CAP_DATA, p_buf); } @@ -1507,26 +1400,23 @@ static BOOLEAN retransmit_i_frames (tL2C_CCB *p_ccb, UINT8 tx_seq) UINT16 ctrl_word; if ( (GKI_getfirst(&p_ccb->fcrb.waiting_for_ack_q)) - && (p_ccb->peer_cfg.fcr.max_transmit != 0) - && (p_ccb->fcrb.num_tries >= p_ccb->peer_cfg.fcr.max_transmit) ) - { + && (p_ccb->peer_cfg.fcr.max_transmit != 0) + && (p_ccb->fcrb.num_tries >= p_ccb->peer_cfg.fcr.max_transmit) ) { L2CAP_TRACE_EVENT ("Max Tries Exceeded: (last_acq: %d CID: 0x%04x num_tries: %u (max: %u) ack_q_count: %u", - p_ccb->fcrb.last_rx_ack, p_ccb->local_cid, p_ccb->fcrb.num_tries, p_ccb->peer_cfg.fcr.max_transmit, - GKI_queue_length(&p_ccb->fcrb.waiting_for_ack_q)); + p_ccb->fcrb.last_rx_ack, p_ccb->local_cid, p_ccb->fcrb.num_tries, p_ccb->peer_cfg.fcr.max_transmit, + GKI_queue_length(&p_ccb->fcrb.waiting_for_ack_q)); l2cu_disconnect_chnl (p_ccb); return (FALSE); } /* tx_seq indicates whether to retransmit a specific sequence or all (if == L2C_FCR_RETX_ALL_PKTS) */ - if (tx_seq != L2C_FCR_RETX_ALL_PKTS) - { + if (tx_seq != L2C_FCR_RETX_ALL_PKTS) { /* If sending only one, the sequence number tells us which one. Look for it. */ - for (p_buf = (BT_HDR *)GKI_getfirst(&p_ccb->fcrb.waiting_for_ack_q); p_buf; p_buf = (BT_HDR *)GKI_getnext (p_buf)) - { + for (p_buf = (BT_HDR *)GKI_getfirst(&p_ccb->fcrb.waiting_for_ack_q); p_buf; p_buf = (BT_HDR *)GKI_getnext (p_buf)) { /* Get the old control word */ - p = ((UINT8 *) (p_buf+1)) + p_buf->offset + L2CAP_PKT_OVERHEAD; + p = ((UINT8 *) (p_buf + 1)) + p_buf->offset + L2CAP_PKT_OVERHEAD; STREAM_TO_UINT16 (ctrl_word, p); @@ -1534,60 +1424,57 @@ static BOOLEAN retransmit_i_frames (tL2C_CCB *p_ccb, UINT8 tx_seq) L2CAP_TRACE_DEBUG ("retransmit_i_frames() cur seq: %u looking for: %u", buf_seq, tx_seq); - if (tx_seq == buf_seq) + if (tx_seq == buf_seq) { break; + } } - if (!p_buf) - { + if (!p_buf) { L2CAP_TRACE_ERROR ("retransmit_i_frames() UNKNOWN seq: %u q_count: %u", tx_seq, GKI_queue_length(&p_ccb->fcrb.waiting_for_ack_q)); return (TRUE); } - } - else - { + } else { // Iterate though list and flush the amount requested from // the transmit data queue that satisfy the layer and event conditions. for (const list_node_t *node = list_begin(p_ccb->p_lcb->link_xmit_data_q); - node != list_end(p_ccb->p_lcb->link_xmit_data_q);) { - BT_HDR *p_buf = (BT_HDR *)list_node(node); - node = list_next(node); + node != list_end(p_ccb->p_lcb->link_xmit_data_q);) { + BT_HDR *p_buf = (BT_HDR *)list_node(node); + node = list_next(node); /* Do not flush other CIDs or partial segments */ - if ((p_buf->layer_specific == 0) && (p_buf->event == p_ccb->local_cid)) { - list_remove(p_ccb->p_lcb->link_xmit_data_q, p_buf); - GKI_freebuf(p_buf); - } + if ((p_buf->layer_specific == 0) && (p_buf->event == p_ccb->local_cid)) { + list_remove(p_ccb->p_lcb->link_xmit_data_q, p_buf); + GKI_freebuf(p_buf); + } } /* Also flush our retransmission queue */ - while (!GKI_queue_is_empty(&p_ccb->fcrb.retrans_q)) + while (!GKI_queue_is_empty(&p_ccb->fcrb.retrans_q)) { GKI_freebuf (GKI_dequeue (&p_ccb->fcrb.retrans_q)); + } p_buf = (BT_HDR *)GKI_getfirst(&p_ccb->fcrb.waiting_for_ack_q); } - while (p_buf != NULL) - { + while (p_buf != NULL) { p_buf2 = l2c_fcr_clone_buf (p_buf, p_buf->offset, p_buf->len, p_ccb->ertm_info.fcr_tx_pool_id); - if (p_buf2) - { + if (p_buf2) { p_buf2->layer_specific = p_buf->layer_specific; GKI_enqueue (&p_ccb->fcrb.retrans_q, p_buf2); } - if ( (tx_seq != L2C_FCR_RETX_ALL_PKTS) || (p_buf2 == NULL) ) + if ( (tx_seq != L2C_FCR_RETX_ALL_PKTS) || (p_buf2 == NULL) ) { break; - else + } else { p_buf = (BT_HDR *)GKI_getnext (p_buf); + } } l2c_link_check_send_pkts (p_ccb->p_lcb, NULL, NULL); - if (GKI_queue_length(&p_ccb->fcrb.waiting_for_ack_q)) - { + if (GKI_queue_length(&p_ccb->fcrb.waiting_for_ack_q)) { p_ccb->fcrb.num_tries++; l2c_fcr_start_timer (p_ccb); } @@ -1619,8 +1506,7 @@ BT_HDR *l2c_fcr_get_next_xmit_sdu_seg (tL2C_CCB *p_ccb, UINT16 max_packet_length /* If there is anything in the retransmit queue, that goes first */ - if (GKI_getfirst(&p_ccb->fcrb.retrans_q)) - { + if (GKI_getfirst(&p_ccb->fcrb.retrans_q)) { p_buf = (BT_HDR *)GKI_dequeue (&p_ccb->fcrb.retrans_q); /* Update Rx Seq and FCS if we acked some packets while this one was queued */ @@ -1639,31 +1525,27 @@ BT_HDR *l2c_fcr_get_next_xmit_sdu_seg (tL2C_CCB *p_ccb, UINT16 max_packet_length /* For BD/EDR controller, max_packet_length is set to 0 */ /* For AMP controller, max_packet_length is set by available blocks */ if ( (max_packet_length > L2CAP_MAX_HEADER_FCS) - && (max_pdu + L2CAP_MAX_HEADER_FCS > max_packet_length) ) - { + && (max_pdu + L2CAP_MAX_HEADER_FCS > max_packet_length) ) { max_pdu = max_packet_length - L2CAP_MAX_HEADER_FCS; } p_buf = (BT_HDR *)GKI_getfirst(&p_ccb->xmit_hold_q); /* If there is more data than the MPS, it requires segmentation */ - if (p_buf->len > max_pdu) - { + if (p_buf->len > max_pdu) { /* We are using the "event" field to tell is if we already started segmentation */ - if (p_buf->event == 0) - { + if (p_buf->event == 0) { first_seg = TRUE; sdu_len = p_buf->len; - } - else + } else { mid_seg = TRUE; + } /* Get a new buffer and copy the data that can be sent in a PDU */ p_xmit = l2c_fcr_clone_buf (p_buf, L2CAP_MIN_OFFSET + L2CAP_SDU_LEN_OFFSET, max_pdu, p_ccb->ertm_info.fcr_tx_pool_id); - if (p_xmit != NULL) - { + if (p_xmit != NULL) { p_buf->event = p_ccb->local_cid; p_xmit->event = p_ccb->local_cid; @@ -1672,19 +1554,16 @@ BT_HDR *l2c_fcr_get_next_xmit_sdu_seg (tL2C_CCB *p_ccb, UINT16 max_packet_length /* copy PBF setting */ p_xmit->layer_specific = p_buf->layer_specific; - } - else /* Should never happen if the application has configured buffers correctly */ - { + } else { /* Should never happen if the application has configured buffers correctly */ L2CAP_TRACE_ERROR ("L2CAP - cannot get buffer, for segmentation, pool: %u", p_ccb->ertm_info.fcr_tx_pool_id); return (NULL); } - } - else /* Use the original buffer if no segmentation, or the last segment */ - { + } else { /* Use the original buffer if no segmentation, or the last segment */ p_xmit = (BT_HDR *)GKI_dequeue (&p_ccb->xmit_hold_q); - if (p_xmit->event != 0) + if (p_xmit->event != 0) { last_seg = TRUE; + } p_xmit->event = p_ccb->local_cid; } @@ -1693,8 +1572,7 @@ BT_HDR *l2c_fcr_get_next_xmit_sdu_seg (tL2C_CCB *p_ccb, UINT16 max_packet_length p_xmit->offset -= (L2CAP_PKT_OVERHEAD + L2CAP_FCR_OVERHEAD); p_xmit->len += L2CAP_PKT_OVERHEAD + L2CAP_FCR_OVERHEAD; - if (first_seg) - { + if (first_seg) { p_xmit->offset -= L2CAP_SDU_LEN_OVERHEAD; p_xmit->len += L2CAP_SDU_LEN_OVERHEAD; } @@ -1709,8 +1587,7 @@ BT_HDR *l2c_fcr_get_next_xmit_sdu_seg (tL2C_CCB *p_ccb, UINT16 max_packet_length UINT16_TO_STREAM (p, p_ccb->remote_cid); - if (first_seg) - { + if (first_seg) { /* Skip control word and add SDU length */ p += 2; UINT16_TO_STREAM (p, sdu_len); @@ -1720,43 +1597,41 @@ BT_HDR *l2c_fcr_get_next_xmit_sdu_seg (tL2C_CCB *p_ccb, UINT16 max_packet_length p_xmit->layer_specific |= L2CAP_FCR_START_SDU; first_seg = FALSE; - } - else if (mid_seg) + } else if (mid_seg) { p_xmit->layer_specific |= L2CAP_FCR_CONT_SDU; - else if (last_seg) + } else if (last_seg) { p_xmit->layer_specific |= L2CAP_FCR_END_SDU; - else + } else { p_xmit->layer_specific |= L2CAP_FCR_UNSEG_SDU; + } prepare_I_frame (p_ccb, p_xmit, FALSE); - if (p_ccb->peer_cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) - { + if (p_ccb->peer_cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) { BT_HDR *p_wack = l2c_fcr_clone_buf (p_xmit, HCI_DATA_PREAMBLE_SIZE, p_xmit->len, p_ccb->ertm_info.fcr_tx_pool_id); - if (!p_wack) - { + if (!p_wack) { L2CAP_TRACE_ERROR ("L2CAP - no buffer for xmit cloning, CID: 0x%04x Pool: %u Count: %u", - p_ccb->local_cid, p_ccb->ertm_info.fcr_tx_pool_id, GKI_poolfreecount(p_ccb->ertm_info.fcr_tx_pool_id)); + p_ccb->local_cid, p_ccb->ertm_info.fcr_tx_pool_id, GKI_poolfreecount(p_ccb->ertm_info.fcr_tx_pool_id)); /* We will not save the FCS in case we reconfigure and change options */ - if (p_ccb->bypass_fcs != L2CAP_BYPASS_FCS) + if (p_ccb->bypass_fcs != L2CAP_BYPASS_FCS) { p_xmit->len -= L2CAP_FCS_LEN; + } /* Pretend we sent it and it got lost */ GKI_enqueue (&p_ccb->fcrb.waiting_for_ack_q, p_xmit); return (NULL); - } - else - { + } else { #if (L2CAP_ERTM_STATS == TRUE) /* set timestamp at the end of tx I-frame to get acking delay */ - p = ((UINT8 *) (p_wack+1)) + p_wack->offset + p_wack->len; + p = ((UINT8 *) (p_wack + 1)) + p_wack->offset + p_wack->len; UINT32_TO_STREAM (p, GKI_get_os_tick_count()); #endif /* We will not save the FCS in case we reconfigure and change options */ - if (p_ccb->bypass_fcs != L2CAP_BYPASS_FCS) + if (p_ccb->bypass_fcs != L2CAP_BYPASS_FCS) { p_wack->len -= L2CAP_FCS_LEN; + } p_wack->layer_specific = p_xmit->layer_specific; GKI_enqueue (&p_ccb->fcrb.waiting_for_ack_q, p_wack); @@ -1798,15 +1673,16 @@ UINT8 l2c_fcr_chk_chan_modes (tL2C_CCB *p_ccb) assert(p_ccb != NULL); /* Remove nonbasic options that the peer does not support */ - if (!(p_ccb->p_lcb->peer_ext_fea & L2CAP_EXTFEA_ENH_RETRANS)) + if (!(p_ccb->p_lcb->peer_ext_fea & L2CAP_EXTFEA_ENH_RETRANS)) { p_ccb->ertm_info.allowed_modes &= ~L2CAP_FCR_CHAN_OPT_ERTM; + } - if (!(p_ccb->p_lcb->peer_ext_fea & L2CAP_EXTFEA_STREAM_MODE)) + if (!(p_ccb->p_lcb->peer_ext_fea & L2CAP_EXTFEA_STREAM_MODE)) { p_ccb->ertm_info.allowed_modes &= ~L2CAP_FCR_CHAN_OPT_STREAM; + } /* At least one type needs to be set (Basic, ERTM, STM) to continue */ - if (!p_ccb->ertm_info.allowed_modes) - { + if (!p_ccb->ertm_info.allowed_modes) { L2CAP_TRACE_WARNING ("L2CAP - Peer does not support our desired channel types"); } @@ -1830,20 +1706,17 @@ BOOLEAN l2c_fcr_adj_our_req_options (tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg) tL2CAP_FCR_OPTS *p_fcr = &p_cfg->fcr; - if (p_fcr->mode != p_ccb->ertm_info.preferred_mode) - { + if (p_fcr->mode != p_ccb->ertm_info.preferred_mode) { L2CAP_TRACE_WARNING ("l2c_fcr_adj_our_req_options - preferred_mode (%d), does not match mode (%d)", - p_ccb->ertm_info.preferred_mode, p_fcr->mode); + p_ccb->ertm_info.preferred_mode, p_fcr->mode); /* The preferred mode is passed in through tL2CAP_ERTM_INFO, so override this one */ p_fcr->mode = p_ccb->ertm_info.preferred_mode; } /* If upper layer did not request eRTM mode, BASIC must be used */ - if (p_ccb->ertm_info.allowed_modes == L2CAP_FCR_CHAN_OPT_BASIC) - { - if (p_cfg->fcr_present && p_fcr->mode != L2CAP_FCR_BASIC_MODE) - { + if (p_ccb->ertm_info.allowed_modes == L2CAP_FCR_CHAN_OPT_BASIC) { + if (p_cfg->fcr_present && p_fcr->mode != L2CAP_FCR_BASIC_MODE) { L2CAP_TRACE_WARNING ("l2c_fcr_adj_our_req_options (mode %d): ERROR: No FCR options set using BASIC mode", p_fcr->mode); } p_fcr->mode = L2CAP_FCR_BASIC_MODE; @@ -1852,19 +1725,16 @@ BOOLEAN l2c_fcr_adj_our_req_options (tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg) /* Process the FCR options if initial channel bring-up (not a reconfig request) ** Determine initial channel mode to try based on our options and remote's features */ - if (p_cfg->fcr_present && !(p_ccb->config_done & RECONFIG_FLAG)) - { + if (p_cfg->fcr_present && !(p_ccb->config_done & RECONFIG_FLAG)) { /* We need to have at least one mode type common with the peer */ - if (!l2c_fcr_chk_chan_modes(p_ccb)) - { + if (!l2c_fcr_chk_chan_modes(p_ccb)) { /* Two channels have incompatible supported types */ l2cu_disconnect_chnl (p_ccb); return (FALSE); } /* Basic is the only common channel mode between the two devices */ - else if (p_ccb->ertm_info.allowed_modes == L2CAP_FCR_CHAN_OPT_BASIC) - { + else if (p_ccb->ertm_info.allowed_modes == L2CAP_FCR_CHAN_OPT_BASIC) { /* We only want to try Basic, so bypass sending the FCR options entirely */ p_cfg->fcr_present = FALSE; p_cfg->fcs_present = FALSE; /* Illegal to use FCS option in basic mode */ @@ -1874,58 +1744,48 @@ BOOLEAN l2c_fcr_adj_our_req_options (tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg) /* We have at least one non-basic mode available * Override mode from available mode options based on preference, if needed */ - else - { + else { /* If peer does not support STREAMING, try ERTM */ - if (p_fcr->mode == L2CAP_FCR_STREAM_MODE && !(p_ccb->ertm_info.allowed_modes & L2CAP_FCR_CHAN_OPT_STREAM)) - { + if (p_fcr->mode == L2CAP_FCR_STREAM_MODE && !(p_ccb->ertm_info.allowed_modes & L2CAP_FCR_CHAN_OPT_STREAM)) { L2CAP_TRACE_DEBUG ("L2C CFG: mode is STREAM, but peer does not support; Try ERTM"); p_fcr->mode = L2CAP_FCR_ERTM_MODE; } /* If peer does not support ERTM, try BASIC (will support this if made it here in the code) */ - if (p_fcr->mode == L2CAP_FCR_ERTM_MODE && !(p_ccb->ertm_info.allowed_modes & L2CAP_FCR_CHAN_OPT_ERTM)) - { + if (p_fcr->mode == L2CAP_FCR_ERTM_MODE && !(p_ccb->ertm_info.allowed_modes & L2CAP_FCR_CHAN_OPT_ERTM)) { L2CAP_TRACE_DEBUG ("L2C CFG: mode is ERTM, but peer does not support; Try BASIC"); p_fcr->mode = L2CAP_FCR_BASIC_MODE; } } - if (p_fcr->mode != L2CAP_FCR_BASIC_MODE) - { + if (p_fcr->mode != L2CAP_FCR_BASIC_MODE) { /* MTU must be smaller than buffer size */ - if ( (p_cfg->mtu_present) && (p_cfg->mtu > p_ccb->max_rx_mtu) ) - { + if ( (p_cfg->mtu_present) && (p_cfg->mtu > p_ccb->max_rx_mtu) ) { L2CAP_TRACE_WARNING ("L2CAP - MTU: %u larger than buf size: %u", p_cfg->mtu, p_ccb->max_rx_mtu); return (FALSE); } /* application want to use the default MPS */ - if (p_fcr->mps == L2CAP_DEFAULT_ERM_MPS) - { + if (p_fcr->mps == L2CAP_DEFAULT_ERM_MPS) { p_fcr->mps = L2CAP_MPS_OVER_BR_EDR; } /* MPS must be less than MTU */ - else if (p_fcr->mps > p_ccb->max_rx_mtu) - { + else if (p_fcr->mps > p_ccb->max_rx_mtu) { L2CAP_TRACE_WARNING ("L2CAP - MPS %u invalid MTU: %u", p_fcr->mps, p_ccb->max_rx_mtu); return (FALSE); } /* We always initially read into the HCI buffer pool, so make sure it fits */ - if (p_fcr->mps > (L2CAP_MTU_SIZE - L2CAP_MAX_HEADER_FCS)) + if (p_fcr->mps > (L2CAP_MTU_SIZE - L2CAP_MAX_HEADER_FCS)) { p_fcr->mps = L2CAP_MTU_SIZE - L2CAP_MAX_HEADER_FCS; - } - else - { + } + } else { p_cfg->fcs_present = FALSE; /* Illegal to use FCS option in basic mode */ p_cfg->ext_flow_spec_present = FALSE; /* Illegal to use extended flow spec in basic mode */ } p_ccb->our_cfg.fcr = *p_fcr; - } - else /* Not sure how to send a reconfiguration(??) should fcr be included? */ - { + } else { /* Not sure how to send a reconfiguration(??) should fcr be included? */ p_ccb->our_cfg.fcr_present = FALSE; } @@ -1947,27 +1807,23 @@ void l2c_fcr_adj_monitor_retran_timeout (tL2C_CCB *p_ccb) assert(p_ccb != NULL); /* adjust our monitor/retran timeout */ - if (p_ccb->out_cfg_fcr_present) - { + if (p_ccb->out_cfg_fcr_present) { /* ** if we requestd ERTM or accepted ERTM ** We may accept ERTM even if we didn't request ERTM, in case of requesting STREAM */ if ((p_ccb->our_cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) - ||(p_ccb->peer_cfg.fcr.mode == L2CAP_FCR_ERTM_MODE)) - { + || (p_ccb->peer_cfg.fcr.mode == L2CAP_FCR_ERTM_MODE)) { /* upper layer setting is ignored */ p_ccb->our_cfg.fcr.mon_tout = L2CAP_MIN_MONITOR_TOUT; p_ccb->our_cfg.fcr.rtrans_tout = L2CAP_MIN_RETRANS_TOUT; - } - else - { + } else { p_ccb->our_cfg.fcr.mon_tout = 0; p_ccb->our_cfg.fcr.rtrans_tout = 0; } L2CAP_TRACE_DEBUG ("l2c_fcr_adj_monitor_retran_timeout: mon_tout:%d, rtrans_tout:%d", - p_ccb->our_cfg.fcr.mon_tout, p_ccb->our_cfg.fcr.rtrans_tout); + p_ccb->our_cfg.fcr.mon_tout, p_ccb->our_cfg.fcr.rtrans_tout); } } /******************************************************************************* @@ -1991,14 +1847,12 @@ void l2c_fcr_adj_our_rsp_options (tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg) p_cfg->fcr_present = p_ccb->out_cfg_fcr_present; - if (p_cfg->fcr_present) - { + if (p_cfg->fcr_present) { // btla-specific ++ /* Temporary - until a better algorithm is implemented */ /* If peer's tx_wnd_sz requires too many buffers for us to support, then adjust it. For now, respond with our own tx_wnd_sz. */ /* Note: peer is not guaranteed to obey our adjustment */ - if (p_ccb->peer_cfg.fcr.tx_win_sz > p_ccb->our_cfg.fcr.tx_win_sz) - { + if (p_ccb->peer_cfg.fcr.tx_win_sz > p_ccb->our_cfg.fcr.tx_win_sz) { L2CAP_TRACE_DEBUG ("%s: adjusting requested tx_win_sz from %i to %i", __FUNCTION__, p_ccb->peer_cfg.fcr.tx_win_sz, p_ccb->our_cfg.fcr.tx_win_sz); p_ccb->peer_cfg.fcr.tx_win_sz = p_ccb->our_cfg.fcr.tx_win_sz; } @@ -2034,19 +1888,17 @@ BOOLEAN l2c_fcr_renegotiate_chan(tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg) BOOLEAN can_renegotiate; /* Skip if this is a reconfiguration from OPEN STATE or if FCR is not returned */ - if (!p_cfg->fcr_present || (p_ccb->config_done & RECONFIG_FLAG)) + if (!p_cfg->fcr_present || (p_ccb->config_done & RECONFIG_FLAG)) { return (FALSE); + } /* Only retry if there are more channel options to try */ - if (p_cfg->result == L2CAP_CFG_UNACCEPTABLE_PARAMS) - { + if (p_cfg->result == L2CAP_CFG_UNACCEPTABLE_PARAMS) { peer_mode = (p_cfg->fcr_present) ? p_cfg->fcr.mode : L2CAP_FCR_BASIC_MODE; - if (p_ccb->our_cfg.fcr.mode != peer_mode) - { + if (p_ccb->our_cfg.fcr.mode != peer_mode) { - if ((--p_ccb->fcr_cfg_tries) == 0) - { + if ((--p_ccb->fcr_cfg_tries) == 0) { p_cfg->result = L2CAP_CFG_FAILED_NO_REASON; L2CAP_TRACE_WARNING ("l2c_fcr_renegotiate_chan (Max retries exceeded)"); } @@ -2054,48 +1906,40 @@ BOOLEAN l2c_fcr_renegotiate_chan(tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg) can_renegotiate = FALSE; /* Try another supported mode if available based on our last attempted channel */ - switch (p_ccb->our_cfg.fcr.mode) - { - /* Our Streaming mode request was unnacceptable; try ERTM or Basic */ + switch (p_ccb->our_cfg.fcr.mode) { + /* Our Streaming mode request was unnacceptable; try ERTM or Basic */ case L2CAP_FCR_STREAM_MODE: /* Peer wants ERTM and we support it */ - if ( (peer_mode == L2CAP_FCR_ERTM_MODE) && (p_ccb->ertm_info.allowed_modes & L2CAP_FCR_CHAN_OPT_ERTM) ) - { + if ( (peer_mode == L2CAP_FCR_ERTM_MODE) && (p_ccb->ertm_info.allowed_modes & L2CAP_FCR_CHAN_OPT_ERTM) ) { L2CAP_TRACE_DEBUG ("l2c_fcr_renegotiate_chan(Trying ERTM)"); p_ccb->our_cfg.fcr.mode = L2CAP_FCR_ERTM_MODE; can_renegotiate = TRUE; - } - else /* Falls through */ + } else /* Falls through */ - case L2CAP_FCR_ERTM_MODE: - { - /* We can try basic for any other peer mode if we support it */ - if (p_ccb->ertm_info.allowed_modes & L2CAP_FCR_CHAN_OPT_BASIC) - { - L2CAP_TRACE_DEBUG ("l2c_fcr_renegotiate_chan(Trying Basic)"); - can_renegotiate = TRUE; - p_ccb->our_cfg.fcr.mode = L2CAP_FCR_BASIC_MODE; - } + case L2CAP_FCR_ERTM_MODE: { + /* We can try basic for any other peer mode if we support it */ + if (p_ccb->ertm_info.allowed_modes & L2CAP_FCR_CHAN_OPT_BASIC) { + L2CAP_TRACE_DEBUG ("l2c_fcr_renegotiate_chan(Trying Basic)"); + can_renegotiate = TRUE; + p_ccb->our_cfg.fcr.mode = L2CAP_FCR_BASIC_MODE; } - break; + } + break; default: /* All other scenarios cannot be renegotiated */ break; } - if (can_renegotiate) - { + if (can_renegotiate) { p_ccb->our_cfg.fcr_present = TRUE; - if (p_ccb->our_cfg.fcr.mode == L2CAP_FCR_BASIC_MODE) - { + if (p_ccb->our_cfg.fcr.mode == L2CAP_FCR_BASIC_MODE) { p_ccb->our_cfg.fcs_present = FALSE; p_ccb->our_cfg.ext_flow_spec_present = FALSE; /* Basic Mode uses ACL Data Pool, make sure the MTU fits */ - if ( (p_cfg->mtu_present) && (p_cfg->mtu > L2CAP_MTU_SIZE) ) - { + if ( (p_cfg->mtu_present) && (p_cfg->mtu > L2CAP_MTU_SIZE) ) { L2CAP_TRACE_WARNING ("L2CAP - adjust MTU: %u too large", p_cfg->mtu); p_cfg->mtu = L2CAP_MTU_SIZE; } @@ -2110,10 +1954,9 @@ BOOLEAN l2c_fcr_renegotiate_chan(tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg) } /* Disconnect if the channels do not match */ - if (p_ccb->our_cfg.fcr.mode != peer_mode) - { + if (p_ccb->our_cfg.fcr.mode != peer_mode) { L2CAP_TRACE_WARNING ("L2C CFG: Channels incompatible (local %d, peer %d)", - p_ccb->our_cfg.fcr.mode, peer_mode); + p_ccb->our_cfg.fcr.mode, peer_mode); l2cu_disconnect_chnl (p_ccb); } @@ -2143,28 +1986,26 @@ UINT8 l2c_fcr_process_peer_cfg_req(tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg) p_ccb->p_lcb->w4_info_rsp = FALSE; /* Handles T61x SonyEricsson Bug in Info Request */ L2CAP_TRACE_EVENT ("l2c_fcr_process_peer_cfg_req() CFG fcr_present:%d fcr.mode:%d CCB FCR mode:%d preferred: %u allowed:%u", - p_cfg->fcr_present, p_cfg->fcr.mode, p_ccb->our_cfg.fcr.mode, p_ccb->ertm_info.preferred_mode, - p_ccb->ertm_info.allowed_modes); + p_cfg->fcr_present, p_cfg->fcr.mode, p_ccb->our_cfg.fcr.mode, p_ccb->ertm_info.preferred_mode, + p_ccb->ertm_info.allowed_modes); /* If Peer wants basic, we are done (accept it or disconnect) */ - if (p_cfg->fcr.mode == L2CAP_FCR_BASIC_MODE) - { + if (p_cfg->fcr.mode == L2CAP_FCR_BASIC_MODE) { /* If we do not allow basic, disconnect */ - if ( !(p_ccb->ertm_info.allowed_modes & L2CAP_FCR_CHAN_OPT_BASIC) ) + if ( !(p_ccb->ertm_info.allowed_modes & L2CAP_FCR_CHAN_OPT_BASIC) ) { fcr_ok = L2CAP_PEER_CFG_DISCONNECT; + } } /* Need to negotiate if our modes are not the same */ - else if (p_cfg->fcr.mode != p_ccb->ertm_info.preferred_mode) - { + else if (p_cfg->fcr.mode != p_ccb->ertm_info.preferred_mode) { /* If peer wants a mode that we don't support then retry our mode (ex. rtx/flc), OR ** If we want ERTM and they wanted streaming retry our mode. ** Note: If we have already determined they support our mode previously ** from their EXF mask. */ if ( (((1 << p_cfg->fcr.mode) & L2CAP_FCR_CHAN_OPT_ALL_MASK) == 0) - || (p_ccb->ertm_info.preferred_mode == L2CAP_FCR_ERTM_MODE) ) - { + || (p_ccb->ertm_info.preferred_mode == L2CAP_FCR_ERTM_MODE) ) { p_cfg->fcr.mode = p_ccb->our_cfg.fcr.mode; p_cfg->fcr.tx_win_sz = p_ccb->our_cfg.fcr.tx_win_sz; p_cfg->fcr.max_transmit = p_ccb->our_cfg.fcr.max_transmit; @@ -2172,8 +2013,7 @@ UINT8 l2c_fcr_process_peer_cfg_req(tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg) } /* If we wanted basic, then try to renegotiate it */ - else if (p_ccb->ertm_info.preferred_mode == L2CAP_FCR_BASIC_MODE) - { + else if (p_ccb->ertm_info.preferred_mode == L2CAP_FCR_BASIC_MODE) { p_cfg->fcr.mode = L2CAP_FCR_BASIC_MODE; p_cfg->fcr.max_transmit = p_cfg->fcr.tx_win_sz = 0; p_cfg->fcr.rtrans_tout = p_cfg->fcr.mon_tout = p_cfg->fcr.mps = 0; @@ -2184,51 +2024,45 @@ UINT8 l2c_fcr_process_peer_cfg_req(tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg) /* Only other valid case is if they want ERTM and we wanted STM which should be accepted if we support it; otherwise the channel should be disconnected */ else if ( (p_cfg->fcr.mode != L2CAP_FCR_ERTM_MODE) - || !(p_ccb->ertm_info.allowed_modes & L2CAP_FCR_CHAN_OPT_ERTM) ) - { + || !(p_ccb->ertm_info.allowed_modes & L2CAP_FCR_CHAN_OPT_ERTM) ) { fcr_ok = L2CAP_PEER_CFG_DISCONNECT; } } /* Configuration for FCR channels so make any adjustments and fwd to upper layer */ - if (fcr_ok == L2CAP_PEER_CFG_OK) - { + if (fcr_ok == L2CAP_PEER_CFG_OK) { /* by default don't need to send params in the response */ p_ccb->out_cfg_fcr_present = FALSE; /* Make any needed adjustments for the response to the peer */ - if (p_cfg->fcr_present && p_cfg->fcr.mode != L2CAP_FCR_BASIC_MODE) - { + if (p_cfg->fcr_present && p_cfg->fcr.mode != L2CAP_FCR_BASIC_MODE) { /* Peer desires to bypass FCS check, and streaming or ERTM mode */ - if (p_cfg->fcs_present) - { + if (p_cfg->fcs_present) { p_ccb->peer_cfg.fcs = p_cfg->fcs; p_ccb->peer_cfg_bits |= L2CAP_CH_CFG_MASK_FCS; - if( p_cfg->fcs == L2CAP_CFG_FCS_BYPASS) + if ( p_cfg->fcs == L2CAP_CFG_FCS_BYPASS) { p_ccb->bypass_fcs |= L2CAP_CFG_FCS_PEER; + } } max_retrans_size = GKI_get_pool_bufsize (p_ccb->ertm_info.fcr_tx_pool_id) - sizeof(BT_HDR) - - L2CAP_MIN_OFFSET - L2CAP_SDU_LEN_OFFSET - L2CAP_FCS_LEN; + - L2CAP_MIN_OFFSET - L2CAP_SDU_LEN_OFFSET - L2CAP_FCS_LEN; /* Ensure the MPS is not bigger than the MTU */ - if ( (p_cfg->fcr.mps == 0) || (p_cfg->fcr.mps > p_ccb->peer_cfg.mtu) ) - { + if ( (p_cfg->fcr.mps == 0) || (p_cfg->fcr.mps > p_ccb->peer_cfg.mtu) ) { p_cfg->fcr.mps = p_ccb->peer_cfg.mtu; p_ccb->out_cfg_fcr_present = TRUE; } /* Ensure the MPS is not bigger than our retransmission buffer */ - if (p_cfg->fcr.mps > max_retrans_size) - { + if (p_cfg->fcr.mps > max_retrans_size) { L2CAP_TRACE_DEBUG("CFG: Overriding MPS to %d (orig %d)", max_retrans_size, p_cfg->fcr.mps); p_cfg->fcr.mps = max_retrans_size; p_ccb->out_cfg_fcr_present = TRUE; } - if (p_cfg->fcr.mode == L2CAP_FCR_ERTM_MODE || p_cfg->fcr.mode == L2CAP_FCR_STREAM_MODE) - { + if (p_cfg->fcr.mode == L2CAP_FCR_ERTM_MODE || p_cfg->fcr.mode == L2CAP_FCR_STREAM_MODE) { /* Always respond with FCR ERTM parameters */ p_ccb->out_cfg_fcr_present = TRUE; } @@ -2237,16 +2071,16 @@ UINT8 l2c_fcr_process_peer_cfg_req(tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg) /* Everything ok, so save the peer's adjusted fcr options */ p_ccb->peer_cfg.fcr = p_cfg->fcr; - if (p_cfg->fcr_present) + if (p_cfg->fcr_present) { p_ccb->peer_cfg_bits |= L2CAP_CH_CFG_MASK_FCR; - } - else if (fcr_ok == L2CAP_PEER_CFG_UNACCEPTABLE) - { + } + } else if (fcr_ok == L2CAP_PEER_CFG_UNACCEPTABLE) { /* Allow peer only one retry for mode */ - if (p_ccb->peer_cfg_already_rejected) + if (p_ccb->peer_cfg_already_rejected) { fcr_ok = L2CAP_PEER_CFG_DISCONNECT; - else + } else { p_ccb->peer_cfg_already_rejected = TRUE; + } } return (fcr_ok); @@ -2279,25 +2113,24 @@ static void l2c_fcr_collect_ack_delay (tL2C_CCB *p_ccb, UINT8 num_bufs_acked) /* update sum, max and min of waiting for ack queue size */ p_ccb->fcrb.ack_q_count_avg[index] += p_ccb->fcrb.waiting_for_ack_q.count; - if ( p_ccb->fcrb.waiting_for_ack_q.count > p_ccb->fcrb.ack_q_count_max[index] ) + if ( p_ccb->fcrb.waiting_for_ack_q.count > p_ccb->fcrb.ack_q_count_max[index] ) { p_ccb->fcrb.ack_q_count_max[index] = p_ccb->fcrb.waiting_for_ack_q.count; + } - if ( p_ccb->fcrb.waiting_for_ack_q.count < p_ccb->fcrb.ack_q_count_min[index] ) + if ( p_ccb->fcrb.waiting_for_ack_q.count < p_ccb->fcrb.ack_q_count_min[index] ) { p_ccb->fcrb.ack_q_count_min[index] = p_ccb->fcrb.waiting_for_ack_q.count; + } /* update sum, max and min of round trip delay of acking */ p_buf = (BT_HDR *)(p_ccb->fcrb.waiting_for_ack_q.p_first); - for (xx = 0; (xx < num_bufs_acked)&&(p_buf); xx++) - { + for (xx = 0; (xx < num_bufs_acked) && (p_buf); xx++) { /* adding up length of acked I-frames to get throughput */ p_ccb->fcrb.throughput[index] += p_buf->len - 8; - if ( xx == num_bufs_acked - 1 ) - { + if ( xx == num_bufs_acked - 1 ) { /* get timestamp from tx I-frame that receiver is acking */ - p = ((UINT8 *) (p_buf+1)) + p_buf->offset + p_buf->len; - if (p_ccb->bypass_fcs != L2CAP_BYPASS_FCS) - { + p = ((UINT8 *) (p_buf + 1)) + p_buf->offset + p_buf->len; + if (p_ccb->bypass_fcs != L2CAP_BYPASS_FCS) { p += L2CAP_FCS_LEN; } @@ -2305,10 +2138,12 @@ static void l2c_fcr_collect_ack_delay (tL2C_CCB *p_ccb, UINT8 num_bufs_acked) delay = GKI_get_os_tick_count() - timestamp; p_ccb->fcrb.ack_delay_avg[index] += delay; - if ( delay > p_ccb->fcrb.ack_delay_max[index] ) + if ( delay > p_ccb->fcrb.ack_delay_max[index] ) { p_ccb->fcrb.ack_delay_max[index] = delay; - if ( delay < p_ccb->fcrb.ack_delay_min[index] ) + } + if ( delay < p_ccb->fcrb.ack_delay_min[index] ) { p_ccb->fcrb.ack_delay_min[index] = delay; + } } p_buf = GKI_getnext(p_buf); @@ -2317,8 +2152,7 @@ static void l2c_fcr_collect_ack_delay (tL2C_CCB *p_ccb, UINT8 num_bufs_acked) p_ccb->fcrb.ack_delay_avg_count++; /* calculate average and initialize next avg, min and max */ - if (p_ccb->fcrb.ack_delay_avg_count > L2CAP_ERTM_STATS_AVG_NUM_SAMPLES) - { + if (p_ccb->fcrb.ack_delay_avg_count > L2CAP_ERTM_STATS_AVG_NUM_SAMPLES) { p_ccb->fcrb.ack_delay_avg_count = 0; p_ccb->fcrb.ack_q_count_avg[index] /= L2CAP_ERTM_STATS_AVG_NUM_SAMPLES; @@ -2326,8 +2160,9 @@ static void l2c_fcr_collect_ack_delay (tL2C_CCB *p_ccb, UINT8 num_bufs_acked) /* calculate throughput */ timestamp = GKI_get_os_tick_count(); - if (timestamp - p_ccb->fcrb.throughput_start > 0 ) + if (timestamp - p_ccb->fcrb.throughput_start > 0 ) { p_ccb->fcrb.throughput[index] /= (timestamp - p_ccb->fcrb.throughput_start); + } p_ccb->fcrb.throughput_start = timestamp; diff --git a/components/bt/bluedroid/stack/l2cap/l2c_link.c b/components/bt/bluedroid/stack/l2cap/l2c_link.c old mode 100755 new mode 100644 index 9cf80c3ea4..e97b13ec8c --- a/components/bt/bluedroid/stack/l2cap/l2c_link.c +++ b/components/bt/bluedroid/stack/l2cap/l2c_link.c @@ -64,11 +64,9 @@ BOOLEAN l2c_link_hci_conn_req (BD_ADDR bd_addr) p_lcb = l2cu_find_lcb_by_bd_addr (bd_addr, BT_TRANSPORT_BR_EDR); /* If we don't have one, create one and accept the connection. */ - if (!p_lcb) - { + if (!p_lcb) { p_lcb = l2cu_allocate_lcb (bd_addr, FALSE, BT_TRANSPORT_BR_EDR); - if (!p_lcb) - { + if (!p_lcb) { btsnd_hcic_reject_conn (bd_addr, HCI_ERR_HOST_REJECT_RESOURCES); L2CAP_TRACE_ERROR ("L2CAP failed to allocate LCB"); return FALSE; @@ -77,25 +75,24 @@ BOOLEAN l2c_link_hci_conn_req (BD_ADDR bd_addr) no_links = TRUE; /* If we already have connection, accept as a master */ - for (xx = 0, p_lcb_cur = &l2cb.lcb_pool[0]; xx < MAX_L2CAP_LINKS; xx++, p_lcb_cur++) - { - if (p_lcb_cur == p_lcb) + for (xx = 0, p_lcb_cur = &l2cb.lcb_pool[0]; xx < MAX_L2CAP_LINKS; xx++, p_lcb_cur++) { + if (p_lcb_cur == p_lcb) { continue; + } - if (p_lcb_cur->in_use) - { + if (p_lcb_cur->in_use) { no_links = FALSE; p_lcb->link_role = HCI_ROLE_MASTER; break; } } - if (no_links) - { - if (!btm_dev_support_switch (bd_addr)) + if (no_links) { + if (!btm_dev_support_switch (bd_addr)) { p_lcb->link_role = HCI_ROLE_SLAVE; - else + } else { p_lcb->link_role = l2cu_get_conn_role(p_lcb); + } } //counter_add("l2cap.conn.accept", 1); @@ -111,31 +108,27 @@ BOOLEAN l2c_link_hci_conn_req (BD_ADDR bd_addr) } /* We already had a link control block to the guy. Check what state it is in */ - if ((p_lcb->link_state == LST_CONNECTING) || (p_lcb->link_state == LST_CONNECT_HOLDING)) - { + if ((p_lcb->link_state == LST_CONNECTING) || (p_lcb->link_state == LST_CONNECT_HOLDING)) { /* Connection collision. Accept the connection anyways. */ - if (!btm_dev_support_switch (bd_addr)) + if (!btm_dev_support_switch (bd_addr)) { p_lcb->link_role = HCI_ROLE_SLAVE; - else + } else { p_lcb->link_role = l2cu_get_conn_role(p_lcb); + } //counter_add("l2cap.conn.accept", 1); btsnd_hcic_accept_conn (bd_addr, p_lcb->link_role); p_lcb->link_state = LST_CONNECTING; return (TRUE); - } - else if (p_lcb->link_state == LST_DISCONNECTING) - { + } else if (p_lcb->link_state == LST_DISCONNECTING) { /* In disconnecting state, reject the connection. */ //counter_add("l2cap.conn.reject.disconn", 1); btsnd_hcic_reject_conn (bd_addr, HCI_ERR_HOST_REJECT_DEVICE); - } - else - { + } else { L2CAP_TRACE_ERROR("L2CAP got conn_req while connected (state:%d). Reject it\n", - p_lcb->link_state); + p_lcb->link_state); /* Reject the connection with ACL Connection Already exist reason */ //counter_add("l2cap.conn.reject.exists", 1); btsnd_hcic_reject_conn (bd_addr, HCI_ERR_CONNECTION_EXISTS); @@ -170,18 +163,17 @@ BOOLEAN l2c_link_hci_conn_comp (UINT8 status, UINT16 handle, BD_ADDR p_bda) p_lcb = l2cu_find_lcb_by_bd_addr (ci.bd_addr, BT_TRANSPORT_BR_EDR); /* If we don't have one, this is an error */ - if (!p_lcb) - { + if (!p_lcb) { L2CAP_TRACE_WARNING ("L2CAP got conn_comp for unknown BD_ADDR\n"); return (FALSE); } - if (p_lcb->link_state != LST_CONNECTING) - { + if (p_lcb->link_state != LST_CONNECTING) { L2CAP_TRACE_ERROR ("L2CAP got conn_comp in bad state: %d status: 0x%d\n", p_lcb->link_state, status); - if (status != HCI_SUCCESS) + if (status != HCI_SUCCESS) { l2c_link_hci_disc_comp (p_lcb->handle, status); + } return (FALSE); } @@ -189,8 +181,7 @@ BOOLEAN l2c_link_hci_conn_comp (UINT8 status, UINT16 handle, BD_ADDR p_bda) /* Save the handle */ p_lcb->handle = handle; - if (ci.status == HCI_SUCCESS) - { + if (ci.status == HCI_SUCCESS) { /* Connected OK. Change state to connected */ p_lcb->link_state = LST_CONNECTED; //counter_add("l2cap.conn.ok", 1); @@ -203,16 +194,17 @@ BOOLEAN l2c_link_hci_conn_comp (UINT8 status, UINT16 handle, BD_ADDR p_bda) btm_acl_created (ci.bd_addr, p_dev_info->dev_class, p_dev_info->sec_bd_name, handle, p_lcb->link_role, BT_TRANSPORT_BR_EDR); - else + else { btm_acl_created (ci.bd_addr, NULL, NULL, handle, p_lcb->link_role, BT_TRANSPORT_BR_EDR); + } BTM_SetLinkSuperTout (ci.bd_addr, btm_cb.btm_def_link_super_tout); /* If dedicated bonding do not process any further */ - if (p_lcb->is_bonding) - { - if (l2cu_start_post_bond_timer(handle)) + if (p_lcb->is_bonding) { + if (l2cu_start_post_bond_timer(handle)) { return (TRUE); + } } /* Update the timeouts in the hold queue */ @@ -221,37 +213,29 @@ BOOLEAN l2c_link_hci_conn_comp (UINT8 status, UINT16 handle, BD_ADDR p_bda) btu_stop_timer (&p_lcb->timer_entry); /* For all channels, send the event through their FSMs */ - for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; p_ccb = p_ccb->p_next_ccb) - { + for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; p_ccb = p_ccb->p_next_ccb) { l2c_csm_execute (p_ccb, L2CEVT_LP_CONNECT_CFM, &ci); } - if (p_lcb->p_echo_rsp_cb) - { + if (p_lcb->p_echo_rsp_cb) { l2cu_send_peer_echo_req (p_lcb, NULL, 0); btu_start_timer (&p_lcb->timer_entry, BTU_TTYPE_L2CAP_LINK, L2CAP_ECHO_RSP_TOUT); - } - else if (!p_lcb->ccb_queue.p_first_ccb) - { + } else if (!p_lcb->ccb_queue.p_first_ccb) { btu_start_timer (&p_lcb->timer_entry, BTU_TTYPE_L2CAP_LINK, L2CAP_LINK_STARTUP_TOUT); } } /* Max number of acl connections. */ /* If there's an lcb disconnecting set this one to holding */ - else if ((ci.status == HCI_ERR_MAX_NUM_OF_CONNECTIONS) && l2cu_lcb_disconnecting()) - { + else if ((ci.status == HCI_ERR_MAX_NUM_OF_CONNECTIONS) && l2cu_lcb_disconnecting()) { p_lcb->link_state = LST_CONNECT_HOLDING; p_lcb->handle = HCI_INVALID_HANDLE; - } - else - { + } else { /* Just in case app decides to try again in the callback context */ p_lcb->link_state = LST_DISCONNECTING; /* Connection failed. For all channels, send the event through */ /* their FSMs. The CCBs should remove themselves from the LCB */ - for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; ) - { + for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; ) { tL2C_CCB *pn = p_ccb->p_next_ccb; l2c_csm_execute (p_ccb, L2CEVT_LP_CONNECT_CFM_NEG, &ci); @@ -261,17 +245,13 @@ BOOLEAN l2c_link_hci_conn_comp (UINT8 status, UINT16 handle, BD_ADDR p_bda) p_lcb->disc_reason = status; /* Release the LCB */ - if (p_lcb->ccb_queue.p_first_ccb == NULL) + if (p_lcb->ccb_queue.p_first_ccb == NULL) { l2cu_release_lcb (p_lcb); - else /* there are any CCBs remaining */ - { - if (ci.status == HCI_ERR_CONNECTION_EXISTS) - { + } else { /* there are any CCBs remaining */ + if (ci.status == HCI_ERR_CONNECTION_EXISTS) { /* we are in collision situation, wait for connecttion request from controller */ p_lcb->link_state = LST_CONNECTING; - } - else - { + } else { l2cu_create_conn(p_lcb, BT_TRANSPORT_BR_EDR); } } @@ -302,8 +282,9 @@ void l2c_link_sec_comp (BD_ADDR p_bda, tBT_TRANSPORT transport, void *p_ref_data L2CAP_TRACE_DEBUG ("l2c_link_sec_comp: %d, 0x%x", status, p_ref_data); - if (status == BTM_SUCCESS_NO_SECURITY) + if (status == BTM_SUCCESS_NO_SECURITY) { status = BTM_SUCCESS; + } /* Save the parameters */ ci.status = status; @@ -312,21 +293,17 @@ void l2c_link_sec_comp (BD_ADDR p_bda, tBT_TRANSPORT transport, void *p_ref_data p_lcb = l2cu_find_lcb_by_bd_addr (p_bda, BT_TRANSPORT_BR_EDR); /* If we don't have one, this is an error */ - if (!p_lcb) - { + if (!p_lcb) { L2CAP_TRACE_WARNING ("L2CAP got sec_comp for unknown BD_ADDR\n"); return; } /* Match p_ccb with p_ref_data returned by sec manager */ - for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; p_ccb = p_next_ccb) - { + for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; p_ccb = p_next_ccb) { p_next_ccb = p_ccb->p_next_ccb; - if (p_ccb == p_ref_data) - { - switch(status) - { + if (p_ccb == p_ref_data) { + switch (status) { case BTM_SUCCESS: L2CAP_TRACE_DEBUG ("ccb timer ticks: %u", p_ccb->timer_entry.ticks); event = L2CEVT_SEC_COMP; @@ -369,16 +346,14 @@ BOOLEAN l2c_link_hci_disc_comp (UINT16 handle, UINT8 reason) p_lcb = l2cu_find_lcb_by_handle (handle); /* If we don't have one, maybe an SCO link. Send to MM */ - if (!p_lcb) - { + if (!p_lcb) { status = FALSE; - } - else - { + } else { /* There can be a case when we rejected PIN code authentication */ /* otherwise save a new reason */ - if (btm_cb.acl_disc_reason != HCI_ERR_HOST_REJECT_SECURITY) + if (btm_cb.acl_disc_reason != HCI_ERR_HOST_REJECT_SECURITY) { btm_cb.acl_disc_reason = reason; + } p_lcb->disc_reason = btm_cb.acl_disc_reason; @@ -387,13 +362,13 @@ BOOLEAN l2c_link_hci_disc_comp (UINT16 handle, UINT8 reason) #if (BLE_INCLUDED == TRUE) /* Check for BLE and handle that differently */ - if (p_lcb->transport == BT_TRANSPORT_LE) + if (p_lcb->transport == BT_TRANSPORT_LE) { btm_ble_update_link_topology_mask(p_lcb->link_role, FALSE); + } #endif /* Link is disconnected. For all channels, send the event through */ /* their FSMs. The CCBs should remove themselves from the LCB */ - for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; ) - { + for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; ) { tL2C_CCB *pn = p_ccb->p_next_ccb; /* Keep connect pending control block (if exists) @@ -402,8 +377,7 @@ BOOLEAN l2c_link_hci_disc_comp (UINT16 handle, UINT8 reason) * ccb will be automatically retried after link disconnect * arrives */ - if (p_ccb != p_lcb->p_pending_ccb) - { + if (p_ccb != p_lcb->p_pending_ccb) { l2c_csm_execute (p_ccb, L2CEVT_LP_DISCONNECT_IND, &reason); } p_ccb = pn; @@ -421,64 +395,59 @@ BOOLEAN l2c_link_hci_disc_comp (UINT16 handle, UINT8 reason) race condition where layer above issued connect request on link that was disconnecting */ - if (p_lcb->ccb_queue.p_first_ccb != NULL || p_lcb->p_pending_ccb) - { + if (p_lcb->ccb_queue.p_first_ccb != NULL || p_lcb->p_pending_ccb) { L2CAP_TRACE_DEBUG("l2c_link_hci_disc_comp: Restarting pending ACL request"); transport = p_lcb->transport; #if BLE_INCLUDED == TRUE /* for LE link, always drop and re-open to ensure to get LE remote feature */ - if (p_lcb->transport == BT_TRANSPORT_LE) - { + if (p_lcb->transport == BT_TRANSPORT_LE) { l2cb.is_ble_connecting = FALSE; btm_acl_removed (p_lcb->remote_bd_addr, p_lcb->transport); /* Release any held buffers */ BT_HDR *p_buf; - while (!list_is_empty(p_lcb->link_xmit_data_q)) - { + while (!list_is_empty(p_lcb->link_xmit_data_q)) { p_buf = list_front(p_lcb->link_xmit_data_q); list_remove(p_lcb->link_xmit_data_q, p_buf); GKI_freebuf(p_buf); } - } - else + } else #endif - { - #if (L2CAP_NUM_FIXED_CHNLS > 0) - /* If we are going to re-use the LCB without dropping it, release all fixed channels - here */ - int xx; - for (xx = 0; xx < L2CAP_NUM_FIXED_CHNLS; xx++) - { - if (p_lcb->p_fixed_ccbs[xx] && p_lcb->p_fixed_ccbs[xx] != p_lcb->p_pending_ccb) - { + { +#if (L2CAP_NUM_FIXED_CHNLS > 0) + /* If we are going to re-use the LCB without dropping it, release all fixed channels + here */ + int xx; + for (xx = 0; xx < L2CAP_NUM_FIXED_CHNLS; xx++) { + if (p_lcb->p_fixed_ccbs[xx] && p_lcb->p_fixed_ccbs[xx] != p_lcb->p_pending_ccb) { #if BLE_INCLUDED == TRUE - (*l2cb.fixed_reg[xx].pL2CA_FixedConn_Cb)(xx + L2CAP_FIRST_FIXED_CHNL, - p_lcb->remote_bd_addr, FALSE, p_lcb->disc_reason, p_lcb->transport); + (*l2cb.fixed_reg[xx].pL2CA_FixedConn_Cb)(xx + L2CAP_FIRST_FIXED_CHNL, + p_lcb->remote_bd_addr, FALSE, p_lcb->disc_reason, p_lcb->transport); #else - (*l2cb.fixed_reg[xx].pL2CA_FixedConn_Cb)(xx + L2CAP_FIRST_FIXED_CHNL, - p_lcb->remote_bd_addr, FALSE, p_lcb->disc_reason, BT_TRANSPORT_BR_EDR); + (*l2cb.fixed_reg[xx].pL2CA_FixedConn_Cb)(xx + L2CAP_FIRST_FIXED_CHNL, + p_lcb->remote_bd_addr, FALSE, p_lcb->disc_reason, BT_TRANSPORT_BR_EDR); #endif - l2cu_release_ccb (p_lcb->p_fixed_ccbs[xx]); + l2cu_release_ccb (p_lcb->p_fixed_ccbs[xx]); - p_lcb->p_fixed_ccbs[xx] = NULL; - } - } + p_lcb->p_fixed_ccbs[xx] = NULL; + } + } #endif - } - if (l2cu_create_conn(p_lcb, transport)) - lcb_is_free = FALSE; /* still using this lcb */ + } + if (l2cu_create_conn(p_lcb, transport)) { + lcb_is_free = FALSE; /* still using this lcb */ + } } p_lcb->p_pending_ccb = NULL; /* Release the LCB */ - if (lcb_is_free) + if (lcb_is_free) { l2cu_release_lcb (p_lcb); + } } /* Now that we have a free acl connection, see if any lcbs are pending */ - if (lcb_is_free && ((p_lcb = l2cu_find_lcb_by_state(LST_CONNECT_HOLDING)) != NULL)) - { + if (lcb_is_free && ((p_lcb = l2cu_find_lcb_by_state(LST_CONNECT_HOLDING)) != NULL)) { /* we found one-- create a connection */ l2cu_create_conn(p_lcb, BT_TRANSPORT_BR_EDR); } @@ -506,14 +475,15 @@ BOOLEAN l2c_link_hci_qos_violation (UINT16 handle) p_lcb = l2cu_find_lcb_by_handle (handle); /* If we don't have one, maybe an SCO link. */ - if (!p_lcb) + if (!p_lcb) { return (FALSE); + } /* For all channels, tell the upper layer about it */ - for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; p_ccb = p_ccb->p_next_ccb) - { - if (p_ccb->p_rcb->api.pL2CA_QoSViolationInd_Cb) + for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; p_ccb = p_ccb->p_next_ccb) { + if (p_ccb->p_rcb->api.pL2CA_QoSViolationInd_Cb) { l2c_csm_execute (p_ccb, L2CEVT_LP_QOS_VIOLATION_IND, NULL); + } } return (TRUE); @@ -536,21 +506,19 @@ void l2c_link_timeout (tL2C_LCB *p_lcb) UINT16 timeout; tBTM_STATUS rc; - L2CAP_TRACE_EVENT ("L2CAP - l2c_link_timeout() link state %d first CCB %p is_bonding:%d", - p_lcb->link_state, p_lcb->ccb_queue.p_first_ccb, p_lcb->is_bonding); + L2CAP_TRACE_EVENT ("L2CAP - l2c_link_timeout() link state %d first CCB %p is_bonding:%d", + p_lcb->link_state, p_lcb->ccb_queue.p_first_ccb, p_lcb->is_bonding); /* If link was connecting or disconnecting, clear all channels and drop the LCB */ if ((p_lcb->link_state == LST_CONNECTING_WAIT_SWITCH) || - (p_lcb->link_state == LST_CONNECTING) || - (p_lcb->link_state == LST_CONNECT_HOLDING) || - (p_lcb->link_state == LST_DISCONNECTING)) - { + (p_lcb->link_state == LST_CONNECTING) || + (p_lcb->link_state == LST_CONNECT_HOLDING) || + (p_lcb->link_state == LST_DISCONNECTING)) { p_lcb->p_pending_ccb = NULL; /* For all channels, send a disconnect indication event through */ /* their FSMs. The CCBs should remove themselves from the LCB */ - for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; ) - { + for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; ) { tL2C_CCB *pn = p_ccb->p_next_ccb; l2c_csm_execute (p_ccb, L2CEVT_LP_DISCONNECT_IND, NULL); @@ -559,8 +527,7 @@ void l2c_link_timeout (tL2C_LCB *p_lcb) } #if (BLE_INCLUDED == TRUE) if (p_lcb->link_state == LST_CONNECTING && - l2cb.is_ble_connecting == TRUE) - { + l2cb.is_ble_connecting == TRUE) { L2CA_CancelBleConnectReq(l2cb.ble_connecting_bda); } #endif @@ -569,11 +536,9 @@ void l2c_link_timeout (tL2C_LCB *p_lcb) } /* If link is connected, check for inactivity timeout */ - if (p_lcb->link_state == LST_CONNECTED) - { + if (p_lcb->link_state == LST_CONNECTED) { /* Check for ping outstanding */ - if (p_lcb->p_echo_rsp_cb) - { + if (p_lcb->p_echo_rsp_cb) { tL2CA_ECHO_RSP_CB *p_cb = p_lcb->p_echo_rsp_cb; /* Zero out the callback in case app immediately calls us again */ @@ -581,12 +546,11 @@ void l2c_link_timeout (tL2C_LCB *p_lcb) (*p_cb) (L2CAP_PING_RESULT_NO_RESP); - L2CAP_TRACE_WARNING ("L2CAP - ping timeout"); + L2CAP_TRACE_WARNING ("L2CAP - ping timeout"); /* For all channels, send a disconnect indication event through */ /* their FSMs. The CCBs should remove themselves from the LCB */ - for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; ) - { + for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; ) { tL2C_CCB *pn = p_ccb->p_next_ccb; l2c_csm_execute (p_ccb, L2CEVT_LP_DISCONNECT_IND, NULL); @@ -596,52 +560,37 @@ void l2c_link_timeout (tL2C_LCB *p_lcb) } /* If no channels in use, drop the link. */ - if (!p_lcb->ccb_queue.p_first_ccb) - { + if (!p_lcb->ccb_queue.p_first_ccb) { rc = btm_sec_disconnect (p_lcb->handle, HCI_ERR_PEER_USER); - if (rc == BTM_CMD_STORED) - { + if (rc == BTM_CMD_STORED) { /* Security Manager will take care of disconnecting, state will be updated at that time */ timeout = 0xFFFF; - } - else if (rc == BTM_CMD_STARTED) - { + } else if (rc == BTM_CMD_STARTED) { p_lcb->link_state = LST_DISCONNECTING; timeout = L2CAP_LINK_DISCONNECT_TOUT; - } - else if (rc == BTM_SUCCESS) - { + } else if (rc == BTM_SUCCESS) { l2cu_process_fixed_disc_cback(p_lcb); /* BTM SEC will make sure that link is release (probably after pairing is done) */ p_lcb->link_state = LST_DISCONNECTING; timeout = 0xFFFF; - } - else if (rc == BTM_BUSY) - { + } else if (rc == BTM_BUSY) { /* BTM is still executing security process. Let lcb stay as connected */ timeout = 0xFFFF; - } - else if ((p_lcb->is_bonding) - && (btsnd_hcic_disconnect (p_lcb->handle, HCI_ERR_PEER_USER))) - { + } else if ((p_lcb->is_bonding) + && (btsnd_hcic_disconnect (p_lcb->handle, HCI_ERR_PEER_USER))) { l2cu_process_fixed_disc_cback(p_lcb); p_lcb->link_state = LST_DISCONNECTING; timeout = L2CAP_LINK_DISCONNECT_TOUT; - } - else - { + } else { /* probably no buffer to send disconnect */ timeout = BT_1SEC_TIMEOUT; } - if (timeout != 0xFFFF) - { + if (timeout != 0xFFFF) { btu_start_timer (&p_lcb->timer_entry, BTU_TTYPE_L2CAP_LINK, timeout); } - } - else - { + } else { /* Check in case we were flow controlled */ l2c_link_check_send_pkts (p_lcb, NULL, NULL); } @@ -663,13 +612,10 @@ void l2c_info_timeout (tL2C_LCB *p_lcb) tL2C_CONN_INFO ci; /* If we timed out waiting for info response, just continue using basic if allowed */ - if (p_lcb->w4_info_rsp) - { + if (p_lcb->w4_info_rsp) { /* If waiting for security complete, restart the info response timer */ - for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; p_ccb = p_ccb->p_next_ccb) - { - if ( (p_ccb->chnl_state == CST_ORIG_W4_SEC_COMP) || (p_ccb->chnl_state == CST_TERM_W4_SEC_COMP) ) - { + for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; p_ccb = p_ccb->p_next_ccb) { + if ( (p_ccb->chnl_state == CST_ORIG_W4_SEC_COMP) || (p_ccb->chnl_state == CST_TERM_W4_SEC_COMP) ) { btu_start_timer (&p_lcb->info_timer_entry, BTU_TTYPE_L2CAP_INFO, L2CAP_WAIT_INFO_RSP_TOUT); return; } @@ -679,16 +625,13 @@ void l2c_info_timeout (tL2C_LCB *p_lcb) /* If link is in process of being brought up */ if ((p_lcb->link_state != LST_DISCONNECTED) && - (p_lcb->link_state != LST_DISCONNECTING)) - { + (p_lcb->link_state != LST_DISCONNECTING)) { /* Notify active channels that peer info is finished */ - if (p_lcb->ccb_queue.p_first_ccb) - { + if (p_lcb->ccb_queue.p_first_ccb) { ci.status = HCI_SUCCESS; memcpy (ci.bd_addr, p_lcb->remote_bd_addr, sizeof(BD_ADDR)); - for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; p_ccb = p_ccb->p_next_ccb) - { + for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; p_ccb = p_ccb->p_next_ccb) { l2c_csm_execute (p_ccb, L2CEVT_L2CAP_INFO_RSP, &ci); } } @@ -722,29 +665,28 @@ void l2c_link_adjust_allocation (void) UINT16 high_pri_link_quota = L2CAP_HIGH_PRI_MIN_XMIT_QUOTA_A; /* If no links active, reset buffer quotas and controller buffers */ - if (l2cb.num_links_active == 0) - { + if (l2cb.num_links_active == 0) { l2cb.controller_xmit_window = l2cb.num_lm_acl_bufs; l2cb.round_robin_quota = l2cb.round_robin_unacked = 0; return; } /* First, count the links */ - for (yy = 0, p_lcb = &l2cb.lcb_pool[0]; yy < MAX_L2CAP_LINKS; yy++, p_lcb++) - { - if (p_lcb->in_use) - { - if (p_lcb->acl_priority == L2CAP_PRIORITY_HIGH) + for (yy = 0, p_lcb = &l2cb.lcb_pool[0]; yy < MAX_L2CAP_LINKS; yy++, p_lcb++) { + if (p_lcb->in_use) { + if (p_lcb->acl_priority == L2CAP_PRIORITY_HIGH) { num_hipri_links++; - else + } else { num_lowpri_links++; + } } } /* now adjust high priority link quota */ low_quota = num_lowpri_links ? 1 : 0; - while ( (num_hipri_links * high_pri_link_quota + low_quota) > controller_xmit_quota ) + while ( (num_hipri_links * high_pri_link_quota + low_quota) > controller_xmit_quota ) { high_pri_link_quota--; + } /* Work out the xmit quota and buffer quota high and low priorities */ hi_quota = num_hipri_links * high_pri_link_quota; @@ -753,69 +695,62 @@ void l2c_link_adjust_allocation (void) /* Work out and save the HCI xmit quota for each low priority link */ /* If each low priority link cannot have at least one buffer */ - if (num_lowpri_links > low_quota) - { + if (num_lowpri_links > low_quota) { l2cb.round_robin_quota = low_quota; qq = qq_remainder = 1; } /* If each low priority link can have at least one buffer */ - else if (num_lowpri_links > 0) - { + else if (num_lowpri_links > 0) { l2cb.round_robin_quota = 0; l2cb.round_robin_unacked = 0; qq = low_quota / num_lowpri_links; qq_remainder = low_quota % num_lowpri_links; } /* If no low priority link */ - else - { + else { l2cb.round_robin_quota = 0; l2cb.round_robin_unacked = 0; qq = qq_remainder = 1; } L2CAP_TRACE_EVENT ("l2c_link_adjust_allocation num_hipri: %u num_lowpri: %u low_quota: %u round_robin_quota: %u qq: %u\n", - num_hipri_links, num_lowpri_links, low_quota, - l2cb.round_robin_quota, qq); + num_hipri_links, num_lowpri_links, low_quota, + l2cb.round_robin_quota, qq); /* Now, assign the quotas to each link */ - for (yy = 0, p_lcb = &l2cb.lcb_pool[0]; yy < MAX_L2CAP_LINKS; yy++, p_lcb++) - { - if (p_lcb->in_use) - { - if (p_lcb->acl_priority == L2CAP_PRIORITY_HIGH) - { + for (yy = 0, p_lcb = &l2cb.lcb_pool[0]; yy < MAX_L2CAP_LINKS; yy++, p_lcb++) { + if (p_lcb->in_use) { + if (p_lcb->acl_priority == L2CAP_PRIORITY_HIGH) { p_lcb->link_xmit_quota = high_pri_link_quota; - } - else - { + } else { /* Safety check in case we switched to round-robin with something outstanding */ /* if sent_not_acked is added into round_robin_unacked then don't add it again */ /* l2cap keeps updating sent_not_acked for exiting from round robin */ - if (( p_lcb->link_xmit_quota > 0 )&&( qq == 0 )) + if (( p_lcb->link_xmit_quota > 0 ) && ( qq == 0 )) { l2cb.round_robin_unacked += p_lcb->sent_not_acked; + } p_lcb->link_xmit_quota = qq; - if (qq_remainder > 0) - { + if (qq_remainder > 0) { p_lcb->link_xmit_quota++; qq_remainder--; } } L2CAP_TRACE_EVENT ("l2c_link_adjust_allocation LCB %d Priority: %d XmitQuota: %d\n", - yy, p_lcb->acl_priority, p_lcb->link_xmit_quota); + yy, p_lcb->acl_priority, p_lcb->link_xmit_quota); L2CAP_TRACE_EVENT (" SentNotAcked: %d RRUnacked: %d\n", - p_lcb->sent_not_acked, l2cb.round_robin_unacked); + p_lcb->sent_not_acked, l2cb.round_robin_unacked); /* There is a special case where we have readjusted the link quotas and */ /* this link may have sent anything but some other link sent packets so */ /* so we may need a timer to kick off this link's transmissions. */ if ( (p_lcb->link_state == LST_CONNECTED) - && (!list_is_empty(p_lcb->link_xmit_data_q)) - && (p_lcb->sent_not_acked < p_lcb->link_xmit_quota) ) + && (!list_is_empty(p_lcb->link_xmit_data_q)) + && (p_lcb->sent_not_acked < p_lcb->link_xmit_quota) ) { btu_start_timer (&p_lcb->timer_entry, BTU_TTYPE_L2CAP_LINK, L2CAP_LINK_FLOW_CONTROL_TOUT); + } } } @@ -847,41 +782,35 @@ void l2c_link_adjust_chnl_allocation (void) L2CAP_TRACE_DEBUG ("l2c_link_adjust_chnl_allocation"); /* initialize variables */ - for (xx = 0; xx < GKI_NUM_TOTAL_BUF_POOLS; xx++ ) - { + for (xx = 0; xx < GKI_NUM_TOTAL_BUF_POOLS; xx++ ) { weighted_chnls[xx] = 0; reserved_buff[xx] = 0; } /* add up all of tx and rx data rate requirement */ /* channel required higher data rate will get more buffer quota */ - for (xx = 0; xx < MAX_L2CAP_CHANNELS; xx++) - { + for (xx = 0; xx < MAX_L2CAP_CHANNELS; xx++) { p_ccb = l2cb.ccb_pool + xx; - if (!p_ccb->in_use) + if (!p_ccb->in_use) { continue; + } - if (p_ccb->peer_cfg.fcr.mode != L2CAP_FCR_BASIC_MODE) - { + if (p_ccb->peer_cfg.fcr.mode != L2CAP_FCR_BASIC_MODE) { weighted_chnls[p_ccb->ertm_info.user_tx_pool_id] += p_ccb->tx_data_rate; weighted_chnls[p_ccb->ertm_info.user_rx_pool_id] += p_ccb->rx_data_rate; - if (p_ccb->ertm_info.fcr_tx_pool_id == HCI_ACL_POOL_ID) - { + if (p_ccb->ertm_info.fcr_tx_pool_id == HCI_ACL_POOL_ID) { /* reserve buffers only for wait_for_ack_q to maximize throughput */ /* retrans_q will work based on buffer status */ reserved_buff[HCI_ACL_POOL_ID] += p_ccb->peer_cfg.fcr.tx_win_sz; } - if (p_ccb->ertm_info.fcr_rx_pool_id == HCI_ACL_POOL_ID) - { + if (p_ccb->ertm_info.fcr_rx_pool_id == HCI_ACL_POOL_ID) { /* reserve buffers for srej_rcv_hold_q */ reserved_buff[HCI_ACL_POOL_ID] += p_ccb->peer_cfg.fcr.tx_win_sz; } - } - else - { + } else { /* low data rate is 1, medium is 2, high is 3 and no traffic is 0 */ weighted_chnls[HCI_ACL_POOL_ID] += p_ccb->tx_data_rate + p_ccb->rx_data_rate; } @@ -889,47 +818,43 @@ void l2c_link_adjust_chnl_allocation (void) /* get unit quota per pool */ - for (xx = 0; xx < GKI_NUM_TOTAL_BUF_POOLS; xx++ ) - { - if ( weighted_chnls[xx] > 0 ) - { - if (GKI_poolcount(xx) > reserved_buff[xx]) - quota_per_weighted_chnls[xx] = ((GKI_poolcount(xx) - reserved_buff[xx])/weighted_chnls[xx]) + 1; - else + for (xx = 0; xx < GKI_NUM_TOTAL_BUF_POOLS; xx++ ) { + if ( weighted_chnls[xx] > 0 ) { + if (GKI_poolcount(xx) > reserved_buff[xx]) { + quota_per_weighted_chnls[xx] = ((GKI_poolcount(xx) - reserved_buff[xx]) / weighted_chnls[xx]) + 1; + } else { quota_per_weighted_chnls[xx] = 1; + } L2CAP_TRACE_DEBUG ("POOL ID:%d, GKI_poolcount = %d, reserved_buff = %d, weighted_chnls = %d, quota_per_weighted_chnls = %d", - xx, GKI_poolcount(xx), reserved_buff[xx], weighted_chnls[xx], quota_per_weighted_chnls[xx] ); - } - else + xx, GKI_poolcount(xx), reserved_buff[xx], weighted_chnls[xx], quota_per_weighted_chnls[xx] ); + } else { quota_per_weighted_chnls[xx] = 0; + } } /* assign buffer quota to each channel based on its data rate requirement */ - for (xx = 0; xx < MAX_L2CAP_CHANNELS; xx++) - { + for (xx = 0; xx < MAX_L2CAP_CHANNELS; xx++) { p_ccb = l2cb.ccb_pool + xx; - if (!p_ccb->in_use) + if (!p_ccb->in_use) { continue; + } - if (p_ccb->peer_cfg.fcr.mode != L2CAP_FCR_BASIC_MODE) - { + if (p_ccb->peer_cfg.fcr.mode != L2CAP_FCR_BASIC_MODE) { p_ccb->buff_quota = quota_per_weighted_chnls[p_ccb->ertm_info.user_tx_pool_id] * p_ccb->tx_data_rate; L2CAP_TRACE_EVENT ("CID:0x%04x FCR Mode:%u UserTxPool:%u Priority:%u TxDataRate:%u Quota:%u", - p_ccb->local_cid, p_ccb->peer_cfg.fcr.mode, p_ccb->ertm_info.user_tx_pool_id, - p_ccb->ccb_priority, p_ccb->tx_data_rate, p_ccb->buff_quota); + p_ccb->local_cid, p_ccb->peer_cfg.fcr.mode, p_ccb->ertm_info.user_tx_pool_id, + p_ccb->ccb_priority, p_ccb->tx_data_rate, p_ccb->buff_quota); - } - else - { + } else { p_ccb->buff_quota = quota_per_weighted_chnls[HCI_ACL_POOL_ID] * p_ccb->tx_data_rate; L2CAP_TRACE_EVENT ("CID:0x%04x Priority:%u TxDataRate:%u Quota:%u", - p_ccb->local_cid, - p_ccb->ccb_priority, p_ccb->tx_data_rate, p_ccb->buff_quota); + p_ccb->local_cid, + p_ccb->ccb_priority, p_ccb->tx_data_rate, p_ccb->buff_quota); } /* quota may be change so check congestion */ @@ -992,25 +917,22 @@ void l2c_link_role_changed (BD_ADDR bd_addr, UINT8 new_role, UINT8 hci_status) int xx; /* Make sure not called from HCI Command Status (bd_addr and new_role are invalid) */ - if (bd_addr) - { + if (bd_addr) { /* If here came form hci role change event */ p_lcb = l2cu_find_lcb_by_bd_addr (bd_addr, BT_TRANSPORT_BR_EDR); - if (p_lcb) - { + if (p_lcb) { p_lcb->link_role = new_role; /* Reset high priority link if needed */ - if (hci_status == HCI_SUCCESS) + if (hci_status == HCI_SUCCESS) { l2cu_set_acl_priority(bd_addr, p_lcb->acl_priority, TRUE); + } } } /* Check if any LCB was waiting for switch to be completed */ - for (xx = 0, p_lcb = &l2cb.lcb_pool[0]; xx < MAX_L2CAP_LINKS; xx++, p_lcb++) - { - if ((p_lcb->in_use) && (p_lcb->link_state == LST_CONNECTING_WAIT_SWITCH)) - { + for (xx = 0, p_lcb = &l2cb.lcb_pool[0]; xx < MAX_L2CAP_LINKS; xx++, p_lcb++) { + if ((p_lcb->in_use) && (p_lcb->link_state == LST_CONNECTING_WAIT_SWITCH)) { l2cu_create_conn_after_switch (p_lcb); } } @@ -1033,8 +955,7 @@ void l2c_pin_code_request (BD_ADDR bd_addr) { tL2C_LCB *p_lcb = l2cu_find_lcb_by_bd_addr (bd_addr, BT_TRANSPORT_BR_EDR); - if ( (p_lcb) && (!p_lcb->ccb_queue.p_first_ccb) ) - { + if ( (p_lcb) && (!p_lcb->ccb_queue.p_first_ccb) ) { btu_start_timer (&p_lcb->timer_entry, BTU_TTYPE_L2CAP_LINK, L2CAP_LINK_CONNECT_TOUT_EXT); } } @@ -1059,28 +980,22 @@ BOOLEAN l2c_link_check_power_mode (tL2C_LCB *p_lcb) /* * We only switch park to active only if we have unsent packets */ - if (list_is_empty(p_lcb->link_xmit_data_q)) - { - for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; p_ccb = p_ccb->p_next_ccb) - { - if (!GKI_queue_is_empty(&p_ccb->xmit_hold_q)) - { + if (list_is_empty(p_lcb->link_xmit_data_q)) { + for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; p_ccb = p_ccb->p_next_ccb) { + if (!GKI_queue_is_empty(&p_ccb->xmit_hold_q)) { need_to_active = TRUE; break; } } - } - else + } else { need_to_active = TRUE; + } /* if we have packets to send */ - if ( need_to_active ) - { + if ( need_to_active ) { /* check power mode */ - if (BTM_ReadPowerMode(p_lcb->remote_bd_addr, &mode) == BTM_SUCCESS) - { - if ( mode == BTM_PM_STS_PENDING ) - { + if (BTM_ReadPowerMode(p_lcb->remote_bd_addr, &mode) == BTM_SUCCESS) { + if ( mode == BTM_PM_STS_PENDING ) { L2CAP_TRACE_DEBUG ("LCB(0x%x) is in PM pending state\n", p_lcb->handle); return TRUE; @@ -1108,25 +1023,22 @@ void l2c_link_check_send_pkts (tL2C_LCB *p_lcb, tL2C_CCB *p_ccb, BT_HDR *p_buf) BOOLEAN single_write = FALSE; /* Save the channel ID for faster counting */ - if (p_buf) - { - if (p_ccb != NULL) - { + if (p_buf) { + if (p_ccb != NULL) { p_buf->event = p_ccb->local_cid; single_write = TRUE; - } - else + } else { p_buf->event = 0; + } p_buf->layer_specific = 0; list_append(p_lcb->link_xmit_data_q, p_buf); - if (p_lcb->link_xmit_quota == 0) - { + if (p_lcb->link_xmit_quota == 0) { #if BLE_INCLUDED == TRUE - if (p_lcb->transport == BT_TRANSPORT_LE) + if (p_lcb->transport == BT_TRANSPORT_LE) { l2cb.ble_check_round_robin = TRUE; - else + } else #endif l2cb.check_round_robin = TRUE; } @@ -1135,133 +1047,137 @@ void l2c_link_check_send_pkts (tL2C_LCB *p_lcb, tL2C_CCB *p_ccb, BT_HDR *p_buf) /* If this is called from uncongested callback context break recursive calling. ** This LCB will be served when receiving number of completed packet event. */ - if (l2cb.is_cong_cback_context) + if (l2cb.is_cong_cback_context) { return; + } /* If we are in a scenario where there are not enough buffers for each link to ** have at least 1, then do a round-robin for all the LCBs */ - if ( (p_lcb == NULL) || (p_lcb->link_xmit_quota == 0) ) - { - if (p_lcb == NULL) + if ( (p_lcb == NULL) || (p_lcb->link_xmit_quota == 0) ) { + if (p_lcb == NULL) { p_lcb = l2cb.lcb_pool; - else if (!single_write) + } else if (!single_write) { p_lcb++; + } /* Loop through, starting at the next */ - for (xx = 0; xx < MAX_L2CAP_LINKS; xx++, p_lcb++) - { + for (xx = 0; xx < MAX_L2CAP_LINKS; xx++, p_lcb++) { /* If controller window is full, nothing to do */ if (((l2cb.controller_xmit_window == 0 || - (l2cb.round_robin_unacked >= l2cb.round_robin_quota)) + (l2cb.round_robin_unacked >= l2cb.round_robin_quota)) #if (BLE_INCLUDED == TRUE) - && (p_lcb->transport == BT_TRANSPORT_BR_EDR) + && (p_lcb->transport == BT_TRANSPORT_BR_EDR) ) - || (p_lcb->transport == BT_TRANSPORT_LE && - (l2cb.ble_round_robin_unacked >= l2cb.ble_round_robin_quota || - l2cb.controller_le_xmit_window == 0 ))) + || (p_lcb->transport == BT_TRANSPORT_LE && + (l2cb.ble_round_robin_unacked >= l2cb.ble_round_robin_quota || + l2cb.controller_le_xmit_window == 0 ))) #else )) #endif - break; + break; /* Check for wraparound */ - if (p_lcb == &l2cb.lcb_pool[MAX_L2CAP_LINKS]) + if (p_lcb == &l2cb.lcb_pool[MAX_L2CAP_LINKS]) { p_lcb = &l2cb.lcb_pool[0]; + } if ( (!p_lcb->in_use) - || (p_lcb->partial_segment_being_sent) - || (p_lcb->link_state != LST_CONNECTED) - || (p_lcb->link_xmit_quota != 0) - || (L2C_LINK_CHECK_POWER_MODE (p_lcb)) ) + || (p_lcb->partial_segment_being_sent) + || (p_lcb->link_state != LST_CONNECTED) + || (p_lcb->link_xmit_quota != 0) + || (L2C_LINK_CHECK_POWER_MODE (p_lcb)) ) { continue; + } /* See if we can send anything from the Link Queue */ if (!list_is_empty(p_lcb->link_xmit_data_q)) { p_buf = (BT_HDR *)list_front(p_lcb->link_xmit_data_q); list_remove(p_lcb->link_xmit_data_q, p_buf); l2c_link_send_to_lower (p_lcb, p_buf); - } - else if (single_write) - { + } else if (single_write) { /* If only doing one write, break out */ break; } /* If nothing on the link queue, check the channel queue */ - else if ((p_buf = l2cu_get_next_buffer_to_send (p_lcb)) != NULL) - { + else if ((p_buf = l2cu_get_next_buffer_to_send (p_lcb)) != NULL) { l2c_link_send_to_lower (p_lcb, p_buf); } } /* If we finished without using up our quota, no need for a safety check */ if ( (l2cb.controller_xmit_window > 0) - && (l2cb.round_robin_unacked < l2cb.round_robin_quota) + && (l2cb.round_robin_unacked < l2cb.round_robin_quota) #if (BLE_INCLUDED == TRUE) - && (p_lcb->transport == BT_TRANSPORT_BR_EDR) + && (p_lcb->transport == BT_TRANSPORT_BR_EDR) #endif - ) + ) { l2cb.check_round_robin = FALSE; + } #if (BLE_INCLUDED == TRUE) if ( (l2cb.controller_le_xmit_window > 0) - && (l2cb.ble_round_robin_unacked < l2cb.ble_round_robin_quota) - && (p_lcb->transport == BT_TRANSPORT_LE)) + && (l2cb.ble_round_robin_unacked < l2cb.ble_round_robin_quota) + && (p_lcb->transport == BT_TRANSPORT_LE)) { l2cb.ble_check_round_robin = FALSE; + } #endif - } - else /* if this is not round-robin service */ - { + } else { /* if this is not round-robin service */ /* If a partial segment is being sent, can't send anything else */ if ( (p_lcb->partial_segment_being_sent) - || (p_lcb->link_state != LST_CONNECTED) - || (L2C_LINK_CHECK_POWER_MODE (p_lcb)) ) + || (p_lcb->link_state != LST_CONNECTED) + || (L2C_LINK_CHECK_POWER_MODE (p_lcb)) ) { return; + } /* See if we can send anything from the link queue */ #if (BLE_INCLUDED == TRUE) while ( ((l2cb.controller_xmit_window != 0 && (p_lcb->transport == BT_TRANSPORT_BR_EDR)) || (l2cb.controller_le_xmit_window != 0 && (p_lcb->transport == BT_TRANSPORT_LE))) - && (p_lcb->sent_not_acked < p_lcb->link_xmit_quota)) + && (p_lcb->sent_not_acked < p_lcb->link_xmit_quota)) #else while ( (l2cb.controller_xmit_window != 0) - && (p_lcb->sent_not_acked < p_lcb->link_xmit_quota)) + && (p_lcb->sent_not_acked < p_lcb->link_xmit_quota)) #endif { - if (list_is_empty(p_lcb->link_xmit_data_q)) + if (list_is_empty(p_lcb->link_xmit_data_q)) { break; + } p_buf = (BT_HDR *)list_front(p_lcb->link_xmit_data_q); list_remove(p_lcb->link_xmit_data_q, p_buf); - if (!l2c_link_send_to_lower (p_lcb, p_buf)) + if (!l2c_link_send_to_lower (p_lcb, p_buf)) { break; + } } - if (!single_write) - { + if (!single_write) { /* See if we can send anything for any channel */ #if (BLE_INCLUDED == TRUE) while ( ((l2cb.controller_xmit_window != 0 && (p_lcb->transport == BT_TRANSPORT_BR_EDR)) || - (l2cb.controller_le_xmit_window != 0 && (p_lcb->transport == BT_TRANSPORT_LE))) + (l2cb.controller_le_xmit_window != 0 && (p_lcb->transport == BT_TRANSPORT_LE))) && (p_lcb->sent_not_acked < p_lcb->link_xmit_quota)) #else while ((l2cb.controller_xmit_window != 0) && (p_lcb->sent_not_acked < p_lcb->link_xmit_quota)) #endif { - if ((p_buf = l2cu_get_next_buffer_to_send (p_lcb)) == NULL) + if ((p_buf = l2cu_get_next_buffer_to_send (p_lcb)) == NULL) { break; + } - if (!l2c_link_send_to_lower (p_lcb, p_buf)) + if (!l2c_link_send_to_lower (p_lcb, p_buf)) { break; + } } } /* There is a special case where we have readjusted the link quotas and */ /* this link may have sent anything but some other link sent packets so */ /* so we may need a timer to kick off this link's transmissions. */ - if ( (!list_is_empty(p_lcb->link_xmit_data_q)) && (p_lcb->sent_not_acked < p_lcb->link_xmit_quota) ) + if ( (!list_is_empty(p_lcb->link_xmit_data_q)) && (p_lcb->sent_not_acked < p_lcb->link_xmit_quota) ) { btu_start_timer (&p_lcb->timer_entry, BTU_TTYPE_L2CAP_LINK, L2CAP_LINK_FLOW_CONTROL_TOUT); + } } } @@ -1283,19 +1199,17 @@ static BOOLEAN l2c_link_send_to_lower (tL2C_LCB *p_lcb, BT_HDR *p_buf) if ((p_buf->len <= controller->get_acl_packet_size_classic() #if (BLE_INCLUDED == TRUE) - && (p_lcb->transport == BT_TRANSPORT_BR_EDR)) || - ((p_lcb->transport == BT_TRANSPORT_LE) && (p_buf->len <= controller->get_acl_packet_size_ble())) + && (p_lcb->transport == BT_TRANSPORT_BR_EDR)) || + ((p_lcb->transport == BT_TRANSPORT_LE) && (p_buf->len <= controller->get_acl_packet_size_ble())) #else ) #endif - ) - { - if (p_lcb->link_xmit_quota == 0) - { + ) { + if (p_lcb->link_xmit_quota == 0) { #if (BLE_INCLUDED == TRUE) - if (p_lcb->transport == BT_TRANSPORT_LE) + if (p_lcb->transport == BT_TRANSPORT_LE) { l2cb.ble_round_robin_unacked++; - else + } else #endif l2cb.round_robin_unacked++; } @@ -1303,28 +1217,22 @@ static BOOLEAN l2c_link_send_to_lower (tL2C_LCB *p_lcb, BT_HDR *p_buf) p_buf->layer_specific = 0; #if (BLE_INCLUDED == TRUE) - if (p_lcb->transport == BT_TRANSPORT_LE) - { + if (p_lcb->transport == BT_TRANSPORT_LE) { l2cb.controller_le_xmit_window--; - bte_main_hci_send(p_buf, (UINT16)(BT_EVT_TO_LM_HCI_ACL|LOCAL_BLE_CONTROLLER_ID)); - } - else + bte_main_hci_send(p_buf, (UINT16)(BT_EVT_TO_LM_HCI_ACL | LOCAL_BLE_CONTROLLER_ID)); + } else #endif { l2cb.controller_xmit_window--; bte_main_hci_send(p_buf, BT_EVT_TO_LM_HCI_ACL); } - } - else - { + } else { #if BLE_INCLUDED == TRUE - if (p_lcb->transport == BT_TRANSPORT_LE) - { + if (p_lcb->transport == BT_TRANSPORT_LE) { acl_data_size = controller->get_acl_data_size_ble(); xmit_window = l2cb.controller_le_xmit_window; - } - else + } else #endif { acl_data_size = controller->get_acl_data_size_classic(); @@ -1334,22 +1242,17 @@ static BOOLEAN l2c_link_send_to_lower (tL2C_LCB *p_lcb, BT_HDR *p_buf) /* If doing round-robin, then only 1 segment each time */ - if (p_lcb->link_xmit_quota == 0) - { + if (p_lcb->link_xmit_quota == 0) { num_segs = 1; p_lcb->partial_segment_being_sent = TRUE; - } - else - { + } else { /* Multi-segment packet. Make sure it can fit */ - if (num_segs > xmit_window) - { + if (num_segs > xmit_window) { num_segs = xmit_window; p_lcb->partial_segment_being_sent = TRUE; } - if (num_segs > (p_lcb->link_xmit_quota - p_lcb->sent_not_acked)) - { + if (num_segs > (p_lcb->link_xmit_quota - p_lcb->sent_not_acked)) { num_segs = (p_lcb->link_xmit_quota - p_lcb->sent_not_acked); p_lcb->partial_segment_being_sent = TRUE; } @@ -1357,28 +1260,26 @@ static BOOLEAN l2c_link_send_to_lower (tL2C_LCB *p_lcb, BT_HDR *p_buf) p_buf->layer_specific = num_segs; #if BLE_INCLUDED == TRUE - if (p_lcb->transport == BT_TRANSPORT_LE) - { + if (p_lcb->transport == BT_TRANSPORT_LE) { l2cb.controller_le_xmit_window -= num_segs; - if (p_lcb->link_xmit_quota == 0) + if (p_lcb->link_xmit_quota == 0) { l2cb.ble_round_robin_unacked += num_segs; - } - else + } + } else #endif { l2cb.controller_xmit_window -= num_segs; - if (p_lcb->link_xmit_quota == 0) + if (p_lcb->link_xmit_quota == 0) { l2cb.round_robin_unacked += num_segs; + } } p_lcb->sent_not_acked += num_segs; #if BLE_INCLUDED == TRUE - if (p_lcb->transport == BT_TRANSPORT_LE) - { - bte_main_hci_send(p_buf, (UINT16)(BT_EVT_TO_LM_HCI_ACL|LOCAL_BLE_CONTROLLER_ID)); - } - else + if (p_lcb->transport == BT_TRANSPORT_LE) { + bte_main_hci_send(p_buf, (UINT16)(BT_EVT_TO_LM_HCI_ACL | LOCAL_BLE_CONTROLLER_ID)); + } else #endif { bte_main_hci_send(p_buf, BT_EVT_TO_LM_HCI_ACL); @@ -1387,22 +1288,20 @@ static BOOLEAN l2c_link_send_to_lower (tL2C_LCB *p_lcb, BT_HDR *p_buf) #if (L2CAP_HCI_FLOW_CONTROL_DEBUG == TRUE) #if (BLE_INCLUDED == TRUE) - if (p_lcb->transport == BT_TRANSPORT_LE) - { + if (p_lcb->transport == BT_TRANSPORT_LE) { L2CAP_TRACE_DEBUG ("TotalWin=%d,Hndl=0x%x,Quota=%d,Unack=%d,RRQuota=%d,RRUnack=%d", - l2cb.controller_le_xmit_window, - p_lcb->handle, - p_lcb->link_xmit_quota, p_lcb->sent_not_acked, - l2cb.ble_round_robin_quota, l2cb.ble_round_robin_unacked); - } - else + l2cb.controller_le_xmit_window, + p_lcb->handle, + p_lcb->link_xmit_quota, p_lcb->sent_not_acked, + l2cb.ble_round_robin_quota, l2cb.ble_round_robin_unacked); + } else #endif { L2CAP_TRACE_DEBUG ("TotalWin=%d,Hndl=0x%x,Quota=%d,Unack=%d,RRQuota=%d,RRUnack=%d", - l2cb.controller_xmit_window, - p_lcb->handle, - p_lcb->link_xmit_quota, p_lcb->sent_not_acked, - l2cb.round_robin_quota, l2cb.round_robin_unacked); + l2cb.controller_xmit_window, + p_lcb->handle, + p_lcb->link_xmit_quota, p_lcb->sent_not_acked, + l2cb.round_robin_quota, l2cb.round_robin_unacked); } #endif @@ -1429,8 +1328,7 @@ void l2c_link_process_num_completed_pkts (UINT8 *p) STREAM_TO_UINT8 (num_handles, p); - for (xx = 0; xx < num_handles; xx++) - { + for (xx = 0; xx < num_handles; xx++) { STREAM_TO_UINT16 (handle, p); STREAM_TO_UINT16 (num_sent, p); @@ -1438,106 +1336,97 @@ void l2c_link_process_num_completed_pkts (UINT8 *p) /* Callback for number of completed packet event */ /* Originally designed for [3DSG] */ - if((p_lcb != NULL) && (p_lcb->p_nocp_cb)) - { + if ((p_lcb != NULL) && (p_lcb->p_nocp_cb)) { L2CAP_TRACE_DEBUG ("L2CAP - calling NoCP callback"); (*p_lcb->p_nocp_cb)(p_lcb->remote_bd_addr); } - if (p_lcb) - { + if (p_lcb) { #if (BLE_INCLUDED == TRUE) - if (p_lcb && (p_lcb->transport == BT_TRANSPORT_LE)) - l2cb.controller_le_xmit_window += num_sent; - else + if (p_lcb && (p_lcb->transport == BT_TRANSPORT_LE)) { + l2cb.controller_le_xmit_window += num_sent; + } else #endif { /* Maintain the total window to the controller */ l2cb.controller_xmit_window += num_sent; } /* If doing round-robin, adjust communal counts */ - if (p_lcb->link_xmit_quota == 0) - { + if (p_lcb->link_xmit_quota == 0) { #if BLE_INCLUDED == TRUE - if (p_lcb->transport == BT_TRANSPORT_LE) - { - /* Don't go negative */ - if (l2cb.ble_round_robin_unacked > num_sent) + if (p_lcb->transport == BT_TRANSPORT_LE) { + /* Don't go negative */ + if (l2cb.ble_round_robin_unacked > num_sent) { l2cb.ble_round_robin_unacked -= num_sent; - else + } else { l2cb.ble_round_robin_unacked = 0; - } - else + } + } else #endif { /* Don't go negative */ - if (l2cb.round_robin_unacked > num_sent) + if (l2cb.round_robin_unacked > num_sent) { l2cb.round_robin_unacked -= num_sent; - else + } else { l2cb.round_robin_unacked = 0; + } } } /* Don't go negative */ - if (p_lcb->sent_not_acked > num_sent) + if (p_lcb->sent_not_acked > num_sent) { p_lcb->sent_not_acked -= num_sent; - else + } else { p_lcb->sent_not_acked = 0; + } l2c_link_check_send_pkts (p_lcb, NULL, NULL); /* If we were doing round-robin for low priority links, check 'em */ if ( (p_lcb->acl_priority == L2CAP_PRIORITY_HIGH) - && (l2cb.check_round_robin) - && (l2cb.round_robin_unacked < l2cb.round_robin_quota) ) - { - l2c_link_check_send_pkts (NULL, NULL, NULL); + && (l2cb.check_round_robin) + && (l2cb.round_robin_unacked < l2cb.round_robin_quota) ) { + l2c_link_check_send_pkts (NULL, NULL, NULL); } #if BLE_INCLUDED == TRUE if ((p_lcb->transport == BT_TRANSPORT_LE) - && (p_lcb->acl_priority == L2CAP_PRIORITY_HIGH) - && ((l2cb.ble_check_round_robin) - && (l2cb.ble_round_robin_unacked < l2cb.ble_round_robin_quota))) - { - l2c_link_check_send_pkts (NULL, NULL, NULL); + && (p_lcb->acl_priority == L2CAP_PRIORITY_HIGH) + && ((l2cb.ble_check_round_robin) + && (l2cb.ble_round_robin_unacked < l2cb.ble_round_robin_quota))) { + l2c_link_check_send_pkts (NULL, NULL, NULL); } #endif } #if (L2CAP_HCI_FLOW_CONTROL_DEBUG == TRUE) - if (p_lcb) - { + if (p_lcb) { #if (BLE_INCLUDED == TRUE) - if (p_lcb->transport == BT_TRANSPORT_LE) - { + if (p_lcb->transport == BT_TRANSPORT_LE) { L2CAP_TRACE_DEBUG ("TotalWin=%d,LinkUnack(0x%x)=%d,RRCheck=%d,RRUnack=%d\n", - l2cb.controller_le_xmit_window, - p_lcb->handle, p_lcb->sent_not_acked, - l2cb.ble_check_round_robin, l2cb.ble_round_robin_unacked); - } - else + l2cb.controller_le_xmit_window, + p_lcb->handle, p_lcb->sent_not_acked, + l2cb.ble_check_round_robin, l2cb.ble_round_robin_unacked); + } else #endif { L2CAP_TRACE_DEBUG ("TotalWin=%d,LinkUnack(0x%x)=%d,RRCheck=%d,RRUnack=%d\n", - l2cb.controller_xmit_window, - p_lcb->handle, p_lcb->sent_not_acked, - l2cb.check_round_robin, l2cb.round_robin_unacked); + l2cb.controller_xmit_window, + p_lcb->handle, p_lcb->sent_not_acked, + l2cb.check_round_robin, l2cb.round_robin_unacked); } - } - else - { + } else { #if (BLE_INCLUDED == TRUE) L2CAP_TRACE_DEBUG ("TotalWin=%d LE_Win: %d, Handle=0x%x, RRCheck=%d, RRUnack=%d\n", - l2cb.controller_xmit_window, - l2cb.controller_le_xmit_window, - handle, - l2cb.ble_check_round_robin, l2cb.ble_round_robin_unacked); + l2cb.controller_xmit_window, + l2cb.controller_le_xmit_window, + handle, + l2cb.ble_check_round_robin, l2cb.ble_round_robin_unacked); #else L2CAP_TRACE_DEBUG ("TotalWin=%d Handle=0x%x RRCheck=%d RRUnack=%d\n", - l2cb.controller_xmit_window, - handle, - l2cb.check_round_robin, l2cb.round_robin_unacked); + l2cb.controller_xmit_window, + handle, + l2cb.check_round_robin, l2cb.round_robin_unacked); #endif } #endif @@ -1570,15 +1459,13 @@ void l2c_link_segments_xmitted (BT_HDR *p_msg) handle = HCID_GET_HANDLE (handle); /* Find the LCB based on the handle */ - if ((p_lcb = l2cu_find_lcb_by_handle (handle)) == NULL) - { + if ((p_lcb = l2cu_find_lcb_by_handle (handle)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - rcvd segment complete, unknown handle: %d\n", handle); GKI_freebuf (p_msg); return; } - if (p_lcb->link_state == LST_CONNECTED) - { + if (p_lcb->link_state == LST_CONNECTED) { /* Enqueue the buffer to the head of the transmit queue, and see */ /* if we can transmit anything more. */ list_prepend(p_lcb->link_xmit_data_q, p_msg); @@ -1586,7 +1473,7 @@ void l2c_link_segments_xmitted (BT_HDR *p_msg) p_lcb->partial_segment_being_sent = FALSE; l2c_link_check_send_pkts (p_lcb, NULL, NULL); - } - else + } else { GKI_freebuf (p_msg); + } } diff --git a/components/bt/bluedroid/stack/l2cap/l2c_main.c b/components/bt/bluedroid/stack/l2cap/l2c_main.c old mode 100755 new mode 100644 index 74740c2fb9..814bc9f85a --- a/components/bt/bluedroid/stack/l2cap/l2c_main.c +++ b/components/bt/bluedroid/stack/l2cap/l2c_main.c @@ -64,8 +64,7 @@ void l2c_bcst_msg( BT_HDR *p_buf, UINT16 psm ) UINT8 *p; /* Ensure we have enough space in the buffer for the L2CAP and HCI headers */ - if (p_buf->offset < L2CAP_BCST_MIN_OFFSET) - { + if (p_buf->offset < L2CAP_BCST_MIN_OFFSET) { L2CAP_TRACE_ERROR ("L2CAP - cannot send buffer, offset: %d", p_buf->offset); GKI_freebuf (p_buf); return; @@ -83,12 +82,9 @@ void l2c_bcst_msg( BT_HDR *p_buf, UINT16 psm ) uint16_t acl_data_size = controller_get_interface()->get_acl_data_size_classic(); /* The HCI transport will segment the buffers. */ - if (p_buf->len > acl_data_size) - { + if (p_buf->len > acl_data_size) { UINT16_TO_STREAM (p, acl_data_size); - } - else - { + } else { UINT16_TO_STREAM (p, p_buf->len); } @@ -99,8 +95,7 @@ void l2c_bcst_msg( BT_HDR *p_buf, UINT16 psm ) p_buf->len += HCI_DATA_PREAMBLE_SIZE; - if (p_buf->len <= controller_get_interface()->get_acl_packet_size_classic()) - { + if (p_buf->len <= controller_get_interface()->get_acl_packet_size_classic()) { //counter_add("l2cap.ch2.tx.bytes", p_buf->len); //counter_add("l2cap.ch2.tx.pkts", 1); @@ -135,11 +130,9 @@ void l2c_rcv_acl_data (BT_HDR *p_msg) /* Since the HCI Transport is putting segmented packets back together, we */ /* should never get a valid packet with the type set to "continuation" */ - if (pkt_type != L2CAP_PKT_CONTINUE) - { + if (pkt_type != L2CAP_PKT_CONTINUE) { /* Find the LCB based on the handle */ - if ((p_lcb = l2cu_find_lcb_by_handle (handle)) == NULL) - { + if ((p_lcb = l2cu_find_lcb_by_handle (handle)) == NULL) { UINT8 cmd_code; /* There is a slight possibility (specifically with USB) that we get an */ @@ -153,26 +146,25 @@ void l2c_rcv_acl_data (BT_HDR *p_msg) if ((p_msg->layer_specific == 0) && (rcv_cid == L2CAP_SIGNALLING_CID) && (cmd_code == L2CAP_CMD_INFO_REQ || cmd_code == L2CAP_CMD_CONN_REQ)) { L2CAP_TRACE_WARNING ("L2CAP - holding ACL for unknown handle:%d ls:%d" - " cid:%d opcode:%d cur count:%d", handle, p_msg->layer_specific, - rcv_cid, cmd_code, list_length(l2cb.rcv_pending_q)); + " cid:%d opcode:%d cur count:%d", handle, p_msg->layer_specific, + rcv_cid, cmd_code, list_length(l2cb.rcv_pending_q)); p_msg->layer_specific = 2; list_append(l2cb.rcv_pending_q, p_msg); - if (list_length(l2cb.rcv_pending_q) == 1) + if (list_length(l2cb.rcv_pending_q) == 1) { btu_start_timer (&l2cb.rcv_hold_tle, BTU_TTYPE_L2CAP_HOLD, BT_1SEC_TIMEOUT); + } return; } else { L2CAP_TRACE_ERROR ("L2CAP - rcvd ACL for unknown handle:%d ls:%d cid:%d" - " opcode:%d cur count:%d", handle, p_msg->layer_specific, rcv_cid, - cmd_code, list_length(l2cb.rcv_pending_q)); + " opcode:%d cur count:%d", handle, p_msg->layer_specific, rcv_cid, + cmd_code, list_length(l2cb.rcv_pending_q)); } GKI_freebuf (p_msg); return; } - } - else - { + } else { L2CAP_TRACE_WARNING ("L2CAP - expected pkt start or complete, got: %d", pkt_type); GKI_freebuf (p_msg); return; @@ -187,54 +179,47 @@ void l2c_rcv_acl_data (BT_HDR *p_msg) STREAM_TO_UINT16 (rcv_cid, p); #if BLE_INCLUDED == TRUE - /* for BLE channel, always notify connection when ACL data received on the link */ - if (p_lcb && p_lcb->transport == BT_TRANSPORT_LE && p_lcb->link_state != LST_DISCONNECTING) - /* only process fixed channel data as channel open indication when link is not in disconnecting mode */ - l2cble_notify_le_connection(p_lcb->remote_bd_addr); -#endif - L2CAP_TRACE_DEBUG ("L2CAP - rcv_cid CID: 0x%04x\n", rcv_cid); - /* Find the CCB for this CID */ - if (rcv_cid >= L2CAP_BASE_APPL_CID) + /* for BLE channel, always notify connection when ACL data received on the link */ + if (p_lcb && p_lcb->transport == BT_TRANSPORT_LE && p_lcb->link_state != LST_DISCONNECTING) + /* only process fixed channel data as channel open indication when link is not in disconnecting mode */ { - if ((p_ccb = l2cu_find_ccb_by_cid (p_lcb, rcv_cid)) == NULL) - { + l2cble_notify_le_connection(p_lcb->remote_bd_addr); + } +#endif + L2CAP_TRACE_DEBUG ("L2CAP - rcv_cid CID: 0x%04x\n", rcv_cid); + /* Find the CCB for this CID */ + if (rcv_cid >= L2CAP_BASE_APPL_CID) { + if ((p_ccb = l2cu_find_ccb_by_cid (p_lcb, rcv_cid)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - unknown CID: 0x%04x", rcv_cid); GKI_freebuf (p_msg); return; } } - if (hci_len >= L2CAP_PKT_OVERHEAD) /* Must receive at least the L2CAP length and CID.*/ - { + if (hci_len >= L2CAP_PKT_OVERHEAD) { /* Must receive at least the L2CAP length and CID.*/ p_msg->len = hci_len - L2CAP_PKT_OVERHEAD; p_msg->offset += L2CAP_PKT_OVERHEAD; - } - else - { + } else { L2CAP_TRACE_WARNING ("L2CAP - got incorrect hci header" ); GKI_freebuf (p_msg); return; } - if (l2cap_len != p_msg->len) - { + if (l2cap_len != p_msg->len) { L2CAP_TRACE_WARNING ("L2CAP - bad length in pkt. Exp: %d Act: %d", - l2cap_len, p_msg->len); + l2cap_len, p_msg->len); GKI_freebuf (p_msg); return; } /* Send the data through the channel state machine */ - if (rcv_cid == L2CAP_SIGNALLING_CID) - { + if (rcv_cid == L2CAP_SIGNALLING_CID) { //counter_add("l2cap.sig.rx.bytes", l2cap_len); //counter_add("l2cap.sig.rx.pkts", 1); process_l2cap_cmd (p_lcb, p, l2cap_len); GKI_freebuf (p_msg); - } - else if (rcv_cid == L2CAP_CONNECTIONLESS_CID) - { + } else if (rcv_cid == L2CAP_CONNECTIONLESS_CID) { //counter_add("l2cap.ch2.rx.bytes", l2cap_len); //counter_add("l2cap.ch2.rx.pkts", 1); /* process_connectionless_data (p_lcb); */ @@ -243,17 +228,14 @@ void l2c_rcv_acl_data (BT_HDR *p_msg) #if (L2CAP_UCD_INCLUDED == TRUE) /* if it is not broadcast, check UCD registration */ - if ( l2c_ucd_check_rx_pkts( p_lcb, p_msg ) ) - { + if ( l2c_ucd_check_rx_pkts( p_lcb, p_msg ) ) { /* nothing to do */ - } - else + } else #endif GKI_freebuf (p_msg); } #if (BLE_INCLUDED == TRUE) - else if (rcv_cid == L2CAP_BLE_SIGNALLING_CID) - { + else if (rcv_cid == L2CAP_BLE_SIGNALLING_CID) { //counter_add("l2cap.ble.rx.bytes", l2cap_len); //counter_add("l2cap.ble.rx.pkts", 1); l2cble_process_sig_cmd (p_lcb, p, l2cap_len); @@ -262,47 +244,43 @@ void l2c_rcv_acl_data (BT_HDR *p_msg) #endif #if (L2CAP_NUM_FIXED_CHNLS > 0) else if ((rcv_cid >= L2CAP_FIRST_FIXED_CHNL) && (rcv_cid <= L2CAP_LAST_FIXED_CHNL) && - (l2cb.fixed_reg[rcv_cid - L2CAP_FIRST_FIXED_CHNL].pL2CA_FixedData_Cb != NULL) ) - { + (l2cb.fixed_reg[rcv_cid - L2CAP_FIRST_FIXED_CHNL].pL2CA_FixedData_Cb != NULL) ) { //counter_add("l2cap.fix.rx.bytes", l2cap_len); //counter_add("l2cap.fix.rx.pkts", 1); /* If no CCB for this channel, allocate one */ if (p_lcb && - /* only process fixed channel data when link is open or wait for data indication */ - (p_lcb->link_state != LST_DISCONNECTING) && - l2cu_initialize_fixed_ccb (p_lcb, rcv_cid, &l2cb.fixed_reg[rcv_cid - L2CAP_FIRST_FIXED_CHNL].fixed_chnl_opts)) - { + /* only process fixed channel data when link is open or wait for data indication */ + (p_lcb->link_state != LST_DISCONNECTING) && + l2cu_initialize_fixed_ccb (p_lcb, rcv_cid, &l2cb.fixed_reg[rcv_cid - L2CAP_FIRST_FIXED_CHNL].fixed_chnl_opts)) { p_ccb = p_lcb->p_fixed_ccbs[rcv_cid - L2CAP_FIRST_FIXED_CHNL]; - if (p_ccb->peer_cfg.fcr.mode != L2CAP_FCR_BASIC_MODE) + if (p_ccb->peer_cfg.fcr.mode != L2CAP_FCR_BASIC_MODE) { l2c_fcr_proc_pdu (p_ccb, p_msg); - else + } else (*l2cb.fixed_reg[rcv_cid - L2CAP_FIRST_FIXED_CHNL].pL2CA_FixedData_Cb) - (rcv_cid, p_lcb->remote_bd_addr, p_msg); - } - else + (rcv_cid, p_lcb->remote_bd_addr, p_msg); + } else { GKI_freebuf (p_msg); + } } #endif - else - { + else { //counter_add("l2cap.dyn.rx.bytes", l2cap_len); //counter_add("l2cap.dyn.rx.pkts", 1); - if (p_ccb == NULL) + if (p_ccb == NULL) { GKI_freebuf (p_msg); - else - { + } else { /* Basic mode packets go straight to the state machine */ - if (p_ccb->peer_cfg.fcr.mode == L2CAP_FCR_BASIC_MODE) + if (p_ccb->peer_cfg.fcr.mode == L2CAP_FCR_BASIC_MODE) { l2c_csm_execute (p_ccb, L2CEVT_L2CAP_DATA, p_msg); - else - { + } else { /* eRTM or streaming mode, so we need to validate states first */ - if ((p_ccb->chnl_state == CST_OPEN) || (p_ccb->chnl_state == CST_CONFIG)) + if ((p_ccb->chnl_state == CST_OPEN) || (p_ccb->chnl_state == CST_CONFIG)) { l2c_fcr_proc_pdu (p_ccb, p_msg); - else + } else { GKI_freebuf (p_msg); + } } } } @@ -334,13 +312,13 @@ static void process_l2cap_cmd (tL2C_LCB *p_lcb, UINT8 *p, UINT16 pkt_len) #if (defined BLE_INCLUDED && BLE_INCLUDED == TRUE) /* if l2cap command received in CID 1 on top of an LE link, ignore this command */ - if (p_lcb->transport == BT_TRANSPORT_LE) + if (p_lcb->transport == BT_TRANSPORT_LE) { return; + } #endif /* Reject the packet if it exceeds the default Signalling Channel MTU */ - if (pkt_len > L2CAP_DEFAULT_MTU) - { + if (pkt_len > L2CAP_DEFAULT_MTU) { /* Core Spec requires a single response to the first command found in a multi-command ** L2cap packet. If only responses in the packet, then it will be ignored. ** Here we simply mark the bad packet and decide which cmd ID to reject later @@ -355,50 +333,46 @@ static void process_l2cap_cmd (tL2C_LCB *p_lcb, UINT8 *p, UINT16 pkt_len) memset (&cfg_info, 0, sizeof(cfg_info)); /* An L2CAP packet may contain multiple commands */ - while (TRUE) - { + while (TRUE) { /* Smallest command is 4 bytes */ - if ((p = p_next_cmd) > (p_pkt_end - 4)) + if ((p = p_next_cmd) > (p_pkt_end - 4)) { break; + } STREAM_TO_UINT8 (cmd_code, p); STREAM_TO_UINT8 (id, p); STREAM_TO_UINT16 (cmd_len, p); /* Check command length does not exceed packet length */ - if ((p_next_cmd = p + cmd_len) > p_pkt_end) - { + if ((p_next_cmd = p + cmd_len) > p_pkt_end) { L2CAP_TRACE_WARNING ("Command len bad pkt_len: %d cmd_len: %d code: %d", - pkt_len, cmd_len, cmd_code); + pkt_len, cmd_len, cmd_code); break; } L2CAP_TRACE_DEBUG ("cmd_code: %d, id:%d, cmd_len:%d", cmd_code, id, cmd_len); /* Bad L2CAP packet length, look or cmd to reject */ - if (pkt_size_rej) - { + if (pkt_size_rej) { /* If command found rejected it and we're done, otherwise keep looking */ - if (l2c_is_cmd_rejected(cmd_code, id, p_lcb)) + if (l2c_is_cmd_rejected(cmd_code, id, p_lcb)) { return; - else - continue; /* Look for next cmd/response in current packet */ + } else { + continue; /* Look for next cmd/response in current packet */ + } } - switch (cmd_code) - { + switch (cmd_code) { case L2CAP_CMD_REJECT: STREAM_TO_UINT16 (rej_reason, p); - if (rej_reason == L2CAP_CMD_REJ_MTU_EXCEEDED) - { + if (rej_reason == L2CAP_CMD_REJ_MTU_EXCEEDED) { STREAM_TO_UINT16 (rej_mtu, p); /* What to do with the MTU reject ? We have negotiated an MTU. For now */ /* we will ignore it and let a higher protocol timeout take care of it */ L2CAP_TRACE_WARNING ("L2CAP - MTU rej Handle: %d MTU: %d", p_lcb->handle, rej_mtu); } - if (rej_reason == L2CAP_CMD_REJ_INVALID_CID) - { + if (rej_reason == L2CAP_CMD_REJ_INVALID_CID) { STREAM_TO_UINT16 (rcid, p); STREAM_TO_UINT16 (lcid, p); @@ -406,16 +380,14 @@ static void process_l2cap_cmd (tL2C_LCB *p_lcb, UINT8 *p, UINT16 pkt_len) /* Remote CID invalid. Treat as a disconnect */ if (((p_ccb = l2cu_find_ccb_by_cid (p_lcb, lcid)) != NULL) - && (p_ccb->remote_cid == rcid)) - { + && (p_ccb->remote_cid == rcid)) { /* Fake link disconnect - no reply is generated */ l2c_csm_execute (p_ccb, L2CEVT_LP_DISCONNECT_IND, NULL); } } /* SonyEricsson Info request Bug workaround (Continue connection) */ - else if (rej_reason == L2CAP_CMD_REJ_NOT_UNDERSTOOD && p_lcb->w4_info_rsp) - { + else if (rej_reason == L2CAP_CMD_REJ_NOT_UNDERSTOOD && p_lcb->w4_info_rsp) { btu_stop_timer (&p_lcb->info_timer_entry); p_lcb->w4_info_rsp = FALSE; @@ -423,8 +395,7 @@ static void process_l2cap_cmd (tL2C_LCB *p_lcb, UINT8 *p, UINT16 pkt_len) memcpy (ci.bd_addr, p_lcb->remote_bd_addr, sizeof(BD_ADDR)); /* For all channels, send the event through their FSMs */ - for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; p_ccb = p_ccb->p_next_ccb) - { + for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; p_ccb = p_ccb->p_next_ccb) { l2c_csm_execute (p_ccb, L2CEVT_L2CAP_INFO_RSP, &ci); } } @@ -433,23 +404,18 @@ static void process_l2cap_cmd (tL2C_LCB *p_lcb, UINT8 *p, UINT16 pkt_len) case L2CAP_CMD_CONN_REQ: STREAM_TO_UINT16 (con_info.psm, p); STREAM_TO_UINT16 (rcid, p); - if ((p_rcb = l2cu_find_rcb_by_psm (con_info.psm)) == NULL) - { + if ((p_rcb = l2cu_find_rcb_by_psm (con_info.psm)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - rcvd conn req for unknown PSM: %d", con_info.psm); l2cu_reject_connection (p_lcb, rcid, id, L2CAP_CONN_NO_PSM); break; - } - else - { - if (!p_rcb->api.pL2CA_ConnectInd_Cb) - { + } else { + if (!p_rcb->api.pL2CA_ConnectInd_Cb) { L2CAP_TRACE_WARNING ("L2CAP - rcvd conn req for outgoing-only connection PSM: %d", con_info.psm); l2cu_reject_connection (p_lcb, rcid, id, L2CAP_CONN_NO_PSM); break; } } - if ((p_ccb = l2cu_allocate_ccb (p_lcb, 0)) == NULL) - { + if ((p_ccb = l2cu_allocate_ccb (p_lcb, 0)) == NULL) { L2CAP_TRACE_ERROR ("L2CAP - unable to allocate CCB"); l2cu_reject_connection (p_lcb, rcid, id, L2CAP_CONN_NO_RESOURCES); break; @@ -467,25 +433,24 @@ static void process_l2cap_cmd (tL2C_LCB *p_lcb, UINT8 *p, UINT16 pkt_len) STREAM_TO_UINT16 (con_info.l2cap_result, p); STREAM_TO_UINT16 (con_info.l2cap_status, p); - if ((p_ccb = l2cu_find_ccb_by_cid (p_lcb, lcid)) == NULL) - { + if ((p_ccb = l2cu_find_ccb_by_cid (p_lcb, lcid)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no CCB for conn rsp, LCID: %d RCID: %d", - lcid, con_info.remote_cid); + lcid, con_info.remote_cid); break; } - if (p_ccb->local_id != id) - { + if (p_ccb->local_id != id) { L2CAP_TRACE_WARNING ("L2CAP - con rsp - bad ID. Exp: %d Got: %d", - p_ccb->local_id, id); + p_ccb->local_id, id); break; } - if (con_info.l2cap_result == L2CAP_CONN_OK) + if (con_info.l2cap_result == L2CAP_CONN_OK) { l2c_csm_execute(p_ccb, L2CEVT_L2CAP_CONNECT_RSP, &con_info); - else if (con_info.l2cap_result == L2CAP_CONN_PENDING) + } else if (con_info.l2cap_result == L2CAP_CONN_PENDING) { l2c_csm_execute(p_ccb, L2CEVT_L2CAP_CONNECT_RSP_PND, &con_info); - else + } else { l2c_csm_execute(p_ccb, L2CEVT_L2CAP_CONNECT_RSP_NEG, &con_info); + } break; @@ -500,15 +465,13 @@ static void process_l2cap_cmd (tL2C_LCB *p_lcb, UINT8 *p, UINT16 pkt_len) p_cfg_start = p; cfg_info.flush_to_present = cfg_info.mtu_present = cfg_info.qos_present = - cfg_info.fcr_present = cfg_info.fcs_present = FALSE; + cfg_info.fcr_present = cfg_info.fcs_present = FALSE; - while (p < p_cfg_end) - { + while (p < p_cfg_end) { STREAM_TO_UINT8 (cfg_code, p); STREAM_TO_UINT8 (cfg_len, p); - switch (cfg_code & 0x7F) - { + switch (cfg_code & 0x7F) { case L2CAP_CFG_TYPE_MTU: cfg_info.mtu_present = TRUE; STREAM_TO_UINT16 (cfg_info.mtu, p); @@ -557,18 +520,15 @@ static void process_l2cap_cmd (tL2C_LCB *p_lcb, UINT8 *p, UINT16 pkt_len) default: /* sanity check option length */ - if ((cfg_len + L2CAP_CFG_OPTION_OVERHEAD) <= cmd_len) - { + if ((cfg_len + L2CAP_CFG_OPTION_OVERHEAD) <= cmd_len) { p += cfg_len; - if ((cfg_code & 0x80) == 0) - { + if ((cfg_code & 0x80) == 0) { cfg_rej_len += cfg_len + L2CAP_CFG_OPTION_OVERHEAD; cfg_rej = TRUE; } } /* bad length; force loop exit */ - else - { + else { p = p_cfg_end; cfg_rej = TRUE; } @@ -576,20 +536,14 @@ static void process_l2cap_cmd (tL2C_LCB *p_lcb, UINT8 *p, UINT16 pkt_len) } } - if ((p_ccb = l2cu_find_ccb_by_cid (p_lcb, lcid)) != NULL) - { + if ((p_ccb = l2cu_find_ccb_by_cid (p_lcb, lcid)) != NULL) { p_ccb->remote_id = id; - if (cfg_rej) - { + if (cfg_rej) { l2cu_send_peer_config_rej (p_ccb, p_cfg_start, (UINT16) (cmd_len - L2CAP_CONFIG_REQ_LEN), cfg_rej_len); - } - else - { + } else { l2c_csm_execute (p_ccb, L2CEVT_L2CAP_CONFIG_REQ, &cfg_info); } - } - else - { + } else { /* updated spec says send command reject on invalid cid */ l2cu_send_peer_cmd_reject (p_lcb, L2CAP_CMD_REJ_INVALID_CID, id, 0, 0); } @@ -602,15 +556,13 @@ static void process_l2cap_cmd (tL2C_LCB *p_lcb, UINT8 *p, UINT16 pkt_len) STREAM_TO_UINT16 (cfg_info.result, p); cfg_info.flush_to_present = cfg_info.mtu_present = cfg_info.qos_present = - cfg_info.fcr_present = cfg_info.fcs_present = FALSE; + cfg_info.fcr_present = cfg_info.fcs_present = FALSE; - while (p < p_cfg_end) - { + while (p < p_cfg_end) { STREAM_TO_UINT8 (cfg_code, p); STREAM_TO_UINT8 (cfg_len, p); - switch (cfg_code & 0x7F) - { + switch (cfg_code & 0x7F) { case L2CAP_CFG_TYPE_MTU: cfg_info.mtu_present = TRUE; STREAM_TO_UINT16 (cfg_info.mtu, p); @@ -659,21 +611,18 @@ static void process_l2cap_cmd (tL2C_LCB *p_lcb, UINT8 *p, UINT16 pkt_len) } } - if ((p_ccb = l2cu_find_ccb_by_cid (p_lcb, lcid)) != NULL) - { - if (p_ccb->local_id != id) - { + if ((p_ccb = l2cu_find_ccb_by_cid (p_lcb, lcid)) != NULL) { + if (p_ccb->local_id != id) { L2CAP_TRACE_WARNING ("L2CAP - cfg rsp - bad ID. Exp: %d Got: %d", - p_ccb->local_id, id); + p_ccb->local_id, id); break; } - if ( (cfg_info.result == L2CAP_CFG_OK) || (cfg_info.result == L2CAP_CFG_PENDING) ) + if ( (cfg_info.result == L2CAP_CFG_OK) || (cfg_info.result == L2CAP_CFG_PENDING) ) { l2c_csm_execute (p_ccb, L2CEVT_L2CAP_CONFIG_RSP, &cfg_info); - else + } else { l2c_csm_execute (p_ccb, L2CEVT_L2CAP_CONFIG_RSP_NEG, &cfg_info); - } - else - { + } + } else { L2CAP_TRACE_WARNING ("L2CAP - rcvd cfg rsp for unknown CID: 0x%04x", lcid); } break; @@ -683,16 +632,14 @@ static void process_l2cap_cmd (tL2C_LCB *p_lcb, UINT8 *p, UINT16 pkt_len) STREAM_TO_UINT16 (lcid, p); STREAM_TO_UINT16 (rcid, p); - if ((p_ccb = l2cu_find_ccb_by_cid (p_lcb, lcid)) != NULL) - { - if (p_ccb->remote_cid == rcid) - { + if ((p_ccb = l2cu_find_ccb_by_cid (p_lcb, lcid)) != NULL) { + if (p_ccb->remote_cid == rcid) { p_ccb->remote_id = id; l2c_csm_execute (p_ccb, L2CEVT_L2CAP_DISCONNECT_REQ, &con_info); } - } - else + } else { l2cu_send_peer_disc_rsp (p_lcb, id, lcid, rcid); + } break; @@ -700,10 +647,8 @@ static void process_l2cap_cmd (tL2C_LCB *p_lcb, UINT8 *p, UINT16 pkt_len) STREAM_TO_UINT16 (rcid, p); STREAM_TO_UINT16 (lcid, p); - if ((p_ccb = l2cu_find_ccb_by_cid (p_lcb, lcid)) != NULL) - { - if ((p_ccb->remote_cid == rcid) && (p_ccb->local_id == id)) - { + if ((p_ccb = l2cu_find_ccb_by_cid (p_lcb, lcid)) != NULL) { + if ((p_ccb->remote_cid == rcid) && (p_ccb->local_id == id)) { l2c_csm_execute (p_ccb, L2CEVT_L2CAP_DISCONNECT_RSP, &con_info); } } @@ -714,8 +659,7 @@ static void process_l2cap_cmd (tL2C_LCB *p_lcb, UINT8 *p, UINT16 pkt_len) break; case L2CAP_CMD_ECHO_RSP: - if (p_lcb->p_echo_rsp_cb) - { + if (p_lcb->p_echo_rsp_cb) { tL2CA_ECHO_RSP_CB *p_cb = p_lcb->p_echo_rsp_cb; /* Zero out the callback in case app immediately calls us again */ @@ -732,8 +676,7 @@ static void process_l2cap_cmd (tL2C_LCB *p_lcb, UINT8 *p, UINT16 pkt_len) case L2CAP_CMD_INFO_RSP: /* Stop the link connect timer if sent before L2CAP connection is up */ - if (p_lcb->w4_info_rsp) - { + if (p_lcb->w4_info_rsp) { btu_stop_timer (&p_lcb->info_timer_entry); p_lcb->w4_info_rsp = FALSE; } @@ -744,18 +687,14 @@ static void process_l2cap_cmd (tL2C_LCB *p_lcb, UINT8 *p, UINT16 pkt_len) p_lcb->info_rx_bits |= (1 << info_type); if ( (info_type == L2CAP_EXTENDED_FEATURES_INFO_TYPE) - && (result == L2CAP_INFO_RESP_RESULT_SUCCESS) ) - { + && (result == L2CAP_INFO_RESP_RESULT_SUCCESS) ) { STREAM_TO_UINT32( p_lcb->peer_ext_fea, p ); #if (L2CAP_NUM_FIXED_CHNLS > 0) - if (p_lcb->peer_ext_fea & L2CAP_EXTFEA_FIXED_CHNLS) - { + if (p_lcb->peer_ext_fea & L2CAP_EXTFEA_FIXED_CHNLS) { l2cu_send_peer_info_req (p_lcb, L2CAP_FIXED_CHANNELS_INFO_TYPE); break; - } - else - { + } else { l2cu_process_fixed_chnl_resp (p_lcb); } #endif @@ -763,10 +702,8 @@ static void process_l2cap_cmd (tL2C_LCB *p_lcb, UINT8 *p, UINT16 pkt_len) #if (L2CAP_NUM_FIXED_CHNLS > 0) - if (info_type == L2CAP_FIXED_CHANNELS_INFO_TYPE) - { - if (result == L2CAP_INFO_RESP_RESULT_SUCCESS) - { + if (info_type == L2CAP_FIXED_CHANNELS_INFO_TYPE) { + if (result == L2CAP_INFO_RESP_RESULT_SUCCESS) { memcpy (p_lcb->peer_chnl_mask, p, L2CAP_FIXED_CHNL_ARRAY_SIZE); } @@ -774,10 +711,8 @@ static void process_l2cap_cmd (tL2C_LCB *p_lcb, UINT8 *p, UINT16 pkt_len) } #endif #if (L2CAP_UCD_INCLUDED == TRUE) - else if (info_type == L2CAP_CONNLESS_MTU_INFO_TYPE) - { - if (result == L2CAP_INFO_RESP_RESULT_SUCCESS) - { + else if (info_type == L2CAP_CONNLESS_MTU_INFO_TYPE) { + if (result == L2CAP_INFO_RESP_RESULT_SUCCESS) { STREAM_TO_UINT16 (p_lcb->ucd_mtu, p); } } @@ -785,8 +720,7 @@ static void process_l2cap_cmd (tL2C_LCB *p_lcb, UINT8 *p, UINT16 pkt_len) ci.status = HCI_SUCCESS; memcpy (ci.bd_addr, p_lcb->remote_bd_addr, sizeof(BD_ADDR)); - for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; p_ccb = p_ccb->p_next_ccb) - { + for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; p_ccb = p_ccb->p_next_ccb) { l2c_csm_execute (p_ccb, L2CEVT_L2CAP_INFO_RSP, &ci); } break; @@ -810,9 +744,11 @@ static void process_l2cap_cmd (tL2C_LCB *p_lcb, UINT8 *p, UINT16 pkt_len) ** Returns void ** *******************************************************************************/ -void l2c_process_held_packets(BOOLEAN timed_out) { - if (list_is_empty(l2cb.rcv_pending_q)) +void l2c_process_held_packets(BOOLEAN timed_out) +{ + if (list_is_empty(l2cb.rcv_pending_q)) { return; + } if (!timed_out) { btu_stop_timer(&l2cb.rcv_hold_tle); @@ -822,7 +758,7 @@ void l2c_process_held_packets(BOOLEAN timed_out) { } for (const list_node_t *node = list_begin(l2cb.rcv_pending_q); - node != list_end(l2cb.rcv_pending_q);) { + node != list_end(l2cb.rcv_pending_q);) { BT_HDR *p_buf = list_node(node); node = list_next(node); if (!timed_out || (!p_buf->layer_specific) || (--p_buf->layer_specific == 0)) { @@ -833,8 +769,9 @@ void l2c_process_held_packets(BOOLEAN timed_out) { } /* If anyone still in the queue, restart the timeout */ - if (!list_is_empty(l2cb.rcv_pending_q)) + if (!list_is_empty(l2cb.rcv_pending_q)) { btu_start_timer (&l2cb.rcv_hold_tle, BTU_TTYPE_L2CAP_HOLD, BT_1SEC_TIMEOUT); + } } @@ -857,8 +794,7 @@ void l2c_init (void) l2cb.dyn_psm = 0xFFF; /* Put all the channel control blocks on the free queue */ - for (xx = 0; xx < MAX_L2CAP_CHANNELS - 1; xx++) - { + for (xx = 0; xx < MAX_L2CAP_CHANNELS - 1; xx++) { l2cb.ccb_pool[xx].p_next_ccb = &l2cb.ccb_pool[xx + 1]; } @@ -887,7 +823,7 @@ void l2c_init (void) #endif #if L2CAP_CONFORMANCE_TESTING == TRUE - /* Conformance testing needs a dynamic response */ + /* Conformance testing needs a dynamic response */ l2cb.test_info_resp = L2CAP_EXTFEA_SUPPORTED_MASK; #endif @@ -898,15 +834,17 @@ void l2c_init (void) #if BLE_INCLUDED == TRUE l2cb.l2c_ble_fixed_chnls_mask = - L2CAP_FIXED_CHNL_ATT_BIT | L2CAP_FIXED_CHNL_BLE_SIG_BIT | L2CAP_FIXED_CHNL_SMP_BIT; + L2CAP_FIXED_CHNL_ATT_BIT | L2CAP_FIXED_CHNL_BLE_SIG_BIT | L2CAP_FIXED_CHNL_SMP_BIT; #endif l2cb.rcv_pending_q = list_new(NULL); - if (l2cb.rcv_pending_q == NULL) + if (l2cb.rcv_pending_q == NULL) { LOG_ERROR("%s unable to allocate memory for link layer control block", __func__); + } } -void l2c_free(void) { +void l2c_free(void) +{ list_free(l2cb.rcv_pending_q); } @@ -922,8 +860,7 @@ void l2c_free(void) { void l2c_process_timeout (TIMER_LIST_ENT *p_tle) { /* What type of timeout ? */ - switch (p_tle->event) - { + switch (p_tle->event) { case BTU_TTYPE_L2CAP_LINK: l2c_link_timeout ((tL2C_LCB *)p_tle->param); break; @@ -963,8 +900,7 @@ UINT8 l2c_data_write (UINT16 cid, BT_HDR *p_data, UINT16 flags) tL2C_CCB *p_ccb; /* Find the channel control block. We don't know the link it is on. */ - if ((p_ccb = l2cu_find_ccb_by_cid (NULL, cid)) == NULL) - { + if ((p_ccb = l2cu_find_ccb_by_cid (NULL, cid)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no CCB for L2CA_DataWrite, CID: %d", cid); GKI_freebuf (p_data); return (L2CAP_DW_FAILED); @@ -972,8 +908,7 @@ UINT8 l2c_data_write (UINT16 cid, BT_HDR *p_data, UINT16 flags) #ifndef TESTER /* Tester may send any amount of data. otherwise sending message bigger than mtu size of peer is a violation of protocol */ - if (p_data->len > p_ccb->peer_cfg.mtu) - { + if (p_data->len > p_ccb->peer_cfg.mtu) { L2CAP_TRACE_WARNING ("L2CAP - CID: 0x%04x cannot send message bigger than peer's mtu size", cid); GKI_freebuf (p_data); return (L2CAP_DW_FAILED); @@ -984,10 +919,9 @@ UINT8 l2c_data_write (UINT16 cid, BT_HDR *p_data, UINT16 flags) p_data->layer_specific = flags; /* If already congested, do not accept any more packets */ - if (p_ccb->cong_sent) - { + if (p_ccb->cong_sent) { L2CAP_TRACE_ERROR ("L2CAP - CID: 0x%04x cannot send, already congested xmit_hold_q.count: %u buff_quota: %u", - p_ccb->local_cid, GKI_queue_length(&p_ccb->xmit_hold_q), p_ccb->buff_quota); + p_ccb->local_cid, GKI_queue_length(&p_ccb->xmit_hold_q), p_ccb->buff_quota); GKI_freebuf (p_data); return (L2CAP_DW_FAILED); @@ -998,8 +932,9 @@ UINT8 l2c_data_write (UINT16 cid, BT_HDR *p_data, UINT16 flags) l2c_csm_execute (p_ccb, L2CEVT_L2CA_DATA_WRITE, p_data); - if (p_ccb->cong_sent) + if (p_ccb->cong_sent) { return (L2CAP_DW_CONGESTED); + } return (L2CAP_DW_SUCCESS); } diff --git a/components/bt/bluedroid/stack/l2cap/l2c_ucd.c b/components/bt/bluedroid/stack/l2cap/l2c_ucd.c old mode 100755 new mode 100644 index 8118a708c4..9340ed24f6 --- a/components/bt/bluedroid/stack/l2cap/l2c_ucd.c +++ b/components/bt/bluedroid/stack/l2cap/l2c_ucd.c @@ -55,22 +55,18 @@ static void l2c_ucd_discover_cback (BD_ADDR rem_bda, UINT8 info_type, UINT32 dat L2CAP_TRACE_DEBUG ("L2CAP - l2c_ucd_discover_cback"); - for (xx = 0; xx < MAX_L2CAP_CLIENTS; xx++, p_rcb++) - { - if (p_rcb->in_use) - { + for (xx = 0; xx < MAX_L2CAP_CLIENTS; xx++, p_rcb++) { + if (p_rcb->in_use) { /* if this application is waiting UCD reception info */ if (( info_type == L2CAP_UCD_INFO_TYPE_RECEPTION ) - && ( p_rcb->ucd.state & L2C_UCD_STATE_W4_RECEPTION )) - { + && ( p_rcb->ucd.state & L2C_UCD_STATE_W4_RECEPTION )) { p_rcb->ucd.cb_info.pL2CA_UCD_Discover_Cb (rem_bda, info_type, data); p_rcb->ucd.state &= ~(L2C_UCD_STATE_W4_RECEPTION); } /* if this application is waiting UCD MTU info */ if (( info_type == L2CAP_UCD_INFO_TYPE_MTU ) - && ( p_rcb->ucd.state & L2C_UCD_STATE_W4_MTU )) - { + && ( p_rcb->ucd.state & L2C_UCD_STATE_W4_MTU )) { p_rcb->ucd.cb_info.pL2CA_UCD_Discover_Cb (rem_bda, info_type, data); p_rcb->ucd.state &= ~(L2C_UCD_STATE_W4_MTU); } @@ -101,13 +97,10 @@ static void l2c_ucd_data_ind_cback (BD_ADDR rem_bda, BT_HDR *p_buf) p_buf->offset += L2CAP_UCD_OVERHEAD; p_buf->len -= L2CAP_UCD_OVERHEAD; - if ((p_rcb = l2cu_find_rcb_by_psm (psm)) == NULL) - { + if ((p_rcb = l2cu_find_rcb_by_psm (psm)) == NULL) { L2CAP_TRACE_ERROR ("L2CAP - no RCB for l2c_ucd_data_ind_cback, PSM: 0x%04x", psm); GKI_freebuf (p_buf); - } - else - { + } else { p_rcb->ucd.cb_info.pL2CA_UCD_Data_Cb(rem_bda, p_buf); } } @@ -128,17 +121,14 @@ static void l2c_ucd_congestion_status_cback (BD_ADDR rem_bda, BOOLEAN is_congest L2CAP_TRACE_DEBUG ("L2CAP - l2c_ucd_congestion_status_cback"); - for (xx = 0; xx < MAX_L2CAP_CLIENTS; xx++, p_rcb++) - { + for (xx = 0; xx < MAX_L2CAP_CLIENTS; xx++, p_rcb++) { if (( p_rcb->in_use ) - &&( p_rcb->ucd.state != L2C_UCD_STATE_UNUSED )) - { - if ( p_rcb->ucd.cb_info.pL2CA_UCD_Congestion_Status_Cb ) - { + && ( p_rcb->ucd.state != L2C_UCD_STATE_UNUSED )) { + if ( p_rcb->ucd.cb_info.pL2CA_UCD_Congestion_Status_Cb ) { L2CAP_TRACE_DEBUG ("L2CAP - Calling UCDCongestionStatus_Cb (%d), PSM=0x%04x, BDA: %08x%04x,", - is_congested, p_rcb->psm, - (rem_bda[0]<<24)+(rem_bda[1]<<16)+(rem_bda[2]<<8)+rem_bda[3], - (rem_bda[4]<<8)+rem_bda[5]); + is_congested, p_rcb->psm, + (rem_bda[0] << 24) + (rem_bda[1] << 16) + (rem_bda[2] << 8) + rem_bda[3], + (rem_bda[4] << 8) + rem_bda[5]); p_rcb->ucd.cb_info.pL2CA_UCD_Congestion_Status_Cb ( rem_bda, is_congested ); } @@ -206,14 +196,12 @@ BOOLEAN L2CA_UcdRegister ( UINT16 psm, tL2CAP_UCD_CB_INFO *p_cb_info ) L2CAP_TRACE_API ("L2CA_UcdRegister() PSM: 0x%04x", psm); if ((!p_cb_info->pL2CA_UCD_Discover_Cb) - || (!p_cb_info->pL2CA_UCD_Data_Cb)) - { + || (!p_cb_info->pL2CA_UCD_Data_Cb)) { L2CAP_TRACE_ERROR ("L2CAP - no callback registering PSM(0x%04x) on UCD", psm); return (FALSE); } - if ((p_rcb = l2cu_find_rcb_by_psm (psm)) == NULL) - { + if ((p_rcb = l2cu_find_rcb_by_psm (psm)) == NULL) { L2CAP_TRACE_ERROR ("L2CAP - no RCB for L2CA_UcdRegister, PSM: 0x%04x", psm); return (FALSE); } @@ -222,15 +210,11 @@ BOOLEAN L2CA_UcdRegister ( UINT16 psm, tL2CAP_UCD_CB_INFO *p_cb_info ) p_rcb->ucd.cb_info = *p_cb_info; /* check if master rcb is created for UCD */ - if ((p_rcb = l2cu_find_rcb_by_psm (L2C_UCD_RCB_ID)) == NULL) - { - if ((p_rcb = l2cu_allocate_rcb (L2C_UCD_RCB_ID)) == NULL) - { + if ((p_rcb = l2cu_find_rcb_by_psm (L2C_UCD_RCB_ID)) == NULL) { + if ((p_rcb = l2cu_allocate_rcb (L2C_UCD_RCB_ID)) == NULL) { L2CAP_TRACE_ERROR ("L2CAP - no RCB available for L2CA_UcdRegister"); return (FALSE); - } - else - { + } else { /* these callback functions will forward data to each UCD application */ p_rcb->ucd.cb_info.pL2CA_UCD_Discover_Cb = l2c_ucd_discover_cback; p_rcb->ucd.cb_info.pL2CA_UCD_Data_Cb = l2c_ucd_data_ind_cback; @@ -270,8 +254,7 @@ BOOLEAN L2CA_UcdDeregister ( UINT16 psm ) L2CAP_TRACE_API ("L2CA_UcdDeregister() PSM: 0x%04x", psm); - if ((p_rcb = l2cu_find_rcb_by_psm (psm)) == NULL) - { + if ((p_rcb = l2cu_find_rcb_by_psm (psm)) == NULL) { L2CAP_TRACE_ERROR ("L2CAP - no RCB for L2CA_UcdDeregister, PSM: 0x%04x", psm); return (FALSE); } @@ -281,25 +264,22 @@ BOOLEAN L2CA_UcdDeregister ( UINT16 psm ) /* check this was the last UCD registration */ p_rcb = &l2cb.rcb_pool[0]; - for (xx = 0; xx < MAX_L2CAP_CLIENTS; xx++, p_rcb++) - { - if ((p_rcb->in_use) && (p_rcb->ucd.state != L2C_UCD_STATE_UNUSED)) + for (xx = 0; xx < MAX_L2CAP_CLIENTS; xx++, p_rcb++) { + if ((p_rcb->in_use) && (p_rcb->ucd.state != L2C_UCD_STATE_UNUSED)) { return (TRUE); + } } /* delete master rcb for UCD */ - if ((p_rcb = l2cu_find_rcb_by_psm (L2C_UCD_RCB_ID)) != NULL) - { + if ((p_rcb = l2cu_find_rcb_by_psm (L2C_UCD_RCB_ID)) != NULL) { l2cu_release_rcb (p_rcb); } /* delete CCB for UCD */ p_ccb = l2cb.ccb_pool; - for ( xx = 0; xx < MAX_L2CAP_CHANNELS; xx++ ) - { + for ( xx = 0; xx < MAX_L2CAP_CHANNELS; xx++ ) { if (( p_ccb->in_use ) - &&( p_ccb->local_cid == L2CAP_CONNECTIONLESS_CID )) - { + && ( p_ccb->local_cid == L2CAP_CONNECTIONLESS_CID )) { l2cu_release_ccb (p_ccb); } p_ccb++; @@ -330,13 +310,12 @@ BOOLEAN L2CA_UcdDiscover ( UINT16 psm, BD_ADDR rem_bda, UINT8 info_type ) tL2C_RCB *p_rcb; L2CAP_TRACE_API ("L2CA_UcdDiscover() PSM: 0x%04x BDA: %08x%04x, InfoType=0x%02x", psm, - (rem_bda[0]<<24)+(rem_bda[1]<<16)+(rem_bda[2]<<8)+rem_bda[3], - (rem_bda[4]<<8)+rem_bda[5], info_type); + (rem_bda[0] << 24) + (rem_bda[1] << 16) + (rem_bda[2] << 8) + rem_bda[3], + (rem_bda[4] << 8) + rem_bda[5], info_type); /* Fail if the PSM is not registered */ if (((p_rcb = l2cu_find_rcb_by_psm (psm)) == NULL) - ||( p_rcb->ucd.state == L2C_UCD_STATE_UNUSED )) - { + || ( p_rcb->ucd.state == L2C_UCD_STATE_UNUSED )) { L2CAP_TRACE_WARNING ("L2CAP - no RCB for L2CA_UcdDiscover, PSM: 0x%04x", psm); return (FALSE); } @@ -344,27 +323,25 @@ BOOLEAN L2CA_UcdDiscover ( UINT16 psm, BD_ADDR rem_bda, UINT8 info_type ) /* First, see if we already have a link to the remote */ /* then find the channel control block for UCD. */ if (((p_lcb = l2cu_find_lcb_by_bd_addr (rem_bda, BT_TRANSPORT_BR_EDR)) == NULL) - ||((p_ccb = l2cu_find_ccb_by_cid (p_lcb, L2CAP_CONNECTIONLESS_CID)) == NULL)) - { - if ( l2c_ucd_connect (rem_bda) == FALSE ) - { + || ((p_ccb = l2cu_find_ccb_by_cid (p_lcb, L2CAP_CONNECTIONLESS_CID)) == NULL)) { + if ( l2c_ucd_connect (rem_bda) == FALSE ) { return (FALSE); } } /* set waiting flags in rcb */ - if ( info_type & L2CAP_UCD_INFO_TYPE_RECEPTION ) + if ( info_type & L2CAP_UCD_INFO_TYPE_RECEPTION ) { p_rcb->ucd.state |= L2C_UCD_STATE_W4_RECEPTION; + } - if ( info_type & L2CAP_UCD_INFO_TYPE_MTU ) + if ( info_type & L2CAP_UCD_INFO_TYPE_MTU ) { p_rcb->ucd.state |= L2C_UCD_STATE_W4_MTU; + } /* if link is already established */ - if ((p_lcb)&&(p_lcb->link_state == LST_CONNECTED)) - { - if (!p_ccb) - { + if ((p_lcb) && (p_lcb->link_state == LST_CONNECTED)) { + if (!p_ccb) { p_ccb = l2cu_find_ccb_by_cid (p_lcb, L2CAP_CONNECTIONLESS_CID); } l2c_ucd_check_pending_info_req(p_ccb); @@ -397,13 +374,12 @@ UINT16 L2CA_UcdDataWrite (UINT16 psm, BD_ADDR rem_bda, BT_HDR *p_buf, UINT16 fla UINT8 *p; L2CAP_TRACE_API ("L2CA_UcdDataWrite() PSM: 0x%04x BDA: %08x%04x", psm, - (rem_bda[0]<<24)+(rem_bda[1]<<16)+(rem_bda[2]<<8)+rem_bda[3], - (rem_bda[4]<<8)+rem_bda[5]); + (rem_bda[0] << 24) + (rem_bda[1] << 16) + (rem_bda[2] << 8) + rem_bda[3], + (rem_bda[4] << 8) + rem_bda[5]); /* Fail if the PSM is not registered */ if (((p_rcb = l2cu_find_rcb_by_psm (psm)) == NULL) - ||( p_rcb->ucd.state == L2C_UCD_STATE_UNUSED )) - { + || ( p_rcb->ucd.state == L2C_UCD_STATE_UNUSED )) { L2CAP_TRACE_WARNING ("L2CAP - no RCB for L2CA_UcdDataWrite, PSM: 0x%04x", psm); GKI_freebuf (p_buf); return (L2CAP_DW_FAILED); @@ -412,18 +388,15 @@ UINT16 L2CA_UcdDataWrite (UINT16 psm, BD_ADDR rem_bda, BT_HDR *p_buf, UINT16 fla /* First, see if we already have a link to the remote */ /* then find the channel control block for UCD */ if (((p_lcb = l2cu_find_lcb_by_bd_addr (rem_bda, BT_TRANSPORT_BR_EDR)) == NULL) - ||((p_ccb = l2cu_find_ccb_by_cid (p_lcb, L2CAP_CONNECTIONLESS_CID)) == NULL)) - { - if ( l2c_ucd_connect (rem_bda) == FALSE ) - { + || ((p_ccb = l2cu_find_ccb_by_cid (p_lcb, L2CAP_CONNECTIONLESS_CID)) == NULL)) { + if ( l2c_ucd_connect (rem_bda) == FALSE ) { GKI_freebuf (p_buf); return (L2CAP_DW_FAILED); } /* If we still don't have lcb and ccb after connect attempt, then can't proceed */ if (((p_lcb = l2cu_find_lcb_by_bd_addr (rem_bda, BT_TRANSPORT_BR_EDR)) == NULL) - || ((p_ccb = l2cu_find_ccb_by_cid (p_lcb, L2CAP_CONNECTIONLESS_CID)) == NULL)) - { + || ((p_ccb = l2cu_find_ccb_by_cid (p_lcb, L2CAP_CONNECTIONLESS_CID)) == NULL)) { GKI_freebuf (p_buf); return (L2CAP_DW_FAILED); } @@ -437,20 +410,18 @@ UINT16 L2CA_UcdDataWrite (UINT16 psm, BD_ADDR rem_bda, BT_HDR *p_buf, UINT16 fla UINT16_TO_STREAM (p, psm); /* UCD MTU check */ - if ((p_lcb->ucd_mtu) && (p_buf->len > p_lcb->ucd_mtu)) - { + if ((p_lcb->ucd_mtu) && (p_buf->len > p_lcb->ucd_mtu)) { L2CAP_TRACE_WARNING ("L2CAP - Handle: 0x%04x UCD bigger than peer's UCD mtu size cannot be sent", p_lcb->handle); GKI_freebuf (p_buf); return (L2CAP_DW_FAILED); } /* If already congested, do not accept any more packets */ - if (p_ccb->cong_sent) - { + if (p_ccb->cong_sent) { L2CAP_TRACE_ERROR ("L2CAP - Handle: 0x%04x UCD cannot be sent, already congested count: %u buff_quota: %u", - p_lcb->handle, - (p_ccb->xmit_hold_q.count + p_lcb->ucd_out_sec_pending_q.count), - p_ccb->buff_quota); + p_lcb->handle, + (p_ccb->xmit_hold_q.count + p_lcb->ucd_out_sec_pending_q.count), + p_ccb->buff_quota); GKI_freebuf (p_buf); return (L2CAP_DW_FAILED); @@ -461,10 +432,11 @@ UINT16 L2CA_UcdDataWrite (UINT16 psm, BD_ADDR rem_bda, BT_HDR *p_buf, UINT16 fla l2c_csm_execute (p_ccb, L2CEVT_L2CA_DATA_WRITE, p_buf); - if (p_ccb->cong_sent) + if (p_ccb->cong_sent) { return (L2CAP_DW_CONGESTED); - else + } else { return (L2CAP_DW_SUCCESS); + } } /******************************************************************************* @@ -485,19 +457,16 @@ BOOLEAN L2CA_UcdSetIdleTimeout ( BD_ADDR rem_bda, UINT16 timeout ) tL2C_CCB *p_ccb; L2CAP_TRACE_API ("L2CA_UcdSetIdleTimeout() Timeout: 0x%04x BDA: %08x%04x", timeout, - (rem_bda[0]<<24)+(rem_bda[1]<<16)+(rem_bda[2]<<8)+rem_bda[3], - (rem_bda[4]<<8)+rem_bda[5]); + (rem_bda[0] << 24) + (rem_bda[1] << 16) + (rem_bda[2] << 8) + rem_bda[3], + (rem_bda[4] << 8) + rem_bda[5]); /* First, see if we already have a link to the remote */ /* then find the channel control block. */ if (((p_lcb = l2cu_find_lcb_by_bd_addr (rem_bda, BT_TRANSPORT_BR_EDR)) == NULL) - ||((p_ccb = l2cu_find_ccb_by_cid (p_lcb, L2CAP_CONNECTIONLESS_CID)) == NULL)) - { + || ((p_ccb = l2cu_find_ccb_by_cid (p_lcb, L2CAP_CONNECTIONLESS_CID)) == NULL)) { L2CAP_TRACE_WARNING ("L2CAP - no UCD channel"); return (FALSE); - } - else - { + } else { p_ccb->fixed_chnl_idle_tout = timeout; return (TRUE); } @@ -518,18 +487,16 @@ BOOLEAN L2CA_UCDSetTxPriority ( BD_ADDR rem_bda, tL2CAP_CHNL_PRIORITY priority ) tL2C_CCB *p_ccb; L2CAP_TRACE_API ("L2CA_UCDSetTxPriority() priority: 0x%02x BDA: %08x%04x", priority, - (rem_bda[0]<<24)+(rem_bda[1]<<16)+(rem_bda[2]<<8)+rem_bda[3], - (rem_bda[4]<<8)+rem_bda[5]); + (rem_bda[0] << 24) + (rem_bda[1] << 16) + (rem_bda[2] << 8) + rem_bda[3], + (rem_bda[4] << 8) + rem_bda[5]); - if ((p_lcb = l2cu_find_lcb_by_bd_addr (rem_bda, BT_TRANSPORT_BR_EDR)) == NULL) - { + if ((p_lcb = l2cu_find_lcb_by_bd_addr (rem_bda, BT_TRANSPORT_BR_EDR)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no LCB for L2CA_UCDSetTxPriority"); return (FALSE); } /* Find the channel control block */ - if ((p_ccb = l2cu_find_ccb_by_cid (p_lcb, L2CAP_CONNECTIONLESS_CID)) == NULL) - { + if ((p_ccb = l2cu_find_ccb_by_cid (p_lcb, L2CAP_CONNECTIONLESS_CID)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no CCB for L2CA_UCDSetTxPriority"); return (FALSE); } @@ -558,47 +525,37 @@ static BOOLEAN l2c_ucd_connect ( BD_ADDR rem_bda ) tL2C_RCB *p_rcb; L2CAP_TRACE_DEBUG ("l2c_ucd_connect() BDA: %08x%04x", - (rem_bda[0]<<24)+(rem_bda[1]<<16)+(rem_bda[2]<<8)+rem_bda[3], - (rem_bda[4]<<8)+rem_bda[5]); + (rem_bda[0] << 24) + (rem_bda[1] << 16) + (rem_bda[2] << 8) + rem_bda[3], + (rem_bda[4] << 8) + rem_bda[5]); /* Fail if we have not established communications with the controller */ - if (!BTM_IsDeviceUp()) - { + if (!BTM_IsDeviceUp()) { L2CAP_TRACE_WARNING ("l2c_ucd_connect - BTU not ready"); return (FALSE); } /* First, see if we already have a link to the remote */ - if ((p_lcb = l2cu_find_lcb_by_bd_addr (rem_bda, BT_TRANSPORT_BR_EDR)) == NULL) - { + if ((p_lcb = l2cu_find_lcb_by_bd_addr (rem_bda, BT_TRANSPORT_BR_EDR)) == NULL) { /* No link. Get an LCB and start link establishment */ if ( ((p_lcb = l2cu_allocate_lcb (rem_bda, FALSE, BT_TRANSPORT_BR_EDR)) == NULL) - || (l2cu_create_conn(p_lcb, BT_TRANSPORT_BR_EDR) == FALSE) ) - { + || (l2cu_create_conn(p_lcb, BT_TRANSPORT_BR_EDR) == FALSE) ) { L2CAP_TRACE_WARNING ("L2CAP - conn not started l2c_ucd_connect"); return (FALSE); } - } - else if ( p_lcb->info_rx_bits & (1 << L2CAP_EXTENDED_FEATURES_INFO_TYPE) ) - { - if (!(p_lcb->peer_ext_fea & L2CAP_EXTFEA_UCD_RECEPTION)) - { + } else if ( p_lcb->info_rx_bits & (1 << L2CAP_EXTENDED_FEATURES_INFO_TYPE) ) { + if (!(p_lcb->peer_ext_fea & L2CAP_EXTFEA_UCD_RECEPTION)) { L2CAP_TRACE_WARNING ("L2CAP - UCD is not supported by peer, l2c_ucd_connect"); return (FALSE); } } /* Find the channel control block. */ - if ((p_ccb = l2cu_find_ccb_by_cid (p_lcb, L2CAP_CONNECTIONLESS_CID)) == NULL) - { + if ((p_ccb = l2cu_find_ccb_by_cid (p_lcb, L2CAP_CONNECTIONLESS_CID)) == NULL) { /* Allocate a channel control block */ - if ((p_ccb = l2cu_allocate_ccb (p_lcb, 0)) == NULL) - { + if ((p_ccb = l2cu_allocate_ccb (p_lcb, 0)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no CCB for l2c_ucd_connect"); return (FALSE); - } - else - { + } else { /* Set CID for the connection */ p_ccb->local_cid = L2CAP_CONNECTIONLESS_CID; p_ccb->remote_cid = L2CAP_CONNECTIONLESS_CID; @@ -609,8 +566,7 @@ static BOOLEAN l2c_ucd_connect ( BD_ADDR rem_bda ) /* Set the default channel priority value to use */ l2cu_change_pri_ccb (p_ccb, L2CAP_UCD_CH_PRIORITY); - if ((p_rcb = l2cu_find_rcb_by_psm (L2C_UCD_RCB_ID)) == NULL) - { + if ((p_rcb = l2cu_find_rcb_by_psm (L2C_UCD_RCB_ID)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no UCD registered, l2c_ucd_connect"); return (FALSE); } @@ -618,8 +574,7 @@ static BOOLEAN l2c_ucd_connect ( BD_ADDR rem_bda ) p_ccb->p_rcb = p_rcb; /* There is no configuration, so if the link is up, the channel is up */ - if (p_lcb->link_state == LST_CONNECTED) - { + if (p_lcb->link_state == LST_CONNECTED) { p_ccb->chnl_state = CST_OPEN; } } @@ -640,11 +595,13 @@ static BOOLEAN l2c_ucd_connect ( BD_ADDR rem_bda ) void l2c_ucd_delete_sec_pending_q(tL2C_LCB *p_lcb) { /* clean up any security pending UCD */ - while (p_lcb->ucd_out_sec_pending_q.p_first) + while (p_lcb->ucd_out_sec_pending_q.p_first) { GKI_freebuf (GKI_dequeue (&p_lcb->ucd_out_sec_pending_q)); + } - while (p_lcb->ucd_in_sec_pending_q.p_first) + while (p_lcb->ucd_in_sec_pending_q.p_first) { GKI_freebuf (GKI_dequeue (&p_lcb->ucd_in_sec_pending_q)); + } } /******************************************************************************* @@ -662,24 +619,18 @@ BOOLEAN l2c_ucd_check_pending_info_req(tL2C_CCB *p_ccb) UINT16 xx; BOOLEAN pending = FALSE; - if (p_ccb == NULL) - { + if (p_ccb == NULL) { L2CAP_TRACE_ERROR ("L2CAP - NULL p_ccb in l2c_ucd_check_pending_info_req"); return (FALSE); } - for (xx = 0; xx < MAX_L2CAP_CLIENTS; xx++, p_rcb++) - { - if (p_rcb->in_use) - { + for (xx = 0; xx < MAX_L2CAP_CLIENTS; xx++, p_rcb++) { + if (p_rcb->in_use) { /* if application is waiting UCD reception info */ - if (p_rcb->ucd.state & L2C_UCD_STATE_W4_RECEPTION) - { + if (p_rcb->ucd.state & L2C_UCD_STATE_W4_RECEPTION) { /* if this information is available */ - if ( p_ccb->p_lcb->info_rx_bits & (1 << L2CAP_EXTENDED_FEATURES_INFO_TYPE) ) - { - if (!(p_ccb->p_lcb->peer_ext_fea & L2CAP_EXTFEA_UCD_RECEPTION)) - { + if ( p_ccb->p_lcb->info_rx_bits & (1 << L2CAP_EXTENDED_FEATURES_INFO_TYPE) ) { + if (!(p_ccb->p_lcb->peer_ext_fea & L2CAP_EXTFEA_UCD_RECEPTION)) { L2CAP_TRACE_WARNING ("L2CAP - UCD is not supported by peer, l2c_ucd_check_pending_info_req"); l2c_ucd_delete_sec_pending_q(p_ccb->p_lcb); @@ -687,34 +638,26 @@ BOOLEAN l2c_ucd_check_pending_info_req(tL2C_CCB *p_ccb) } p_ccb->p_rcb->ucd.cb_info.pL2CA_UCD_Discover_Cb (p_ccb->p_lcb->remote_bd_addr, - L2CAP_UCD_INFO_TYPE_RECEPTION, - p_ccb->p_lcb->peer_ext_fea & L2CAP_EXTFEA_UCD_RECEPTION); - } - else - { + L2CAP_UCD_INFO_TYPE_RECEPTION, + p_ccb->p_lcb->peer_ext_fea & L2CAP_EXTFEA_UCD_RECEPTION); + } else { pending = TRUE; - if (p_ccb->p_lcb->w4_info_rsp == FALSE) - { + if (p_ccb->p_lcb->w4_info_rsp == FALSE) { l2cu_send_peer_info_req (p_ccb->p_lcb, L2CAP_EXTENDED_FEATURES_INFO_TYPE); } } } /* if application is waiting for UCD MTU */ - if (p_rcb->ucd.state & L2C_UCD_STATE_W4_MTU) - { + if (p_rcb->ucd.state & L2C_UCD_STATE_W4_MTU) { /* if this information is available */ - if ( p_ccb->p_lcb->info_rx_bits & (1 << L2CAP_CONNLESS_MTU_INFO_TYPE)) - { + if ( p_ccb->p_lcb->info_rx_bits & (1 << L2CAP_CONNLESS_MTU_INFO_TYPE)) { p_ccb->p_rcb->ucd.cb_info.pL2CA_UCD_Discover_Cb (p_ccb->p_lcb->remote_bd_addr, - L2CAP_UCD_INFO_TYPE_MTU, - p_ccb->p_lcb->ucd_mtu); - } - else - { + L2CAP_UCD_INFO_TYPE_MTU, + p_ccb->p_lcb->ucd_mtu); + } else { pending = TRUE; - if (p_ccb->p_lcb->w4_info_rsp == FALSE) - { + if (p_ccb->p_lcb->w4_info_rsp == FALSE) { l2cu_send_peer_info_req (p_ccb->p_lcb, L2CAP_CONNLESS_MTU_INFO_TYPE); } } @@ -755,9 +698,8 @@ BOOLEAN l2c_ucd_check_pending_out_sec_q(tL2C_CCB *p_ccb) UINT16 psm; BT_HDR *p_buf; - if ( p_ccb->p_lcb->ucd_out_sec_pending_q.count ) - { - p_buf = (BT_HDR*)(p_ccb->p_lcb->ucd_out_sec_pending_q.p_first); + if ( p_ccb->p_lcb->ucd_out_sec_pending_q.count ) { + p_buf = (BT_HDR *)(p_ccb->p_lcb->ucd_out_sec_pending_q.p_first); p = (UINT8 *)(p_buf + 1) + p_buf->offset; STREAM_TO_UINT16(psm, p) @@ -784,9 +726,8 @@ void l2c_ucd_send_pending_out_sec_q(tL2C_CCB *p_ccb) { BT_HDR *p_buf; - if ( p_ccb->p_lcb->ucd_out_sec_pending_q.count ) - { - p_buf = (BT_HDR*)GKI_dequeue (&p_ccb->p_lcb->ucd_out_sec_pending_q); + if ( p_ccb->p_lcb->ucd_out_sec_pending_q.count ) { + p_buf = (BT_HDR *)GKI_dequeue (&p_ccb->p_lcb->ucd_out_sec_pending_q); l2c_enqueue_peer_data (p_ccb, (BT_HDR *)p_buf); l2c_link_check_send_pkts (p_ccb->p_lcb, NULL, NULL); @@ -807,12 +748,11 @@ void l2c_ucd_discard_pending_out_sec_q(tL2C_CCB *p_ccb) { BT_HDR *p_buf; - p_buf = (BT_HDR*)GKI_dequeue (&p_ccb->p_lcb->ucd_out_sec_pending_q); + p_buf = (BT_HDR *)GKI_dequeue (&p_ccb->p_lcb->ucd_out_sec_pending_q); /* we may need to report to application */ - if (p_buf) - { + if (p_buf) { GKI_freebuf (p_buf); } } @@ -832,9 +772,8 @@ BOOLEAN l2c_ucd_check_pending_in_sec_q(tL2C_CCB *p_ccb) UINT16 psm; BT_HDR *p_buf; - if ( p_ccb->p_lcb->ucd_in_sec_pending_q.count ) - { - p_buf = (BT_HDR*)(p_ccb->p_lcb->ucd_in_sec_pending_q.p_first); + if ( p_ccb->p_lcb->ucd_in_sec_pending_q.count ) { + p_buf = (BT_HDR *)(p_ccb->p_lcb->ucd_in_sec_pending_q.p_first); p = (UINT8 *)(p_buf + 1) + p_buf->offset; STREAM_TO_UINT16(psm, p) @@ -861,9 +800,8 @@ void l2c_ucd_send_pending_in_sec_q(tL2C_CCB *p_ccb) { BT_HDR *p_buf; - if ( p_ccb->p_lcb->ucd_in_sec_pending_q.count ) - { - p_buf = (BT_HDR*)GKI_dequeue (&p_ccb->p_lcb->ucd_in_sec_pending_q); + if ( p_ccb->p_lcb->ucd_in_sec_pending_q.count ) { + p_buf = (BT_HDR *)GKI_dequeue (&p_ccb->p_lcb->ucd_in_sec_pending_q); p_ccb->p_rcb->ucd.cb_info.pL2CA_UCD_Data_Cb(p_ccb->p_lcb->remote_bd_addr, (BT_HDR *)p_buf); } @@ -883,10 +821,9 @@ void l2c_ucd_discard_pending_in_sec_q(tL2C_CCB *p_ccb) { BT_HDR *p_buf; - p_buf = (BT_HDR*)GKI_dequeue (&p_ccb->p_lcb->ucd_in_sec_pending_q); + p_buf = (BT_HDR *)GKI_dequeue (&p_ccb->p_lcb->ucd_in_sec_pending_q); - if (p_buf) - { + if (p_buf) { GKI_freebuf (p_buf); } } @@ -907,19 +844,14 @@ BOOLEAN l2c_ucd_check_rx_pkts(tL2C_LCB *p_lcb, BT_HDR *p_msg) tL2C_RCB *p_rcb; if (((p_ccb = l2cu_find_ccb_by_cid (p_lcb, L2CAP_CONNECTIONLESS_CID)) != NULL) - ||((p_rcb = l2cu_find_rcb_by_psm (L2C_UCD_RCB_ID)) != NULL)) - { - if (p_ccb == NULL) - { + || ((p_rcb = l2cu_find_rcb_by_psm (L2C_UCD_RCB_ID)) != NULL)) { + if (p_ccb == NULL) { /* Allocate a channel control block */ - if ((p_ccb = l2cu_allocate_ccb (p_lcb, 0)) == NULL) - { + if ((p_ccb = l2cu_allocate_ccb (p_lcb, 0)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no CCB for UCD reception"); GKI_freebuf (p_msg); return TRUE; - } - else - { + } else { /* Set CID for the connection */ p_ccb->local_cid = L2CAP_CONNECTIONLESS_CID; p_ccb->remote_cid = L2CAP_CONNECTIONLESS_CID; @@ -938,9 +870,9 @@ BOOLEAN l2c_ucd_check_rx_pkts(tL2C_LCB *p_lcb, BT_HDR *p_msg) } l2c_csm_execute(p_ccb, L2CEVT_L2CAP_DATA, p_msg); return TRUE; - } - else + } else { return FALSE; + } } /******************************************************************************* @@ -959,18 +891,14 @@ BOOLEAN l2c_ucd_process_event(tL2C_CCB *p_ccb, UINT16 event, void *p_data) /* if the event is not processed by this function, this variable will be set to FALSE */ BOOLEAN done = TRUE; - switch (p_ccb->chnl_state) - { + switch (p_ccb->chnl_state) { case CST_CLOSED: - switch (event) - { + switch (event) { case L2CEVT_LP_CONNECT_CFM: /* Link came up */ /* check if waiting for UCD info */ - if (!l2c_ucd_check_pending_info_req (p_ccb)) - { + if (!l2c_ucd_check_pending_info_req (p_ccb)) { /* check if any outgoing UCD packet is waiting security check */ - if (!l2c_ucd_check_pending_out_sec_q(p_ccb)) - { + if (!l2c_ucd_check_pending_out_sec_q(p_ccb)) { p_ccb->chnl_state = CST_OPEN; } } @@ -986,11 +914,9 @@ BOOLEAN l2c_ucd_process_event(tL2C_CCB *p_ccb, UINT16 event, void *p_data) case L2CEVT_L2CAP_INFO_RSP: /* check if waiting for UCD info */ - if (!l2c_ucd_check_pending_info_req (p_ccb)) - { + if (!l2c_ucd_check_pending_info_req (p_ccb)) { /* check if any outgoing UCD packet is waiting security check */ - if (!l2c_ucd_check_pending_out_sec_q(p_ccb)) - { + if (!l2c_ucd_check_pending_out_sec_q(p_ccb)) { p_ccb->chnl_state = CST_OPEN; } } @@ -1003,12 +929,10 @@ BOOLEAN l2c_ucd_process_event(tL2C_CCB *p_ccb, UINT16 event, void *p_data) break; case CST_ORIG_W4_SEC_COMP: - switch (event) - { + switch (event) { case L2CEVT_SEC_RE_SEND_CMD: /* BTM has enough info to proceed */ /* check if any outgoing UCD packet is waiting security check */ - if (!l2c_ucd_check_pending_out_sec_q(p_ccb)) - { + if (!l2c_ucd_check_pending_out_sec_q(p_ccb)) { p_ccb->chnl_state = CST_OPEN; } break; @@ -1017,14 +941,11 @@ BOOLEAN l2c_ucd_process_event(tL2C_CCB *p_ccb, UINT16 event, void *p_data) p_ccb->chnl_state = CST_OPEN; l2c_ucd_send_pending_out_sec_q(p_ccb); - if ( p_ccb->p_lcb->ucd_out_sec_pending_q.count ) - { + if ( p_ccb->p_lcb->ucd_out_sec_pending_q.count ) { /* start a timer to send next UCD packet in OPEN state */ /* it will prevent stack overflow */ btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, 0); - } - else - { + } else { /* start a timer for idle timeout of UCD */ btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, p_ccb->fixed_chnl_idle_tout); } @@ -1059,28 +980,23 @@ BOOLEAN l2c_ucd_process_event(tL2C_CCB *p_ccb, UINT16 event, void *p_data) case CST_TERM_W4_SEC_COMP: - switch (event) - { + switch (event) { case L2CEVT_SEC_COMP: p_ccb->chnl_state = CST_OPEN; l2c_ucd_send_pending_in_sec_q (p_ccb); - if ( p_ccb->p_lcb->ucd_in_sec_pending_q.count ) - { + if ( p_ccb->p_lcb->ucd_in_sec_pending_q.count ) { /* start a timer to check next UCD packet in OPEN state */ /* it will prevent stack overflow */ btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, 0); - } - else - { + } else { /* start a timer for idle timeout of UCD */ btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, p_ccb->fixed_chnl_idle_tout); } break; case L2CEVT_SEC_COMP_NEG: - if (((tL2C_CONN_INFO *)p_data)->status == BTM_DELAY_CHECK) - { + if (((tL2C_CONN_INFO *)p_data)->status == BTM_DELAY_CHECK) { done = FALSE; break; } @@ -1101,8 +1017,7 @@ BOOLEAN l2c_ucd_process_event(tL2C_CCB *p_ccb, UINT16 event, void *p_data) case L2CEVT_SEC_RE_SEND_CMD: /* BTM has enough info to proceed */ /* check if any incoming UCD packet is waiting security check */ - if (!l2c_ucd_check_pending_in_sec_q(p_ccb)) - { + if (!l2c_ucd_check_pending_in_sec_q(p_ccb)) { p_ccb->chnl_state = CST_OPEN; } break; @@ -1119,8 +1034,7 @@ BOOLEAN l2c_ucd_process_event(tL2C_CCB *p_ccb, UINT16 event, void *p_data) break; case CST_OPEN: - switch (event) - { + switch (event) { case L2CEVT_L2CAP_DATA: /* Peer data packet rcvd */ /* stop idle timer of UCD */ btu_stop_timer (&p_ccb->timer_entry); @@ -1143,8 +1057,7 @@ BOOLEAN l2c_ucd_process_event(tL2C_CCB *p_ccb, UINT16 event, void *p_data) case L2CEVT_TIMEOUT: /* check if any UCD packet is waiting security check */ if ((!l2c_ucd_check_pending_in_sec_q(p_ccb)) - &&(!l2c_ucd_check_pending_out_sec_q(p_ccb))) - { + && (!l2c_ucd_check_pending_out_sec_q(p_ccb))) { l2cu_release_ccb (p_ccb); } break; diff --git a/components/bt/bluedroid/stack/l2cap/l2c_utils.c b/components/bt/bluedroid/stack/l2cap/l2c_utils.c old mode 100755 new mode 100644 index f8d91759c8..7c5bd8d206 --- a/components/bt/bluedroid/stack/l2cap/l2c_utils.c +++ b/components/bt/bluedroid/stack/l2cap/l2c_utils.c @@ -53,10 +53,8 @@ tL2C_LCB *l2cu_allocate_lcb (BD_ADDR p_bd_addr, BOOLEAN is_bonding, tBT_TRANSPOR int xx; tL2C_LCB *p_lcb = &l2cb.lcb_pool[0]; - for (xx = 0; xx < MAX_L2CAP_LINKS; xx++, p_lcb++) - { - if (!p_lcb->in_use) - { + for (xx = 0; xx < MAX_L2CAP_LINKS; xx++, p_lcb++) { + if (!p_lcb->in_use) { memset (p_lcb, 0, sizeof (tL2C_LCB)); memcpy (p_lcb->remote_bd_addr, p_bd_addr, BD_ADDR_LEN); @@ -74,12 +72,10 @@ tL2C_LCB *l2cu_allocate_lcb (BD_ADDR p_bd_addr, BOOLEAN is_bonding, tBT_TRANSPOR p_lcb->transport = transport; p_lcb->tx_data_len = controller_get_interface()->get_ble_default_data_packet_length(); - if (transport == BT_TRANSPORT_LE) - { + if (transport == BT_TRANSPORT_LE) { l2cb.num_ble_links_active++; l2c_ble_link_adjust_allocation(); - } - else + } else #endif { l2cb.num_links_active++; @@ -108,8 +104,7 @@ void l2cu_update_lcb_4_bonding (BD_ADDR p_bd_addr, BOOLEAN is_bonding) { tL2C_LCB *p_lcb = l2cu_find_lcb_by_bd_addr (p_bd_addr, BT_TRANSPORT_BR_EDR); - if (p_lcb) - { + if (p_lcb) { p_lcb->is_bonding = is_bonding; } } @@ -136,37 +131,31 @@ void l2cu_release_lcb (tL2C_LCB *p_lcb) btu_stop_timer (&p_lcb->info_timer_entry); /* Release any unfinished L2CAP packet on this link */ - if (p_lcb->p_hcit_rcv_acl) - { + if (p_lcb->p_hcit_rcv_acl) { GKI_freebuf(p_lcb->p_hcit_rcv_acl); p_lcb->p_hcit_rcv_acl = NULL; } #if BTM_SCO_INCLUDED == TRUE #if (BLE_INCLUDED == TRUE) - if (p_lcb->transport == BT_TRANSPORT_BR_EDR) + if (p_lcb->transport == BT_TRANSPORT_BR_EDR) #endif /* Release all SCO links */ btm_remove_sco_links(p_lcb->remote_bd_addr); #endif - if (p_lcb->sent_not_acked > 0) - { + if (p_lcb->sent_not_acked > 0) { #if (BLE_INCLUDED == TRUE) - if (p_lcb->transport == BT_TRANSPORT_LE) - { + if (p_lcb->transport == BT_TRANSPORT_LE) { l2cb.controller_le_xmit_window += p_lcb->sent_not_acked; - if (l2cb.controller_le_xmit_window > l2cb.num_lm_ble_bufs) - { + if (l2cb.controller_le_xmit_window > l2cb.num_lm_ble_bufs) { l2cb.controller_le_xmit_window = l2cb.num_lm_ble_bufs; } - } - else + } else #endif { l2cb.controller_xmit_window += p_lcb->sent_not_acked; - if (l2cb.controller_xmit_window > l2cb.num_lm_acl_bufs) - { + if (l2cb.controller_xmit_window > l2cb.num_lm_acl_bufs) { l2cb.controller_xmit_window = l2cb.num_lm_acl_bufs; } } @@ -174,8 +163,9 @@ void l2cu_release_lcb (tL2C_LCB *p_lcb) #if (BLE_INCLUDED == TRUE) // Reset BLE connecting flag only if the address matches - if (!memcmp(l2cb.ble_connecting_bda, p_lcb->remote_bd_addr, BD_ADDR_LEN)) + if (!memcmp(l2cb.ble_connecting_bda, p_lcb->remote_bd_addr, BD_ADDR_LEN)) { l2cb.is_ble_connecting = FALSE; + } #endif #if (L2CAP_NUM_FIXED_CHNLS > 0) @@ -183,8 +173,7 @@ void l2cu_release_lcb (tL2C_LCB *p_lcb) #endif /* Ensure no CCBs left on this LCB */ - for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; p_ccb = p_lcb->ccb_queue.p_first_ccb) - { + for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; p_ccb = p_lcb->ccb_queue.p_first_ccb) { l2cu_release_ccb (p_ccb); } @@ -197,8 +186,7 @@ void l2cu_release_lcb (tL2C_LCB *p_lcb) #endif /* Release any held buffers */ - if (p_lcb->link_xmit_data_q) - { + if (p_lcb->link_xmit_data_q) { while (!list_is_empty(p_lcb->link_xmit_data_q)) { BT_HDR *p_buf = list_front(p_lcb->link_xmit_data_q); list_remove(p_lcb->link_xmit_data_q, p_buf); @@ -215,25 +203,24 @@ void l2cu_release_lcb (tL2C_LCB *p_lcb) #if BLE_INCLUDED == TRUE /* Re-adjust flow control windows make sure it does not go negative */ - if (p_lcb->transport == BT_TRANSPORT_LE) - { - if (l2cb.num_ble_links_active >= 1) + if (p_lcb->transport == BT_TRANSPORT_LE) { + if (l2cb.num_ble_links_active >= 1) { l2cb.num_ble_links_active--; + } l2c_ble_link_adjust_allocation(); - } - else + } else #endif { - if (l2cb.num_links_active >= 1) + if (l2cb.num_links_active >= 1) { l2cb.num_links_active--; + } l2c_link_adjust_allocation(); } /* Check for ping outstanding */ - if (p_lcb->p_echo_rsp_cb) - { + if (p_lcb->p_echo_rsp_cb) { tL2CA_ECHO_RSP_CB *p_cb = p_lcb->p_echo_rsp_cb; /* Zero out the callback in case app immediately calls us again */ @@ -259,14 +246,12 @@ tL2C_LCB *l2cu_find_lcb_by_bd_addr (BD_ADDR p_bd_addr, tBT_TRANSPORT transport) int xx; tL2C_LCB *p_lcb = &l2cb.lcb_pool[0]; - for (xx = 0; xx < MAX_L2CAP_LINKS; xx++, p_lcb++) - { + for (xx = 0; xx < MAX_L2CAP_LINKS; xx++, p_lcb++) { if ((p_lcb->in_use) && #if BLE_INCLUDED == TRUE - p_lcb->transport == transport && + p_lcb->transport == transport && #endif - (!memcmp (p_lcb->remote_bd_addr, p_bd_addr, BD_ADDR_LEN))) - { + (!memcmp (p_lcb->remote_bd_addr, p_bd_addr, BD_ADDR_LEN))) { return (p_lcb); } } @@ -306,8 +291,7 @@ UINT8 l2cu_get_conn_role (tL2C_LCB *p_this_lcb) *******************************************************************************/ BOOLEAN l2c_is_cmd_rejected (UINT8 cmd_code, UINT8 id, tL2C_LCB *p_lcb) { - switch(cmd_code) - { + switch (cmd_code) { case L2CAP_CMD_CONN_REQ: case L2CAP_CMD_CONFIG_REQ: case L2CAP_CMD_DISC_REQ: @@ -339,8 +323,7 @@ BT_HDR *l2cu_build_header (tL2C_LCB *p_lcb, UINT16 len, UINT8 cmd, UINT8 id) BT_HDR *p_buf = (BT_HDR *)GKI_getpoolbuf (L2CAP_CMD_POOL_ID); UINT8 *p; - if (!p_buf) - { + if (!p_buf) { return (NULL); } @@ -350,11 +333,9 @@ BT_HDR *l2cu_build_header (tL2C_LCB *p_lcb, UINT16 len, UINT8 cmd, UINT8 id) /* Put in HCI header - handle + pkt boundary */ #if (BLE_INCLUDED == TRUE) - if (p_lcb->transport == BT_TRANSPORT_LE) - { + if (p_lcb->transport == BT_TRANSPORT_LE) { UINT16_TO_STREAM (p, (p_lcb->handle | (L2CAP_PKT_START_NON_FLUSHABLE << L2CAP_PKT_TYPE_SHIFT))); - } - else + } else #endif { #if (L2CAP_NON_FLUSHABLE_PB_INCLUDED == TRUE) @@ -368,14 +349,12 @@ BT_HDR *l2cu_build_header (tL2C_LCB *p_lcb, UINT16 len, UINT8 cmd, UINT8 id) UINT16_TO_STREAM (p, len + L2CAP_CMD_OVERHEAD); #if (BLE_INCLUDED == TRUE) - if (p_lcb->transport == BT_TRANSPORT_LE) - { + if (p_lcb->transport == BT_TRANSPORT_LE) { //counter_add("l2cap.ble.tx.bytes", p_buf->len); //counter_add("l2cap.ble.tx.pkts", 1); UINT16_TO_STREAM (p, L2CAP_BLE_SIGNALLING_CID); - } - else + } else #endif { //counter_add("l2cap.sig.tx.bytes", p_buf->len); @@ -403,8 +382,7 @@ BT_HDR *l2cu_build_header (tL2C_LCB *p_lcb, UINT16 len, UINT8 cmd, UINT8 id) *******************************************************************************/ void l2cu_adj_id (tL2C_LCB *p_lcb, UINT8 adj_mask) { - if ((adj_mask & L2CAP_ADJ_ZERO_ID) && !p_lcb->id) - { + if ((adj_mask & L2CAP_ADJ_ZERO_ID) && !p_lcb->id) { p_lcb->id++; } } @@ -427,29 +405,31 @@ void l2cu_send_peer_cmd_reject (tL2C_LCB *p_lcb, UINT16 reason, UINT8 rem_id, UINT8 *p; /* Put in L2CAP packet header */ - if (reason == L2CAP_CMD_REJ_MTU_EXCEEDED) + if (reason == L2CAP_CMD_REJ_MTU_EXCEEDED) { param_len = 2; - else if (reason == L2CAP_CMD_REJ_INVALID_CID) + } else if (reason == L2CAP_CMD_REJ_INVALID_CID) { param_len = 4; - else + } else { param_len = 0; + } - if ((p_buf = l2cu_build_header (p_lcb, (UINT16) (L2CAP_CMD_REJECT_LEN + param_len), L2CAP_CMD_REJECT, rem_id)) == NULL ) - { + if ((p_buf = l2cu_build_header (p_lcb, (UINT16) (L2CAP_CMD_REJECT_LEN + param_len), L2CAP_CMD_REJECT, rem_id)) == NULL ) { L2CAP_TRACE_WARNING ("L2CAP - no buffer cmd_rej"); return; } p = (UINT8 *)(p_buf + 1) + L2CAP_SEND_CMD_OFFSET + HCI_DATA_PREAMBLE_SIZE + - L2CAP_PKT_OVERHEAD + L2CAP_CMD_OVERHEAD; + L2CAP_PKT_OVERHEAD + L2CAP_CMD_OVERHEAD; UINT16_TO_STREAM (p, reason); - if (param_len >= 2) + if (param_len >= 2) { UINT16_TO_STREAM (p, p1); + } - if (param_len >= 4) + if (param_len >= 4) { UINT16_TO_STREAM (p, p2); + } l2c_link_check_send_pkts (p_lcb, NULL, p_buf); } @@ -477,13 +457,12 @@ void l2cu_send_peer_connect_req (tL2C_CCB *p_ccb) p_ccb->local_id = p_ccb->p_lcb->id; if ((p_buf = l2cu_build_header (p_ccb->p_lcb, L2CAP_CONN_REQ_LEN, L2CAP_CMD_CONN_REQ, - p_ccb->local_id)) == NULL) - { + p_ccb->local_id)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no buffer for conn_req"); return; } - p = (UINT8 *)(p_buf + 1) + L2CAP_SEND_CMD_OFFSET+HCI_DATA_PREAMBLE_SIZE + + p = (UINT8 *)(p_buf + 1) + L2CAP_SEND_CMD_OFFSET + HCI_DATA_PREAMBLE_SIZE + L2CAP_PKT_OVERHEAD + L2CAP_CMD_OVERHEAD; UINT16_TO_STREAM (p, p_ccb->p_rcb->real_psm); @@ -508,22 +487,21 @@ void l2cu_send_peer_connect_rsp (tL2C_CCB *p_ccb, UINT16 result, UINT16 status) BT_HDR *p_buf; UINT8 *p; - if (result == L2CAP_CONN_PENDING) - { + if (result == L2CAP_CONN_PENDING) { /* if we already sent pending response */ - if (p_ccb->flags & CCB_FLAG_SENT_PENDING) + if (p_ccb->flags & CCB_FLAG_SENT_PENDING) { return; - else + } else { p_ccb->flags |= CCB_FLAG_SENT_PENDING; + } } - if ((p_buf=l2cu_build_header(p_ccb->p_lcb, L2CAP_CONN_RSP_LEN, L2CAP_CMD_CONN_RSP, p_ccb->remote_id)) == NULL) - { + if ((p_buf = l2cu_build_header(p_ccb->p_lcb, L2CAP_CONN_RSP_LEN, L2CAP_CMD_CONN_RSP, p_ccb->remote_id)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no buffer for conn_rsp"); return; } - p = (UINT8 *)(p_buf + 1) + L2CAP_SEND_CMD_OFFSET+HCI_DATA_PREAMBLE_SIZE + + p = (UINT8 *)(p_buf + 1) + L2CAP_SEND_CMD_OFFSET + HCI_DATA_PREAMBLE_SIZE + L2CAP_PKT_OVERHEAD + L2CAP_CMD_OVERHEAD; UINT16_TO_STREAM (p, p_ccb->local_cid); @@ -551,13 +529,12 @@ void l2cu_reject_connection (tL2C_LCB *p_lcb, UINT16 remote_cid, UINT8 rem_id, U BT_HDR *p_buf; UINT8 *p; - if ((p_buf = l2cu_build_header(p_lcb, L2CAP_CONN_RSP_LEN, L2CAP_CMD_CONN_RSP, rem_id)) == NULL ) - { + if ((p_buf = l2cu_build_header(p_lcb, L2CAP_CONN_RSP_LEN, L2CAP_CMD_CONN_RSP, rem_id)) == NULL ) { L2CAP_TRACE_WARNING ("L2CAP - no buffer for conn_req"); return; } - p = (UINT8 *)(p_buf + 1) + L2CAP_SEND_CMD_OFFSET+HCI_DATA_PREAMBLE_SIZE + L2CAP_PKT_OVERHEAD + L2CAP_CMD_OVERHEAD; + p = (UINT8 *)(p_buf + 1) + L2CAP_SEND_CMD_OFFSET + HCI_DATA_PREAMBLE_SIZE + L2CAP_PKT_OVERHEAD + L2CAP_CMD_OVERHEAD; UINT16_TO_STREAM (p, 0); /* Local CID of 0 */ UINT16_TO_STREAM (p, remote_cid); @@ -580,7 +557,7 @@ void l2cu_reject_connection (tL2C_LCB *p_lcb, UINT16 remote_cid, UINT8 rem_id, U void l2cu_send_peer_config_req (tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg) { BT_HDR *p_buf; - UINT16 cfg_len=0; + UINT16 cfg_len = 0; UINT8 *p; /* Create an identifier for this packet */ @@ -589,47 +566,49 @@ void l2cu_send_peer_config_req (tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg) p_ccb->local_id = p_ccb->p_lcb->id; - if (p_cfg->mtu_present) + if (p_cfg->mtu_present) { cfg_len += L2CAP_CFG_MTU_OPTION_LEN + L2CAP_CFG_OPTION_OVERHEAD; - if (p_cfg->flush_to_present) + } + if (p_cfg->flush_to_present) { cfg_len += L2CAP_CFG_FLUSH_OPTION_LEN + L2CAP_CFG_OPTION_OVERHEAD; - if (p_cfg->qos_present) + } + if (p_cfg->qos_present) { cfg_len += L2CAP_CFG_QOS_OPTION_LEN + L2CAP_CFG_OPTION_OVERHEAD; - if (p_cfg->fcr_present) + } + if (p_cfg->fcr_present) { cfg_len += L2CAP_CFG_FCR_OPTION_LEN + L2CAP_CFG_OPTION_OVERHEAD; - if (p_cfg->fcs_present) + } + if (p_cfg->fcs_present) { cfg_len += L2CAP_CFG_FCS_OPTION_LEN + L2CAP_CFG_OPTION_OVERHEAD; - if (p_cfg->ext_flow_spec_present) + } + if (p_cfg->ext_flow_spec_present) { cfg_len += L2CAP_CFG_EXT_FLOW_OPTION_LEN + L2CAP_CFG_OPTION_OVERHEAD; + } if ((p_buf = l2cu_build_header (p_ccb->p_lcb, (UINT16) (L2CAP_CONFIG_REQ_LEN + cfg_len), - L2CAP_CMD_CONFIG_REQ, p_ccb->local_id)) == NULL ) - { + L2CAP_CMD_CONFIG_REQ, p_ccb->local_id)) == NULL ) { L2CAP_TRACE_WARNING ("L2CAP - no buffer for conn_req"); return; } p = (UINT8 *)(p_buf + 1) + L2CAP_SEND_CMD_OFFSET + HCI_DATA_PREAMBLE_SIZE + - L2CAP_PKT_OVERHEAD + L2CAP_CMD_OVERHEAD; + L2CAP_PKT_OVERHEAD + L2CAP_CMD_OVERHEAD; UINT16_TO_STREAM (p, p_ccb->remote_cid); UINT16_TO_STREAM (p, p_cfg->flags); /* Flags (continuation) */ /* Now, put the options */ - if (p_cfg->mtu_present) - { + if (p_cfg->mtu_present) { UINT8_TO_STREAM (p, L2CAP_CFG_TYPE_MTU); UINT8_TO_STREAM (p, L2CAP_CFG_MTU_OPTION_LEN); UINT16_TO_STREAM (p, p_cfg->mtu); } - if (p_cfg->flush_to_present) - { + if (p_cfg->flush_to_present) { UINT8_TO_STREAM (p, L2CAP_CFG_TYPE_FLUSH_TOUT); UINT8_TO_STREAM (p, L2CAP_CFG_FLUSH_OPTION_LEN); UINT16_TO_STREAM (p, p_cfg->flush_to); } - if (p_cfg->qos_present) - { + if (p_cfg->qos_present) { UINT8_TO_STREAM (p, L2CAP_CFG_TYPE_QOS); UINT8_TO_STREAM (p, L2CAP_CFG_QOS_OPTION_LEN); UINT8_TO_STREAM (p, p_cfg->qos.qos_flags); @@ -640,8 +619,7 @@ void l2cu_send_peer_config_req (tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg) UINT32_TO_STREAM (p, p_cfg->qos.latency); UINT32_TO_STREAM (p, p_cfg->qos.delay_variation); } - if (p_cfg->fcr_present) - { + if (p_cfg->fcr_present) { UINT8_TO_STREAM (p, L2CAP_CFG_TYPE_FCR); UINT8_TO_STREAM (p, L2CAP_CFG_FCR_OPTION_LEN); UINT8_TO_STREAM (p, p_cfg->fcr.mode); @@ -652,15 +630,13 @@ void l2cu_send_peer_config_req (tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg) UINT16_TO_STREAM (p, p_cfg->fcr.mps); } - if (p_cfg->fcs_present) - { + if (p_cfg->fcs_present) { UINT8_TO_STREAM (p, L2CAP_CFG_TYPE_FCS); UINT8_TO_STREAM (p, L2CAP_CFG_FCS_OPTION_LEN); UINT8_TO_STREAM (p, p_cfg->fcs); } - if (p_cfg->ext_flow_spec_present) - { + if (p_cfg->ext_flow_spec_present) { UINT8_TO_STREAM (p, L2CAP_CFG_TYPE_EXT_FLOW); UINT8_TO_STREAM (p, L2CAP_CFG_EXT_FLOW_OPTION_LEN); UINT8_TO_STREAM (p, p_cfg->ext_flow_spec.id); @@ -691,45 +667,46 @@ void l2cu_send_peer_config_rsp (tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg) UINT8 *p; /* Create an identifier for this packet */ - if (p_cfg->mtu_present) + if (p_cfg->mtu_present) { cfg_len += L2CAP_CFG_MTU_OPTION_LEN + L2CAP_CFG_OPTION_OVERHEAD; - if (p_cfg->flush_to_present) + } + if (p_cfg->flush_to_present) { cfg_len += L2CAP_CFG_FLUSH_OPTION_LEN + L2CAP_CFG_OPTION_OVERHEAD; - if (p_cfg->qos_present) + } + if (p_cfg->qos_present) { cfg_len += L2CAP_CFG_QOS_OPTION_LEN + L2CAP_CFG_OPTION_OVERHEAD; - if (p_cfg->fcr_present) + } + if (p_cfg->fcr_present) { cfg_len += L2CAP_CFG_FCR_OPTION_LEN + L2CAP_CFG_OPTION_OVERHEAD; - if (p_cfg->ext_flow_spec_present) + } + if (p_cfg->ext_flow_spec_present) { cfg_len += L2CAP_CFG_EXT_FLOW_OPTION_LEN + L2CAP_CFG_OPTION_OVERHEAD; + } if ((p_buf = l2cu_build_header (p_ccb->p_lcb, (UINT16)(L2CAP_CONFIG_RSP_LEN + cfg_len), - L2CAP_CMD_CONFIG_RSP, p_ccb->remote_id)) == NULL ) - { + L2CAP_CMD_CONFIG_RSP, p_ccb->remote_id)) == NULL ) { L2CAP_TRACE_WARNING ("L2CAP - no buffer for conn_req"); return; } - p = (UINT8 *)(p_buf + 1) + L2CAP_SEND_CMD_OFFSET+HCI_DATA_PREAMBLE_SIZE + L2CAP_PKT_OVERHEAD + L2CAP_CMD_OVERHEAD; + p = (UINT8 *)(p_buf + 1) + L2CAP_SEND_CMD_OFFSET + HCI_DATA_PREAMBLE_SIZE + L2CAP_PKT_OVERHEAD + L2CAP_CMD_OVERHEAD; UINT16_TO_STREAM (p, p_ccb->remote_cid); UINT16_TO_STREAM (p, p_cfg->flags); /* Flags (continuation) Must match request */ UINT16_TO_STREAM (p, p_cfg->result); /* Now, put the options */ - if (p_cfg->mtu_present) - { + if (p_cfg->mtu_present) { UINT8_TO_STREAM (p, L2CAP_CFG_TYPE_MTU); UINT8_TO_STREAM (p, L2CAP_CFG_MTU_OPTION_LEN); UINT16_TO_STREAM (p, p_cfg->mtu); } - if (p_cfg->flush_to_present) - { + if (p_cfg->flush_to_present) { UINT8_TO_STREAM (p, L2CAP_CFG_TYPE_FLUSH_TOUT); UINT8_TO_STREAM (p, L2CAP_CFG_FLUSH_OPTION_LEN); UINT16_TO_STREAM (p, p_cfg->flush_to); } - if (p_cfg->qos_present) - { + if (p_cfg->qos_present) { UINT8_TO_STREAM (p, L2CAP_CFG_TYPE_QOS); UINT8_TO_STREAM (p, L2CAP_CFG_QOS_OPTION_LEN); UINT8_TO_STREAM (p, p_cfg->qos.qos_flags); @@ -740,8 +717,7 @@ void l2cu_send_peer_config_rsp (tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg) UINT32_TO_STREAM (p, p_cfg->qos.latency); UINT32_TO_STREAM (p, p_cfg->qos.delay_variation); } - if (p_cfg->fcr_present) - { + if (p_cfg->fcr_present) { UINT8_TO_STREAM (p, L2CAP_CFG_TYPE_FCR); UINT8_TO_STREAM (p, L2CAP_CFG_FCR_OPTION_LEN); UINT8_TO_STREAM (p, p_cfg->fcr.mode); @@ -752,8 +728,7 @@ void l2cu_send_peer_config_rsp (tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg) UINT16_TO_STREAM (p, p_cfg->fcr.mps); } - if (p_cfg->ext_flow_spec_present) - { + if (p_cfg->ext_flow_spec_present) { UINT8_TO_STREAM (p, L2CAP_CFG_TYPE_EXT_FLOW); UINT8_TO_STREAM (p, L2CAP_CFG_EXT_FLOW_OPTION_LEN); UINT8_TO_STREAM (p, p_cfg->ext_flow_spec.id); @@ -789,16 +764,14 @@ void l2cu_send_peer_config_rej (tL2C_CCB *p_ccb, UINT8 *p_data, UINT16 data_len, len = BT_HDR_SIZE + HCI_DATA_PREAMBLE_SIZE + L2CAP_PKT_OVERHEAD + L2CAP_CMD_OVERHEAD + L2CAP_CONFIG_RSP_LEN; len1 = 0xFFFF - len; - if (rej_len > len1) - { + if (rej_len > len1) { L2CAP_TRACE_ERROR ("L2CAP - cfg_rej pkt size exceeds buffer design max limit."); return; } p_buf = (BT_HDR *)GKI_getbuf (len + rej_len); - if (!p_buf) - { + if (!p_buf) { L2CAP_TRACE_ERROR ("L2CAP - no buffer for cfg_rej"); return; } @@ -808,11 +781,9 @@ void l2cu_send_peer_config_rej (tL2C_CCB *p_ccb, UINT8 *p_data, UINT16 data_len, /* Put in HCI header - handle + pkt boundary */ #if (L2CAP_NON_FLUSHABLE_PB_INCLUDED == TRUE) - if (HCI_NON_FLUSHABLE_PB_SUPPORTED(BTM_ReadLocalFeatures ())) - { + if (HCI_NON_FLUSHABLE_PB_SUPPORTED(BTM_ReadLocalFeatures ())) { UINT16_TO_STREAM (p, (p_ccb->p_lcb->handle | (L2CAP_PKT_START_NON_FLUSHABLE << L2CAP_PKT_TYPE_SHIFT))); - } - else + } else #endif { UINT16_TO_STREAM (p, (p_ccb->p_lcb->handle | (L2CAP_PKT_START << L2CAP_PKT_TYPE_SHIFT))); @@ -840,48 +811,40 @@ void l2cu_send_peer_config_rej (tL2C_CCB *p_ccb, UINT8 *p_data, UINT16 data_len, /* Now, put the rejected options */ p_data_end = p_data + data_len; - while (p_data < p_data_end) - { + while (p_data < p_data_end) { cfg_code = *p_data; cfg_len = *(p_data + 1); - switch (cfg_code & 0x7F) - { - /* skip known options */ - case L2CAP_CFG_TYPE_MTU: - case L2CAP_CFG_TYPE_FLUSH_TOUT: - case L2CAP_CFG_TYPE_QOS: - p_data += cfg_len + L2CAP_CFG_OPTION_OVERHEAD; - break; + switch (cfg_code & 0x7F) { + /* skip known options */ + case L2CAP_CFG_TYPE_MTU: + case L2CAP_CFG_TYPE_FLUSH_TOUT: + case L2CAP_CFG_TYPE_QOS: + p_data += cfg_len + L2CAP_CFG_OPTION_OVERHEAD; + break; - /* unknown options; copy into rsp if not hints */ - default: - /* sanity check option length */ - if ((cfg_len + L2CAP_CFG_OPTION_OVERHEAD) <= data_len) - { - if ((cfg_code & 0x80) == 0) - { - if (buf_space >= (cfg_len + L2CAP_CFG_OPTION_OVERHEAD)) - { - memcpy(p, p_data, cfg_len + L2CAP_CFG_OPTION_OVERHEAD); - p += cfg_len + L2CAP_CFG_OPTION_OVERHEAD; - buf_space -= (cfg_len + L2CAP_CFG_OPTION_OVERHEAD); - } - else - { - L2CAP_TRACE_WARNING("L2CAP - cfg_rej exceeds allocated buffer"); - p_data = p_data_end; /* force loop exit */ - break; - } + /* unknown options; copy into rsp if not hints */ + default: + /* sanity check option length */ + if ((cfg_len + L2CAP_CFG_OPTION_OVERHEAD) <= data_len) { + if ((cfg_code & 0x80) == 0) { + if (buf_space >= (cfg_len + L2CAP_CFG_OPTION_OVERHEAD)) { + memcpy(p, p_data, cfg_len + L2CAP_CFG_OPTION_OVERHEAD); + p += cfg_len + L2CAP_CFG_OPTION_OVERHEAD; + buf_space -= (cfg_len + L2CAP_CFG_OPTION_OVERHEAD); + } else { + L2CAP_TRACE_WARNING("L2CAP - cfg_rej exceeds allocated buffer"); + p_data = p_data_end; /* force loop exit */ + break; } - p_data += cfg_len + L2CAP_CFG_OPTION_OVERHEAD; } - /* bad length; force loop exit */ - else - { - p_data = p_data_end; - } - break; + p_data += cfg_len + L2CAP_CFG_OPTION_OVERHEAD; + } + /* bad length; force loop exit */ + else { + p_data = p_data_end; + } + break; } } @@ -891,7 +854,7 @@ void l2cu_send_peer_config_rej (tL2C_CCB *p_ccb, UINT8 *p_data, UINT16 data_len, p_buf->len = len + 4; L2CAP_TRACE_DEBUG ("L2CAP - cfg_rej pkt hci_len=%d, l2cap_len=%d", - len, (L2CAP_CMD_OVERHEAD+L2CAP_CONFIG_RSP_LEN+rej_len)); + len, (L2CAP_CMD_OVERHEAD + L2CAP_CONFIG_RSP_LEN + rej_len)); l2c_link_check_send_pkts (p_ccb->p_lcb, NULL, p_buf); } @@ -917,8 +880,7 @@ void l2cu_send_peer_disc_req (tL2C_CCB *p_ccb) p_ccb->local_id = p_ccb->p_lcb->id; - if ((p_buf = l2cu_build_header(p_ccb->p_lcb, L2CAP_DISC_REQ_LEN, L2CAP_CMD_DISC_REQ, p_ccb->local_id)) == NULL) - { + if ((p_buf = l2cu_build_header(p_ccb->p_lcb, L2CAP_DISC_REQ_LEN, L2CAP_CMD_DISC_REQ, p_ccb->local_id)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no buffer for disc_req"); return; } @@ -931,10 +893,8 @@ void l2cu_send_peer_disc_req (tL2C_CCB *p_ccb) /* Move all queued data packets to the LCB. In FCR mode, assume the higher layer checks that all buffers are sent before disconnecting. */ - if (p_ccb->peer_cfg.fcr.mode == L2CAP_FCR_BASIC_MODE) - { - while (GKI_getfirst(&p_ccb->xmit_hold_q)) - { + if (p_ccb->peer_cfg.fcr.mode == L2CAP_FCR_BASIC_MODE) { + while (GKI_getfirst(&p_ccb->xmit_hold_q)) { p_buf2 = (BT_HDR *)GKI_dequeue (&p_ccb->xmit_hold_q); l2cu_set_acl_hci_header (p_buf2, p_ccb); l2c_link_check_send_pkts (p_ccb->p_lcb, p_ccb, p_buf2); @@ -965,8 +925,7 @@ void l2cu_send_peer_disc_rsp (tL2C_LCB *p_lcb, UINT8 remote_id, UINT16 local_cid BT_HDR *p_buf; UINT8 *p; - if ((p_buf=l2cu_build_header(p_lcb, L2CAP_DISC_RSP_LEN, L2CAP_CMD_DISC_RSP, remote_id)) == NULL) - { + if ((p_buf = l2cu_build_header(p_lcb, L2CAP_DISC_RSP_LEN, L2CAP_CMD_DISC_RSP, remote_id)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no buffer for disc_rsp"); return; } @@ -999,16 +958,14 @@ void l2cu_send_peer_echo_req (tL2C_LCB *p_lcb, UINT8 *p_data, UINT16 data_len) p_lcb->id++; l2cu_adj_id(p_lcb, L2CAP_ADJ_ZERO_ID); /* check for wrap to '0' */ - if ((p_buf = l2cu_build_header(p_lcb, (UINT16) (L2CAP_ECHO_REQ_LEN + data_len), L2CAP_CMD_ECHO_REQ, p_lcb->id)) == NULL) - { + if ((p_buf = l2cu_build_header(p_lcb, (UINT16) (L2CAP_ECHO_REQ_LEN + data_len), L2CAP_CMD_ECHO_REQ, p_lcb->id)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no buffer for echo_req"); return; } p = (UINT8 *)(p_buf + 1) + L2CAP_SEND_CMD_OFFSET + HCI_DATA_PREAMBLE_SIZE + L2CAP_PKT_OVERHEAD + L2CAP_CMD_OVERHEAD; - if (data_len) - { + if (data_len) { ARRAY_TO_STREAM (p, p_data, data_len); } @@ -1032,17 +989,15 @@ void l2cu_send_peer_echo_rsp (tL2C_LCB *p_lcb, UINT8 id, UINT8 *p_data, UINT16 d UINT8 *p; UINT16 maxlen; /* Filter out duplicate IDs or if available buffers are low (intruder checking) */ - if (!id || id == p_lcb->cur_echo_id) - { + if (!id || id == p_lcb->cur_echo_id) { /* Dump this request since it is illegal */ L2CAP_TRACE_WARNING ("L2CAP ignoring duplicate echo request (%d)", id); return; - } - else + } else { p_lcb->cur_echo_id = id; - /* Don't respond if we more than 10% of our buffers are used */ - if (GKI_poolutilization (L2CAP_CMD_POOL_ID) > 10) - { + } + /* Don't respond if we more than 10% of our buffers are used */ + if (GKI_poolutilization (L2CAP_CMD_POOL_ID) > 10) { L2CAP_TRACE_WARNING ("L2CAP gki pool used up to more than 10%%, ignore echo response"); return; } @@ -1051,24 +1006,23 @@ void l2cu_send_peer_echo_rsp (tL2C_LCB *p_lcb, UINT8 id, UINT8 *p_data, UINT16 d uint16_t acl_packet_size = controller_get_interface()->get_acl_packet_size_classic(); /* Don't return data if it does not fit in ACL and L2CAP MTU */ maxlen = (GKI_get_pool_bufsize(L2CAP_CMD_POOL_ID) > acl_packet_size) ? - acl_data_size : (UINT16)GKI_get_pool_bufsize(L2CAP_CMD_POOL_ID); + acl_data_size : (UINT16)GKI_get_pool_bufsize(L2CAP_CMD_POOL_ID); maxlen -= (UINT16)(BT_HDR_SIZE + HCI_DATA_PREAMBLE_SIZE + L2CAP_PKT_OVERHEAD + - L2CAP_CMD_OVERHEAD + L2CAP_ECHO_RSP_LEN); + L2CAP_CMD_OVERHEAD + L2CAP_ECHO_RSP_LEN); - if (data_len > maxlen) + if (data_len > maxlen) { data_len = 0; + } - if ((p_buf = l2cu_build_header (p_lcb, (UINT16)(L2CAP_ECHO_RSP_LEN + data_len), L2CAP_CMD_ECHO_RSP, id)) == NULL) - { + if ((p_buf = l2cu_build_header (p_lcb, (UINT16)(L2CAP_ECHO_RSP_LEN + data_len), L2CAP_CMD_ECHO_RSP, id)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no buffer for echo_rsp"); return; } p = (UINT8 *)(p_buf + 1) + L2CAP_SEND_CMD_OFFSET + HCI_DATA_PREAMBLE_SIZE + - L2CAP_PKT_OVERHEAD + L2CAP_CMD_OVERHEAD; + L2CAP_PKT_OVERHEAD + L2CAP_CMD_OVERHEAD; - if (data_len) - { + if (data_len) { ARRAY_TO_STREAM (p, p_data, data_len); } @@ -1093,15 +1047,14 @@ void l2cu_send_peer_info_req (tL2C_LCB *p_lcb, UINT16 info_type) p_lcb->id++; l2cu_adj_id(p_lcb, L2CAP_ADJ_ID); - if ((p_buf = l2cu_build_header(p_lcb, 2, L2CAP_CMD_INFO_REQ, p_lcb->id)) == NULL) - { + if ((p_buf = l2cu_build_header(p_lcb, 2, L2CAP_CMD_INFO_REQ, p_lcb->id)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no buffer for info_req"); return; } L2CAP_TRACE_EVENT ("l2cu_send_peer_info_req: type 0x%04x", info_type); - p = (UINT8 *)(p_buf + 1) + L2CAP_SEND_CMD_OFFSET+HCI_DATA_PREAMBLE_SIZE + + p = (UINT8 *)(p_buf + 1) + L2CAP_SEND_CMD_OFFSET + HCI_DATA_PREAMBLE_SIZE + L2CAP_PKT_OVERHEAD + L2CAP_CMD_OVERHEAD; UINT16_TO_STREAM (p, info_type); @@ -1131,97 +1084,86 @@ void l2cu_send_peer_info_rsp (tL2C_LCB *p_lcb, UINT8 remote_id, UINT16 info_type #if (L2CAP_CONFORMANCE_TESTING == TRUE) if ((info_type == L2CAP_EXTENDED_FEATURES_INFO_TYPE) - && (l2cb.test_info_resp & (L2CAP_EXTFEA_ENH_RETRANS | L2CAP_EXTFEA_STREAM_MODE | - L2CAP_EXTFEA_NO_CRC | L2CAP_EXTFEA_EXT_FLOW_SPEC | - L2CAP_EXTFEA_FIXED_CHNLS | L2CAP_EXTFEA_EXT_WINDOW | - L2CAP_EXTFEA_UCD_RECEPTION )) ) + && (l2cb.test_info_resp & (L2CAP_EXTFEA_ENH_RETRANS | L2CAP_EXTFEA_STREAM_MODE | + L2CAP_EXTFEA_NO_CRC | L2CAP_EXTFEA_EXT_FLOW_SPEC | + L2CAP_EXTFEA_FIXED_CHNLS | L2CAP_EXTFEA_EXT_WINDOW | + L2CAP_EXTFEA_UCD_RECEPTION )) ) #else if ((info_type == L2CAP_EXTENDED_FEATURES_INFO_TYPE) - && (L2CAP_EXTFEA_SUPPORTED_MASK & (L2CAP_EXTFEA_ENH_RETRANS | L2CAP_EXTFEA_STREAM_MODE | - L2CAP_EXTFEA_NO_CRC |L2CAP_EXTFEA_FIXED_CHNLS | - L2CAP_EXTFEA_UCD_RECEPTION )) ) + && (L2CAP_EXTFEA_SUPPORTED_MASK & (L2CAP_EXTFEA_ENH_RETRANS | L2CAP_EXTFEA_STREAM_MODE | + L2CAP_EXTFEA_NO_CRC | L2CAP_EXTFEA_FIXED_CHNLS | + L2CAP_EXTFEA_UCD_RECEPTION )) ) #endif { len += L2CAP_EXTENDED_FEATURES_ARRAY_SIZE; - } - else if (info_type == L2CAP_FIXED_CHANNELS_INFO_TYPE) - { + } else if (info_type == L2CAP_FIXED_CHANNELS_INFO_TYPE) { len += L2CAP_FIXED_CHNL_ARRAY_SIZE; - } - else if (info_type == L2CAP_CONNLESS_MTU_INFO_TYPE) - { + } else if (info_type == L2CAP_CONNLESS_MTU_INFO_TYPE) { len += L2CAP_CONNLESS_MTU_INFO_SIZE; } - if ((p_buf = l2cu_build_header(p_lcb, len, L2CAP_CMD_INFO_RSP, remote_id)) == NULL) - { + if ((p_buf = l2cu_build_header(p_lcb, len, L2CAP_CMD_INFO_RSP, remote_id)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no buffer for info_rsp"); return; } p = (UINT8 *)(p_buf + 1) + L2CAP_SEND_CMD_OFFSET + HCI_DATA_PREAMBLE_SIZE + - L2CAP_PKT_OVERHEAD + L2CAP_CMD_OVERHEAD; + L2CAP_PKT_OVERHEAD + L2CAP_CMD_OVERHEAD; UINT16_TO_STREAM (p, info_type); #if (L2CAP_CONFORMANCE_TESTING == TRUE) if ((info_type == L2CAP_EXTENDED_FEATURES_INFO_TYPE) - && (l2cb.test_info_resp & ( L2CAP_EXTFEA_ENH_RETRANS | L2CAP_EXTFEA_STREAM_MODE - | L2CAP_EXTFEA_UCD_RECEPTION )) ) + && (l2cb.test_info_resp & ( L2CAP_EXTFEA_ENH_RETRANS | L2CAP_EXTFEA_STREAM_MODE + | L2CAP_EXTFEA_UCD_RECEPTION )) ) #else if ((info_type == L2CAP_EXTENDED_FEATURES_INFO_TYPE) - && (L2CAP_EXTFEA_SUPPORTED_MASK & ( L2CAP_EXTFEA_ENH_RETRANS | L2CAP_EXTFEA_STREAM_MODE - | L2CAP_EXTFEA_UCD_RECEPTION )) ) + && (L2CAP_EXTFEA_SUPPORTED_MASK & ( L2CAP_EXTFEA_ENH_RETRANS | L2CAP_EXTFEA_STREAM_MODE + | L2CAP_EXTFEA_UCD_RECEPTION )) ) #endif { UINT16_TO_STREAM (p, L2CAP_INFO_RESP_RESULT_SUCCESS); #if (BLE_INCLUDED == TRUE) - if (p_lcb->transport == BT_TRANSPORT_LE) - { + if (p_lcb->transport == BT_TRANSPORT_LE) { /* optional data are not added for now */ UINT32_TO_STREAM (p, L2CAP_BLE_EXTFEA_MASK); - } - else + } else #endif { #if L2CAP_CONFORMANCE_TESTING == TRUE - UINT32_TO_STREAM (p, l2cb.test_info_resp); + UINT32_TO_STREAM (p, l2cb.test_info_resp); #else #if (L2CAP_NUM_FIXED_CHNLS > 0) - UINT32_TO_STREAM (p, L2CAP_EXTFEA_SUPPORTED_MASK | L2CAP_EXTFEA_FIXED_CHNLS); + UINT32_TO_STREAM (p, L2CAP_EXTFEA_SUPPORTED_MASK | L2CAP_EXTFEA_FIXED_CHNLS); #else - UINT32_TO_STREAM (p, L2CAP_EXTFEA_SUPPORTED_MASK); + UINT32_TO_STREAM (p, L2CAP_EXTFEA_SUPPORTED_MASK); #endif #endif } - } - else if (info_type == L2CAP_FIXED_CHANNELS_INFO_TYPE) - { + } else if (info_type == L2CAP_FIXED_CHANNELS_INFO_TYPE) { UINT16_TO_STREAM (p, L2CAP_INFO_RESP_RESULT_SUCCESS); memset (p, 0, L2CAP_FIXED_CHNL_ARRAY_SIZE); p[0] = L2CAP_FIXED_CHNL_SIG_BIT; - if ( L2CAP_EXTFEA_SUPPORTED_MASK & L2CAP_EXTFEA_UCD_RECEPTION ) - p[0] |= L2CAP_FIXED_CHNL_CNCTLESS_BIT; + if ( L2CAP_EXTFEA_SUPPORTED_MASK & L2CAP_EXTFEA_UCD_RECEPTION ) { + p[0] |= L2CAP_FIXED_CHNL_CNCTLESS_BIT; + } #if (L2CAP_NUM_FIXED_CHNLS > 0) { int xx; for (xx = 0; xx < L2CAP_NUM_FIXED_CHNLS; xx++) - if (l2cb.fixed_reg[xx].pL2CA_FixedConn_Cb != NULL) - p[(xx + L2CAP_FIRST_FIXED_CHNL) / 8] |= 1 << ((xx + L2CAP_FIRST_FIXED_CHNL) % 8); + if (l2cb.fixed_reg[xx].pL2CA_FixedConn_Cb != NULL) { + p[(xx + L2CAP_FIRST_FIXED_CHNL) / 8] |= 1 << ((xx + L2CAP_FIRST_FIXED_CHNL) % 8); + } } #endif - } - else if (info_type == L2CAP_CONNLESS_MTU_INFO_TYPE) - { + } else if (info_type == L2CAP_CONNLESS_MTU_INFO_TYPE) { UINT16_TO_STREAM (p, L2CAP_INFO_RESP_RESULT_SUCCESS); UINT16_TO_STREAM (p, L2CAP_UCD_MTU); - } - else - { + } else { UINT16_TO_STREAM (p, L2CAP_INFO_RESP_RESULT_NOT_SUPPORTED); /* 'not supported' */ } @@ -1245,39 +1187,35 @@ void l2cu_enqueue_ccb (tL2C_CCB *p_ccb) /* Find out which queue the channel is on */ - if (p_ccb->p_lcb != NULL) + if (p_ccb->p_lcb != NULL) { p_q = &p_ccb->p_lcb->ccb_queue; + } - if ( (!p_ccb->in_use) || (p_q == NULL) ) - { + if ( (!p_ccb->in_use) || (p_q == NULL) ) { L2CAP_TRACE_ERROR ("l2cu_enqueue_ccb CID: 0x%04x ERROR in_use: %u p_lcb: 0x%08x", - p_ccb->local_cid, p_ccb->in_use, p_ccb->p_lcb); + p_ccb->local_cid, p_ccb->in_use, p_ccb->p_lcb); return; } L2CAP_TRACE_DEBUG ("l2cu_enqueue_ccb CID: 0x%04x priority: %d", - p_ccb->local_cid, p_ccb->ccb_priority); + p_ccb->local_cid, p_ccb->ccb_priority); /* If the queue is empty, we go at the front */ - if (!p_q->p_first_ccb) - { + if (!p_q->p_first_ccb) { p_q->p_first_ccb = p_q->p_last_ccb = p_ccb; p_ccb->p_next_ccb = p_ccb->p_prev_ccb = NULL; - } - else - { + } else { p_ccb1 = p_q->p_first_ccb; - while (p_ccb1 != NULL) - { + while (p_ccb1 != NULL) { /* Insert new ccb at the end of the same priority. Lower number, higher priority */ - if (p_ccb->ccb_priority < p_ccb1->ccb_priority) - { + if (p_ccb->ccb_priority < p_ccb1->ccb_priority) { /* Are we at the head of the queue ? */ - if (p_ccb1 == p_q->p_first_ccb) + if (p_ccb1 == p_q->p_first_ccb) { p_q->p_first_ccb = p_ccb; - else + } else { p_ccb1->p_prev_ccb->p_next_ccb = p_ccb; + } p_ccb->p_next_ccb = p_ccb1; p_ccb->p_prev_ccb = p_ccb1->p_prev_ccb; @@ -1289,8 +1227,7 @@ void l2cu_enqueue_ccb (tL2C_CCB *p_ccb) } /* If we are lower then anyone in the list, we go at the end */ - if (!p_ccb1) - { + if (!p_ccb1) { /* add new ccb at the end of the list */ p_q->p_last_ccb->p_next_ccb = p_ccb; @@ -1302,16 +1239,14 @@ void l2cu_enqueue_ccb (tL2C_CCB *p_ccb) #if (L2CAP_ROUND_ROBIN_CHANNEL_SERVICE == TRUE) /* Adding CCB into round robin service table of its LCB */ - if (p_ccb->p_lcb != NULL) - { + if (p_ccb->p_lcb != NULL) { /* if this is the first channel in this priority group */ - if (p_ccb->p_lcb->rr_serv[p_ccb->ccb_priority].num_ccb == 0 ) - { - /* Set the first channel to this CCB */ + if (p_ccb->p_lcb->rr_serv[p_ccb->ccb_priority].num_ccb == 0 ) { + /* Set the first channel to this CCB */ p_ccb->p_lcb->rr_serv[p_ccb->ccb_priority].p_first_ccb = p_ccb; - /* Set the next serving channel in this group to this CCB */ + /* Set the next serving channel in this group to this CCB */ p_ccb->p_lcb->rr_serv[p_ccb->ccb_priority].p_serve_ccb = p_ccb; - /* Initialize quota of this priority group based on its priority */ + /* Initialize quota of this priority group based on its priority */ p_ccb->p_lcb->rr_serv[p_ccb->ccb_priority].quota = L2CAP_GET_PRIORITY_QUOTA(p_ccb->ccb_priority); } /* increase number of channels in this group */ @@ -1338,39 +1273,33 @@ void l2cu_dequeue_ccb (tL2C_CCB *p_ccb) /* Find out which queue the channel is on */ - if (p_ccb->p_lcb != NULL) + if (p_ccb->p_lcb != NULL) { p_q = &p_ccb->p_lcb->ccb_queue; + } - if ( (!p_ccb->in_use) || (p_q == NULL) || (p_q->p_first_ccb == NULL) ) - { + if ( (!p_ccb->in_use) || (p_q == NULL) || (p_q->p_first_ccb == NULL) ) { L2CAP_TRACE_ERROR ("l2cu_dequeue_ccb CID: 0x%04x ERROR in_use: %u p_lcb: 0x%08x p_q: 0x%08x p_q->p_first_ccb: 0x%08x", - p_ccb->local_cid, p_ccb->in_use, p_ccb->p_lcb, p_q, p_q ? p_q->p_first_ccb : 0); + p_ccb->local_cid, p_ccb->in_use, p_ccb->p_lcb, p_q, p_q ? p_q->p_first_ccb : 0); return; } #if (L2CAP_ROUND_ROBIN_CHANNEL_SERVICE == TRUE) /* Removing CCB from round robin service table of its LCB */ - if (p_ccb->p_lcb != NULL) - { + if (p_ccb->p_lcb != NULL) { /* decrease number of channels in this priority group */ p_ccb->p_lcb->rr_serv[p_ccb->ccb_priority].num_ccb--; /* if it was the last channel in the priority group */ - if (p_ccb->p_lcb->rr_serv[p_ccb->ccb_priority].num_ccb == 0 ) - { + if (p_ccb->p_lcb->rr_serv[p_ccb->ccb_priority].num_ccb == 0 ) { p_ccb->p_lcb->rr_serv[p_ccb->ccb_priority].p_first_ccb = NULL; p_ccb->p_lcb->rr_serv[p_ccb->ccb_priority].p_serve_ccb = NULL; - } - else - { + } else { /* if it is the first channel of this group */ - if ( p_ccb->p_lcb->rr_serv[p_ccb->ccb_priority].p_first_ccb == p_ccb ) - { + if ( p_ccb->p_lcb->rr_serv[p_ccb->ccb_priority].p_first_ccb == p_ccb ) { p_ccb->p_lcb->rr_serv[p_ccb->ccb_priority].p_first_ccb = p_ccb->p_next_ccb; } /* if it is the next serving channel of this group */ - if ( p_ccb->p_lcb->rr_serv[p_ccb->ccb_priority].p_serve_ccb == p_ccb ) - { + if ( p_ccb->p_lcb->rr_serv[p_ccb->ccb_priority].p_serve_ccb == p_ccb ) { /* simply, start serving from the first channel */ p_ccb->p_lcb->rr_serv[p_ccb->ccb_priority].p_serve_ccb = p_ccb->p_lcb->rr_serv[p_ccb->ccb_priority].p_first_ccb; @@ -1379,24 +1308,20 @@ void l2cu_dequeue_ccb (tL2C_CCB *p_ccb) } #endif - if (p_ccb == p_q->p_first_ccb) - { + if (p_ccb == p_q->p_first_ccb) { /* We are removing the first in a queue */ p_q->p_first_ccb = p_ccb->p_next_ccb; - if (p_q->p_first_ccb) + if (p_q->p_first_ccb) { p_q->p_first_ccb->p_prev_ccb = NULL; - else + } else { p_q->p_last_ccb = NULL; - } - else if (p_ccb == p_q->p_last_ccb) - { + } + } else if (p_ccb == p_q->p_last_ccb) { /* We are removing the last in a queue */ p_q->p_last_ccb = p_ccb->p_prev_ccb; p_q->p_last_ccb->p_next_ccb = NULL; - } - else - { + } else { /* In the middle of a chain. */ p_ccb->p_prev_ccb->p_next_ccb = p_ccb->p_next_ccb; p_ccb->p_next_ccb->p_prev_ccb = p_ccb->p_prev_ccb; @@ -1416,11 +1341,9 @@ void l2cu_dequeue_ccb (tL2C_CCB *p_ccb) *******************************************************************************/ void l2cu_change_pri_ccb (tL2C_CCB *p_ccb, tL2CAP_CHNL_PRIORITY priority) { - if (p_ccb->ccb_priority != priority) - { + if (p_ccb->ccb_priority != priority) { /* If CCB is not the only guy on the queue */ - if ( (p_ccb->p_next_ccb != NULL) || (p_ccb->p_prev_ccb != NULL) ) - { + if ( (p_ccb->p_next_ccb != NULL) || (p_ccb->p_prev_ccb != NULL) ) { L2CAP_TRACE_DEBUG ("Update CCB list in logical link"); /* Remove CCB from queue and re-queue it at new priority */ @@ -1430,9 +1353,8 @@ void l2cu_change_pri_ccb (tL2C_CCB *p_ccb, tL2CAP_CHNL_PRIORITY priority) l2cu_enqueue_ccb (p_ccb); } #if (L2CAP_ROUND_ROBIN_CHANNEL_SERVICE == TRUE) - else - { - /* If CCB is the only guy on the queue, no need to re-enqueue */ + else { + /* If CCB is the only guy on the queue, no need to re-enqueue */ /* update only round robin service data */ p_ccb->p_lcb->rr_serv[p_ccb->ccb_priority].num_ccb = 0; p_ccb->p_lcb->rr_serv[p_ccb->ccb_priority].p_first_ccb = NULL; @@ -1467,39 +1389,34 @@ tL2C_CCB *l2cu_allocate_ccb (tL2C_LCB *p_lcb, UINT16 cid) L2CAP_TRACE_DEBUG ("l2cu_allocate_ccb: cid 0x%04x", cid); - if (!l2cb.p_free_ccb_first) + if (!l2cb.p_free_ccb_first) { return (NULL); + } /* If a CID was passed in, use that, else take the first free one */ - if (cid == 0) - { + if (cid == 0) { p_ccb = l2cb.p_free_ccb_first; l2cb.p_free_ccb_first = p_ccb->p_next_ccb; - } - else - { + } else { p_prev = NULL; p_ccb = &l2cb.ccb_pool[cid - L2CAP_BASE_APPL_CID]; - if (p_ccb == l2cb.p_free_ccb_first) + if (p_ccb == l2cb.p_free_ccb_first) { l2cb.p_free_ccb_first = p_ccb->p_next_ccb; - else - { - for (p_prev = l2cb.p_free_ccb_first; p_prev != NULL; p_prev = p_prev->p_next_ccb) - { - if (p_prev->p_next_ccb == p_ccb) - { + } else { + for (p_prev = l2cb.p_free_ccb_first; p_prev != NULL; p_prev = p_prev->p_next_ccb) { + if (p_prev->p_next_ccb == p_ccb) { p_prev->p_next_ccb = p_ccb->p_next_ccb; - if (p_ccb == l2cb.p_free_ccb_last) + if (p_ccb == l2cb.p_free_ccb_last) { l2cb.p_free_ccb_last = p_prev; + } break; } } - if (p_prev == NULL) - { + if (p_prev == NULL) { L2CAP_TRACE_ERROR ("l2cu_allocate_ccb: could not find CCB for CID 0x%04x in the free list", cid); return NULL; } @@ -1520,8 +1437,9 @@ tL2C_CCB *l2cu_allocate_ccb (tL2C_LCB *p_lcb, UINT16 cid) /* Set priority then insert ccb into LCB queue (if we have an LCB) */ p_ccb->ccb_priority = L2CAP_CHNL_PRIORITY_LOW; - if (p_lcb) + if (p_lcb) { l2cu_enqueue_ccb (p_ccb); + } /* clear what peer wants to configure */ p_ccb->peer_cfg_bits = 0; @@ -1547,17 +1465,19 @@ tL2C_CCB *l2cu_allocate_ccb (tL2C_LCB *p_lcb, UINT16 cid) p_ccb->fcrb.ack_timer.param = (TIMER_PARAM_TYPE)p_ccb; /* if timer is running, remove it from timer list */ - if (p_ccb->fcrb.ack_timer.in_use) + if (p_ccb->fcrb.ack_timer.in_use) { btu_stop_quick_timer (&p_ccb->fcrb.ack_timer); + } p_ccb->fcrb.mon_retrans_timer.param = (TIMER_PARAM_TYPE)p_ccb; // btla-specific ++ - /* CSP408639 Fix: When L2CAP send amp move channel request or receive - * L2CEVT_AMP_MOVE_REQ do following sequence. Send channel move - * request -> Stop retrans/monitor timer -> Change channel state to CST_AMP_MOVING. */ - if (p_ccb->fcrb.mon_retrans_timer.in_use) - btu_stop_quick_timer (&p_ccb->fcrb.mon_retrans_timer); + /* CSP408639 Fix: When L2CAP send amp move channel request or receive + * L2CEVT_AMP_MOVE_REQ do following sequence. Send channel move + * request -> Stop retrans/monitor timer -> Change channel state to CST_AMP_MOVING. */ + if (p_ccb->fcrb.mon_retrans_timer.in_use) { + btu_stop_quick_timer (&p_ccb->fcrb.mon_retrans_timer); + } // btla-specific -- l2c_fcr_stop_timer (p_ccb); @@ -1577,10 +1497,9 @@ tL2C_CCB *l2cu_allocate_ccb (tL2C_LCB *p_lcb, UINT16 cid) p_ccb->buff_quota = 2; /* This gets set after config */ /* If CCB was reserved Config_Done can already have some value */ - if (cid == 0) + if (cid == 0) { p_ccb->config_done = 0; - else - { + } else { L2CAP_TRACE_DEBUG ("l2cu_allocate_ccb: cid 0x%04x config_done:0x%x", cid, p_ccb->config_done); } @@ -1619,35 +1538,33 @@ BOOLEAN l2cu_start_post_bond_timer (UINT16 handle) UINT16 timeout; tL2C_LCB *p_lcb = l2cu_find_lcb_by_handle(handle); - if (!p_lcb) + if (!p_lcb) { return (TRUE); + } p_lcb->is_bonding = FALSE; /* Only start timer if no control blocks allocated */ - if (p_lcb->ccb_queue.p_first_ccb != NULL) + if (p_lcb->ccb_queue.p_first_ccb != NULL) { return (FALSE); + } /* If no channels on the connection, start idle timeout */ - if ( (p_lcb->link_state == LST_CONNECTED) || (p_lcb->link_state == LST_CONNECTING) || (p_lcb->link_state == LST_DISCONNECTING) ) - { - if (p_lcb->idle_timeout == 0) - { - if (btsnd_hcic_disconnect (p_lcb->handle, HCI_ERR_PEER_USER)) - { + if ( (p_lcb->link_state == LST_CONNECTED) || (p_lcb->link_state == LST_CONNECTING) || (p_lcb->link_state == LST_DISCONNECTING) ) { + if (p_lcb->idle_timeout == 0) { + if (btsnd_hcic_disconnect (p_lcb->handle, HCI_ERR_PEER_USER)) { p_lcb->link_state = LST_DISCONNECTING; timeout = L2CAP_LINK_DISCONNECT_TOUT; - } - else + } else { timeout = BT_1SEC_TIMEOUT; - } - else - { + } + } else { timeout = L2CAP_BONDING_TIMEOUT; } - if (timeout != 0xFFFF) + if (timeout != 0xFFFF) { btu_start_timer (&p_lcb->timer_entry, BTU_TTYPE_L2CAP_LINK, timeout); + } return (TRUE); } @@ -1674,16 +1591,15 @@ void l2cu_release_ccb (tL2C_CCB *p_ccb) L2CAP_TRACE_DEBUG ("l2cu_release_ccb: cid 0x%04x in_use: %u", p_ccb->local_cid, p_ccb->in_use); /* If already released, could be race condition */ - if (!p_ccb->in_use) + if (!p_ccb->in_use) { return; + } - if (p_rcb && (p_rcb->psm != p_rcb->real_psm)) - { + if (p_rcb && (p_rcb->psm != p_rcb->real_psm)) { btm_sec_clr_service_by_psm(p_rcb->psm); } - if (p_ccb->should_free_rcb) - { + if (p_ccb->should_free_rcb) { osi_free(p_rcb); p_ccb->p_rcb = NULL; p_ccb->should_free_rcb = false; @@ -1694,20 +1610,20 @@ void l2cu_release_ccb (tL2C_CCB *p_ccb) /* Stop the timer */ btu_stop_timer (&p_ccb->timer_entry); - while (!GKI_queue_is_empty(&p_ccb->xmit_hold_q)) + while (!GKI_queue_is_empty(&p_ccb->xmit_hold_q)) { GKI_freebuf (GKI_dequeue (&p_ccb->xmit_hold_q)); + } l2c_fcr_cleanup (p_ccb); /* Channel may not be assigned to any LCB if it was just pre-reserved */ if ( (p_lcb) && - ( (p_ccb->local_cid >= L2CAP_BASE_APPL_CID) + ( (p_ccb->local_cid >= L2CAP_BASE_APPL_CID) #if (L2CAP_UCD_INCLUDED == TRUE) - ||(p_ccb->local_cid == L2CAP_CONNECTIONLESS_CID) + || (p_ccb->local_cid == L2CAP_CONNECTIONLESS_CID) #endif - ) - ) - { + ) + ) { l2cu_dequeue_ccb (p_ccb); /* Delink the CCB from the LCB */ @@ -1715,15 +1631,12 @@ void l2cu_release_ccb (tL2C_CCB *p_ccb) } /* Put the CCB back on the free pool */ - if (!l2cb.p_free_ccb_first) - { + if (!l2cb.p_free_ccb_first) { l2cb.p_free_ccb_first = p_ccb; l2cb.p_free_ccb_last = p_ccb; p_ccb->p_next_ccb = NULL; p_ccb->p_prev_ccb = NULL; - } - else - { + } else { p_ccb->p_next_ccb = NULL; p_ccb->p_prev_ccb = l2cb.p_free_ccb_last; l2cb.p_free_ccb_last->p_next_ccb = p_ccb; @@ -1734,14 +1647,10 @@ void l2cu_release_ccb (tL2C_CCB *p_ccb) p_ccb->in_use = FALSE; /* If no channels on the connection, start idle timeout */ - if ((p_lcb) && p_lcb->in_use && (p_lcb->link_state == LST_CONNECTED)) - { - if (!p_lcb->ccb_queue.p_first_ccb) - { + if ((p_lcb) && p_lcb->in_use && (p_lcb->link_state == LST_CONNECTED)) { + if (!p_lcb->ccb_queue.p_first_ccb) { l2cu_no_dynamic_ccbs (p_lcb); - } - else - { + } else { /* Link is still active, adjust channel quotas. */ l2c_link_adjust_chnl_allocation (); } @@ -1763,15 +1672,13 @@ tL2C_CCB *l2cu_find_ccb_by_remote_cid (tL2C_LCB *p_lcb, UINT16 remote_cid) tL2C_CCB *p_ccb; /* If LCB is NULL, look through all active links */ - if (!p_lcb) - { + if (!p_lcb) { return NULL; - } - else - { + } else { for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; p_ccb = p_ccb->p_next_ccb) - if ((p_ccb->in_use) && (p_ccb->remote_cid == remote_cid)) + if ((p_ccb->in_use) && (p_ccb->remote_cid == remote_cid)) { return (p_ccb); + } } /* If here, no match found */ @@ -1793,10 +1700,8 @@ tL2C_RCB *l2cu_allocate_rcb (UINT16 psm) tL2C_RCB *p_rcb = &l2cb.rcb_pool[0]; UINT16 xx; - for (xx = 0; xx < MAX_L2CAP_CLIENTS; xx++, p_rcb++) - { - if (!p_rcb->in_use) - { + for (xx = 0; xx < MAX_L2CAP_CLIENTS; xx++, p_rcb++) { + if (!p_rcb->in_use) { p_rcb->in_use = TRUE; p_rcb->psm = psm; #if (L2CAP_UCD_INCLUDED == TRUE) @@ -1839,8 +1744,7 @@ void l2cu_disconnect_chnl (tL2C_CCB *p_ccb) { UINT16 local_cid = p_ccb->local_cid; - if (local_cid >= L2CAP_BASE_APPL_CID) - { + if (local_cid >= L2CAP_BASE_APPL_CID) { tL2CA_DISCONNECT_IND_CB *p_disc_cb = p_ccb->p_rcb->api.pL2CA_DisconnectInd_Cb; L2CAP_TRACE_WARNING ("L2CAP - disconnect_chnl CID: 0x%04x", local_cid); @@ -1850,9 +1754,7 @@ void l2cu_disconnect_chnl (tL2C_CCB *p_ccb) l2cu_release_ccb (p_ccb); (*p_disc_cb)(local_cid, FALSE); - } - else - { + } else { /* failure on the AMP channel, probably need to disconnect ACL */ L2CAP_TRACE_ERROR ("L2CAP - disconnect_chnl CID: 0x%04x Ignored", local_cid); } @@ -1874,10 +1776,10 @@ tL2C_RCB *l2cu_find_rcb_by_psm (UINT16 psm) tL2C_RCB *p_rcb = &l2cb.rcb_pool[0]; UINT16 xx; - for (xx = 0; xx < MAX_L2CAP_CLIENTS; xx++, p_rcb++) - { - if ((p_rcb->in_use) && (p_rcb->psm == psm)) + for (xx = 0; xx < MAX_L2CAP_CLIENTS; xx++, p_rcb++) { + if ((p_rcb->in_use) && (p_rcb->psm == psm)) { return (p_rcb); + } } /* If here, no match found */ @@ -1913,86 +1815,72 @@ UINT8 l2cu_process_peer_cfg_req (tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg) UINT8 fcr_status; /* Ignore FCR parameters for basic mode */ - if (!p_cfg->fcr_present) + if (!p_cfg->fcr_present) { p_cfg->fcr.mode = L2CAP_FCR_BASIC_MODE; + } /* Save the MTU that our peer can receive */ - if (p_cfg->mtu_present) - { + if (p_cfg->mtu_present) { /* Make sure MTU is at least the minimum */ - if (p_cfg->mtu >= L2CAP_MIN_MTU) - { + if (p_cfg->mtu >= L2CAP_MIN_MTU) { /* In basic mode, limit the MTU to our buffer size */ - if ( (p_cfg->fcr_present == FALSE) && (p_cfg->mtu > L2CAP_MTU_SIZE) ) + if ( (p_cfg->fcr_present == FALSE) && (p_cfg->mtu > L2CAP_MTU_SIZE) ) { p_cfg->mtu = L2CAP_MTU_SIZE; + } /* Save the accepted value in case of renegotiation */ p_ccb->peer_cfg.mtu = p_cfg->mtu; p_ccb->peer_cfg.mtu_present = TRUE; p_ccb->peer_cfg_bits |= L2CAP_CH_CFG_MASK_MTU; - } - else /* Illegal MTU value */ - { + } else { /* Illegal MTU value */ p_cfg->mtu = L2CAP_MIN_MTU; mtu_ok = FALSE; } } /* Reload mtu from a previously accepted config request */ - else if (p_ccb->peer_cfg.mtu_present) - { + else if (p_ccb->peer_cfg.mtu_present) { p_cfg->mtu_present = TRUE; p_cfg->mtu = p_ccb->peer_cfg.mtu; } /* Verify that the flush timeout is a valid value (0 is illegal) */ - if (p_cfg->flush_to_present) - { - if (!p_cfg->flush_to) - { + if (p_cfg->flush_to_present) { + if (!p_cfg->flush_to) { p_cfg->flush_to = 0xFFFF; /* Infinite retransmissions (spec default) */ flush_to_ok = FALSE; - } - else /* Save the accepted value in case of renegotiation */ - { + } else { /* Save the accepted value in case of renegotiation */ p_ccb->peer_cfg.flush_to_present = TRUE; p_ccb->peer_cfg.flush_to = p_cfg->flush_to; p_ccb->peer_cfg_bits |= L2CAP_CH_CFG_MASK_FLUSH_TO; } } /* Reload flush_to from a previously accepted config request */ - else if (p_ccb->peer_cfg.flush_to_present) - { + else if (p_ccb->peer_cfg.flush_to_present) { p_cfg->flush_to_present = TRUE; p_cfg->flush_to = p_ccb->peer_cfg.flush_to; } /* Save the QOS settings the the peer is using */ - if (p_cfg->qos_present) - { + if (p_cfg->qos_present) { /* Make sure service type is not a reserved value; otherwise let upper layer decide if acceptable */ - if (p_cfg->qos.service_type <= GUARANTEED) - { + if (p_cfg->qos.service_type <= GUARANTEED) { p_ccb->peer_cfg.qos = p_cfg->qos; p_ccb->peer_cfg.qos_present = TRUE; p_ccb->peer_cfg_bits |= L2CAP_CH_CFG_MASK_QOS; - } - else /* Illegal service type value */ - { + } else { /* Illegal service type value */ p_cfg->qos.service_type = BEST_EFFORT; qos_type_ok = FALSE; } } /* Reload QOS from a previously accepted config request */ - else if (p_ccb->peer_cfg.qos_present) - { + else if (p_ccb->peer_cfg.qos_present) { p_cfg->qos_present = TRUE; p_cfg->qos = p_ccb->peer_cfg.qos; } - if ((fcr_status = l2c_fcr_process_peer_cfg_req (p_ccb, p_cfg)) == L2CAP_PEER_CFG_DISCONNECT) - { + if ((fcr_status = l2c_fcr_process_peer_cfg_req (p_ccb, p_cfg)) == L2CAP_PEER_CFG_DISCONNECT) { /* Notify caller to disconnect the channel (incompatible modes) */ p_cfg->result = L2CAP_CFG_FAILED_NO_REASON; p_cfg->mtu_present = p_cfg->qos_present = p_cfg->flush_to_present = 0; @@ -2003,23 +1891,24 @@ UINT8 l2cu_process_peer_cfg_req (tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg) fcr_ok = (fcr_status == L2CAP_PEER_CFG_OK); /* Return any unacceptable parameters */ - if (mtu_ok && flush_to_ok && qos_type_ok && fcr_ok) - { + if (mtu_ok && flush_to_ok && qos_type_ok && fcr_ok) { l2cu_adjust_out_mps (p_ccb); return (L2CAP_PEER_CFG_OK); - } - else - { + } else { p_cfg->result = L2CAP_CFG_UNACCEPTABLE_PARAMS; - if (mtu_ok) + if (mtu_ok) { p_cfg->mtu_present = FALSE; - if (flush_to_ok) + } + if (flush_to_ok) { p_cfg->flush_to_present = FALSE; - if (qos_type_ok) + } + if (qos_type_ok) { p_cfg->qos_present = FALSE; - if (fcr_ok) + } + if (fcr_ok) { p_cfg->fcr_present = FALSE; + } return (L2CAP_PEER_CFG_UNACCEPTABLE); } @@ -2040,26 +1929,26 @@ UINT8 l2cu_process_peer_cfg_req (tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg) void l2cu_process_peer_cfg_rsp (tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg) { /* If we wanted QoS and the peer sends us a positive response with QoS, use his values */ - if ( (p_cfg->qos_present) && (p_ccb->our_cfg.qos_present) ) + if ( (p_cfg->qos_present) && (p_ccb->our_cfg.qos_present) ) { p_ccb->our_cfg.qos = p_cfg->qos; + } - if (p_cfg->fcr_present) - { + if (p_cfg->fcr_present) { /* Save the retransmission and monitor timeout values */ - if (p_cfg->fcr.mode == L2CAP_FCR_ERTM_MODE) - { + if (p_cfg->fcr.mode == L2CAP_FCR_ERTM_MODE) { p_ccb->peer_cfg.fcr.rtrans_tout = p_cfg->fcr.rtrans_tout; p_ccb->peer_cfg.fcr.mon_tout = p_cfg->fcr.mon_tout; } /* Calculate the max number of packets for which we can delay sending an ack */ - if (p_cfg->fcr.tx_win_sz < p_ccb->our_cfg.fcr.tx_win_sz) + if (p_cfg->fcr.tx_win_sz < p_ccb->our_cfg.fcr.tx_win_sz) { p_ccb->fcrb.max_held_acks = p_cfg->fcr.tx_win_sz / 3; - else + } else { p_ccb->fcrb.max_held_acks = p_ccb->our_cfg.fcr.tx_win_sz / 3; + } L2CAP_TRACE_DEBUG ("l2cu_process_peer_cfg_rsp(): peer tx_win_sz: %d, our tx_win_sz: %d, max_held_acks: %d", - p_cfg->fcr.tx_win_sz, p_ccb->our_cfg.fcr.tx_win_sz, p_ccb->fcrb.max_held_acks); + p_cfg->fcr.tx_win_sz, p_ccb->our_cfg.fcr.tx_win_sz, p_ccb->fcrb.max_held_acks); } } @@ -2080,43 +1969,39 @@ void l2cu_process_our_cfg_req (tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg) UINT16 hci_flush_to; /* Save the QOS settings we are using for transmit */ - if (p_cfg->qos_present) - { + if (p_cfg->qos_present) { p_ccb->our_cfg.qos_present = TRUE; p_ccb->our_cfg.qos = p_cfg->qos; } - if (p_cfg->fcr_present) - { + if (p_cfg->fcr_present) { /* Override FCR options if attempting streaming or basic */ - if (p_cfg->fcr.mode == L2CAP_FCR_BASIC_MODE) + if (p_cfg->fcr.mode == L2CAP_FCR_BASIC_MODE) { memset(&p_cfg->fcr, 0, sizeof(tL2CAP_FCR_OPTS)); - else - { + } else { /* On BR/EDR, timer values are zero in config request */ /* On class 2 AMP, timer value in config request shall be non-0 processing time */ /* timer value in config response shall be greater than received processing time */ p_cfg->fcr.mon_tout = p_cfg->fcr.rtrans_tout = 0; - if (p_cfg->fcr.mode == L2CAP_FCR_STREAM_MODE) + if (p_cfg->fcr.mode == L2CAP_FCR_STREAM_MODE) { p_cfg->fcr.max_transmit = p_cfg->fcr.tx_win_sz = 0; + } } /* Set the threshold to send acks (may be updated in the cfg response) */ p_ccb->fcrb.max_held_acks = p_cfg->fcr.tx_win_sz / 3; /* Include FCS option only if peer can handle it */ - if (p_ccb->p_lcb->peer_ext_fea & L2CAP_EXTFEA_NO_CRC) - { + if (p_ccb->p_lcb->peer_ext_fea & L2CAP_EXTFEA_NO_CRC) { /* FCS check can be bypassed if peer also desires to bypass */ - if (p_cfg->fcs_present && p_cfg->fcs == L2CAP_CFG_FCS_BYPASS) + if (p_cfg->fcs_present && p_cfg->fcs == L2CAP_CFG_FCS_BYPASS) { p_ccb->bypass_fcs |= L2CAP_CFG_FCS_OUR; - } - else + } + } else { p_cfg->fcs_present = FALSE; - } - else - { + } + } else { p_cfg->fcr.mode = L2CAP_FCR_BASIC_MODE; } @@ -2125,27 +2010,21 @@ void l2cu_process_our_cfg_req (tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg) /* Check the flush timeout. If it is lower than the current one used */ /* then we need to adjust the flush timeout sent to the controller */ - if (p_cfg->flush_to_present) - { - if ((p_cfg->flush_to == 0)||(p_cfg->flush_to == L2CAP_NO_AUTOMATIC_FLUSH)) - { + if (p_cfg->flush_to_present) { + if ((p_cfg->flush_to == 0) || (p_cfg->flush_to == L2CAP_NO_AUTOMATIC_FLUSH)) { /* don't send invalid flush timeout */ /* SPEC: The sender of the Request shall specify its flush timeout value */ /* if it differs from the default value of 0xFFFF */ p_cfg->flush_to_present = FALSE; - } - else - { + } else { p_ccb->our_cfg.flush_to = p_cfg->flush_to; p_lcb = p_ccb->p_lcb; - if (p_cfg->flush_to < p_lcb->link_flush_tout) - { + if (p_cfg->flush_to < p_lcb->link_flush_tout) { p_lcb->link_flush_tout = p_cfg->flush_to; /* If the timeout is within range of HCI, set the flush timeout */ - if (p_cfg->flush_to <= ((HCI_MAX_AUTO_FLUSH_TOUT * 5) / 8)) - { + if (p_cfg->flush_to <= ((HCI_MAX_AUTO_FLUSH_TOUT * 5) / 8)) { /* Convert flush timeout to 0.625 ms units, with round */ hci_flush_to = ((p_cfg->flush_to * 8) + 3) / 5; btsnd_hcic_write_auto_flush_tout (p_lcb->handle, hci_flush_to); @@ -2170,10 +2049,11 @@ void l2cu_process_our_cfg_req (tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg) void l2cu_process_our_cfg_rsp (tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg) { /* If peer wants QoS, we are allowed to change the values in a positive response */ - if ( (p_cfg->qos_present) && (p_ccb->peer_cfg.qos_present) ) + if ( (p_cfg->qos_present) && (p_ccb->peer_cfg.qos_present) ) { p_ccb->peer_cfg.qos = p_cfg->qos; - else + } else { p_cfg->qos_present = FALSE; + } l2c_fcr_adj_our_rsp_options (p_ccb, p_cfg); } @@ -2194,11 +2074,9 @@ void l2cu_device_reset (void) int xx; tL2C_LCB *p_lcb = &l2cb.lcb_pool[0]; - for (xx = 0; xx < MAX_L2CAP_LINKS; xx++, p_lcb++) - { - if ((p_lcb->in_use) && (p_lcb->handle != HCI_INVALID_HANDLE)) - { - l2c_link_hci_disc_comp (p_lcb->handle, (UINT8) -1); + for (xx = 0; xx < MAX_L2CAP_LINKS; xx++, p_lcb++) { + if ((p_lcb->in_use) && (p_lcb->handle != HCI_INVALID_HANDLE)) { + l2c_link_hci_disc_comp (p_lcb->handle, (UINT8) - 1); } } #if (BLE_INCLUDED == TRUE) @@ -2230,10 +2108,10 @@ BOOLEAN l2cu_create_conn (tL2C_LCB *p_lcb, tBT_TRANSPORT transport) BTM_ReadDevInfo(p_lcb->remote_bd_addr, &dev_type, &addr_type); - if (transport == BT_TRANSPORT_LE) - { - if (!controller_get_interface()->supports_ble()) + if (transport == BT_TRANSPORT_LE) { + if (!controller_get_interface()->supports_ble()) { return FALSE; + } p_lcb->ble_addr_type = addr_type; p_lcb->transport = BT_TRANSPORT_LE; @@ -2244,13 +2122,12 @@ BOOLEAN l2cu_create_conn (tL2C_LCB *p_lcb, tBT_TRANSPORT transport) /* If there is a connection where we perform as a slave, try to switch roles for this connection */ - for (xx = 0, p_lcb_cur = &l2cb.lcb_pool[0]; xx < MAX_L2CAP_LINKS; xx++, p_lcb_cur++) - { - if (p_lcb_cur == p_lcb) + for (xx = 0, p_lcb_cur = &l2cb.lcb_pool[0]; xx < MAX_L2CAP_LINKS; xx++, p_lcb_cur++) { + if (p_lcb_cur == p_lcb) { continue; + } - if ((p_lcb_cur->in_use) && (p_lcb_cur->link_role == HCI_ROLE_SLAVE)) - { + if ((p_lcb_cur->in_use) && (p_lcb_cur->link_role == HCI_ROLE_SLAVE)) { #if BTM_SCO_INCLUDED == TRUE /* The LMP_switch_req shall be sent only if the ACL logical transport @@ -2261,21 +2138,20 @@ BOOLEAN l2cu_create_conn (tL2C_LCB *p_lcb, tBT_TRANSPORT transport) is_sco_active = btm_is_sco_active_by_bdaddr(p_lcb_cur->remote_bd_addr); L2CAP_TRACE_API ("l2cu_create_conn - btm_is_sco_active_by_bdaddr() is_sco_active = %s", \ - (is_sco_active == TRUE) ? "TRUE":"FALSE"); + (is_sco_active == TRUE) ? "TRUE" : "FALSE"); - if (is_sco_active == TRUE) - continue; /* No Master Slave switch not allowed when SCO Active */ + if (is_sco_active == TRUE) { + continue; /* No Master Slave switch not allowed when SCO Active */ + } #endif /*4_1_TODO check if btm_cb.devcb.local_features to be used instead */ - if (HCI_SWITCH_SUPPORTED(BTM_ReadLocalFeatures())) - { + if (HCI_SWITCH_SUPPORTED(BTM_ReadLocalFeatures())) { /* mark this lcb waiting for switch to be completed and start switch on the other one */ p_lcb->link_state = LST_CONNECTING_WAIT_SWITCH; p_lcb->link_role = HCI_ROLE_MASTER; - if (BTM_SwitchRole (p_lcb_cur->remote_bd_addr, HCI_ROLE_MASTER, NULL) == BTM_CMD_STARTED) - { + if (BTM_SwitchRole (p_lcb_cur->remote_bd_addr, HCI_ROLE_MASTER, NULL) == BTM_CMD_STARTED) { btu_start_timer (&p_lcb->timer_entry, BTU_TTYPE_L2CAP_LINK, L2CAP_LINK_ROLE_SWITCH_TOUT); return (TRUE); } @@ -2303,10 +2179,8 @@ UINT8 l2cu_get_num_hi_priority (void) int xx; tL2C_LCB *p_lcb = &l2cb.lcb_pool[0]; - for (xx = 0; xx < MAX_L2CAP_LINKS; xx++, p_lcb++) - { - if ((p_lcb->in_use) && (p_lcb->acl_priority == L2CAP_PRIORITY_HIGH)) - { + for (xx = 0; xx < MAX_L2CAP_LINKS; xx++, p_lcb++) { + if ((p_lcb->in_use) && (p_lcb->acl_priority == L2CAP_PRIORITY_HIGH)) { no_hi++; } } @@ -2340,27 +2214,25 @@ BOOLEAN l2cu_create_conn_after_switch (tL2C_LCB *p_lcb) p_features = BTM_ReadLocalFeatures(); L2CAP_TRACE_DEBUG ("l2cu_create_conn_after_switch :%d num_acl:%d no_hi: %d is_bonding:%d", - l2cb.disallow_switch, num_acl, no_hi_prio_chs, p_lcb->is_bonding); + l2cb.disallow_switch, num_acl, no_hi_prio_chs, p_lcb->is_bonding); /* FW team says that we can participant in 4 piconets * typically 3 piconet + 1 for scanning. * We can enhance the code to count the number of piconets later. */ - if ( ((!l2cb.disallow_switch && (num_acl < 3)) || (p_lcb->is_bonding && (no_hi_prio_chs==0))) - && HCI_SWITCH_SUPPORTED(p_features)) + if ( ((!l2cb.disallow_switch && (num_acl < 3)) || (p_lcb->is_bonding && (no_hi_prio_chs == 0))) + && HCI_SWITCH_SUPPORTED(p_features)) { allow_switch = HCI_CR_CONN_ALLOW_SWITCH; - else + } else { allow_switch = HCI_CR_CONN_NOT_ALLOW_SWITCH; + } p_lcb->link_state = LST_CONNECTING; /* Check with the BT manager if details about remote device are known */ - if ((p_inq_info = BTM_InqDbRead(p_lcb->remote_bd_addr)) != NULL) - { + if ((p_inq_info = BTM_InqDbRead(p_lcb->remote_bd_addr)) != NULL) { page_scan_rep_mode = p_inq_info->results.page_scan_rep_mode; page_scan_mode = p_inq_info->results.page_scan_mode; clock_offset = (UINT16)(p_inq_info->results.clock_offset); - } - else - { + } else { /* No info known. Use default settings */ page_scan_rep_mode = HCI_PAGE_SCAN_REP_MODE_R1; page_scan_mode = HCI_MANDATARY_PAGE_SCAN_MODE; @@ -2370,8 +2242,8 @@ BOOLEAN l2cu_create_conn_after_switch (tL2C_LCB *p_lcb) if (!btsnd_hcic_create_conn (p_lcb->remote_bd_addr, ( HCI_PKT_TYPES_MASK_DM1 | HCI_PKT_TYPES_MASK_DH1 - | HCI_PKT_TYPES_MASK_DM3 | HCI_PKT_TYPES_MASK_DH3 - | HCI_PKT_TYPES_MASK_DM5 | HCI_PKT_TYPES_MASK_DH5 ), + | HCI_PKT_TYPES_MASK_DM3 | HCI_PKT_TYPES_MASK_DH3 + | HCI_PKT_TYPES_MASK_DM5 | HCI_PKT_TYPES_MASK_DH5 ), page_scan_rep_mode, page_scan_mode, clock_offset, @@ -2407,10 +2279,8 @@ tL2C_LCB *l2cu_find_lcb_by_state (tL2C_LINK_STATE state) UINT16 i; tL2C_LCB *p_lcb = &l2cb.lcb_pool[0]; - for (i = 0; i < MAX_L2CAP_LINKS; i++, p_lcb++) - { - if ((p_lcb->in_use) && (p_lcb->link_state == state)) - { + for (i = 0; i < MAX_L2CAP_LINKS; i++, p_lcb++) { + if ((p_lcb->in_use) && (p_lcb->link_state == state)) { return (p_lcb); } } @@ -2441,25 +2311,20 @@ BOOLEAN l2cu_lcb_disconnecting (void) p_lcb = &l2cb.lcb_pool[0]; - for (i = 0; i < MAX_L2CAP_LINKS; i++, p_lcb++) - { - if (p_lcb->in_use) - { + for (i = 0; i < MAX_L2CAP_LINKS; i++, p_lcb++) { + if (p_lcb->in_use) { /* no ccbs on lcb, or lcb is in disconnecting state */ - if ((!p_lcb->ccb_queue.p_first_ccb) || (p_lcb->link_state == LST_DISCONNECTING)) - { + if ((!p_lcb->ccb_queue.p_first_ccb) || (p_lcb->link_state == LST_DISCONNECTING)) { status = TRUE; break; } /* only one ccb left on lcb */ - else if (p_lcb->ccb_queue.p_first_ccb == p_lcb->ccb_queue.p_last_ccb) - { + else if (p_lcb->ccb_queue.p_first_ccb == p_lcb->ccb_queue.p_last_ccb) { p_ccb = p_lcb->ccb_queue.p_first_ccb; if ((p_ccb->in_use) && - ((p_ccb->chnl_state == CST_W4_L2CAP_DISCONNECT_RSP) || - (p_ccb->chnl_state == CST_W4_L2CA_DISCONNECT_RSP))) - { + ((p_ccb->chnl_state == CST_W4_L2CAP_DISCONNECT_RSP) || + (p_ccb->chnl_state == CST_W4_L2CA_DISCONNECT_RSP))) { status = TRUE; break; } @@ -2492,19 +2357,16 @@ BOOLEAN l2cu_set_acl_priority (BD_ADDR bd_addr, UINT8 priority, BOOLEAN reset_af //APPL_TRACE_EVENT("SET ACL PRIORITY %d", priority); /* Find the link control block for the acl channel */ - if ((p_lcb = l2cu_find_lcb_by_bd_addr(bd_addr, BT_TRANSPORT_BR_EDR)) == NULL) - { + if ((p_lcb = l2cu_find_lcb_by_bd_addr(bd_addr, BT_TRANSPORT_BR_EDR)) == NULL) { L2CAP_TRACE_WARNING ("L2CAP - no LCB for L2CA_SetAclPriority"); return (FALSE); } - if (BTM_IS_BRCM_CONTROLLER()) - { + if (BTM_IS_BRCM_CONTROLLER()) { /* Called from above L2CAP through API; send VSC if changed */ if ((!reset_after_rs && (priority != p_lcb->acl_priority)) || - /* Called because of a master/slave role switch; if high resend VSC */ - ( reset_after_rs && p_lcb->acl_priority == L2CAP_PRIORITY_HIGH)) - { + /* Called because of a master/slave role switch; if high resend VSC */ + ( reset_after_rs && p_lcb->acl_priority == L2CAP_PRIORITY_HIGH)) { pp = command; vs_param = (priority == L2CAP_PRIORITY_HIGH) ? HCI_BRCM_ACL_PRIORITY_HIGH : HCI_BRCM_ACL_PRIORITY_LOW; @@ -2515,14 +2377,13 @@ BOOLEAN l2cu_set_acl_priority (BD_ADDR bd_addr, UINT8 priority, BOOLEAN reset_af BTM_VendorSpecificCommand (HCI_BRCM_SET_ACL_PRIORITY, HCI_BRCM_ACL_PRIORITY_PARAM_SIZE, command, NULL); /* Adjust lmp buffer allocation for this channel if priority changed */ - if (p_lcb->acl_priority != priority) - { + if (p_lcb->acl_priority != priority) { p_lcb->acl_priority = priority; l2c_link_adjust_allocation(); } } } - return(TRUE); + return (TRUE); } #if (L2CAP_NON_FLUSHABLE_PB_INCLUDED == TRUE) @@ -2537,10 +2398,11 @@ BOOLEAN l2cu_set_acl_priority (BD_ADDR bd_addr, UINT8 priority, BOOLEAN reset_af *******************************************************************************/ void l2cu_set_non_flushable_pbf (BOOLEAN is_supported) { - if (is_supported) + if (is_supported) { l2cb.non_flushable_pbf = (L2CAP_PKT_START_NON_FLUSHABLE << L2CAP_PKT_TYPE_SHIFT); - else + } else { l2cb.non_flushable_pbf = (L2CAP_PKT_START << L2CAP_PKT_TYPE_SHIFT); + } } #endif @@ -2564,35 +2426,25 @@ void l2cu_resubmit_pending_sec_req (BD_ADDR p_bda) L2CAP_TRACE_DEBUG ("l2cu_resubmit_pending_sec_req p_bda: 0x%08x", p_bda); /* If we are called with a BDA, only resubmit for that BDA */ - if (p_bda) - { + if (p_bda) { p_lcb = l2cu_find_lcb_by_bd_addr (p_bda, BT_TRANSPORT_BR_EDR); /* If we don't have one, this is an error */ - if (p_lcb) - { + if (p_lcb) { /* For all channels, send the event through their FSMs */ - for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; p_ccb = p_next_ccb) - { + for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; p_ccb = p_next_ccb) { p_next_ccb = p_ccb->p_next_ccb; l2c_csm_execute (p_ccb, L2CEVT_SEC_RE_SEND_CMD, NULL); } - } - else - { + } else { L2CAP_TRACE_WARNING ("l2cu_resubmit_pending_sec_req - unknown BD_ADDR"); } - } - else - { + } else { /* No BDA pasesed in, so check all links */ - for (xx = 0, p_lcb = &l2cb.lcb_pool[0]; xx < MAX_L2CAP_LINKS; xx++, p_lcb++) - { - if (p_lcb->in_use) - { + for (xx = 0, p_lcb = &l2cb.lcb_pool[0]; xx < MAX_L2CAP_LINKS; xx++, p_lcb++) { + if (p_lcb->in_use) { /* For all channels, send the event through their FSMs */ - for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; p_ccb = p_next_ccb) - { + for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; p_ccb = p_next_ccb) { p_next_ccb = p_ccb->p_next_ccb; l2c_csm_execute (p_ccb, L2CEVT_SEC_RE_SEND_CMD, NULL); } @@ -2634,14 +2486,11 @@ void l2cu_adjust_out_mps (tL2C_CCB *p_ccb) /* on the tx side MTU is selected based on packet size of the controller */ packet_size = btm_get_max_packet_size (p_ccb->p_lcb->remote_bd_addr); - if (packet_size <= (L2CAP_PKT_OVERHEAD + L2CAP_FCR_OVERHEAD + L2CAP_SDU_LEN_OVERHEAD + L2CAP_FCS_LEN)) - { + if (packet_size <= (L2CAP_PKT_OVERHEAD + L2CAP_FCR_OVERHEAD + L2CAP_SDU_LEN_OVERHEAD + L2CAP_FCS_LEN)) { /* something is very wrong */ L2CAP_TRACE_ERROR ("l2cu_adjust_out_mps bad packet size: %u will use MPS: %u", packet_size, p_ccb->peer_cfg.fcr.mps); p_ccb->tx_mps = p_ccb->peer_cfg.fcr.mps; - } - else - { + } else { packet_size -= (L2CAP_PKT_OVERHEAD + L2CAP_FCR_OVERHEAD + L2CAP_SDU_LEN_OVERHEAD + L2CAP_FCS_LEN); /* We try to negotiate MTU that each packet can be split into whole @@ -2652,13 +2501,14 @@ void l2cu_adjust_out_mps (tL2C_CCB *p_ccb) For EDR 2.0 packet size is 1027. So we better send RFCOMM packet as 1 3DH5 packet 1 * 1027 = 1027. Minus 4 bytes L2CAP header 1023. */ - if (p_ccb->peer_cfg.fcr.mps >= packet_size) + if (p_ccb->peer_cfg.fcr.mps >= packet_size) { p_ccb->tx_mps = p_ccb->peer_cfg.fcr.mps / packet_size * packet_size; - else + } else { p_ccb->tx_mps = p_ccb->peer_cfg.fcr.mps; + } L2CAP_TRACE_DEBUG ("l2cu_adjust_out_mps use %d Based on peer_cfg.fcr.mps: %u packet_size: %u", - p_ccb->tx_mps, p_ccb->peer_cfg.fcr.mps, packet_size); + p_ccb->tx_mps, p_ccb->peer_cfg.fcr.mps, packet_size); } } @@ -2678,11 +2528,13 @@ BOOLEAN l2cu_initialize_fixed_ccb (tL2C_LCB *p_lcb, UINT16 fixed_cid, tL2CAP_FCR tL2C_CCB *p_ccb; /* If we already have a CCB, then simply return */ - if (p_lcb->p_fixed_ccbs[fixed_cid - L2CAP_FIRST_FIXED_CHNL] != NULL) + if (p_lcb->p_fixed_ccbs[fixed_cid - L2CAP_FIRST_FIXED_CHNL] != NULL) { return (TRUE); + } - if ((p_ccb = l2cu_allocate_ccb (NULL, 0)) == NULL) + if ((p_ccb = l2cu_allocate_ccb (NULL, 0)) == NULL) { return (FALSE); + } btu_stop_timer(&p_lcb->timer_entry); @@ -2697,8 +2549,7 @@ BOOLEAN l2cu_initialize_fixed_ccb (tL2C_LCB *p_lcb, UINT16 fixed_cid, tL2CAP_FCR p_ccb->timer_entry.param = (TIMER_PARAM_TYPE)p_ccb; - if (p_fcr) - { + if (p_fcr) { /* Set the FCR parameters. For now, we will use default pools */ p_ccb->our_cfg.fcr = p_ccb->peer_cfg.fcr = *p_fcr; @@ -2715,8 +2566,9 @@ BOOLEAN l2cu_initialize_fixed_ccb (tL2C_LCB *p_lcb, UINT16 fixed_cid, tL2CAP_FCR p_ccb->p_lcb = p_lcb; /* There is no configuration, so if the link is up, the channel is up */ - if (p_lcb->link_state == LST_CONNECTED) + if (p_lcb->link_state == LST_CONNECTED) { p_ccb->chnl_state = CST_OPEN; + } /* Set the default idle timeout value to use */ p_ccb->fixed_chnl_idle_tout = l2cb.fixed_reg[fixed_cid - L2CAP_FIRST_FIXED_CHNL].default_idle_tout; @@ -2743,56 +2595,46 @@ void l2cu_no_dynamic_ccbs (tL2C_LCB *p_lcb) #if (L2CAP_NUM_FIXED_CHNLS > 0) int xx; - for (xx = 0; xx < L2CAP_NUM_FIXED_CHNLS; xx++) - { - if ( (p_lcb->p_fixed_ccbs[xx] != NULL) && (p_lcb->p_fixed_ccbs[xx]->fixed_chnl_idle_tout > timeout) ) + for (xx = 0; xx < L2CAP_NUM_FIXED_CHNLS; xx++) { + if ( (p_lcb->p_fixed_ccbs[xx] != NULL) && (p_lcb->p_fixed_ccbs[xx]->fixed_chnl_idle_tout > timeout) ) { timeout = p_lcb->p_fixed_ccbs[xx]->fixed_chnl_idle_tout; + } } #endif /* If the link is pairing, do not mess with the timeouts */ - if (p_lcb->is_bonding) + if (p_lcb->is_bonding) { return; + } - if (timeout == 0) - { + if (timeout == 0) { L2CAP_TRACE_DEBUG ("l2cu_no_dynamic_ccbs() IDLE timer 0, disconnecting link"); rc = btm_sec_disconnect (p_lcb->handle, HCI_ERR_PEER_USER); - if (rc == BTM_CMD_STARTED) - { + if (rc == BTM_CMD_STARTED) { l2cu_process_fixed_disc_cback(p_lcb); p_lcb->link_state = LST_DISCONNECTING; timeout = L2CAP_LINK_DISCONNECT_TOUT; - } - else if (rc == BTM_SUCCESS) - { + } else if (rc == BTM_SUCCESS) { l2cu_process_fixed_disc_cback(p_lcb); /* BTM SEC will make sure that link is release (probably after pairing is done) */ p_lcb->link_state = LST_DISCONNECTING; timeout = 0xFFFF; - } - else if ( (p_lcb->is_bonding) - && (btsnd_hcic_disconnect (p_lcb->handle, HCI_ERR_PEER_USER)) ) - { + } else if ( (p_lcb->is_bonding) + && (btsnd_hcic_disconnect (p_lcb->handle, HCI_ERR_PEER_USER)) ) { l2cu_process_fixed_disc_cback(p_lcb); p_lcb->link_state = LST_DISCONNECTING; timeout = L2CAP_LINK_DISCONNECT_TOUT; - } - else - { + } else { /* probably no buffer to send disconnect */ timeout = BT_1SEC_TIMEOUT; } } - if (timeout != 0xFFFF) - { + if (timeout != 0xFFFF) { L2CAP_TRACE_DEBUG ("l2cu_no_dynamic_ccbs() starting IDLE timeout: %d", timeout); btu_start_timer (&p_lcb->timer_entry, BTU_TTYPE_L2CAP_LINK, timeout); - } - else - { + } else { btu_stop_timer(&p_lcb->timer_entry); } } @@ -2810,34 +2652,32 @@ void l2cu_no_dynamic_ccbs (tL2C_LCB *p_lcb) void l2cu_process_fixed_chnl_resp (tL2C_LCB *p_lcb) { #if (BLE_INCLUDED == TRUE) - if (p_lcb->transport == BT_TRANSPORT_BR_EDR) - { - /* ignore all not assigned BR/EDR channels */ - p_lcb->peer_chnl_mask[0] &= (L2CAP_FIXED_CHNL_SIG_BIT| \ - L2CAP_FIXED_CHNL_CNCTLESS_BIT| \ - L2CAP_FIXED_CHNL_SMP_BR_BIT); - } - else - p_lcb->peer_chnl_mask[0] = l2cb.l2c_ble_fixed_chnls_mask; + if (p_lcb->transport == BT_TRANSPORT_BR_EDR) { + /* ignore all not assigned BR/EDR channels */ + p_lcb->peer_chnl_mask[0] &= (L2CAP_FIXED_CHNL_SIG_BIT | \ + L2CAP_FIXED_CHNL_CNCTLESS_BIT | \ + L2CAP_FIXED_CHNL_SMP_BR_BIT); + } else { + p_lcb->peer_chnl_mask[0] = l2cb.l2c_ble_fixed_chnls_mask; + } #endif /* Tell all registered fixed channels about the connection */ - for (int xx = 0; xx < L2CAP_NUM_FIXED_CHNLS; xx++) - { + for (int xx = 0; xx < L2CAP_NUM_FIXED_CHNLS; xx++) { #if BLE_INCLUDED == TRUE /* skip sending LE fix channel callbacks on BR/EDR links */ if (p_lcb->transport == BT_TRANSPORT_BR_EDR && - xx + L2CAP_FIRST_FIXED_CHNL >= L2CAP_ATT_CID && - xx + L2CAP_FIRST_FIXED_CHNL <= L2CAP_SMP_CID) + xx + L2CAP_FIRST_FIXED_CHNL >= L2CAP_ATT_CID && + xx + L2CAP_FIRST_FIXED_CHNL <= L2CAP_SMP_CID) { continue; + } #endif - if (l2cb.fixed_reg[xx].pL2CA_FixedConn_Cb != NULL) - { + if (l2cb.fixed_reg[xx].pL2CA_FixedConn_Cb != NULL) { if (p_lcb->peer_chnl_mask[(xx + L2CAP_FIRST_FIXED_CHNL) / 8] - & (1 << ((xx + L2CAP_FIRST_FIXED_CHNL) % 8))) - { - if (p_lcb->p_fixed_ccbs[xx]) + & (1 << ((xx + L2CAP_FIRST_FIXED_CHNL) % 8))) { + if (p_lcb->p_fixed_ccbs[xx]) { p_lcb->p_fixed_ccbs[xx]->chnl_state = CST_OPEN; + } #if BLE_INCLUDED == TRUE (*l2cb.fixed_reg[xx].pL2CA_FixedConn_Cb)(xx + L2CAP_FIRST_FIXED_CHNL, p_lcb->remote_bd_addr, TRUE, 0, p_lcb->transport); @@ -2845,9 +2685,7 @@ void l2cu_process_fixed_chnl_resp (tL2C_LCB *p_lcb) (*l2cb.fixed_reg[xx].pL2CA_FixedConn_Cb)(xx + L2CAP_FIRST_FIXED_CHNL, p_lcb->remote_bd_addr, TRUE, 0, BT_TRANSPORT_BR_EDR); #endif - } - else - { + } else { #if BLE_INCLUDED == TRUE (*l2cb.fixed_reg[xx].pL2CA_FixedConn_Cb)(xx + L2CAP_FIRST_FIXED_CHNL, p_lcb->remote_bd_addr, FALSE, p_lcb->disc_reason, p_lcb->transport); @@ -2856,8 +2694,7 @@ void l2cu_process_fixed_chnl_resp (tL2C_LCB *p_lcb) p_lcb->remote_bd_addr, FALSE, p_lcb->disc_reason, BT_TRANSPORT_BR_EDR); #endif - if (p_lcb->p_fixed_ccbs[xx]) - { + if (p_lcb->p_fixed_ccbs[xx]) { l2cu_release_ccb (p_lcb->p_fixed_ccbs[xx]); p_lcb->p_fixed_ccbs[xx] = NULL; } @@ -2886,30 +2723,27 @@ void l2cu_process_fixed_disc_cback (tL2C_LCB *p_lcb) UINT8 peer_channel_mask = p_lcb->peer_chnl_mask[0]; // For LE, reset the stored peer channel mask - if (p_lcb->transport == BT_TRANSPORT_LE) + if (p_lcb->transport == BT_TRANSPORT_LE) { p_lcb->peer_chnl_mask[0] = 0; + } - for (int xx = 0; xx < L2CAP_NUM_FIXED_CHNLS; xx++) - { - if (p_lcb->p_fixed_ccbs[xx]) - { - if (p_lcb->p_fixed_ccbs[xx] != p_lcb->p_pending_ccb) - { + for (int xx = 0; xx < L2CAP_NUM_FIXED_CHNLS; xx++) { + if (p_lcb->p_fixed_ccbs[xx]) { + if (p_lcb->p_fixed_ccbs[xx] != p_lcb->p_pending_ccb) { tL2C_CCB *p_l2c_chnl_ctrl_block; p_l2c_chnl_ctrl_block = p_lcb->p_fixed_ccbs[xx]; p_lcb->p_fixed_ccbs[xx] = NULL; l2cu_release_ccb(p_l2c_chnl_ctrl_block); #if BLE_INCLUDED == TRUE - (*l2cb.fixed_reg[xx].pL2CA_FixedConn_Cb)(xx + L2CAP_FIRST_FIXED_CHNL, - p_lcb->remote_bd_addr, FALSE, p_lcb->disc_reason, p_lcb->transport); + (*l2cb.fixed_reg[xx].pL2CA_FixedConn_Cb)(xx + L2CAP_FIRST_FIXED_CHNL, + p_lcb->remote_bd_addr, FALSE, p_lcb->disc_reason, p_lcb->transport); #else - (*l2cb.fixed_reg[xx].pL2CA_FixedConn_Cb)(xx + L2CAP_FIRST_FIXED_CHNL, - p_lcb->remote_bd_addr, FALSE, p_lcb->disc_reason, BT_TRANSPORT_BR_EDR); + (*l2cb.fixed_reg[xx].pL2CA_FixedConn_Cb)(xx + L2CAP_FIRST_FIXED_CHNL, + p_lcb->remote_bd_addr, FALSE, p_lcb->disc_reason, BT_TRANSPORT_BR_EDR); #endif - } - } - else if ( (peer_channel_mask & (1 << (xx + L2CAP_FIRST_FIXED_CHNL))) - && (l2cb.fixed_reg[xx].pL2CA_FixedConn_Cb != NULL) ) + } + } else if ( (peer_channel_mask & (1 << (xx + L2CAP_FIRST_FIXED_CHNL))) + && (l2cb.fixed_reg[xx].pL2CA_FixedConn_Cb != NULL) ) #if BLE_INCLUDED == TRUE (*l2cb.fixed_reg[xx].pL2CA_FixedConn_Cb)(xx + L2CAP_FIRST_FIXED_CHNL, p_lcb->remote_bd_addr, FALSE, p_lcb->disc_reason, p_lcb->transport); @@ -2933,7 +2767,7 @@ void l2cu_process_fixed_disc_cback (tL2C_LCB *p_lcb) ** *******************************************************************************/ void l2cu_send_peer_ble_par_req (tL2C_LCB *p_lcb, UINT16 min_int, UINT16 max_int, - UINT16 latency, UINT16 timeout) + UINT16 latency, UINT16 timeout) { BT_HDR *p_buf; UINT8 *p; @@ -2943,14 +2777,13 @@ void l2cu_send_peer_ble_par_req (tL2C_LCB *p_lcb, UINT16 min_int, UINT16 max_int l2cu_adj_id (p_lcb, L2CAP_ADJ_ID); if ((p_buf = l2cu_build_header (p_lcb, L2CAP_CMD_BLE_UPD_REQ_LEN, - L2CAP_CMD_BLE_UPDATE_REQ, p_lcb->id)) == NULL ) - { + L2CAP_CMD_BLE_UPDATE_REQ, p_lcb->id)) == NULL ) { L2CAP_TRACE_WARNING ("l2cu_send_peer_ble_par_req - no buffer"); return; } p = (UINT8 *)(p_buf + 1) + L2CAP_SEND_CMD_OFFSET + HCI_DATA_PREAMBLE_SIZE + - L2CAP_PKT_OVERHEAD + L2CAP_CMD_OVERHEAD; + L2CAP_PKT_OVERHEAD + L2CAP_CMD_OVERHEAD; UINT16_TO_STREAM (p, min_int); UINT16_TO_STREAM (p, max_int); @@ -2976,14 +2809,13 @@ void l2cu_send_peer_ble_par_rsp (tL2C_LCB *p_lcb, UINT16 reason, UINT8 rem_id) UINT8 *p; if ((p_buf = l2cu_build_header (p_lcb, L2CAP_CMD_BLE_UPD_RSP_LEN, - L2CAP_CMD_BLE_UPDATE_RSP, rem_id)) == NULL ) - { + L2CAP_CMD_BLE_UPDATE_RSP, rem_id)) == NULL ) { L2CAP_TRACE_WARNING ("l2cu_send_peer_ble_par_rsp - no buffer"); return; } p = (UINT8 *)(p_buf + 1) + L2CAP_SEND_CMD_OFFSET + HCI_DATA_PREAMBLE_SIZE + - L2CAP_PKT_OVERHEAD + L2CAP_CMD_OVERHEAD; + L2CAP_PKT_OVERHEAD + L2CAP_CMD_OVERHEAD; UINT16_TO_STREAM (p, reason); @@ -3012,10 +2844,8 @@ tL2C_LCB *l2cu_find_lcb_by_handle (UINT16 handle) int xx; tL2C_LCB *p_lcb = &l2cb.lcb_pool[0]; - for (xx = 0; xx < MAX_L2CAP_LINKS; xx++, p_lcb++) - { - if ((p_lcb->in_use) && (p_lcb->handle == handle)) - { + for (xx = 0; xx < MAX_L2CAP_LINKS; xx++, p_lcb++) { + if ((p_lcb->in_use) && (p_lcb->handle == handle)) { return (p_lcb); } } @@ -3042,43 +2872,41 @@ tL2C_CCB *l2cu_find_ccb_by_cid (tL2C_LCB *p_lcb, UINT16 local_cid) UINT8 xx; #endif - if (local_cid >= L2CAP_BASE_APPL_CID) - { + if (local_cid >= L2CAP_BASE_APPL_CID) { /* find the associated CCB by "index" */ local_cid -= L2CAP_BASE_APPL_CID; - if (local_cid >= MAX_L2CAP_CHANNELS) + if (local_cid >= MAX_L2CAP_CHANNELS) { return NULL; + } p_ccb = l2cb.ccb_pool + local_cid; /* make sure the CCB is in use */ - if (!p_ccb->in_use) - { + if (!p_ccb->in_use) { p_ccb = NULL; } /* make sure it's for the same LCB */ - else if (p_lcb && p_lcb != p_ccb->p_lcb) - { + else if (p_lcb && p_lcb != p_ccb->p_lcb) { p_ccb = NULL; } } #if (L2CAP_UCD_INCLUDED == TRUE) - else - { + else { /* searching fixed channel */ p_ccb = l2cb.ccb_pool; - for ( xx = 0; xx < MAX_L2CAP_CHANNELS; xx++ ) - { + for ( xx = 0; xx < MAX_L2CAP_CHANNELS; xx++ ) { if ((p_ccb->local_cid == local_cid) - &&(p_ccb->in_use) - &&(p_lcb == p_ccb->p_lcb)) + && (p_ccb->in_use) + && (p_lcb == p_ccb->p_lcb)) { break; - else + } else { p_ccb++; + } } - if ( xx >= MAX_L2CAP_CHANNELS ) + if ( xx >= MAX_L2CAP_CHANNELS ) { return NULL; + } } #endif @@ -3105,64 +2933,60 @@ static tL2C_CCB *l2cu_get_next_channel_in_rr(tL2C_LCB *p_lcb) int i, j; /* scan all of priority until finding a channel to serve */ - for ( i = 0; (i < L2CAP_NUM_CHNL_PRIORITY)&&(!p_serve_ccb); i++ ) - { + for ( i = 0; (i < L2CAP_NUM_CHNL_PRIORITY) && (!p_serve_ccb); i++ ) { /* scan all channel within serving priority group until finding a channel to serve */ - for ( j = 0; (j < p_lcb->rr_serv[p_lcb->rr_pri].num_ccb)&&(!p_serve_ccb); j++) - { + for ( j = 0; (j < p_lcb->rr_serv[p_lcb->rr_pri].num_ccb) && (!p_serve_ccb); j++) { /* scaning from next serving channel */ p_ccb = p_lcb->rr_serv[p_lcb->rr_pri].p_serve_ccb; - if (!p_ccb) - { + if (!p_ccb) { L2CAP_TRACE_ERROR("p_serve_ccb is NULL, rr_pri=%d", p_lcb->rr_pri); return NULL; } L2CAP_TRACE_DEBUG("RR scan pri=%d, lcid=0x%04x, q_cout=%d", - p_ccb->ccb_priority, p_ccb->local_cid, GKI_queue_length(&p_ccb->xmit_hold_q)); + p_ccb->ccb_priority, p_ccb->local_cid, GKI_queue_length(&p_ccb->xmit_hold_q)); /* store the next serving channel */ /* this channel is the last channel of its priority group */ if (( p_ccb->p_next_ccb == NULL ) - ||( p_ccb->p_next_ccb->ccb_priority != p_ccb->ccb_priority )) - { + || ( p_ccb->p_next_ccb->ccb_priority != p_ccb->ccb_priority )) { /* next serving channel is set to the first channel in the group */ p_lcb->rr_serv[p_lcb->rr_pri].p_serve_ccb = p_lcb->rr_serv[p_lcb->rr_pri].p_first_ccb; - } - else - { + } else { /* next serving channel is set to the next channel in the group */ p_lcb->rr_serv[p_lcb->rr_pri].p_serve_ccb = p_ccb->p_next_ccb; } - if (p_ccb->chnl_state != CST_OPEN) + if (p_ccb->chnl_state != CST_OPEN) { continue; + } /* eL2CAP option in use */ - if (p_ccb->peer_cfg.fcr.mode != L2CAP_FCR_BASIC_MODE) - { - if (p_ccb->fcrb.wait_ack || p_ccb->fcrb.remote_busy) + if (p_ccb->peer_cfg.fcr.mode != L2CAP_FCR_BASIC_MODE) { + if (p_ccb->fcrb.wait_ack || p_ccb->fcrb.remote_busy) { continue; + } - if ( GKI_queue_is_empty(&p_ccb->fcrb.retrans_q)) - { - if ( GKI_queue_is_empty(&p_ccb->xmit_hold_q)) + if ( GKI_queue_is_empty(&p_ccb->fcrb.retrans_q)) { + if ( GKI_queue_is_empty(&p_ccb->xmit_hold_q)) { continue; + } /* If using the common pool, should be at least 10% free. */ - if ( (p_ccb->ertm_info.fcr_tx_pool_id == HCI_ACL_POOL_ID) && (GKI_poolutilization (HCI_ACL_POOL_ID) > 90) ) + if ( (p_ccb->ertm_info.fcr_tx_pool_id == HCI_ACL_POOL_ID) && (GKI_poolutilization (HCI_ACL_POOL_ID) > 90) ) { continue; + } /* If in eRTM mode, check for window closure */ - if ( (p_ccb->peer_cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) && (l2c_fcr_is_flow_controlled (p_ccb)) ) + if ( (p_ccb->peer_cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) && (l2c_fcr_is_flow_controlled (p_ccb)) ) { continue; + } } - } - else - { - if (GKI_queue_is_empty(&p_ccb->xmit_hold_q)) + } else { + if (GKI_queue_is_empty(&p_ccb->xmit_hold_q)) { continue; + } } /* found a channel to serve */ @@ -3172,8 +2996,7 @@ static tL2C_CCB *l2cu_get_next_channel_in_rr(tL2C_LCB *p_lcb) } /* if there is no more quota of the priority group or no channel to have data to send */ - if ((p_lcb->rr_serv[p_lcb->rr_pri].quota == 0)||(!p_serve_ccb)) - { + if ((p_lcb->rr_serv[p_lcb->rr_pri].quota == 0) || (!p_serve_ccb)) { /* serve next priority group */ p_lcb->rr_pri = (p_lcb->rr_pri + 1) % L2CAP_NUM_CHNL_PRIORITY; /* initialize its quota */ @@ -3181,12 +3004,11 @@ static tL2C_CCB *l2cu_get_next_channel_in_rr(tL2C_LCB *p_lcb) } } - if (p_serve_ccb) - { + if (p_serve_ccb) { L2CAP_TRACE_DEBUG("RR service pri=%d, quota=%d, lcid=0x%04x", - p_serve_ccb->ccb_priority, - p_lcb->rr_serv[p_serve_ccb->ccb_priority].quota, - p_serve_ccb->local_cid ); + p_serve_ccb->ccb_priority, + p_lcb->rr_serv[p_serve_ccb->ccb_priority].quota, + p_serve_ccb->local_cid ); } return p_serve_ccb; @@ -3210,27 +3032,32 @@ static tL2C_CCB *l2cu_get_next_channel(tL2C_LCB *p_lcb) /* Get the first CCB with data to send. */ - for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; p_ccb = p_ccb->p_next_ccb) - { - if (p_ccb->chnl_state != CST_OPEN) + for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; p_ccb = p_ccb->p_next_ccb) { + if (p_ccb->chnl_state != CST_OPEN) { continue; + } - if (p_ccb->fcrb.wait_ack || p_ccb->fcrb.remote_busy) + if (p_ccb->fcrb.wait_ack || p_ccb->fcrb.remote_busy) { continue; + } - if (p_ccb->fcrb.retrans_q.count != 0) + if (p_ccb->fcrb.retrans_q.count != 0) { return p_ccb; + } - if (p_ccb->xmit_hold_q.count == 0) + if (p_ccb->xmit_hold_q.count == 0) { continue; + } /* If using the common pool, should be at least 10% free. */ - if ( (p_ccb->ertm_info.fcr_tx_pool_id == HCI_ACL_POOL_ID) && (GKI_poolutilization (HCI_ACL_POOL_ID) > 90) ) + if ( (p_ccb->ertm_info.fcr_tx_pool_id == HCI_ACL_POOL_ID) && (GKI_poolutilization (HCI_ACL_POOL_ID) > 90) ) { continue; + } /* If in eRTM mode, check for window closure */ - if ( (p_ccb->peer_cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) && (l2c_fcr_is_flow_controlled (p_ccb)) ) + if ( (p_ccb->peer_cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) && (l2c_fcr_is_flow_controlled (p_ccb)) ) { continue; + } /* If here, we found someone */ return p_ccb; @@ -3259,52 +3086,50 @@ BT_HDR *l2cu_get_next_buffer_to_send (tL2C_LCB *p_lcb) #if (L2CAP_NUM_FIXED_CHNLS > 0) int xx; - for (xx = 0; xx < L2CAP_NUM_FIXED_CHNLS; xx++) - { - if ((p_ccb = p_lcb->p_fixed_ccbs[xx]) == NULL) + for (xx = 0; xx < L2CAP_NUM_FIXED_CHNLS; xx++) { + if ((p_ccb = p_lcb->p_fixed_ccbs[xx]) == NULL) { continue; + } /* eL2CAP option in use */ - if (p_ccb->peer_cfg.fcr.mode != L2CAP_FCR_BASIC_MODE) - { - if (p_ccb->fcrb.wait_ack || p_ccb->fcrb.remote_busy) + if (p_ccb->peer_cfg.fcr.mode != L2CAP_FCR_BASIC_MODE) { + if (p_ccb->fcrb.wait_ack || p_ccb->fcrb.remote_busy) { continue; - - /* No more checks needed if sending from the reatransmit queue */ - if (GKI_queue_is_empty(&p_ccb->fcrb.retrans_q)) - { - if (GKI_queue_is_empty(&p_ccb->xmit_hold_q)) - continue; - - /* If using the common pool, should be at least 10% free. */ - if ( (p_ccb->ertm_info.fcr_tx_pool_id == HCI_ACL_POOL_ID) && (GKI_poolutilization (HCI_ACL_POOL_ID) > 90) ) - continue; - - /* If in eRTM mode, check for window closure */ - if ( (p_ccb->peer_cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) && (l2c_fcr_is_flow_controlled (p_ccb)) ) - continue; } - if ((p_buf = l2c_fcr_get_next_xmit_sdu_seg(p_ccb, 0)) != NULL) - { + /* No more checks needed if sending from the reatransmit queue */ + if (GKI_queue_is_empty(&p_ccb->fcrb.retrans_q)) { + if (GKI_queue_is_empty(&p_ccb->xmit_hold_q)) { + continue; + } + + /* If using the common pool, should be at least 10% free. */ + if ( (p_ccb->ertm_info.fcr_tx_pool_id == HCI_ACL_POOL_ID) && (GKI_poolutilization (HCI_ACL_POOL_ID) > 90) ) { + continue; + } + + /* If in eRTM mode, check for window closure */ + if ( (p_ccb->peer_cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) && (l2c_fcr_is_flow_controlled (p_ccb)) ) { + continue; + } + } + + if ((p_buf = l2c_fcr_get_next_xmit_sdu_seg(p_ccb, 0)) != NULL) { l2cu_check_channel_congestion (p_ccb); l2cu_set_acl_hci_header (p_buf, p_ccb); return (p_buf); } - } - else - { - if (!GKI_queue_is_empty(&p_ccb->xmit_hold_q)) - { + } else { + if (!GKI_queue_is_empty(&p_ccb->xmit_hold_q)) { p_buf = (BT_HDR *)GKI_dequeue (&p_ccb->xmit_hold_q); - if(NULL == p_buf) - { + if (NULL == p_buf) { L2CAP_TRACE_ERROR("l2cu_get_buffer_to_send: No data to be sent"); return (NULL); } /* send tx complete */ - if (l2cb.fixed_reg[xx].pL2CA_FixedTxComplete_Cb) + if (l2cb.fixed_reg[xx].pL2CA_FixedTxComplete_Cb) { (*l2cb.fixed_reg[xx].pL2CA_FixedTxComplete_Cb)(p_ccb->local_cid, 1); + } l2cu_check_channel_congestion (p_ccb); l2cu_set_acl_hci_header (p_buf, p_ccb); @@ -3322,26 +3147,25 @@ BT_HDR *l2cu_get_next_buffer_to_send (tL2C_LCB *p_lcb) #endif /* Return if no buffer */ - if (p_ccb == NULL) + if (p_ccb == NULL) { return (NULL); - - if (p_ccb->peer_cfg.fcr.mode != L2CAP_FCR_BASIC_MODE) - { - if ((p_buf = l2c_fcr_get_next_xmit_sdu_seg(p_ccb, 0)) == NULL) - return (NULL); } - else - { + + if (p_ccb->peer_cfg.fcr.mode != L2CAP_FCR_BASIC_MODE) { + if ((p_buf = l2c_fcr_get_next_xmit_sdu_seg(p_ccb, 0)) == NULL) { + return (NULL); + } + } else { p_buf = (BT_HDR *)GKI_dequeue (&p_ccb->xmit_hold_q); - if(NULL == p_buf) - { + if (NULL == p_buf) { L2CAP_TRACE_ERROR("l2cu_get_buffer_to_send() #2: No data to be sent"); return (NULL); } } - if ( p_ccb->p_rcb && p_ccb->p_rcb->api.pL2CA_TxComplete_Cb && (p_ccb->peer_cfg.fcr.mode != L2CAP_FCR_ERTM_MODE) ) + if ( p_ccb->p_rcb && p_ccb->p_rcb->api.pL2CA_TxComplete_Cb && (p_ccb->peer_cfg.fcr.mode != L2CAP_FCR_ERTM_MODE) ) { (*p_ccb->p_rcb->api.pL2CA_TxComplete_Cb)(p_ccb->local_cid, 1); + } l2cu_check_channel_congestion (p_ccb); @@ -3368,18 +3192,14 @@ void l2cu_set_acl_hci_header (BT_HDR *p_buf, tL2C_CCB *p_ccb) p = (UINT8 *)(p_buf + 1) + p_buf->offset - HCI_DATA_PREAMBLE_SIZE; #if (BLE_INCLUDED == TRUE) - if (p_ccb->p_lcb->transport == BT_TRANSPORT_LE) - { + if (p_ccb->p_lcb->transport == BT_TRANSPORT_LE) { UINT16_TO_STREAM (p, p_ccb->p_lcb->handle | (L2CAP_PKT_START_NON_FLUSHABLE << L2CAP_PKT_TYPE_SHIFT)); uint16_t acl_data_size = controller_get_interface()->get_acl_data_size_ble(); /* The HCI transport will segment the buffers. */ - if (p_buf->len > acl_data_size) - { + if (p_buf->len > acl_data_size) { UINT16_TO_STREAM (p, acl_data_size); - } - else - { + } else { UINT16_TO_STREAM (p, p_buf->len); } } /* (BLE_INCLUDED == TRUE) */ @@ -3388,12 +3208,9 @@ void l2cu_set_acl_hci_header (BT_HDR *p_buf, tL2C_CCB *p_ccb) { #if (L2CAP_NON_FLUSHABLE_PB_INCLUDED == TRUE) if ( (((p_buf->layer_specific & L2CAP_FLUSHABLE_MASK) == L2CAP_FLUSHABLE_CH_BASED) && (p_ccb->is_flushable)) - || ((p_buf->layer_specific & L2CAP_FLUSHABLE_MASK) == L2CAP_FLUSHABLE_PKT) ) - { + || ((p_buf->layer_specific & L2CAP_FLUSHABLE_MASK) == L2CAP_FLUSHABLE_PKT) ) { UINT16_TO_STREAM (p, p_ccb->p_lcb->handle | (L2CAP_PKT_START << L2CAP_PKT_TYPE_SHIFT)); - } - else - { + } else { UINT16_TO_STREAM (p, p_ccb->p_lcb->handle | l2cb.non_flushable_pbf); } #else @@ -3402,12 +3219,9 @@ void l2cu_set_acl_hci_header (BT_HDR *p_buf, tL2C_CCB *p_ccb) uint16_t acl_data_size = controller_get_interface()->get_acl_data_size_classic(); /* The HCI transport will segment the buffers. */ - if (p_buf->len > acl_data_size) - { + if (p_buf->len > acl_data_size) { UINT16_TO_STREAM (p, acl_data_size); - } - else - { + } else { UINT16_TO_STREAM (p, p_buf->len); } } @@ -3429,26 +3243,21 @@ void l2cu_check_channel_congestion (tL2C_CCB *p_ccb) UINT16 q_count = GKI_queue_length(&p_ccb->xmit_hold_q); #if (L2CAP_UCD_INCLUDED == TRUE) - if ( p_ccb->local_cid == L2CAP_CONNECTIONLESS_CID ) - { + if ( p_ccb->local_cid == L2CAP_CONNECTIONLESS_CID ) { q_count += p_ccb->p_lcb->ucd_out_sec_pending_q.count; } #endif /* If the CCB queue limit is subject to a quota, check for congestion */ /* if this channel has outgoing traffic */ - if (p_ccb->buff_quota != 0) - { + if (p_ccb->buff_quota != 0) { /* If this channel was congested */ - if ( p_ccb->cong_sent ) - { + if ( p_ccb->cong_sent ) { /* If the channel is not congested now, tell the app */ - if (q_count <= (p_ccb->buff_quota / 2)) - { + if (q_count <= (p_ccb->buff_quota / 2)) { p_ccb->cong_sent = FALSE; - if (p_ccb->p_rcb && p_ccb->p_rcb->api.pL2CA_CongestionStatus_Cb) - { + if (p_ccb->p_rcb && p_ccb->p_rcb->api.pL2CA_CongestionStatus_Cb) { L2CAP_TRACE_DEBUG ("L2CAP - Calling CongestionStatus_Cb (FALSE), CID: 0x%04x xmit_hold_q.count: %u buff_quota: %u", - p_ccb->local_cid, q_count, p_ccb->buff_quota); + p_ccb->local_cid, q_count, p_ccb->buff_quota); /* Prevent recursive calling */ l2cb.is_cong_cback_context = TRUE; @@ -3456,69 +3265,57 @@ void l2cu_check_channel_congestion (tL2C_CCB *p_ccb) l2cb.is_cong_cback_context = FALSE; } #if (L2CAP_UCD_INCLUDED == TRUE) - else if ( p_ccb->p_rcb && p_ccb->local_cid == L2CAP_CONNECTIONLESS_CID ) - { - if ( p_ccb->p_rcb->ucd.cb_info.pL2CA_UCD_Congestion_Status_Cb ) - { + else if ( p_ccb->p_rcb && p_ccb->local_cid == L2CAP_CONNECTIONLESS_CID ) { + if ( p_ccb->p_rcb->ucd.cb_info.pL2CA_UCD_Congestion_Status_Cb ) { L2CAP_TRACE_DEBUG ("L2CAP - Calling UCD CongestionStatus_Cb (FALSE), SecPendingQ:%u,XmitQ:%u,Quota:%u", - p_ccb->p_lcb->ucd_out_sec_pending_q.count, - p_ccb->xmit_hold_q.count, p_ccb->buff_quota); + p_ccb->p_lcb->ucd_out_sec_pending_q.count, + p_ccb->xmit_hold_q.count, p_ccb->buff_quota); p_ccb->p_rcb->ucd.cb_info.pL2CA_UCD_Congestion_Status_Cb( p_ccb->p_lcb->remote_bd_addr, FALSE ); } } #endif #if (L2CAP_NUM_FIXED_CHNLS > 0) - else - { + else { UINT8 xx; - for (xx = 0; xx < L2CAP_NUM_FIXED_CHNLS; xx ++) - { - if (p_ccb->p_lcb->p_fixed_ccbs[xx] == p_ccb) - { - if (l2cb.fixed_reg[xx].pL2CA_FixedCong_Cb != NULL) + for (xx = 0; xx < L2CAP_NUM_FIXED_CHNLS; xx ++) { + if (p_ccb->p_lcb->p_fixed_ccbs[xx] == p_ccb) { + if (l2cb.fixed_reg[xx].pL2CA_FixedCong_Cb != NULL) { (* l2cb.fixed_reg[xx].pL2CA_FixedCong_Cb)(p_ccb->p_lcb->remote_bd_addr, FALSE); + } break; } } } #endif } - } - else - { + } else { /* If this channel was not congested but it is congested now, tell the app */ - if (q_count > p_ccb->buff_quota) - { + if (q_count > p_ccb->buff_quota) { p_ccb->cong_sent = TRUE; - if (p_ccb->p_rcb && p_ccb->p_rcb->api.pL2CA_CongestionStatus_Cb) - { + if (p_ccb->p_rcb && p_ccb->p_rcb->api.pL2CA_CongestionStatus_Cb) { L2CAP_TRACE_DEBUG ("L2CAP - Calling CongestionStatus_Cb (TRUE),CID:0x%04x,XmitQ:%u,Quota:%u", - p_ccb->local_cid, q_count, p_ccb->buff_quota); + p_ccb->local_cid, q_count, p_ccb->buff_quota); (*p_ccb->p_rcb->api.pL2CA_CongestionStatus_Cb)(p_ccb->local_cid, TRUE); } #if (L2CAP_UCD_INCLUDED == TRUE) - else if ( p_ccb->p_rcb && p_ccb->local_cid == L2CAP_CONNECTIONLESS_CID ) - { - if ( p_ccb->p_rcb->ucd.cb_info.pL2CA_UCD_Congestion_Status_Cb ) - { + else if ( p_ccb->p_rcb && p_ccb->local_cid == L2CAP_CONNECTIONLESS_CID ) { + if ( p_ccb->p_rcb->ucd.cb_info.pL2CA_UCD_Congestion_Status_Cb ) { L2CAP_TRACE_DEBUG ("L2CAP - Calling UCD CongestionStatus_Cb (TRUE), SecPendingQ:%u,XmitQ:%u,Quota:%u", - p_ccb->p_lcb->ucd_out_sec_pending_q.count, - p_ccb->xmit_hold_q.count, p_ccb->buff_quota); + p_ccb->p_lcb->ucd_out_sec_pending_q.count, + p_ccb->xmit_hold_q.count, p_ccb->buff_quota); p_ccb->p_rcb->ucd.cb_info.pL2CA_UCD_Congestion_Status_Cb( p_ccb->p_lcb->remote_bd_addr, TRUE ); } } #endif #if (L2CAP_NUM_FIXED_CHNLS > 0) - else - { + else { UINT8 xx; - for (xx = 0; xx < L2CAP_NUM_FIXED_CHNLS; xx ++) - { - if (p_ccb->p_lcb->p_fixed_ccbs[xx] == p_ccb) - { - if (l2cb.fixed_reg[xx].pL2CA_FixedCong_Cb != NULL) + for (xx = 0; xx < L2CAP_NUM_FIXED_CHNLS; xx ++) { + if (p_ccb->p_lcb->p_fixed_ccbs[xx] == p_ccb) { + if (l2cb.fixed_reg[xx].pL2CA_FixedCong_Cb != NULL) { (* l2cb.fixed_reg[xx].pL2CA_FixedCong_Cb)(p_ccb->p_lcb->remote_bd_addr, TRUE); + } break; } } diff --git a/components/bt/bluedroid/stack/l2cap/l2cap_client.c b/components/bt/bluedroid/stack/l2cap/l2cap_client.c old mode 100755 new mode 100644 index 086500276e..64a729d190 --- a/components/bt/bluedroid/stack/l2cap/l2cap_client.c +++ b/components/bt/bluedroid/stack/l2cap/l2cap_client.c @@ -29,15 +29,15 @@ #include "l2c_api.h" struct l2cap_client_t { - l2cap_client_callbacks_t callbacks; - void *context; + l2cap_client_callbacks_t callbacks; + void *context; - uint16_t local_channel_id; - uint16_t remote_mtu; - bool configured_self; - bool configured_peer; - bool is_congested; - list_t *outbound_fragments; + uint16_t local_channel_id; + uint16_t remote_mtu; + bool configured_self; + bool configured_peer; + bool is_congested; + list_t *outbound_fragments; }; static void connect_completed_cb(uint16_t local_channel_id, uint16_t error_code); @@ -58,377 +58,406 @@ static const uint16_t L2CAP_MTU_DEFAULT = 672; static const uint16_t L2CAP_MTU_MINIMUM = 48; static const tL2CAP_APPL_INFO l2cap_callbacks = { - .pL2CA_ConnectCfm_Cb = connect_completed_cb, - .pL2CA_ConfigInd_Cb = config_request_cb, - .pL2CA_ConfigCfm_Cb = config_completed_cb, - .pL2CA_DisconnectInd_Cb = disconnect_request_cb, - .pL2CA_DisconnectCfm_Cb = disconnect_completed_cb, - .pL2CA_CongestionStatus_Cb = congestion_cb, - .pL2CA_DataInd_Cb = read_ready_cb, - .pL2CA_TxComplete_Cb = write_completed_cb, + .pL2CA_ConnectCfm_Cb = connect_completed_cb, + .pL2CA_ConfigInd_Cb = config_request_cb, + .pL2CA_ConfigCfm_Cb = config_completed_cb, + .pL2CA_DisconnectInd_Cb = disconnect_request_cb, + .pL2CA_DisconnectCfm_Cb = disconnect_completed_cb, + .pL2CA_CongestionStatus_Cb = congestion_cb, + .pL2CA_DataInd_Cb = read_ready_cb, + .pL2CA_TxComplete_Cb = write_completed_cb, }; static list_t *l2cap_clients; // A list of l2cap_client_t. Container does not own objects. -buffer_t *l2cap_buffer_new(size_t size) { - buffer_t *buf = buffer_new(size + L2CAP_MIN_OFFSET); - buffer_t *slice = NULL; - if (buf) - slice = buffer_new_slice(buf, size); - buffer_free(buf); - return slice; +buffer_t *l2cap_buffer_new(size_t size) +{ + buffer_t *buf = buffer_new(size + L2CAP_MIN_OFFSET); + buffer_t *slice = NULL; + if (buf) { + slice = buffer_new_slice(buf, size); + } + buffer_free(buf); + return slice; } -l2cap_client_t *l2cap_client_new(const l2cap_client_callbacks_t *callbacks, void *context) { - assert(callbacks != NULL); - assert(callbacks->connected != NULL); - assert(callbacks->disconnected != NULL); - assert(callbacks->read_ready != NULL); - assert(callbacks->write_ready != NULL); +l2cap_client_t *l2cap_client_new(const l2cap_client_callbacks_t *callbacks, void *context) +{ + assert(callbacks != NULL); + assert(callbacks->connected != NULL); + assert(callbacks->disconnected != NULL); + assert(callbacks->read_ready != NULL); + assert(callbacks->write_ready != NULL); - if (!l2cap_clients) { - l2cap_clients = list_new(NULL); if (!l2cap_clients) { - LOG_ERROR("%s unable to allocate space for L2CAP client list.", __func__); - return NULL; + l2cap_clients = list_new(NULL); + if (!l2cap_clients) { + LOG_ERROR("%s unable to allocate space for L2CAP client list.", __func__); + return NULL; + } } - } - l2cap_client_t *ret = (l2cap_client_t *)osi_calloc(sizeof(l2cap_client_t)); - if (!ret) { - LOG_ERROR("%s unable to allocate L2CAP client.", __func__); - goto error; - } + l2cap_client_t *ret = (l2cap_client_t *)osi_calloc(sizeof(l2cap_client_t)); + if (!ret) { + LOG_ERROR("%s unable to allocate L2CAP client.", __func__); + goto error; + } - ret->callbacks = *callbacks; - ret->context = context; + ret->callbacks = *callbacks; + ret->context = context; - ret->remote_mtu = L2CAP_MTU_DEFAULT; - ret->outbound_fragments = list_new(NULL); - if (!ret) { - LOG_ERROR("%s unable to allocate outbound L2CAP fragment list.", __func__); - goto error; - } + ret->remote_mtu = L2CAP_MTU_DEFAULT; + ret->outbound_fragments = list_new(NULL); + if (!ret) { + LOG_ERROR("%s unable to allocate outbound L2CAP fragment list.", __func__); + goto error; + } - list_append(l2cap_clients, ret); + list_append(l2cap_clients, ret); - return ret; + return ret; error:; - osi_free(ret); - return NULL; + osi_free(ret); + return NULL; } -void l2cap_client_free(l2cap_client_t *client) { - if (!client) - return; - - list_remove(l2cap_clients, client); - l2cap_client_disconnect(client); - list_free(client->outbound_fragments); - osi_free(client); -} - -bool l2cap_client_connect(l2cap_client_t *client, const bt_bdaddr_t *remote_bdaddr, uint16_t psm) { - assert(client != NULL); - assert(remote_bdaddr != NULL); - assert(psm != 0); - assert(!bdaddr_is_empty(remote_bdaddr)); - assert(client->local_channel_id == 0); - assert(!client->configured_self); - assert(!client->configured_peer); - assert(!L2C_INVALID_PSM(psm)); - - client->local_channel_id = L2CA_ConnectReq(psm, (uint8_t *)remote_bdaddr); - if (!client->local_channel_id) { - LOG_ERROR("%s unable to create L2CAP connection.", __func__); - return false; - } - - L2CA_SetConnectionCallbacks(client->local_channel_id, &l2cap_callbacks); - return true; -} - -void l2cap_client_disconnect(l2cap_client_t *client) { - assert(client != NULL); - - if (client->local_channel_id && !L2CA_DisconnectReq(client->local_channel_id)) - LOG_ERROR("%s unable to send disconnect message for LCID 0x%04x.", __func__, client->local_channel_id); - - client->local_channel_id = 0; - client->remote_mtu = L2CAP_MTU_DEFAULT; - client->configured_self = false; - client->configured_peer = false; - client->is_congested = false; - - for (const list_node_t *node = list_begin(client->outbound_fragments); node != list_end(client->outbound_fragments); node = list_next(node)) - GKI_freebuf(list_node(node)); - - list_clear(client->outbound_fragments); -} - -bool l2cap_client_is_connected(const l2cap_client_t *client) { - assert(client != NULL); - - return client->local_channel_id != 0 && client->configured_self && client->configured_peer; -} - -bool l2cap_client_write(l2cap_client_t *client, buffer_t *packet) { - assert(client != NULL); - assert(packet != NULL); - assert(l2cap_client_is_connected(client)); - - if (client->is_congested) - return false; - - fragment_packet(client, packet); - dispatch_fragments(client); - return true; -} - -static void connect_completed_cb(uint16_t local_channel_id, uint16_t error_code) { - assert(local_channel_id != 0); - - l2cap_client_t *client = find(local_channel_id); - if (!client) { - LOG_ERROR("%s unable to find L2CAP client for LCID 0x%04x.", __func__, local_channel_id); - return; - } - - if (error_code != L2CAP_CONN_OK) { - LOG_ERROR("%s error connecting L2CAP channel: %d.", __func__, error_code); - client->callbacks.disconnected(client, client->context); - return; - } - - // Use default L2CAP parameters. - tL2CAP_CFG_INFO desired_parameters = { 0 }; - if (!L2CA_ConfigReq(local_channel_id, &desired_parameters)) { - LOG_ERROR("%s error sending L2CAP config parameters.", __func__); - client->callbacks.disconnected(client, client->context); - } -} - -static void config_request_cb(uint16_t local_channel_id, tL2CAP_CFG_INFO *requested_parameters) { - tL2CAP_CFG_INFO response = { 0 }; - l2cap_client_t *client = find(local_channel_id); - - if (!client) { - LOG_ERROR("%s unable to find L2CAP client matching LCID 0x%04x.", __func__, local_channel_id); - return; - } - - response.result = L2CAP_CFG_OK; - - if (requested_parameters->mtu_present) { - // Make sure the peer chose an MTU at least as large as the minimum L2CAP MTU defined - // by the Bluetooth Core spec. - if (requested_parameters->mtu < L2CAP_MTU_MINIMUM) { - response.mtu = L2CAP_MTU_MINIMUM; - response.mtu_present = true; - response.result = L2CAP_CFG_UNACCEPTABLE_PARAMS; - } else { - client->remote_mtu = requested_parameters->mtu; +void l2cap_client_free(l2cap_client_t *client) +{ + if (!client) { + return; } - } - if (requested_parameters->fcr_present) { - if (requested_parameters->fcr.mode != L2CAP_FCR_BASIC_MODE) { - response.fcr_present = true; - response.fcr = requested_parameters->fcr; - response.fcr.mode = L2CAP_FCR_BASIC_MODE; - response.result = L2CAP_CFG_UNACCEPTABLE_PARAMS; - } - } - - if (!L2CA_ConfigRsp(local_channel_id, &response)) { - LOG_ERROR("%s unable to send config response for LCID 0x%04x.", __func__, local_channel_id); + list_remove(l2cap_clients, client); l2cap_client_disconnect(client); - return; - } - - // If we've configured both endpoints, let the listener know we've connected. - client->configured_peer = true; - if (l2cap_client_is_connected(client)) - client->callbacks.connected(client, client->context); + list_free(client->outbound_fragments); + osi_free(client); } -static void config_completed_cb(uint16_t local_channel_id, tL2CAP_CFG_INFO *negotiated_parameters) { - l2cap_client_t *client = find(local_channel_id); +bool l2cap_client_connect(l2cap_client_t *client, const bt_bdaddr_t *remote_bdaddr, uint16_t psm) +{ + assert(client != NULL); + assert(remote_bdaddr != NULL); + assert(psm != 0); + assert(!bdaddr_is_empty(remote_bdaddr)); + assert(client->local_channel_id == 0); + assert(!client->configured_self); + assert(!client->configured_peer); + assert(!L2C_INVALID_PSM(psm)); - if (!client) { - LOG_ERROR("%s unable to find L2CAP client matching LCID 0x%04x.", __func__, local_channel_id); - return; - } + client->local_channel_id = L2CA_ConnectReq(psm, (uint8_t *)remote_bdaddr); + if (!client->local_channel_id) { + LOG_ERROR("%s unable to create L2CAP connection.", __func__); + return false; + } - switch (negotiated_parameters->result) { + L2CA_SetConnectionCallbacks(client->local_channel_id, &l2cap_callbacks); + return true; +} + +void l2cap_client_disconnect(l2cap_client_t *client) +{ + assert(client != NULL); + + if (client->local_channel_id && !L2CA_DisconnectReq(client->local_channel_id)) { + LOG_ERROR("%s unable to send disconnect message for LCID 0x%04x.", __func__, client->local_channel_id); + } + + client->local_channel_id = 0; + client->remote_mtu = L2CAP_MTU_DEFAULT; + client->configured_self = false; + client->configured_peer = false; + client->is_congested = false; + + for (const list_node_t *node = list_begin(client->outbound_fragments); node != list_end(client->outbound_fragments); node = list_next(node)) { + GKI_freebuf(list_node(node)); + } + + list_clear(client->outbound_fragments); +} + +bool l2cap_client_is_connected(const l2cap_client_t *client) +{ + assert(client != NULL); + + return client->local_channel_id != 0 && client->configured_self && client->configured_peer; +} + +bool l2cap_client_write(l2cap_client_t *client, buffer_t *packet) +{ + assert(client != NULL); + assert(packet != NULL); + assert(l2cap_client_is_connected(client)); + + if (client->is_congested) { + return false; + } + + fragment_packet(client, packet); + dispatch_fragments(client); + return true; +} + +static void connect_completed_cb(uint16_t local_channel_id, uint16_t error_code) +{ + assert(local_channel_id != 0); + + l2cap_client_t *client = find(local_channel_id); + if (!client) { + LOG_ERROR("%s unable to find L2CAP client for LCID 0x%04x.", __func__, local_channel_id); + return; + } + + if (error_code != L2CAP_CONN_OK) { + LOG_ERROR("%s error connecting L2CAP channel: %d.", __func__, error_code); + client->callbacks.disconnected(client, client->context); + return; + } + + // Use default L2CAP parameters. + tL2CAP_CFG_INFO desired_parameters = { 0 }; + if (!L2CA_ConfigReq(local_channel_id, &desired_parameters)) { + LOG_ERROR("%s error sending L2CAP config parameters.", __func__); + client->callbacks.disconnected(client, client->context); + } +} + +static void config_request_cb(uint16_t local_channel_id, tL2CAP_CFG_INFO *requested_parameters) +{ + tL2CAP_CFG_INFO response = { 0 }; + l2cap_client_t *client = find(local_channel_id); + + if (!client) { + LOG_ERROR("%s unable to find L2CAP client matching LCID 0x%04x.", __func__, local_channel_id); + return; + } + + response.result = L2CAP_CFG_OK; + + if (requested_parameters->mtu_present) { + // Make sure the peer chose an MTU at least as large as the minimum L2CAP MTU defined + // by the Bluetooth Core spec. + if (requested_parameters->mtu < L2CAP_MTU_MINIMUM) { + response.mtu = L2CAP_MTU_MINIMUM; + response.mtu_present = true; + response.result = L2CAP_CFG_UNACCEPTABLE_PARAMS; + } else { + client->remote_mtu = requested_parameters->mtu; + } + } + + if (requested_parameters->fcr_present) { + if (requested_parameters->fcr.mode != L2CAP_FCR_BASIC_MODE) { + response.fcr_present = true; + response.fcr = requested_parameters->fcr; + response.fcr.mode = L2CAP_FCR_BASIC_MODE; + response.result = L2CAP_CFG_UNACCEPTABLE_PARAMS; + } + } + + if (!L2CA_ConfigRsp(local_channel_id, &response)) { + LOG_ERROR("%s unable to send config response for LCID 0x%04x.", __func__, local_channel_id); + l2cap_client_disconnect(client); + return; + } + + // If we've configured both endpoints, let the listener know we've connected. + client->configured_peer = true; + if (l2cap_client_is_connected(client)) { + client->callbacks.connected(client, client->context); + } +} + +static void config_completed_cb(uint16_t local_channel_id, tL2CAP_CFG_INFO *negotiated_parameters) +{ + l2cap_client_t *client = find(local_channel_id); + + if (!client) { + LOG_ERROR("%s unable to find L2CAP client matching LCID 0x%04x.", __func__, local_channel_id); + return; + } + + switch (negotiated_parameters->result) { // We'll get another configuration response later. case L2CAP_CFG_PENDING: - break; + break; case L2CAP_CFG_UNACCEPTABLE_PARAMS: - // TODO: see if we can renegotiate parameters instead of dropping the connection. - LOG_WARN("%s dropping L2CAP connection due to unacceptable config parameters.\n", __func__); - l2cap_client_disconnect(client); - break; + // TODO: see if we can renegotiate parameters instead of dropping the connection. + LOG_WARN("%s dropping L2CAP connection due to unacceptable config parameters.\n", __func__); + l2cap_client_disconnect(client); + break; case L2CAP_CFG_OK: - // If we've configured both endpoints, let the listener know we've connected. - client->configured_self = true; - if (l2cap_client_is_connected(client)) - client->callbacks.connected(client, client->context); - break; + // If we've configured both endpoints, let the listener know we've connected. + client->configured_self = true; + if (l2cap_client_is_connected(client)) { + client->callbacks.connected(client, client->context); + } + break; // Failure, no further parameter negotiation possible. default: - LOG_WARN("%s L2CAP parameter negotiation failed with error code %d.\n", __func__, negotiated_parameters->result); - l2cap_client_disconnect(client); - break; - } -} - -static void disconnect_request_cb(uint16_t local_channel_id, bool ack_required) { - l2cap_client_t *client = find(local_channel_id); - if (!client) { - LOG_ERROR("%s unable to find L2CAP client with LCID 0x%04x.\n", __func__, local_channel_id); - return; - } - - if (ack_required) - L2CA_DisconnectRsp(local_channel_id); - - // We already sent a disconnect response so this LCID is now invalid. - client->local_channel_id = 0; - l2cap_client_disconnect(client); - - client->callbacks.disconnected(client, client->context); -} - -static void disconnect_completed_cb(uint16_t local_channel_id, UNUSED_ATTR uint16_t error_code) { - assert(local_channel_id != 0); - - l2cap_client_t *client = find(local_channel_id); - if (!client) { - LOG_ERROR("%s unable to find L2CAP client with LCID 0x%04x.\n", __func__, local_channel_id); - return; - } - - client->local_channel_id = 0; - l2cap_client_disconnect(client); - - client->callbacks.disconnected(client, client->context); -} - -static void congestion_cb(uint16_t local_channel_id, bool is_congested) { - assert(local_channel_id != 0); - - l2cap_client_t *client = find(local_channel_id); - if (!client) { - LOG_ERROR("%s unable to find L2CAP client matching LCID 0x%04x.\n", __func__, local_channel_id); - return; - } - - client->is_congested = is_congested; - - if (!is_congested) { - // If we just decongested, dispatch whatever we have left over in our queue. - // Once that's done, if we're still decongested, notify the listener so it - // can start writing again. - dispatch_fragments(client); - if (!client->is_congested) - client->callbacks.write_ready(client, client->context); - } -} - -static void read_ready_cb(uint16_t local_channel_id, BT_HDR *packet) { - assert(local_channel_id != 0); - - l2cap_client_t *client = find(local_channel_id); - if (!client) { - LOG_ERROR("%s unable to find L2CAP client matching LCID 0x%04x.\n", __func__, local_channel_id); - return; - } - - // TODO(sharvil): eliminate copy from BT_HDR. - buffer_t *buffer = buffer_new(packet->len); - memcpy(buffer_ptr(buffer), packet->data + packet->offset, packet->len); - GKI_freebuf(packet); - - client->callbacks.read_ready(client, buffer, client->context); - buffer_free(buffer); -} - -static void write_completed_cb(UNUSED_ATTR uint16_t local_channel_id, UNUSED_ATTR uint16_t packets_completed) { - // Do nothing. We update congestion state based on the congestion callback - // and we've already removed items from outbound_fragments list so we don't - // really care how many packets were successfully dispatched. -} - -static void fragment_packet(l2cap_client_t *client, buffer_t *packet) { - assert(client != NULL); - assert(packet != NULL); - - // TODO(sharvil): eliminate copy into BT_HDR. - BT_HDR *bt_packet = GKI_getbuf(buffer_length(packet) + L2CAP_MIN_OFFSET); - bt_packet->offset = L2CAP_MIN_OFFSET; - bt_packet->len = buffer_length(packet); - memcpy(bt_packet->data + bt_packet->offset, buffer_ptr(packet), buffer_length(packet)); - - for (;;) { - if (bt_packet->len <= client->remote_mtu) { - if (bt_packet->len > 0) - list_append(client->outbound_fragments, bt_packet); - else - GKI_freebuf(bt_packet); - break; - } - - BT_HDR *fragment = GKI_getbuf(client->remote_mtu + L2CAP_MIN_OFFSET); - fragment->offset = L2CAP_MIN_OFFSET; - fragment->len = client->remote_mtu; - memcpy(fragment->data + fragment->offset, bt_packet->data + bt_packet->offset, client->remote_mtu); - - list_append(client->outbound_fragments, fragment); - - bt_packet->offset += client->remote_mtu; - bt_packet->len -= client->remote_mtu; - } -} - -static void dispatch_fragments(l2cap_client_t *client) { - assert(client != NULL); - assert(!client->is_congested); - - while (!list_is_empty(client->outbound_fragments)) { - BT_HDR *packet = (BT_HDR *)list_front(client->outbound_fragments); - list_remove(client->outbound_fragments, packet); - - switch (L2CA_DataWrite(client->local_channel_id, packet)) { - case L2CAP_DW_CONGESTED: - client->is_congested = true; - return; - - case L2CAP_DW_FAILED: - LOG_ERROR("%s error writing data to L2CAP connection LCID 0x%04x; disconnecting.", __func__, client->local_channel_id); + LOG_WARN("%s L2CAP parameter negotiation failed with error code %d.\n", __func__, negotiated_parameters->result); l2cap_client_disconnect(client); - return; - - case L2CAP_DW_SUCCESS: break; } - } } -static l2cap_client_t *find(uint16_t local_channel_id) { - assert(local_channel_id != 0); +static void disconnect_request_cb(uint16_t local_channel_id, bool ack_required) +{ + l2cap_client_t *client = find(local_channel_id); + if (!client) { + LOG_ERROR("%s unable to find L2CAP client with LCID 0x%04x.\n", __func__, local_channel_id); + return; + } - for (const list_node_t *node = list_begin(l2cap_clients); node != list_end(l2cap_clients); node = list_next(node)) { - l2cap_client_t *client = (l2cap_client_t *)list_node(node); - if (client->local_channel_id == local_channel_id) - return client; - } + if (ack_required) { + L2CA_DisconnectRsp(local_channel_id); + } - return NULL; + // We already sent a disconnect response so this LCID is now invalid. + client->local_channel_id = 0; + l2cap_client_disconnect(client); + + client->callbacks.disconnected(client, client->context); +} + +static void disconnect_completed_cb(uint16_t local_channel_id, UNUSED_ATTR uint16_t error_code) +{ + assert(local_channel_id != 0); + + l2cap_client_t *client = find(local_channel_id); + if (!client) { + LOG_ERROR("%s unable to find L2CAP client with LCID 0x%04x.\n", __func__, local_channel_id); + return; + } + + client->local_channel_id = 0; + l2cap_client_disconnect(client); + + client->callbacks.disconnected(client, client->context); +} + +static void congestion_cb(uint16_t local_channel_id, bool is_congested) +{ + assert(local_channel_id != 0); + + l2cap_client_t *client = find(local_channel_id); + if (!client) { + LOG_ERROR("%s unable to find L2CAP client matching LCID 0x%04x.\n", __func__, local_channel_id); + return; + } + + client->is_congested = is_congested; + + if (!is_congested) { + // If we just decongested, dispatch whatever we have left over in our queue. + // Once that's done, if we're still decongested, notify the listener so it + // can start writing again. + dispatch_fragments(client); + if (!client->is_congested) { + client->callbacks.write_ready(client, client->context); + } + } +} + +static void read_ready_cb(uint16_t local_channel_id, BT_HDR *packet) +{ + assert(local_channel_id != 0); + + l2cap_client_t *client = find(local_channel_id); + if (!client) { + LOG_ERROR("%s unable to find L2CAP client matching LCID 0x%04x.\n", __func__, local_channel_id); + return; + } + + // TODO(sharvil): eliminate copy from BT_HDR. + buffer_t *buffer = buffer_new(packet->len); + memcpy(buffer_ptr(buffer), packet->data + packet->offset, packet->len); + GKI_freebuf(packet); + + client->callbacks.read_ready(client, buffer, client->context); + buffer_free(buffer); +} + +static void write_completed_cb(UNUSED_ATTR uint16_t local_channel_id, UNUSED_ATTR uint16_t packets_completed) +{ + // Do nothing. We update congestion state based on the congestion callback + // and we've already removed items from outbound_fragments list so we don't + // really care how many packets were successfully dispatched. +} + +static void fragment_packet(l2cap_client_t *client, buffer_t *packet) +{ + assert(client != NULL); + assert(packet != NULL); + + // TODO(sharvil): eliminate copy into BT_HDR. + BT_HDR *bt_packet = GKI_getbuf(buffer_length(packet) + L2CAP_MIN_OFFSET); + bt_packet->offset = L2CAP_MIN_OFFSET; + bt_packet->len = buffer_length(packet); + memcpy(bt_packet->data + bt_packet->offset, buffer_ptr(packet), buffer_length(packet)); + + for (;;) { + if (bt_packet->len <= client->remote_mtu) { + if (bt_packet->len > 0) { + list_append(client->outbound_fragments, bt_packet); + } else { + GKI_freebuf(bt_packet); + } + break; + } + + BT_HDR *fragment = GKI_getbuf(client->remote_mtu + L2CAP_MIN_OFFSET); + fragment->offset = L2CAP_MIN_OFFSET; + fragment->len = client->remote_mtu; + memcpy(fragment->data + fragment->offset, bt_packet->data + bt_packet->offset, client->remote_mtu); + + list_append(client->outbound_fragments, fragment); + + bt_packet->offset += client->remote_mtu; + bt_packet->len -= client->remote_mtu; + } +} + +static void dispatch_fragments(l2cap_client_t *client) +{ + assert(client != NULL); + assert(!client->is_congested); + + while (!list_is_empty(client->outbound_fragments)) { + BT_HDR *packet = (BT_HDR *)list_front(client->outbound_fragments); + list_remove(client->outbound_fragments, packet); + + switch (L2CA_DataWrite(client->local_channel_id, packet)) { + case L2CAP_DW_CONGESTED: + client->is_congested = true; + return; + + case L2CAP_DW_FAILED: + LOG_ERROR("%s error writing data to L2CAP connection LCID 0x%04x; disconnecting.", __func__, client->local_channel_id); + l2cap_client_disconnect(client); + return; + + case L2CAP_DW_SUCCESS: + break; + } + } +} + +static l2cap_client_t *find(uint16_t local_channel_id) +{ + assert(local_channel_id != 0); + + for (const list_node_t *node = list_begin(l2cap_clients); node != list_end(l2cap_clients); node = list_next(node)) { + l2cap_client_t *client = (l2cap_client_t *)list_node(node); + if (client->local_channel_id == local_channel_id) { + return client; + } + } + + return NULL; } #endif /*L2CAP_CLIENT_INCLUDED*/ diff --git a/components/bt/bluedroid/stack/rfcomm/include/port_int.h b/components/bt/bluedroid/stack/rfcomm/include/port_int.h old mode 100755 new mode 100644 index 2313ace2a5..fb72d5038a --- a/components/bt/bluedroid/stack/rfcomm/include/port_int.h +++ b/components/bt/bluedroid/stack/rfcomm/include/port_int.h @@ -51,8 +51,7 @@ /* ** Define Port Data Transfere control block */ -typedef struct -{ +typedef struct { BUFFER_Q queue; /* Queue of buffers waiting to be sent */ BOOLEAN peer_fc; /* TRUE if flow control is set based on peer's request */ BOOLEAN user_fc; /* TRUE if flow control is set based on user's request */ @@ -63,8 +62,7 @@ typedef struct /* ** Port control structure used to pass modem info */ -typedef struct -{ +typedef struct { #define MODEM_SIGNAL_DTRDSR 0x01 #define MODEM_SIGNAL_RTSCTS 0x02 #define MODEM_SIGNAL_RI 0x04 @@ -88,12 +86,11 @@ typedef struct /* ** RFCOMM multiplexer Control Block */ -typedef struct -{ +typedef struct { TIMER_LIST_ENT tle; /* Timer list entry */ BUFFER_Q cmd_q; /* Queue for command messages on this mux */ UINT8 port_inx[RFCOMM_MAX_DLCI + 1]; /* Array for quick access to */ - /* tPORT based on dlci */ + /* tPORT based on dlci */ BD_ADDR bd_addr; /* BD ADDR of the peer if initiator */ UINT16 lcid; /* Local cid used for this channel */ UINT16 peer_l2cap_mtu; /* Max frame that can be sent to peer L2CAP */ @@ -114,8 +111,7 @@ typedef struct /* ** RFCOMM Port Connection Control Block */ -struct t_rfc_port -{ +struct t_rfc_port { #define RFC_PORT_STATE_IDLE 0 #define RFC_PORT_STATE_WAIT_START 1 #define RFC_PORT_STATE_OPENING 2 @@ -142,8 +138,7 @@ typedef struct t_rfc_port tRFC_PORT; /* ** Define control block containing information about PORT connection */ -struct t_port_info -{ +struct t_port_info { UINT8 inx; /* Index of this control block in the port_info array */ BOOLEAN in_use; /* True when structure is allocated */ @@ -197,12 +192,12 @@ struct t_port_info tPORT_DATA_CO_CALLBACK *p_data_co_callback; /* Callback function with callouts and flowctrl */ UINT16 credit_tx; /* Flow control credits for tx path */ UINT16 credit_rx; /* Flow control credits for rx path, this is */ - /* number of buffers peer is allowed to sent */ + /* number of buffers peer is allowed to sent */ UINT16 credit_rx_max; /* Max number of credits we will allow this guy to sent */ UINT16 credit_rx_low; /* Number of credits when we send credit update */ UINT16 rx_buf_critical; /* port receive queue critical watermark level */ BOOLEAN keep_port_handle; /* TRUE if port is not deallocated when closing */ - /* it is set to TRUE for server when allocating port */ + /* it is set to TRUE for server when allocating port */ UINT16 keep_mtu; /* Max MTU that port can receive by server */ }; typedef struct t_port_info tPORT; @@ -210,8 +205,7 @@ typedef struct t_port_info tPORT; /* Define the PORT/RFCOMM control structure */ -typedef struct -{ +typedef struct { tPORT port[MAX_RFC_PORTS]; /* Port info pool */ tRFC_MCB rfc_mcb[MAX_BD_CONNECTIONS]; /* RFCOMM bd_connections pool */ } tPORT_CB; diff --git a/components/bt/bluedroid/stack/rfcomm/include/rfc_int.h b/components/bt/bluedroid/stack/rfcomm/include/rfc_int.h old mode 100755 new mode 100644 index 719a99df85..9194583e5d --- a/components/bt/bluedroid/stack/rfcomm/include/rfc_int.h +++ b/components/bt/bluedroid/stack/rfcomm/include/rfc_int.h @@ -75,8 +75,7 @@ extern void RFCOMM_LineStatusReq (tRFC_MCB *p_mcb, UINT8 dlci, UINT8 line_status /* ** Define logical struct used for sending and decoding MX frames */ -typedef struct -{ +typedef struct { UINT8 dlci; UINT8 type; UINT8 cr; @@ -84,10 +83,8 @@ typedef struct UINT8 pf; UINT8 credit; - union - { - struct - { + union { + struct { UINT8 dlci; UINT8 frame_type; UINT8 conv_layer; @@ -97,26 +94,22 @@ typedef struct UINT8 n2; UINT8 k; } pn; - struct - { + struct { UINT8 *p_data; UINT16 data_len; } test; - struct - { + struct { UINT8 dlci; UINT8 signals; UINT8 break_present; UINT8 break_duration; } msc; - struct - { + struct { UINT8 ea; UINT8 cr; UINT8 type; } nsc; - struct - { + struct { UINT8 dlci; UINT8 is_request; UINT8 baud_rate; @@ -129,8 +122,7 @@ typedef struct UINT8 xoff_char; UINT16 param_mask; } rpn; - struct - { + struct { UINT8 dlci; UINT8 line_status; } rls; @@ -215,8 +207,7 @@ typedef struct /* Define RFComm control block */ -typedef struct -{ +typedef struct { MX_FRAME rx_frame; tL2CAP_APPL_INFO reg_info; /* L2CAP Registration info */ tRFC_MCB *p_rfc_lcid_mcb[MAX_L2CAP_CHANNELS]; /* MCB based on the L2CAP's lcid */ @@ -226,8 +217,7 @@ typedef struct } tRFCOMM_CB; /* Main Control Block for the RFCOMM Layer (PORT and RFC) */ -typedef struct -{ +typedef struct { tRFCOMM_CB rfc; tPORT_CB port; UINT8 trace_level; @@ -315,7 +305,7 @@ tRFC_MCB *rfc_find_lcid_mcb (UINT16 lcid); extern void rfc_save_lcid_mcb (tRFC_MCB *p_rfc_mcb, UINT16 lcid); extern void rfc_check_mcb_active (tRFC_MCB *p_mcb); extern void rfc_port_closed (tPORT *p_port); -extern void rfc_sec_check_complete (BD_ADDR bd_addr, tBT_TRANSPORT transport,void *p_ref_data, UINT8 res); +extern void rfc_sec_check_complete (BD_ADDR bd_addr, tBT_TRANSPORT transport, void *p_ref_data, UINT8 res); extern void rfc_inc_credit (tPORT *p_port, UINT8 credit); extern void rfc_dec_credit (tPORT *p_port); extern void rfc_check_send_cmd(tRFC_MCB *p_mcb, BT_HDR *p_buf); diff --git a/components/bt/bluedroid/stack/rfcomm/port_api.c b/components/bt/bluedroid/stack/rfcomm/port_api.c old mode 100755 new mode 100644 index 94e49bcb72..753fc34256 --- a/components/bt/bluedroid/stack/rfcomm/port_api.c +++ b/components/bt/bluedroid/stack/rfcomm/port_api.c @@ -39,33 +39,33 @@ /* Mapping from PORT_* result codes to human readable strings. */ static const char *result_code_strings[] = { - "Success", - "Unknown error", - "Already opened", - "Command pending", - "App not registered", - "No memory", - "No resources", - "Bad BD address", - "Unspecified error", - "Bad handle", - "Not opened", - "Line error", - "Start failed", - "Parameter negotiation failed", - "Port negotiation failed", - "Sec failed", - "Peer connection failed", - "Peer failed", - "Peer timeout", - "Closed", - "TX full", - "Local closed", - "Local timeout", - "TX queue disabled", - "Page timeout", - "Invalid SCN", - "Unknown result code" + "Success", + "Unknown error", + "Already opened", + "Command pending", + "App not registered", + "No memory", + "No resources", + "Bad BD address", + "Unspecified error", + "Bad handle", + "Not opened", + "Line error", + "Start failed", + "Parameter negotiation failed", + "Port negotiation failed", + "Sec failed", + "Peer connection failed", + "Peer failed", + "Peer timeout", + "Closed", + "TX full", + "Local closed", + "Local timeout", + "TX queue disabled", + "Page timeout", + "Invalid SCN", + "Unknown result code" }; /******************************************************************************* @@ -110,12 +110,11 @@ int RFCOMM_CreateConnection (UINT16 uuid, UINT8 scn, BOOLEAN is_server, UINT16 rfcomm_mtu; RFCOMM_TRACE_API ("RFCOMM_CreateConnection() BDA: %02x-%02x-%02x-%02x-%02x-%02x", - bd_addr[0], bd_addr[1], bd_addr[2], bd_addr[3], bd_addr[4], bd_addr[5]); + bd_addr[0], bd_addr[1], bd_addr[2], bd_addr[3], bd_addr[4], bd_addr[5]); *p_handle = 0; - if (( scn == 0 )||(scn >= PORT_MAX_RFC_PORTS )) - { + if (( scn == 0 ) || (scn >= PORT_MAX_RFC_PORTS )) { /* Server Channel Number(SCN) should be in range 1...30 */ RFCOMM_TRACE_ERROR ("RFCOMM_CreateConnection - invalid SCN"); return (PORT_INVALID_SCN); @@ -123,38 +122,35 @@ int RFCOMM_CreateConnection (UINT16 uuid, UINT8 scn, BOOLEAN is_server, /* For client that originate connection on the existing none initiator */ /* multiplexer channel DLCI should be odd */ - if (p_mcb && !p_mcb->is_initiator && !is_server) + if (p_mcb && !p_mcb->is_initiator && !is_server) { dlci = (scn << 1) + 1; - else + } else { dlci = (scn << 1); + } RFCOMM_TRACE_API("RFCOMM_CreateConnection(): scn:%d, dlci:%d, is_server:%d mtu:%d, p_mcb:%p", - scn, dlci, is_server, mtu, p_mcb); + scn, dlci, is_server, mtu, p_mcb); /* For the server side always allocate a new port. On the client side */ /* do not allow the same (dlci, bd_addr) to be opened twice by application */ - if (!is_server && ((p_port = port_find_port (dlci, bd_addr)) != NULL)) - { + if (!is_server && ((p_port = port_find_port (dlci, bd_addr)) != NULL)) { /* if existing port is also a client port */ - if (p_port->is_server == FALSE) - { + if (p_port->is_server == FALSE) { RFCOMM_TRACE_ERROR ("RFCOMM_CreateConnection - already opened state:%d, RFC state:%d, MCB state:%d", - p_port->state, p_port->rfc.state, p_port->rfc.p_mcb ? p_port->rfc.p_mcb->state : 0); + p_port->state, p_port->rfc.state, p_port->rfc.p_mcb ? p_port->rfc.p_mcb->state : 0); return (PORT_ALREADY_OPENED); } } - if ((p_port = port_allocate_port (dlci, bd_addr)) == NULL) - { + if ((p_port = port_allocate_port (dlci, bd_addr)) == NULL) { RFCOMM_TRACE_WARNING ("RFCOMM_CreateConnection - no resources"); return (PORT_NO_RESOURCES); } - RFCOMM_TRACE_API("RFCOMM_CreateConnection(): scn:%d, dlci:%d, is_server:%d mtu:%d, p_mcb:%p, p_port:%p", - scn, dlci, is_server, mtu, p_mcb, p_port); + RFCOMM_TRACE_API("RFCOMM_CreateConnection(): scn:%d, dlci:%d, is_server:%d mtu:%d, p_mcb:%p, p_port:%p", + scn, dlci, is_server, mtu, p_mcb, p_port); p_port->default_signal_state = (PORT_DTRDSR_ON | PORT_CTSRTS_ON | PORT_DCD_ON); - switch (uuid) - { + switch (uuid) { case UUID_PROTOCOL_OBEX: p_port->default_signal_state = PORT_OBEX_DEFAULT_SIGNAL_STATE; break; @@ -188,14 +184,14 @@ int RFCOMM_CreateConnection (UINT16 uuid, UINT8 scn, BOOLEAN is_server, rfcomm_mtu = L2CAP_MTU_SIZE - RFCOMM_DATA_OVERHEAD; - if (mtu) + if (mtu) { p_port->mtu = (mtu < rfcomm_mtu) ? mtu : rfcomm_mtu; - else + } else { p_port->mtu = rfcomm_mtu; + } /* server doesn't need to release port when closing */ - if( is_server ) - { + if ( is_server ) { p_port->keep_port_handle = TRUE; /* keep mtu that user asked, p_port->mtu could be updated during param negotiation */ @@ -207,12 +203,12 @@ int RFCOMM_CreateConnection (UINT16 uuid, UINT8 scn, BOOLEAN is_server, p_port->p_mgmt_callback = p_mgmt_cb; - for (i = 0; i < BD_ADDR_LEN; i++) + for (i = 0; i < BD_ADDR_LEN; i++) { p_port->bd_addr[i] = bd_addr[i]; + } /* If this is not initiator of the connection need to just wait */ - if (p_port->is_server) - { + if (p_port->is_server) { return (PORT_SUCCESS); } @@ -237,15 +233,13 @@ int RFCOMM_RemoveConnection (UINT16 handle) RFCOMM_TRACE_API ("RFCOMM_RemoveConnection() handle:%d", handle); /* Check if handle is valid to avoid crashing */ - if ((handle == 0) || (handle > MAX_RFC_PORTS)) - { + if ((handle == 0) || (handle > MAX_RFC_PORTS)) { RFCOMM_TRACE_ERROR ("RFCOMM_RemoveConnection() BAD handle:%d", handle); return (PORT_BAD_HANDLE); } p_port = &rfc_cb.port.port[handle - 1]; - if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) - { + if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) { RFCOMM_TRACE_EVENT ("RFCOMM_RemoveConnection() Not opened:%d", handle); return (PORT_SUCCESS); } @@ -273,8 +267,7 @@ int RFCOMM_RemoveServer (UINT16 handle) RFCOMM_TRACE_API ("RFCOMM_RemoveServer() handle:%d", handle); /* Check if handle is valid to avoid crashing */ - if ((handle == 0) || (handle > MAX_RFC_PORTS)) - { + if ((handle == 0) || (handle > MAX_RFC_PORTS)) { RFCOMM_TRACE_ERROR ("RFCOMM_RemoveServer() BAD handle:%d", handle); return (PORT_BAD_HANDLE); } @@ -283,8 +276,7 @@ int RFCOMM_RemoveServer (UINT16 handle) /* Do not report any events to the client any more. */ p_port->p_mgmt_callback = NULL; - if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) - { + if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) { RFCOMM_TRACE_EVENT ("RFCOMM_RemoveServer() Not opened:%d", handle); return (PORT_SUCCESS); } @@ -318,15 +310,13 @@ int PORT_SetEventCallback (UINT16 port_handle, tPORT_CALLBACK *p_port_cb) tPORT *p_port; /* Check if handle is valid to avoid crashing */ - if ((port_handle == 0) || (port_handle > MAX_RFC_PORTS)) - { + if ((port_handle == 0) || (port_handle > MAX_RFC_PORTS)) { return (PORT_BAD_HANDLE); } p_port = &rfc_cb.port.port[port_handle - 1]; - if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) - { + if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) { return (PORT_NOT_OPENED); } @@ -351,8 +341,7 @@ int PORT_ClearKeepHandleFlag (UINT16 port_handle) tPORT *p_port; /* Check if handle is valid to avoid crashing */ - if ((port_handle == 0) || (port_handle > MAX_RFC_PORTS)) - { + if ((port_handle == 0) || (port_handle > MAX_RFC_PORTS)) { return (PORT_BAD_HANDLE); } @@ -381,15 +370,13 @@ int PORT_SetDataCallback (UINT16 port_handle, tPORT_DATA_CALLBACK *p_port_cb) RFCOMM_TRACE_API ("PORT_SetDataCallback() handle:%d cb 0x%x", port_handle, p_port_cb); /* Check if handle is valid to avoid crashing */ - if ((port_handle == 0) || (port_handle > MAX_RFC_PORTS)) - { + if ((port_handle == 0) || (port_handle > MAX_RFC_PORTS)) { return (PORT_BAD_HANDLE); } p_port = &rfc_cb.port.port[port_handle - 1]; - if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) - { + if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) { return (PORT_NOT_OPENED); } @@ -417,15 +404,13 @@ int PORT_SetDataCOCallback (UINT16 port_handle, tPORT_DATA_CO_CALLBACK *p_port_c RFCOMM_TRACE_API ("PORT_SetDataCOCallback() handle:%d cb 0x%x", port_handle, p_port_cb); /* Check if handle is valid to avoid crashing */ - if ((port_handle == 0) || (port_handle > MAX_RFC_PORTS)) - { + if ((port_handle == 0) || (port_handle > MAX_RFC_PORTS)) { return (PORT_BAD_HANDLE); } p_port = &rfc_cb.port.port[port_handle - 1]; - if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) - { + if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) { return (PORT_NOT_OPENED); } @@ -453,15 +438,13 @@ int PORT_SetEventMask (UINT16 port_handle, UINT32 mask) RFCOMM_TRACE_API ("PORT_SetEventMask() handle:%d mask:0x%x", port_handle, mask); /* Check if handle is valid to avoid crashing */ - if ((port_handle == 0) || (port_handle > MAX_RFC_PORTS)) - { + if ((port_handle == 0) || (port_handle > MAX_RFC_PORTS)) { return (PORT_BAD_HANDLE); } p_port = &rfc_cb.port.port[port_handle - 1]; - if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) - { + if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) { return (PORT_NOT_OPENED); } @@ -490,28 +473,26 @@ int PORT_CheckConnection (UINT16 handle, BD_ADDR bd_addr, UINT16 *p_lcid) RFCOMM_TRACE_API ("PORT_CheckConnection() handle:%d", handle); /* Check if handle is valid to avoid crashing */ - if ((handle == 0) || (handle > MAX_RFC_PORTS)) - { + if ((handle == 0) || (handle > MAX_RFC_PORTS)) { return (PORT_BAD_HANDLE); } p_port = &rfc_cb.port.port[handle - 1]; - if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) - { + if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) { return (PORT_NOT_OPENED); } if (!p_port->rfc.p_mcb - || !p_port->rfc.p_mcb->peer_ready - || (p_port->rfc.state != RFC_STATE_OPENED)) - { + || !p_port->rfc.p_mcb->peer_ready + || (p_port->rfc.state != RFC_STATE_OPENED)) { return (PORT_LINE_ERR); } memcpy (bd_addr, p_port->rfc.p_mcb->bd_addr, BD_ADDR_LEN); - if (p_lcid) + if (p_lcid) { *p_lcid = p_port->rfc.p_mcb->lcid; + } return (PORT_SUCCESS); } @@ -535,33 +516,27 @@ BOOLEAN PORT_IsOpening (BD_ADDR bd_addr) BOOLEAN found_port; /* Check for any rfc_mcb which is in the middle of opening. */ - for (xx = 0; xx < MAX_BD_CONNECTIONS; xx++) - { + for (xx = 0; xx < MAX_BD_CONNECTIONS; xx++) { if ((rfc_cb.port.rfc_mcb[xx].state > RFC_MX_STATE_IDLE) && - (rfc_cb.port.rfc_mcb[xx].state < RFC_MX_STATE_CONNECTED)) - { + (rfc_cb.port.rfc_mcb[xx].state < RFC_MX_STATE_CONNECTED)) { memcpy (bd_addr, rfc_cb.port.rfc_mcb[xx].bd_addr, BD_ADDR_LEN); return TRUE; } - if (rfc_cb.port.rfc_mcb[xx].state == RFC_MX_STATE_CONNECTED) - { + if (rfc_cb.port.rfc_mcb[xx].state == RFC_MX_STATE_CONNECTED) { found_port = FALSE; p_mcb = &rfc_cb.port.rfc_mcb[xx]; p_port = &rfc_cb.port.port[0]; - for (yy = 0; yy < MAX_RFC_PORTS; yy++, p_port++) - { - if (p_port->rfc.p_mcb == p_mcb) - { + for (yy = 0; yy < MAX_RFC_PORTS; yy++, p_port++) { + if (p_port->rfc.p_mcb == p_mcb) { found_port = TRUE; break; } } if ((!found_port) || - (found_port && (p_port->rfc.state < RFC_STATE_OPENED))) - { + (found_port && (p_port->rfc.state < RFC_STATE_OPENED))) { /* Port is not established yet. */ memcpy (bd_addr, rfc_cb.port.rfc_mcb[xx].bd_addr, BD_ADDR_LEN); return TRUE; @@ -593,32 +568,28 @@ int PORT_SetState (UINT16 handle, tPORT_STATE *p_settings) RFCOMM_TRACE_API ("PORT_SetState() handle:%d", handle); /* Check if handle is valid to avoid crashing */ - if ((handle == 0) || (handle > MAX_RFC_PORTS)) - { + if ((handle == 0) || (handle > MAX_RFC_PORTS)) { return (PORT_BAD_HANDLE); } p_port = &rfc_cb.port.port[handle - 1]; - if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) - { + if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) { return (PORT_NOT_OPENED); } - if (p_port->line_status) - { + if (p_port->line_status) { return (PORT_LINE_ERR); } RFCOMM_TRACE_API ("PORT_SetState() handle:%d FC_TYPE:0x%x", handle, - p_settings->fc_type); + p_settings->fc_type); baud_rate = p_port->user_port_pars.baud_rate; p_port->user_port_pars = *p_settings; /* for now we've been asked to pass only baud rate */ - if (baud_rate != p_settings->baud_rate) - { + if (baud_rate != p_settings->baud_rate) { port_start_par_neg (p_port); } return (PORT_SUCCESS); @@ -641,27 +612,24 @@ int PORT_GetRxQueueCnt (UINT16 handle, UINT16 *p_rx_queue_count) RFCOMM_TRACE_API ("PORT_GetRxQueueCnt() handle:%d", handle); /* Check if handle is valid to avoid crashing */ - if ((handle == 0) || (handle > MAX_RFC_PORTS)) - { + if ((handle == 0) || (handle > MAX_RFC_PORTS)) { return (PORT_BAD_HANDLE); } p_port = &rfc_cb.port.port[handle - 1]; - if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) - { + if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) { return (PORT_NOT_OPENED); } - if (p_port->line_status) - { + if (p_port->line_status) { return (PORT_LINE_ERR); } *p_rx_queue_count = p_port->rx.queue_size; RFCOMM_TRACE_API ("PORT_GetRxQueueCnt() p_rx_queue_count:%d, p_port->rx.queue.count = %d", - *p_rx_queue_count, p_port->rx.queue_size); + *p_rx_queue_count, p_port->rx.queue_size); return (PORT_SUCCESS); } @@ -685,20 +653,17 @@ int PORT_GetState (UINT16 handle, tPORT_STATE *p_settings) RFCOMM_TRACE_API ("PORT_GetState() handle:%d", handle); /* Check if handle is valid to avoid crashing */ - if ((handle == 0) || (handle > MAX_RFC_PORTS)) - { + if ((handle == 0) || (handle > MAX_RFC_PORTS)) { return (PORT_BAD_HANDLE); } p_port = &rfc_cb.port.port[handle - 1]; - if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) - { + if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) { return (PORT_NOT_OPENED); } - if (p_port->line_status) - { + if (p_port->line_status) { return (PORT_LINE_ERR); } @@ -726,23 +691,20 @@ int PORT_Control (UINT16 handle, UINT8 signal) RFCOMM_TRACE_API ("PORT_Control() handle:%d signal:0x%x", handle, signal); /* Check if handle is valid to avoid crashing */ - if ((handle == 0) || (handle > MAX_RFC_PORTS)) - { + if ((handle == 0) || (handle > MAX_RFC_PORTS)) { return (PORT_BAD_HANDLE); } p_port = &rfc_cb.port.port[handle - 1]; - if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) - { + if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) { return (PORT_NOT_OPENED); } old_modem_signal = p_port->local_ctrl.modem_signal; p_port->local_ctrl.break_signal = 0; - switch (signal) - { + switch (signal) { case PORT_SET_CTSRTS: p_port->local_ctrl.modem_signal |= PORT_CTSRTS_ON; break; @@ -776,18 +738,19 @@ int PORT_Control (UINT16 handle, UINT8 signal) break; } - if (signal == PORT_BREAK) + if (signal == PORT_BREAK) { p_port->local_ctrl.break_signal = PORT_BREAK_DURATION; - else if (p_port->local_ctrl.modem_signal == old_modem_signal) + } else if (p_port->local_ctrl.modem_signal == old_modem_signal) { return (PORT_SUCCESS); + } port_start_control (p_port); RFCOMM_TRACE_EVENT ("PORT_Control DTR_DSR : %d, RTS_CTS : %d, RI : %d, DCD : %d", - ((p_port->local_ctrl.modem_signal & MODEM_SIGNAL_DTRDSR) ? 1 : 0), - ((p_port->local_ctrl.modem_signal & MODEM_SIGNAL_RTSCTS) ? 1 : 0), - ((p_port->local_ctrl.modem_signal & MODEM_SIGNAL_RI) ? 1 : 0), - ((p_port->local_ctrl.modem_signal & MODEM_SIGNAL_DCD) ? 1 : 0)); + ((p_port->local_ctrl.modem_signal & MODEM_SIGNAL_DTRDSR) ? 1 : 0), + ((p_port->local_ctrl.modem_signal & MODEM_SIGNAL_RTSCTS) ? 1 : 0), + ((p_port->local_ctrl.modem_signal & MODEM_SIGNAL_RI) ? 1 : 0), + ((p_port->local_ctrl.modem_signal & MODEM_SIGNAL_DCD) ? 1 : 0)); return (PORT_SUCCESS); } @@ -814,57 +777,48 @@ int PORT_FlowControl (UINT16 handle, BOOLEAN enable) RFCOMM_TRACE_API ("PORT_FlowControl() handle:%d enable: %d", handle, enable); /* Check if handle is valid to avoid crashing */ - if ((handle == 0) || (handle > MAX_RFC_PORTS)) - { + if ((handle == 0) || (handle > MAX_RFC_PORTS)) { return (PORT_BAD_HANDLE); } p_port = &rfc_cb.port.port[handle - 1]; - if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) - { + if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) { return (PORT_NOT_OPENED); } - if (!p_port->rfc.p_mcb) - { + if (!p_port->rfc.p_mcb) { return (PORT_NOT_OPENED); } p_port->rx.user_fc = !enable; - if (p_port->rfc.p_mcb->flow == PORT_FC_CREDIT) - { - if (!p_port->rx.user_fc) - { + if (p_port->rfc.p_mcb->flow == PORT_FC_CREDIT) { + if (!p_port->rx.user_fc) { port_flow_control_peer(p_port, TRUE, 0); } - } - else - { + } else { old_fc = p_port->local_ctrl.fc; /* FC is set if user is set or peer is set */ p_port->local_ctrl.fc = (p_port->rx.user_fc | p_port->rx.peer_fc); - if (p_port->local_ctrl.fc != old_fc) + if (p_port->local_ctrl.fc != old_fc) { port_start_control (p_port); + } } /* Need to take care of the case when we could not deliver events */ /* to the application because we were flow controlled */ - if (enable && (p_port->rx.queue_size != 0)) - { + if (enable && (p_port->rx.queue_size != 0)) { events = PORT_EV_RXCHAR; - if (p_port->rx_flag_ev_pending) - { + if (p_port->rx_flag_ev_pending) { p_port->rx_flag_ev_pending = FALSE; events |= PORT_EV_RXFLAG; } events &= p_port->ev_mask; - if (p_port->p_callback && events) - { + if (p_port->p_callback && events) { p_port->p_callback (events, p_port->inx); } } @@ -893,57 +847,48 @@ int PORT_FlowControl_MaxCredit (UINT16 handle, BOOLEAN enable) RFCOMM_TRACE_API ("PORT_FlowControl() handle:%d enable: %d", handle, enable); /* Check if handle is valid to avoid crashing */ - if ((handle == 0) || (handle > MAX_RFC_PORTS)) - { + if ((handle == 0) || (handle > MAX_RFC_PORTS)) { return (PORT_BAD_HANDLE); } p_port = &rfc_cb.port.port[handle - 1]; - if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) - { + if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) { return (PORT_NOT_OPENED); } - if (!p_port->rfc.p_mcb) - { + if (!p_port->rfc.p_mcb) { return (PORT_NOT_OPENED); } p_port->rx.user_fc = !enable; - if (p_port->rfc.p_mcb->flow == PORT_FC_CREDIT) - { - if (!p_port->rx.user_fc) - { + if (p_port->rfc.p_mcb->flow == PORT_FC_CREDIT) { + if (!p_port->rx.user_fc) { port_flow_control_peer(p_port, TRUE, p_port->credit_rx); } - } - else - { + } else { old_fc = p_port->local_ctrl.fc; /* FC is set if user is set or peer is set */ p_port->local_ctrl.fc = (p_port->rx.user_fc | p_port->rx.peer_fc); - if (p_port->local_ctrl.fc != old_fc) + if (p_port->local_ctrl.fc != old_fc) { port_start_control (p_port); + } } /* Need to take care of the case when we could not deliver events */ /* to the application because we were flow controlled */ - if (enable && (p_port->rx.queue_size != 0)) - { + if (enable && (p_port->rx.queue_size != 0)) { events = PORT_EV_RXCHAR; - if (p_port->rx_flag_ev_pending) - { + if (p_port->rx_flag_ev_pending) { p_port->rx_flag_ev_pending = FALSE; events |= PORT_EV_RXFLAG; } events &= p_port->ev_mask; - if (p_port->p_callback && events) - { + if (p_port->p_callback && events) { p_port->p_callback (events, p_port->inx); } } @@ -968,15 +913,13 @@ int PORT_GetModemStatus (UINT16 handle, UINT8 *p_signal) { tPORT *p_port; - if ((handle == 0) || (handle > MAX_RFC_PORTS)) - { + if ((handle == 0) || (handle > MAX_RFC_PORTS)) { return (PORT_BAD_HANDLE); } p_port = &rfc_cb.port.port[handle - 1]; - if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) - { + if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) { return (PORT_NOT_OPENED); } @@ -1010,15 +953,13 @@ int PORT_ClearError (UINT16 handle, UINT16 *p_errors, tPORT_STATUS *p_status) RFCOMM_TRACE_API ("PORT_ClearError() handle:%d", handle); - if ((handle == 0) || (handle > MAX_RFC_PORTS)) - { + if ((handle == 0) || (handle > MAX_RFC_PORTS)) { return (PORT_BAD_HANDLE); } p_port = &rfc_cb.port.port[handle - 1]; - if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) - { + if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) { return (PORT_NOT_OPENED); } @@ -1049,20 +990,17 @@ int PORT_SendError (UINT16 handle, UINT8 errors) RFCOMM_TRACE_API ("PORT_SendError() handle:%d errors:0x%x", handle, errors); - if ((handle == 0) || (handle > MAX_RFC_PORTS)) - { + if ((handle == 0) || (handle > MAX_RFC_PORTS)) { return (PORT_BAD_HANDLE); } p_port = &rfc_cb.port.port[handle - 1]; - if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) - { + if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) { return (PORT_NOT_OPENED); } - if (!p_port->rfc.p_mcb) - { + if (!p_port->rfc.p_mcb) { return (PORT_NOT_OPENED); } @@ -1088,15 +1026,13 @@ int PORT_GetQueueStatus (UINT16 handle, tPORT_STATUS *p_status) /* RFCOMM_TRACE_API ("PORT_GetQueueStatus() handle:%d", handle); */ - if ((handle == 0) || (handle > MAX_RFC_PORTS)) - { + if ((handle == 0) || (handle > MAX_RFC_PORTS)) { return (PORT_BAD_HANDLE); } p_port = &rfc_cb.port.port[handle - 1]; - if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) - { + if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) { return (PORT_NOT_OPENED); } @@ -1107,14 +1043,17 @@ int PORT_GetQueueStatus (UINT16 handle, tPORT_STATUS *p_status) p_status->flags = 0; - if (!(p_port->peer_ctrl.modem_signal & PORT_CTSRTS_ON)) + if (!(p_port->peer_ctrl.modem_signal & PORT_CTSRTS_ON)) { p_status->flags |= PORT_FLAG_CTS_HOLD; + } - if (!(p_port->peer_ctrl.modem_signal & PORT_DTRDSR_ON)) + if (!(p_port->peer_ctrl.modem_signal & PORT_DTRDSR_ON)) { p_status->flags |= PORT_FLAG_DSR_HOLD; + } - if (!(p_port->peer_ctrl.modem_signal & PORT_DCD_ON)) + if (!(p_port->peer_ctrl.modem_signal & PORT_DCD_ON)) { p_status->flags |= PORT_FLAG_RLSD_HOLD; + } return (PORT_SUCCESS); } @@ -1141,42 +1080,41 @@ int PORT_Purge (UINT16 handle, UINT8 purge_flags) RFCOMM_TRACE_API ("PORT_Purge() handle:%d flags:0x%x", handle, purge_flags); /* Check if handle is valid to avoid crashing */ - if ((handle == 0) || (handle > MAX_RFC_PORTS)) - { + if ((handle == 0) || (handle > MAX_RFC_PORTS)) { return (PORT_BAD_HANDLE); } p_port = &rfc_cb.port.port[handle - 1]; - if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) - { + if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) { return (PORT_NOT_OPENED); } - if (purge_flags & PORT_PURGE_RXCLEAR) - { + if (purge_flags & PORT_PURGE_RXCLEAR) { PORT_SCHEDULE_LOCK; /* to prevent missing credit */ count = GKI_queue_length(&p_port->rx.queue); - while ((p_buf = (BT_HDR *)GKI_dequeue (&p_port->rx.queue)) != NULL) + while ((p_buf = (BT_HDR *)GKI_dequeue (&p_port->rx.queue)) != NULL) { GKI_freebuf (p_buf); + } p_port->rx.queue_size = 0; PORT_SCHEDULE_UNLOCK; /* If we flowed controlled peer based on rx_queue size enable data again */ - if (count) + if (count) { port_flow_control_peer (p_port, TRUE, count); + } } - if (purge_flags & PORT_PURGE_TXCLEAR) - { + if (purge_flags & PORT_PURGE_TXCLEAR) { PORT_SCHEDULE_LOCK; /* to prevent tx.queue_size from being negative */ - while ((p_buf = (BT_HDR *)GKI_dequeue (&p_port->tx.queue)) != NULL) + while ((p_buf = (BT_HDR *)GKI_dequeue (&p_port->tx.queue)) != NULL) { GKI_freebuf (p_buf); + } p_port->tx.queue_size = 0; @@ -1188,8 +1126,9 @@ int PORT_Purge (UINT16 handle, UINT8 purge_flags) events &= p_port->ev_mask; - if ((p_port->p_callback != NULL) && events) + if ((p_port->p_callback != NULL) && events) { (p_port->p_callback)(events, p_port->inx); + } } return (PORT_SUCCESS); @@ -1221,33 +1160,29 @@ int PORT_ReadData (UINT16 handle, char *p_data, UINT16 max_len, UINT16 *p_len) *p_len = 0; /* Check if handle is valid to avoid crashing */ - if ((handle == 0) || (handle > MAX_RFC_PORTS)) - { + if ((handle == 0) || (handle > MAX_RFC_PORTS)) { return (PORT_BAD_HANDLE); } p_port = &rfc_cb.port.port[handle - 1]; - if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) - { + if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) { return (PORT_NOT_OPENED); } - if (p_port->line_status) - { + if (p_port->line_status) { return (PORT_LINE_ERR); } p_buf = (BT_HDR *)GKI_getfirst (&p_port->rx.queue); - if (!p_buf) + if (!p_buf) { return (PORT_SUCCESS); + } count = 0; - while (max_len && p_buf) - { - if (p_buf->len > max_len) - { + while (max_len && p_buf) { + if (p_buf->len > max_len) { memcpy (p_data, (UINT8 *)(p_buf + 1) + p_buf->offset, max_len); p_buf->offset += max_len; p_buf->len -= max_len; @@ -1261,9 +1196,7 @@ int PORT_ReadData (UINT16 handle, char *p_data, UINT16 max_len, UINT16 *p_len) PORT_SCHEDULE_UNLOCK; break; - } - else - { + } else { memcpy (p_data, (UINT8 *)(p_buf + 1) + p_buf->offset, p_buf->len); *p_len += p_buf->len; @@ -1273,8 +1206,7 @@ int PORT_ReadData (UINT16 handle, char *p_data, UINT16 max_len, UINT16 *p_len) p_port->rx.queue_size -= p_buf->len; - if (max_len) - { + if (max_len) { p_data += p_buf->len; p_buf = (BT_HDR *)GKI_getnext (p_buf); } @@ -1287,12 +1219,9 @@ int PORT_ReadData (UINT16 handle, char *p_data, UINT16 max_len, UINT16 *p_len) } } - if (*p_len == 1) - { + if (*p_len == 1) { RFCOMM_TRACE_EVENT ("PORT_ReadData queue:%d returned:%d %x", p_port->rx.queue_size, *p_len, (p_data[0])); - } - else - { + } else { RFCOMM_TRACE_EVENT ("PORT_ReadData queue:%d returned:%d", p_port->rx.queue_size, *p_len); } @@ -1323,27 +1252,23 @@ int PORT_Read (UINT16 handle, BT_HDR **pp_buf) RFCOMM_TRACE_API ("PORT_Read() handle:%d", handle); /* Check if handle is valid to avoid crashing */ - if ((handle == 0) || (handle > MAX_RFC_PORTS)) - { + if ((handle == 0) || (handle > MAX_RFC_PORTS)) { return (PORT_BAD_HANDLE); } p_port = &rfc_cb.port.port[handle - 1]; - if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) - { + if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) { return (PORT_NOT_OPENED); } - if (p_port->line_status) - { + if (p_port->line_status) { return (PORT_LINE_ERR); } PORT_SCHEDULE_LOCK; p_buf = (BT_HDR *)GKI_dequeue (&p_port->rx.queue); - if (p_buf) - { + if (p_buf) { p_port->rx.queue_size -= p_buf->len; PORT_SCHEDULE_UNLOCK; @@ -1351,9 +1276,7 @@ int PORT_Read (UINT16 handle, BT_HDR **pp_buf) /* If rfcomm suspended traffic from the peer based on the rx_queue_size */ /* check if it can be resumed now */ port_flow_control_peer (p_port, TRUE, 1); - } - else - { + } else { PORT_SCHEDULE_UNLOCK; } @@ -1376,8 +1299,7 @@ int PORT_Read (UINT16 handle, BT_HDR **pp_buf) static int port_write (tPORT *p_port, BT_HDR *p_buf) { /* We should not allow to write data in to server port when connection is not opened */ - if (p_port->is_server && (p_port->rfc.state != RFC_STATE_OPENED)) - { + if (p_port->is_server && (p_port->rfc.state != RFC_STATE_OPENED)) { GKI_freebuf (p_buf); return (PORT_CLOSED); } @@ -1386,39 +1308,36 @@ static int port_write (tPORT *p_port, BT_HDR *p_buf) /* Peer is not ready or Port is not yet opened or initial port control */ /* command has not been sent */ if (p_port->tx.peer_fc - || !p_port->rfc.p_mcb - || !p_port->rfc.p_mcb->peer_ready - || (p_port->rfc.state != RFC_STATE_OPENED) - || ((p_port->port_ctrl & (PORT_CTRL_REQ_SENT | PORT_CTRL_IND_RECEIVED)) != - (PORT_CTRL_REQ_SENT | PORT_CTRL_IND_RECEIVED))) - { + || !p_port->rfc.p_mcb + || !p_port->rfc.p_mcb->peer_ready + || (p_port->rfc.state != RFC_STATE_OPENED) + || ((p_port->port_ctrl & (PORT_CTRL_REQ_SENT | PORT_CTRL_IND_RECEIVED)) != + (PORT_CTRL_REQ_SENT | PORT_CTRL_IND_RECEIVED))) { if ((p_port->tx.queue_size > PORT_TX_CRITICAL_WM) - || (GKI_queue_length(&p_port->tx.queue) > PORT_TX_BUF_CRITICAL_WM)) - { + || (GKI_queue_length(&p_port->tx.queue) > PORT_TX_BUF_CRITICAL_WM)) { RFCOMM_TRACE_WARNING ("PORT_Write: Queue size: %d", - p_port->tx.queue_size); + p_port->tx.queue_size); GKI_freebuf (p_buf); - if ((p_port->p_callback != NULL) && (p_port->ev_mask & PORT_EV_ERR)) - p_port->p_callback (PORT_EV_ERR, p_port->inx); + if ((p_port->p_callback != NULL) && (p_port->ev_mask & PORT_EV_ERR)) { + p_port->p_callback (PORT_EV_ERR, p_port->inx); + } return (PORT_TX_FULL); } RFCOMM_TRACE_EVENT ("PORT_Write : Data is enqued. flow disabled %d peer_ready %d state %d ctrl_state %x", - p_port->tx.peer_fc, - (p_port->rfc.p_mcb && p_port->rfc.p_mcb->peer_ready), - p_port->rfc.state, - p_port->port_ctrl); + p_port->tx.peer_fc, + (p_port->rfc.p_mcb && p_port->rfc.p_mcb->peer_ready), + p_port->rfc.state, + p_port->port_ctrl); GKI_enqueue (&p_port->tx.queue, p_buf); p_port->tx.queue_size += p_buf->len; return (PORT_CMD_PENDING); - } - else - { + } else { RFCOMM_TRACE_EVENT ("PORT_Write : Data is being sent"); RFCOMM_DataReq (p_port->rfc.p_mcb, p_port->dlci, p_buf); @@ -1446,24 +1365,21 @@ int PORT_Write (UINT16 handle, BT_HDR *p_buf) RFCOMM_TRACE_API ("PORT_Write() handle:%d", handle); /* Check if handle is valid to avoid crashing */ - if ((handle == 0) || (handle > MAX_RFC_PORTS)) - { + if ((handle == 0) || (handle > MAX_RFC_PORTS)) { GKI_freebuf (p_buf); return (PORT_BAD_HANDLE); } p_port = &rfc_cb.port.port[handle - 1]; - if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) - { + if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) { GKI_freebuf (p_buf); return (PORT_NOT_OPENED); } - if (p_port->line_status) - { + if (p_port->line_status) { RFCOMM_TRACE_WARNING ("PORT_Write: Data dropped line_status:0x%x", - p_port->line_status); + p_port->line_status); GKI_freebuf (p_buf); return (PORT_LINE_ERR); } @@ -1471,8 +1387,7 @@ int PORT_Write (UINT16 handle, BT_HDR *p_buf) rc = port_write (p_port, p_buf); event |= port_flow_control_user (p_port); - switch (rc) - { + switch (rc) { case PORT_TX_FULL: event |= PORT_EV_ERR; break; @@ -1485,8 +1400,9 @@ int PORT_Write (UINT16 handle, BT_HDR *p_buf) event &= p_port->ev_mask; /* Send event to the application */ - if (p_port->p_callback && event) + if (p_port->p_callback && event) { (p_port->p_callback)(event, p_port->inx); + } return (PORT_SUCCESS); } @@ -1502,7 +1418,7 @@ int PORT_Write (UINT16 handle, BT_HDR *p_buf) ** p_len - Byte count returned ** *******************************************************************************/ -int PORT_WriteDataCO (UINT16 handle, int* p_len) +int PORT_WriteDataCO (UINT16 handle, int *p_len) { tPORT *p_port; @@ -1515,48 +1431,44 @@ int PORT_WriteDataCO (UINT16 handle, int* p_len) *p_len = 0; /* Check if handle is valid to avoid crashing */ - if ((handle == 0) || (handle > MAX_RFC_PORTS)) - { + if ((handle == 0) || (handle > MAX_RFC_PORTS)) { return (PORT_BAD_HANDLE); } p_port = &rfc_cb.port.port[handle - 1]; - if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) - { + if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) { RFCOMM_TRACE_WARNING ("PORT_WriteDataByFd() no port state:%d", p_port->state); return (PORT_NOT_OPENED); } - if (!p_port->peer_mtu) - { + if (!p_port->peer_mtu) { RFCOMM_TRACE_ERROR ("PORT_WriteDataByFd() peer_mtu:%d", p_port->peer_mtu); return (PORT_UNKNOWN_ERROR); } int available = 0; //if(ioctl(fd, FIONREAD, &available) < 0) - if(p_port->p_data_co_callback(handle, (UINT8*)&available, sizeof(available), - DATA_CO_CALLBACK_TYPE_OUTGOING_SIZE) == FALSE) - { + if (p_port->p_data_co_callback(handle, (UINT8 *)&available, sizeof(available), + DATA_CO_CALLBACK_TYPE_OUTGOING_SIZE) == FALSE) { RFCOMM_TRACE_ERROR("p_data_co_callback DATA_CO_CALLBACK_TYPE_INCOMING_SIZE failed, available:%d", available); return (PORT_UNKNOWN_ERROR); } - if(available == 0) + if (available == 0) { return PORT_SUCCESS; + } /* Length for each buffer is the smaller of GKI buffer, peer MTU, or max_len */ length = RFCOMM_DATA_POOL_BUF_SIZE - - (UINT16)(sizeof(BT_HDR) + L2CAP_MIN_OFFSET + RFCOMM_DATA_OVERHEAD); + (UINT16)(sizeof(BT_HDR) + L2CAP_MIN_OFFSET + RFCOMM_DATA_OVERHEAD); /* If there are buffers scheduled for transmission check if requested */ /* data fits into the end of the queue */ PORT_SCHEDULE_LOCK; if (((p_buf = (BT_HDR *)GKI_getlast(&p_port->tx.queue)) != NULL) - && (((int)p_buf->len + available) <= (int)p_port->peer_mtu) - && (((int)p_buf->len + available) <= (int)length)) - { + && (((int)p_buf->len + available) <= (int)p_port->peer_mtu) + && (((int)p_buf->len + available) <= (int)length)) { //if(recv(fd, (UINT8 *)(p_buf + 1) + p_buf->offset + p_buf->len, available, 0) != available) - if(p_port->p_data_co_callback(handle, (UINT8 *)(p_buf + 1) + p_buf->offset + p_buf->len, - available, DATA_CO_CALLBACK_TYPE_OUTGOING) == FALSE) + if (p_port->p_data_co_callback(handle, (UINT8 *)(p_buf + 1) + p_buf->offset + p_buf->len, + available, DATA_CO_CALLBACK_TYPE_OUTGOING) == FALSE) { RFCOMM_TRACE_ERROR("p_data_co_callback DATA_CO_CALLBACK_TYPE_OUTGOING failed, available:%d", available); @@ -1580,39 +1492,39 @@ int PORT_WriteDataCO (UINT16 handle, int* p_len) //max_read = available < max_read ? available : max_read; - while (available) - { + while (available) { /* if we're over buffer high water mark, we're done */ if ((p_port->tx.queue_size > PORT_TX_HIGH_WM) - || (GKI_queue_length(&p_port->tx.queue) > PORT_TX_BUF_HIGH_WM)) - { + || (GKI_queue_length(&p_port->tx.queue) > PORT_TX_BUF_HIGH_WM)) { port_flow_control_user(p_port); event |= PORT_EV_FC; RFCOMM_TRACE_EVENT ("tx queue is full,tx.queue_size:%d,tx.queue.count:%d,available:%d", - p_port->tx.queue_size, GKI_queue_length(&p_port->tx.queue), available); + p_port->tx.queue_size, GKI_queue_length(&p_port->tx.queue), available); break; - } + } /* continue with rfcomm data write */ p_buf = (BT_HDR *)GKI_getpoolbuf (RFCOMM_DATA_POOL_ID); - if (!p_buf) + if (!p_buf) { break; + } p_buf->offset = L2CAP_MIN_OFFSET + RFCOMM_MIN_OFFSET; p_buf->layer_specific = handle; - if (p_port->peer_mtu < length) + if (p_port->peer_mtu < length) { length = p_port->peer_mtu; - if (available < (int)length) + } + if (available < (int)length) { length = (UINT16)available; + } p_buf->len = length; p_buf->event = BT_EVT_TO_BTU_SP_DATA; //memcpy ((UINT8 *)(p_buf + 1) + p_buf->offset, p_data, length); //if(recv(fd, (UINT8 *)(p_buf + 1) + p_buf->offset, (int)length, 0) != (int)length) - if(p_port->p_data_co_callback(handle, (UINT8 *)(p_buf + 1) + p_buf->offset, length, - DATA_CO_CALLBACK_TYPE_OUTGOING) == FALSE) - { + if (p_port->p_data_co_callback(handle, (UINT8 *)(p_buf + 1) + p_buf->offset, length, + DATA_CO_CALLBACK_TYPE_OUTGOING) == FALSE) { RFCOMM_TRACE_ERROR("p_data_co_callback DATA_CO_CALLBACK_TYPE_OUTGOING failed, length:%d", length); return (PORT_UNKNOWN_ERROR); } @@ -1625,24 +1537,28 @@ int PORT_WriteDataCO (UINT16 handle, int* p_len) /* If queue went below the threashold need to send flow control */ event |= port_flow_control_user (p_port); - if (rc == PORT_SUCCESS) + if (rc == PORT_SUCCESS) { event |= PORT_EV_TXCHAR; + } - if ((rc != PORT_SUCCESS) && (rc != PORT_CMD_PENDING)) + if ((rc != PORT_SUCCESS) && (rc != PORT_CMD_PENDING)) { break; + } *p_len += length; available -= (int)length; } - if (!available && (rc != PORT_CMD_PENDING) && (rc != PORT_TX_QUEUE_DISABLED)) + if (!available && (rc != PORT_CMD_PENDING) && (rc != PORT_TX_QUEUE_DISABLED)) { event |= PORT_EV_TXEMPTY; + } /* Mask out all events that are not of interest to user */ event &= p_port->ev_mask; /* Send event to the application */ - if (p_port->p_callback && event) + if (p_port->p_callback && event) { (p_port->p_callback)(event, p_port->inx); + } return (PORT_SUCCESS); } @@ -1675,36 +1591,32 @@ int PORT_WriteData (UINT16 handle, char *p_data, UINT16 max_len, UINT16 *p_len) *p_len = 0; /* Check if handle is valid to avoid crashing */ - if ((handle == 0) || (handle > MAX_RFC_PORTS)) - { + if ((handle == 0) || (handle > MAX_RFC_PORTS)) { return (PORT_BAD_HANDLE); } p_port = &rfc_cb.port.port[handle - 1]; - if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) - { + if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) { RFCOMM_TRACE_WARNING ("PORT_WriteData() no port state:%d", p_port->state); return (PORT_NOT_OPENED); } - if (!max_len || !p_port->peer_mtu) - { + if (!max_len || !p_port->peer_mtu) { RFCOMM_TRACE_ERROR ("PORT_WriteData() peer_mtu:%d", p_port->peer_mtu); return (PORT_UNKNOWN_ERROR); } /* Length for each buffer is the smaller of GKI buffer, peer MTU, or max_len */ length = RFCOMM_DATA_POOL_BUF_SIZE - - (UINT16)(sizeof(BT_HDR) + L2CAP_MIN_OFFSET + RFCOMM_DATA_OVERHEAD); + (UINT16)(sizeof(BT_HDR) + L2CAP_MIN_OFFSET + RFCOMM_DATA_OVERHEAD); /* If there are buffers scheduled for transmission check if requested */ /* data fits into the end of the queue */ PORT_SCHEDULE_LOCK; if (((p_buf = (BT_HDR *)GKI_getlast(&p_port->tx.queue)) != NULL) - && ((p_buf->len + max_len) <= p_port->peer_mtu) - && ((p_buf->len + max_len) <= length)) - { + && ((p_buf->len + max_len) <= p_port->peer_mtu) + && ((p_buf->len + max_len) <= length)) { memcpy ((UINT8 *)(p_buf + 1) + p_buf->offset + p_buf->len, p_data, max_len); p_port->tx.queue_size += max_len; @@ -1718,25 +1630,28 @@ int PORT_WriteData (UINT16 handle, char *p_data, UINT16 max_len, UINT16 *p_len) PORT_SCHEDULE_UNLOCK; - while (max_len) - { + while (max_len) { /* if we're over buffer high water mark, we're done */ if ((p_port->tx.queue_size > PORT_TX_HIGH_WM) - || (GKI_queue_length(&p_port->tx.queue) > PORT_TX_BUF_HIGH_WM)) + || (GKI_queue_length(&p_port->tx.queue) > PORT_TX_BUF_HIGH_WM)) { break; + } /* continue with rfcomm data write */ p_buf = (BT_HDR *)GKI_getpoolbuf (RFCOMM_DATA_POOL_ID); - if (!p_buf) + if (!p_buf) { break; + } p_buf->offset = L2CAP_MIN_OFFSET + RFCOMM_MIN_OFFSET; p_buf->layer_specific = handle; - if (p_port->peer_mtu < length) + if (p_port->peer_mtu < length) { length = p_port->peer_mtu; - if (max_len < length) + } + if (max_len < length) { length = max_len; + } p_buf->len = length; p_buf->event = BT_EVT_TO_BTU_SP_DATA; @@ -1749,26 +1664,30 @@ int PORT_WriteData (UINT16 handle, char *p_data, UINT16 max_len, UINT16 *p_len) /* If queue went below the threashold need to send flow control */ event |= port_flow_control_user (p_port); - if (rc == PORT_SUCCESS) + if (rc == PORT_SUCCESS) { event |= PORT_EV_TXCHAR; + } - if ((rc != PORT_SUCCESS) && (rc != PORT_CMD_PENDING)) + if ((rc != PORT_SUCCESS) && (rc != PORT_CMD_PENDING)) { break; + } *p_len += length; max_len -= length; p_data += length; } - if (!max_len && (rc != PORT_CMD_PENDING) && (rc != PORT_TX_QUEUE_DISABLED)) + if (!max_len && (rc != PORT_CMD_PENDING) && (rc != PORT_TX_QUEUE_DISABLED)) { event |= PORT_EV_TXEMPTY; + } /* Mask out all events that are not of interest to user */ event &= p_port->ev_mask; /* Send event to the application */ - if (p_port->p_callback && event) + if (p_port->p_callback && event) { (p_port->p_callback)(event, p_port->inx); + } return (PORT_SUCCESS); } @@ -1792,24 +1711,20 @@ int PORT_Test (UINT16 handle, UINT8 *p_data, UINT16 len) RFCOMM_TRACE_API ("PORT_Test() len:%d", len); - if ((handle == 0) || (handle > MAX_RFC_PORTS)) - { + if ((handle == 0) || (handle > MAX_RFC_PORTS)) { return (PORT_BAD_HANDLE); } p_port = &rfc_cb.port.port[handle - 1]; - if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) - { + if (!p_port->in_use || (p_port->state == PORT_STATE_CLOSED)) { return (PORT_NOT_OPENED); } - if (len > ((p_port->mtu == 0) ? RFCOMM_DEFAULT_MTU : p_port->mtu)) - { + if (len > ((p_port->mtu == 0) ? RFCOMM_DEFAULT_MTU : p_port->mtu)) { return (PORT_UNKNOWN_ERROR); } - if ((p_buf = (BT_HDR *)GKI_getpoolbuf (RFCOMM_CMD_POOL_ID)) != NULL) - { + if ((p_buf = (BT_HDR *)GKI_getpoolbuf (RFCOMM_CMD_POOL_ID)) != NULL) { p_buf->offset = L2CAP_MIN_OFFSET + RFCOMM_MIN_OFFSET + 2; p_buf->len = len; @@ -1818,9 +1733,7 @@ int PORT_Test (UINT16 handle, UINT8 *p_data, UINT16 len) rfc_send_test (p_port->rfc.p_mcb, TRUE, p_buf); return (PORT_SUCCESS); - } - else - { + } else { return (PORT_NO_MEM); } } @@ -1859,8 +1772,9 @@ void RFCOMM_Init (void) *******************************************************************************/ UINT8 PORT_SetTraceLevel (UINT8 new_level) { - if (new_level != 0xFF) + if (new_level != 0xFF) { rfc_cb.trace_level = new_level; + } return (rfc_cb.trace_level); } @@ -1875,10 +1789,11 @@ UINT8 PORT_SetTraceLevel (UINT8 new_level) ** Returns a pointer to the human-readable string for the given result. ** *******************************************************************************/ -const char *PORT_GetResultString (const uint8_t result_code) { - if (result_code > PORT_ERR_MAX) { - return result_code_strings[PORT_ERR_MAX]; - } +const char *PORT_GetResultString (const uint8_t result_code) +{ + if (result_code > PORT_ERR_MAX) { + return result_code_strings[PORT_ERR_MAX]; + } - return result_code_strings[result_code]; + return result_code_strings[result_code]; } diff --git a/components/bt/bluedroid/stack/rfcomm/port_rfc.c b/components/bt/bluedroid/stack/rfcomm/port_rfc.c old mode 100755 new mode 100644 index 7ef8b461c6..009cc6363d --- a/components/bt/bluedroid/stack/rfcomm/port_rfc.c +++ b/components/bt/bluedroid/stack/rfcomm/port_rfc.c @@ -59,8 +59,7 @@ int port_open_continue (tPORT *p_port) RFCOMM_TRACE_EVENT ("port_open_continue, p_port:%p", p_port); /* Check if multiplexer channel has already been established */ - if ((p_mcb = rfc_alloc_multiplexer_channel (p_port->bd_addr, TRUE)) == NULL) - { + if ((p_mcb = rfc_alloc_multiplexer_channel (p_port->bd_addr, TRUE)) == NULL) { RFCOMM_TRACE_WARNING ("port_open_continue no mx channel"); port_release_port (p_port); return (PORT_NO_RESOURCES); @@ -73,20 +72,15 @@ int port_open_continue (tPORT *p_port) /* Connection is up and we know local and remote features, select MTU */ port_select_mtu (p_port); - if (p_mcb->state == RFC_MX_STATE_CONNECTED) - { + if (p_mcb->state == RFC_MX_STATE_CONNECTED) { RFCOMM_ParNegReq (p_mcb, p_port->dlci, p_port->mtu); - } - else if ((p_mcb->state == RFC_MX_STATE_IDLE) - ||(p_mcb->state == RFC_MX_STATE_DISC_WAIT_UA)) - { + } else if ((p_mcb->state == RFC_MX_STATE_IDLE) + || (p_mcb->state == RFC_MX_STATE_DISC_WAIT_UA)) { /* In RFC_MX_STATE_IDLE state, MX state machine will create connection */ /* In RFC_MX_STATE_DISC_WAIT_UA state, MX state machine will recreate connection */ /* after disconnecting is completed */ RFCOMM_StartReq (p_mcb); - } - else - { + } else { /* MX state machine ignores RFC_MX_EVENT_START_REQ in these states */ /* When it enters RFC_MX_STATE_CONNECTED, it will check any openning ports */ RFCOMM_TRACE_DEBUG ("port_open_continue: mx state(%d) mx channel is openning", p_mcb->state); @@ -109,8 +103,9 @@ void port_start_control (tPORT *p_port) { tRFC_MCB *p_mcb = p_port->rfc.p_mcb; - if (p_mcb == NULL) + if (p_mcb == NULL) { return; + } RFCOMM_ControlReq (p_mcb, p_port->dlci, &p_port->local_ctrl); } @@ -130,8 +125,9 @@ void port_start_par_neg (tPORT *p_port) { tRFC_MCB *p_mcb = p_port->rfc.p_mcb; - if (p_mcb == NULL) + if (p_mcb == NULL) { return; + } RFCOMM_PortNegReq (p_mcb, p_port->dlci, &p_port->user_port_pars); } @@ -161,27 +157,28 @@ void port_start_close (tPORT *p_port) events |= port_get_signal_changes (p_port, old_signals, p_port->peer_ctrl.modem_signal); - if(p_port->ev_mask & PORT_EV_CONNECT_ERR) + if (p_port->ev_mask & PORT_EV_CONNECT_ERR) { events |= PORT_EV_CONNECT_ERR; + } - if(p_port->ev_mask & PORT_EV_ERR) + if (p_port->ev_mask & PORT_EV_ERR) { events |= PORT_EV_ERR; + } - if ((p_port->p_callback != NULL) && events) + if ((p_port->p_callback != NULL) && events) { p_port->p_callback (events, p_port->inx); + } /* Check if RFCOMM side has been closed while the message was queued */ - if ((p_mcb == NULL) || (p_port->rfc.state == RFC_STATE_CLOSED)) - { + if ((p_mcb == NULL) || (p_port->rfc.state == RFC_STATE_CLOSED)) { /* Call management callback function before calling port_release_port() to clear tPort */ - if (p_port->p_mgmt_callback) + if (p_port->p_mgmt_callback) { p_port->p_mgmt_callback (PORT_CLOSED, p_port->inx); + } port_release_port (p_port); - } - else - { + } else { RFCOMM_DlcReleaseReq (p_mcb, p_port->dlci); } } @@ -206,34 +203,34 @@ void PORT_StartCnf (tRFC_MCB *p_mcb, UINT16 result) RFCOMM_TRACE_EVENT ("PORT_StartCnf result:%d", result); p_port = &rfc_cb.port.port[0]; - for (i = 0; i < MAX_RFC_PORTS; i++, p_port++) - { - if (p_port->rfc.p_mcb == p_mcb) - { + for (i = 0; i < MAX_RFC_PORTS; i++, p_port++) { + if (p_port->rfc.p_mcb == p_mcb) { no_ports_up = FALSE; - if (result == RFCOMM_SUCCESS) + if (result == RFCOMM_SUCCESS) { RFCOMM_ParNegReq (p_mcb, p_port->dlci, p_port->mtu); - else - { + } else { RFCOMM_TRACE_WARNING ("PORT_StartCnf failed result:%d", result); /* Warning: result is also set to 4 when l2cap connection fails due to l2cap connect cnf (no_resources) */ - if( result == HCI_ERR_PAGE_TIMEOUT ) + if ( result == HCI_ERR_PAGE_TIMEOUT ) { p_port->error = PORT_PAGE_TIMEOUT; - else + } else { p_port->error = PORT_START_FAILED; + } rfc_release_multiplexer_channel (p_mcb); p_port->rfc.p_mcb = NULL; /* Send event to the application */ - if (p_port->p_callback && (p_port->ev_mask & PORT_EV_CONNECT_ERR)) + if (p_port->p_callback && (p_port->ev_mask & PORT_EV_CONNECT_ERR)) { (p_port->p_callback)(PORT_EV_CONNECT_ERR, p_port->inx); + } - if (p_port->p_mgmt_callback) + if (p_port->p_mgmt_callback) { p_port->p_mgmt_callback (PORT_START_FAILED, p_port->inx); + } port_release_port (p_port); } @@ -242,8 +239,7 @@ void PORT_StartCnf (tRFC_MCB *p_mcb, UINT16 result) /* There can be a situation when after starting connection, user closes the */ /* port, we can catch it here to close multiplexor channel */ - if (no_ports_up) - { + if (no_ports_up) { rfc_check_mcb_active (p_mcb); } } @@ -267,11 +263,9 @@ void PORT_StartInd (tRFC_MCB *p_mcb) RFCOMM_TRACE_EVENT ("PORT_StartInd"); p_port = &rfc_cb.port.port[0]; - for (i = 0; i < MAX_RFC_PORTS; i++, p_port++) - { + for (i = 0; i < MAX_RFC_PORTS; i++, p_port++) { if ((p_port->rfc.p_mcb == NULL) - || (p_port->rfc.p_mcb == p_mcb)) - { + || (p_port->rfc.p_mcb == p_mcb)) { RFCOMM_TRACE_DEBUG("PORT_StartInd, RFCOMM_StartRsp RFCOMM_SUCCESS: p_mcb:%p", p_mcb); RFCOMM_StartRsp (p_mcb, RFCOMM_SUCCESS); return; @@ -299,12 +293,10 @@ void PORT_ParNegInd (tRFC_MCB *p_mcb, UINT8 dlci, UINT16 mtu, UINT8 cl, UINT8 k) RFCOMM_TRACE_EVENT ("PORT_ParNegInd dlci:%d mtu:%d", dlci, mtu); - if (!p_port) - { + if (!p_port) { /* This can be a first request for this port */ p_port = port_find_dlci_port (dlci); - if (!p_port) - { + if (!p_port) { /* If the port cannot be opened, send a DM. Per Errata 1205 */ rfc_send_dm(p_mcb, dlci, FALSE); /* check if this is the last port open, some headsets have @@ -329,14 +321,10 @@ void PORT_ParNegInd (tRFC_MCB *p_mcb, UINT8 dlci, UINT16 mtu, UINT8 cl, UINT8 k) /* mux has not been set yet, set it now. If either we or peer wants TS 07.10, */ /* use that. Otherwise both must want credit based, so use that. If flow is */ /* already defined for this mux, we respond with that value. */ - if (p_mcb->flow == PORT_FC_UNDEFINED) - { - if ((PORT_FC_DEFAULT == PORT_FC_TS710) || (cl == RFCOMM_PN_CONV_LAYER_TYPE_1)) - { + if (p_mcb->flow == PORT_FC_UNDEFINED) { + if ((PORT_FC_DEFAULT == PORT_FC_TS710) || (cl == RFCOMM_PN_CONV_LAYER_TYPE_1)) { p_mcb->flow = PORT_FC_TS710; - } - else - { + } else { p_mcb->flow = PORT_FC_CREDIT; } } @@ -346,13 +334,10 @@ void PORT_ParNegInd (tRFC_MCB *p_mcb, UINT8 dlci, UINT16 mtu, UINT8 cl, UINT8 k) /* if (and only if) the PN request was 15." This could happen if a PN is sent */ /* after the DLCI is already established-- the PN in that case must have cl = 0. */ /* See RFCOMM spec 5.5.3 */ - if (cl == RFCOMM_PN_CONV_LAYER_TYPE_1) - { + if (cl == RFCOMM_PN_CONV_LAYER_TYPE_1) { our_cl = RFCOMM_PN_CONV_LAYER_TYPE_1; our_k = 0; - } - else if (p_mcb->flow == PORT_FC_CREDIT) - { + } else if (p_mcb->flow == PORT_FC_CREDIT) { /* get credits */ port_get_credits (p_port, k); @@ -360,9 +345,7 @@ void PORT_ParNegInd (tRFC_MCB *p_mcb, UINT8 dlci, UINT16 mtu, UINT8 cl, UINT8 k) our_cl = RFCOMM_PN_CONV_LAYER_CBFC_R; our_k = (p_port->credit_rx_max < RFCOMM_K_MAX) ? p_port->credit_rx_max : RFCOMM_K_MAX; p_port->credit_rx = our_k; - } - else - { + } else { /* must not be using credit based flow control; use TS 7.10 */ our_cl = RFCOMM_PN_CONV_LAYER_TYPE_1; our_k = 0; @@ -388,28 +371,25 @@ void PORT_ParNegCnf (tRFC_MCB *p_mcb, UINT8 dlci, UINT16 mtu, UINT8 cl, UINT8 k) RFCOMM_TRACE_EVENT ("PORT_ParNegCnf dlci:%d mtu:%d cl: %d k: %d", dlci, mtu, cl, k); - if (!p_port) + if (!p_port) { return; + } /* Flow control mechanism not set yet. Negotiate flow control mechanism. */ - if (p_mcb->flow == PORT_FC_UNDEFINED) - { + if (p_mcb->flow == PORT_FC_UNDEFINED) { /* Our stack is configured for TS07.10 and they responded with credit-based. */ /* This is illegal-- negotiation fails. */ - if ((PORT_FC_DEFAULT == PORT_FC_TS710) && (cl == RFCOMM_PN_CONV_LAYER_CBFC_R)) - { + if ((PORT_FC_DEFAULT == PORT_FC_TS710) && (cl == RFCOMM_PN_CONV_LAYER_CBFC_R)) { rfc_send_disc (p_mcb, p_port->dlci); rfc_port_closed (p_port); return; } /* Our stack is configured for credit-based and they responded with credit-based. */ - else if (cl == RFCOMM_PN_CONV_LAYER_CBFC_R) - { + else if (cl == RFCOMM_PN_CONV_LAYER_CBFC_R) { p_mcb->flow = PORT_FC_CREDIT; } /* They responded with any other value. Treat this as negotiation to TS07.10. */ - else - { + else { p_mcb->flow = PORT_FC_TS710; } } @@ -420,13 +400,13 @@ void PORT_ParNegCnf (tRFC_MCB *p_mcb, UINT8 dlci, UINT16 mtu, UINT8 cl, UINT8 k) p_port->mtu = (p_port->mtu < mtu) ? p_port->mtu : mtu; p_port->peer_mtu = p_port->mtu; - if (p_mcb->flow == PORT_FC_CREDIT) - { + if (p_mcb->flow == PORT_FC_CREDIT) { port_get_credits (p_port, k); } - if (p_port->state == PORT_STATE_OPENING) + if (p_port->state == PORT_STATE_OPENING) { RFCOMM_DlcEstablishReq (p_mcb, p_port->dlci, p_port->mtu); + } } @@ -449,15 +429,13 @@ void PORT_DlcEstablishInd (tRFC_MCB *p_mcb, UINT8 dlci, UINT16 mtu) RFCOMM_TRACE_DEBUG ("PORT_DlcEstablishInd p_mcb:%p, dlci:%d mtu:%di, p_port:%p", p_mcb, dlci, mtu, p_port); RFCOMM_TRACE_DEBUG ("PORT_DlcEstablishInd p_mcb addr:%02x:%02x:%02x:%02x:%02x:%02x", - p_mcb->bd_addr[0], p_mcb->bd_addr[1], p_mcb->bd_addr[2], - p_mcb->bd_addr[3], p_mcb->bd_addr[4], p_mcb->bd_addr[5]); + p_mcb->bd_addr[0], p_mcb->bd_addr[1], p_mcb->bd_addr[2], + p_mcb->bd_addr[3], p_mcb->bd_addr[4], p_mcb->bd_addr[5]); - if (!p_port) - { + if (!p_port) { /* This can be a first request for this port */ p_port = port_find_dlci_port (dlci); - if (!p_port) - { + if (!p_port) { RFCOMM_DlcEstablishRsp (p_mcb, dlci, 0, RFCOMM_ERROR); return; } @@ -465,8 +443,9 @@ void PORT_DlcEstablishInd (tRFC_MCB *p_mcb, UINT8 dlci, UINT16 mtu) } /* If L2CAP's mtu less then RFCOMM's take it */ - if (mtu && (mtu < p_port->peer_mtu)) + if (mtu && (mtu < p_port->peer_mtu)) { p_port->peer_mtu = mtu; + } /* If there was an inactivity timer running for MCB stop it */ rfc_timer_stop (p_mcb); @@ -475,11 +454,13 @@ void PORT_DlcEstablishInd (tRFC_MCB *p_mcb, UINT8 dlci, UINT16 mtu) /* This is the server side. If application wants to know when connection */ /* is established, thats the place */ - if (p_port->p_callback && (p_port->ev_mask & PORT_EV_CONNECTED)) + if (p_port->p_callback && (p_port->ev_mask & PORT_EV_CONNECTED)) { (p_port->p_callback)(PORT_EV_CONNECTED, p_port->inx); + } - if (p_port->p_mgmt_callback) + if (p_port->p_mgmt_callback) { p_port->p_mgmt_callback (PORT_SUCCESS, p_port->inx); + } p_port->state = PORT_STATE_OPENED; } @@ -501,37 +482,41 @@ void PORT_DlcEstablishCnf (tRFC_MCB *p_mcb, UINT8 dlci, UINT16 mtu, UINT16 resul RFCOMM_TRACE_EVENT ("PORT_DlcEstablishCnf dlci:%d mtu:%d result:%d", dlci, mtu, result); - if (!p_port) + if (!p_port) { return; + } - if (result != RFCOMM_SUCCESS) - { + if (result != RFCOMM_SUCCESS) { p_port->error = PORT_START_FAILED; port_rfc_closed (p_port, PORT_START_FAILED); return; } /* If L2CAP's mtu less then RFCOMM's take it */ - if (mtu && (mtu < p_port->peer_mtu)) + if (mtu && (mtu < p_port->peer_mtu)) { p_port->peer_mtu = mtu; + } /* If there was an inactivity timer running for MCB stop it */ rfc_timer_stop (p_mcb); - if (p_port->p_callback && (p_port->ev_mask & PORT_EV_CONNECTED)) + if (p_port->p_callback && (p_port->ev_mask & PORT_EV_CONNECTED)) { (p_port->p_callback)(PORT_EV_CONNECTED, p_port->inx); + } - if (p_port->p_mgmt_callback) + if (p_port->p_mgmt_callback) { p_port->p_mgmt_callback (PORT_SUCCESS, p_port->inx); + } p_port->state = PORT_STATE_OPENED; /* RPN is required only if we want to tell DTE how the port should be opened */ if ((p_port->uuid == UUID_SERVCLASS_DIALUP_NETWORKING) - || (p_port->uuid == UUID_SERVCLASS_FAX)) + || (p_port->uuid == UUID_SERVCLASS_FAX)) { RFCOMM_PortNegReq (p_port->rfc.p_mcb, p_port->dlci, NULL); - else + } else { RFCOMM_ControlReq (p_port->rfc.p_mcb, p_port->dlci, &p_port->local_ctrl); + } } @@ -553,12 +538,10 @@ void PORT_PortNegInd (tRFC_MCB *p_mcb, UINT8 dlci, tPORT_STATE *p_pars, RFCOMM_TRACE_EVENT ("PORT_PortNegInd"); - if (!p_port) - { + if (!p_port) { /* This can be a first request for this port */ p_port = port_find_dlci_port (dlci); - if (!p_port) - { + if (!p_port) { RFCOMM_PortNegRsp (p_mcb, dlci, p_pars, 0); return; } @@ -586,14 +569,12 @@ void PORT_PortNegCnf (tRFC_MCB *p_mcb, UINT8 dlci, tPORT_STATE *p_pars, UINT16 r RFCOMM_TRACE_EVENT ("PORT_PortNegCnf"); - if (!p_port) - { + if (!p_port) { RFCOMM_TRACE_WARNING ("PORT_PortNegCnf no port"); return; } /* Port negotiation failed. Drop the connection */ - if (result != RFCOMM_SUCCESS) - { + if (result != RFCOMM_SUCCESS) { p_port->error = PORT_PORT_NEG_FAILED; RFCOMM_DlcReleaseReq (p_mcb, p_port->dlci); @@ -602,12 +583,9 @@ void PORT_PortNegCnf (tRFC_MCB *p_mcb, UINT8 dlci, tPORT_STATE *p_pars, UINT16 r return; } - if (!(p_port->port_ctrl & PORT_CTRL_REQ_SENT)) - { + if (!(p_port->port_ctrl & PORT_CTRL_REQ_SENT)) { RFCOMM_ControlReq (p_port->rfc.p_mcb, p_port->dlci, &p_port->local_ctrl); - } - else - { + } else { RFCOMM_TRACE_WARNING ("PORT_PortNegCnf Control Already sent"); } } @@ -629,8 +607,9 @@ void PORT_ControlInd (tRFC_MCB *p_mcb, UINT8 dlci, tPORT_CTRL *p_pars) RFCOMM_TRACE_EVENT ("PORT_ControlInd"); - if (!p_port) + if (!p_port) { return; + } old_signals = p_port->peer_ctrl.modem_signal; @@ -638,36 +617,35 @@ void PORT_ControlInd (tRFC_MCB *p_mcb, UINT8 dlci, tPORT_CTRL *p_pars) p_port->peer_ctrl = *p_pars; - if (!(p_port->port_ctrl & PORT_CTRL_REQ_SENT)) + if (!(p_port->port_ctrl & PORT_CTRL_REQ_SENT)) { RFCOMM_ControlReq (p_port->rfc.p_mcb, p_port->dlci, &p_port->local_ctrl); - else - { + } else { /* If this is the first time we received control RFCOMM is connected */ - if (!(p_port->port_ctrl & PORT_CTRL_IND_RECEIVED)) - { + if (!(p_port->port_ctrl & PORT_CTRL_IND_RECEIVED)) { event |= (PORT_EV_CONNECTED & p_port->ev_mask); } - if (p_port->port_ctrl & PORT_CTRL_REQ_CONFIRMED) - { + if (p_port->port_ctrl & PORT_CTRL_REQ_CONFIRMED) { event |= port_rfc_send_tx_data(p_port); } } p_port->port_ctrl |= (PORT_CTRL_IND_RECEIVED | PORT_CTRL_IND_RESPONDED); - if (p_pars->break_signal) + if (p_pars->break_signal) { event |= (PORT_EV_BREAK & p_port->ev_mask); + } /* execute call back function only if the application is registered for events */ - if (event && p_port->p_callback) + if (event && p_port->p_callback) { (p_port->p_callback)(event, p_port->inx); + } RFCOMM_TRACE_EVENT ("PORT_ControlInd DTR_DSR : %d, RTS_CTS : %d, RI : %d, DCD : %d", - ((p_port->peer_ctrl.modem_signal & MODEM_SIGNAL_DTRDSR) ? 1 : 0), - ((p_port->peer_ctrl.modem_signal & MODEM_SIGNAL_RTSCTS) ? 1 : 0), - ((p_port->peer_ctrl.modem_signal & MODEM_SIGNAL_RI) ? 1 : 0), - ((p_port->peer_ctrl.modem_signal & MODEM_SIGNAL_DCD) ? 1 : 0)); + ((p_port->peer_ctrl.modem_signal & MODEM_SIGNAL_DTRDSR) ? 1 : 0), + ((p_port->peer_ctrl.modem_signal & MODEM_SIGNAL_RTSCTS) ? 1 : 0), + ((p_port->peer_ctrl.modem_signal & MODEM_SIGNAL_RI) ? 1 : 0), + ((p_port->peer_ctrl.modem_signal & MODEM_SIGNAL_DCD) ? 1 : 0)); } @@ -688,25 +666,26 @@ void PORT_ControlCnf (tRFC_MCB *p_mcb, UINT8 dlci, tPORT_CTRL *p_pars) RFCOMM_TRACE_EVENT ("PORT_ControlCnf"); - if (!p_port) + if (!p_port) { return; - - if (!(p_port->port_ctrl & PORT_CTRL_REQ_CONFIRMED)) - { - p_port->port_ctrl |= PORT_CTRL_REQ_CONFIRMED; - - if (p_port->port_ctrl & PORT_CTRL_IND_RECEIVED) - event = (p_port->ev_mask & PORT_EV_CONNECTED); } - if (p_port->port_ctrl & PORT_CTRL_IND_RECEIVED) - { + if (!(p_port->port_ctrl & PORT_CTRL_REQ_CONFIRMED)) { + p_port->port_ctrl |= PORT_CTRL_REQ_CONFIRMED; + + if (p_port->port_ctrl & PORT_CTRL_IND_RECEIVED) { + event = (p_port->ev_mask & PORT_EV_CONNECTED); + } + } + + if (p_port->port_ctrl & PORT_CTRL_IND_RECEIVED) { event |= port_rfc_send_tx_data(p_port); } /* execute call back function only if the application is registered for events */ - if (event && p_port->p_callback) + if (event && p_port->p_callback) { (p_port->p_callback)(event, p_port->inx); + } } @@ -725,22 +704,27 @@ void PORT_LineStatusInd (tRFC_MCB *p_mcb, UINT8 dlci, UINT8 line_status) RFCOMM_TRACE_EVENT ("PORT_LineStatusInd"); - if (!p_port) + if (!p_port) { return; + } p_port->line_status |= line_status; - if (line_status & PORT_ERR_OVERRUN) + if (line_status & PORT_ERR_OVERRUN) { event |= PORT_EV_OVERRUN; + } - if (line_status & PORT_ERR_BREAK) + if (line_status & PORT_ERR_BREAK) { event |= PORT_EV_BREAK; + } - if (line_status & ~(PORT_ERR_OVERRUN | PORT_ERR_BREAK)) + if (line_status & ~(PORT_ERR_OVERRUN | PORT_ERR_BREAK)) { event |= PORT_EV_ERR; + } - if ((p_port->p_callback != NULL) && (p_port->ev_mask & event)) - p_port->p_callback ((p_port->ev_mask & event), p_port->inx); + if ((p_port->p_callback != NULL) && (p_port->ev_mask & event)) { + p_port->p_callback ((p_port->ev_mask & event), p_port->inx); + } } @@ -758,8 +742,9 @@ void PORT_DlcReleaseInd (tRFC_MCB *p_mcb, UINT8 dlci) RFCOMM_TRACE_EVENT ("PORT_DlcReleaseInd"); - if (!p_port) + if (!p_port) { return; + } port_rfc_closed (p_port, PORT_CLOSED); } @@ -781,10 +766,8 @@ void PORT_CloseInd (tRFC_MCB *p_mcb) RFCOMM_TRACE_EVENT ("PORT_CloseInd"); p_port = &rfc_cb.port.port[0]; - for (i = 0; i < MAX_RFC_PORTS; i++, p_port++) - { - if (p_port->rfc.p_mcb == p_mcb) - { + for (i = 0; i < MAX_RFC_PORTS; i++, p_port++) { + if (p_port->rfc.p_mcb == p_mcb) { port_rfc_closed (p_port, PORT_PEER_CONNECTION_FAILED); } } @@ -807,10 +790,8 @@ void Port_TimeOutCloseMux (tRFC_MCB *p_mcb) RFCOMM_TRACE_EVENT ("Port_TimeOutCloseMux"); p_port = &rfc_cb.port.port[0]; - for (i = 0; i < MAX_RFC_PORTS; i++, p_port++) - { - if (p_port->rfc.p_mcb == p_mcb) - { + for (i = 0; i < MAX_RFC_PORTS; i++, p_port++) { + if (p_port->rfc.p_mcb == p_mcb) { port_rfc_closed (p_port, PORT_PEER_TIMEOUT); } } @@ -834,27 +815,27 @@ void PORT_DataInd (tRFC_MCB *p_mcb, UINT8 dlci, BT_HDR *p_buf) int i; RFCOMM_TRACE_EVENT("PORT_DataInd with data length %d, p_mcb:%p,p_port:%p,dlci:%d", - p_buf->len, p_mcb, p_port, dlci); - if (!p_port) - { + p_buf->len, p_mcb, p_port, dlci); + if (!p_port) { GKI_freebuf (p_buf); return; } /* If client registered callout callback with flow control we can just deliver receive data */ - if (p_port->p_data_co_callback) - { + if (p_port->p_data_co_callback) { /* Another packet is delivered to user. Send credits to peer if required */ - if(p_port->p_data_co_callback(p_port->inx, (UINT8*)p_buf, -1, DATA_CO_CALLBACK_TYPE_INCOMING)) + if (p_port->p_data_co_callback(p_port->inx, (UINT8 *)p_buf, -1, DATA_CO_CALLBACK_TYPE_INCOMING)) { port_flow_control_peer(p_port, TRUE, 1); - else port_flow_control_peer(p_port, FALSE, 0); + } else { + port_flow_control_peer(p_port, FALSE, 0); + } //GKI_freebuf (p_buf); return; + } else { + RFCOMM_TRACE_ERROR("PORT_DataInd, p_port:%p, p_data_co_callback is null", p_port); } - else RFCOMM_TRACE_ERROR("PORT_DataInd, p_port:%p, p_data_co_callback is null", p_port); /* If client registered callback we can just deliver receive data */ - if (p_port->p_data_callback) - { + if (p_port->p_data_callback) { /* Another packet is delivered to user. Send credits to peer if required */ port_flow_control_peer(p_port, TRUE, 1); @@ -865,8 +846,7 @@ void PORT_DataInd (tRFC_MCB *p_mcb, UINT8 dlci, BT_HDR *p_buf) /* Check if rx queue exceeds the limit */ if ((p_port->rx.queue_size + p_buf->len > PORT_RX_CRITICAL_WM) - || (GKI_queue_length(&p_port->rx.queue) + 1 > p_port->rx_buf_critical)) - { + || (GKI_queue_length(&p_port->rx.queue) + 1 > p_port->rx_buf_critical)) { RFCOMM_TRACE_EVENT ("PORT_DataInd. Buffer over run. Dropping the buffer"); GKI_freebuf (p_buf); @@ -877,12 +857,9 @@ void PORT_DataInd (tRFC_MCB *p_mcb, UINT8 dlci, BT_HDR *p_buf) /* If user registered to receive notification when a particular byte is */ /* received we mast check all received bytes */ if (((rx_char1 = p_port->user_port_pars.rx_char1) != 0) - && (p_port->ev_mask & PORT_EV_RXFLAG)) - { - for (i = 0, p = (UINT8 *)(p_buf + 1) + p_buf->offset; i < p_buf->len; i++) - { - if (*p++ == rx_char1) - { + && (p_port->ev_mask & PORT_EV_RXFLAG)) { + for (i = 0, p = (UINT8 *)(p_buf + 1) + p_buf->offset; i < p_buf->len; i++) { + if (*p++ == rx_char1) { events |= PORT_EV_RXFLAG; break; } @@ -900,10 +877,10 @@ void PORT_DataInd (tRFC_MCB *p_mcb, UINT8 dlci, BT_HDR *p_buf) port_flow_control_peer(p_port, FALSE, 0); /* If user indicated flow control can not deliver any notifications to him */ - if (p_port->rx.user_fc) - { - if (events & PORT_EV_RXFLAG) + if (p_port->rx.user_fc) { + if (events & PORT_EV_RXFLAG) { p_port->rx_flag_ev_pending = TRUE; + } return; } @@ -913,8 +890,9 @@ void PORT_DataInd (tRFC_MCB *p_mcb, UINT8 dlci, BT_HDR *p_buf) /* Mask out all events that are not of interest to user */ events &= p_port->ev_mask; - if (p_port->p_callback && events) + if (p_port->p_callback && events) { p_port->p_callback (events, p_port->inx); + } } @@ -934,28 +912,25 @@ void PORT_FlowInd (tRFC_MCB *p_mcb, UINT8 dlci, BOOLEAN enable_data) RFCOMM_TRACE_EVENT ("PORT_FlowInd fc:%d", enable_data); - if (dlci == 0) - { + if (dlci == 0) { p_mcb->peer_ready = enable_data; - } - else - { - if ((p_port = port_find_mcb_dlci_port (p_mcb, dlci)) == NULL) + } else { + if ((p_port = port_find_mcb_dlci_port (p_mcb, dlci)) == NULL) { return; + } p_port->tx.peer_fc = !enable_data; } - for (i = 0; i < MAX_RFC_PORTS; i++) - { + for (i = 0; i < MAX_RFC_PORTS; i++) { /* If DLCI is 0 event applies to all ports */ - if (dlci == 0) - { + if (dlci == 0) { p_port = &rfc_cb.port.port[i]; if (!p_port->in_use - || (p_port->rfc.p_mcb != p_mcb) - || (p_port->rfc.state != RFC_STATE_OPENED)) + || (p_port->rfc.p_mcb != p_mcb) + || (p_port->rfc.state != RFC_STATE_OPENED)) { continue; + } } events = 0; @@ -969,12 +944,14 @@ void PORT_FlowInd (tRFC_MCB *p_mcb, UINT8 dlci, BOOLEAN enable_data) events &= p_port->ev_mask; /* Send event to the application */ - if (p_port->p_callback && events) + if (p_port->p_callback && events) { (p_port->p_callback)(events, p_port->inx); + } /* If DLCI is not 0 event applies to one port only */ - if (dlci != 0) + if (dlci != 0) { break; + } } } @@ -992,16 +969,13 @@ UINT32 port_rfc_send_tx_data (tPORT *p_port) BT_HDR *p_buf; /* if there is data to be sent */ - if (p_port->tx.queue_size > 0) - { + if (p_port->tx.queue_size > 0) { /* while the rfcomm peer is not flow controlling us, and peer is ready */ - while (!p_port->tx.peer_fc && p_port->rfc.p_mcb && p_port->rfc.p_mcb->peer_ready) - { + while (!p_port->tx.peer_fc && p_port->rfc.p_mcb && p_port->rfc.p_mcb->peer_ready) { /* get data from tx queue and send it */ PORT_SCHEDULE_LOCK; - if ((p_buf = (BT_HDR *)GKI_dequeue (&p_port->tx.queue)) != NULL) - { + if ((p_buf = (BT_HDR *)GKI_dequeue (&p_port->tx.queue)) != NULL) { p_port->tx.queue_size -= p_buf->len; PORT_SCHEDULE_UNLOCK; @@ -1012,15 +986,13 @@ UINT32 port_rfc_send_tx_data (tPORT *p_port) events |= PORT_EV_TXCHAR; - if (p_port->tx.queue_size == 0) - { + if (p_port->tx.queue_size == 0) { events |= PORT_EV_TXEMPTY; break; } } /* queue is empty-- all data sent */ - else - { + else { PORT_SCHEDULE_UNLOCK; events |= PORT_EV_TXEMPTY; @@ -1047,16 +1019,14 @@ void port_rfc_closed (tPORT *p_port, UINT8 res) UINT32 events = 0; tRFC_MCB *p_mcb = p_port->rfc.p_mcb; - if ((p_port->state == PORT_STATE_OPENING) && (p_port->is_server)) - { + if ((p_port->state == PORT_STATE_OPENING) && (p_port->is_server)) { /* The servr side has not been informed that connection is up, ignore */ RFCOMM_TRACE_EVENT ("port_rfc_closed in OPENING state ignored"); rfc_port_timer_stop (p_port); p_port->rfc.state = RFC_STATE_CLOSED; - if (p_mcb) - { + if (p_mcb) { p_mcb->port_inx[p_port->dlci] = 0; /* If there are no more ports opened on this MCB release it */ @@ -1072,8 +1042,7 @@ void port_rfc_closed (tPORT *p_port, UINT8 res) return; } - if ((p_port->state != PORT_STATE_CLOSING) && (p_port->state != PORT_STATE_CLOSED)) - { + if ((p_port->state != PORT_STATE_CLOSING) && (p_port->state != PORT_STATE_CLOSED)) { p_port->line_status |= LINE_STATUS_FAILED; old_signals = p_port->peer_ctrl.modem_signal; @@ -1082,16 +1051,19 @@ void port_rfc_closed (tPORT *p_port, UINT8 res) events |= port_get_signal_changes (p_port, old_signals, p_port->peer_ctrl.modem_signal); - if(p_port->ev_mask & PORT_EV_CONNECT_ERR) + if (p_port->ev_mask & PORT_EV_CONNECT_ERR) { events |= PORT_EV_CONNECT_ERR; + } } RFCOMM_TRACE_EVENT ("port_rfc_closed state:%d sending events:%x", p_port->state, events); - if ((p_port->p_callback != NULL) && events) + if ((p_port->p_callback != NULL) && events) { p_port->p_callback (events, p_port->inx); + } - if (p_port->p_mgmt_callback) + if (p_port->p_mgmt_callback) { p_port->p_mgmt_callback (res, p_port->inx); + } p_port->rfc.state = RFC_STATE_CLOSED; @@ -1115,6 +1087,7 @@ void port_rfc_closed (tPORT *p_port, UINT8 res) void port_get_credits (tPORT *p_port, UINT8 k) { p_port->credit_tx = k; - if (p_port->credit_tx == 0) + if (p_port->credit_tx == 0) { p_port->tx.peer_fc = TRUE; + } } diff --git a/components/bt/bluedroid/stack/rfcomm/port_utils.c b/components/bt/bluedroid/stack/rfcomm/port_utils.c old mode 100755 new mode 100644 index 7d29336ddb..5b2e79178f --- a/components/bt/bluedroid/stack/rfcomm/port_utils.c +++ b/components/bt/bluedroid/stack/rfcomm/port_utils.c @@ -33,8 +33,7 @@ #include "btm_int.h" #include "btu.h" -static const tPORT_STATE default_port_pars = -{ +static const tPORT_STATE default_port_pars = { PORT_BAUD_RATE_9600, PORT_8_BITS, PORT_ONESTOPBIT, @@ -65,14 +64,13 @@ tPORT *port_allocate_port (UINT8 dlci, BD_ADDR bd_addr) tPORT *p_port = &rfc_cb.port.port[0]; UINT8 xx, yy; - for (xx = 0, yy = rfc_cb.rfc.last_port + 1; xx < MAX_RFC_PORTS; xx++, yy++) - { - if (yy >= MAX_RFC_PORTS) + for (xx = 0, yy = rfc_cb.rfc.last_port + 1; xx < MAX_RFC_PORTS; xx++, yy++) { + if (yy >= MAX_RFC_PORTS) { yy = 0; + } p_port = &rfc_cb.port.port[yy]; - if (!p_port->in_use) - { + if (!p_port->in_use) { memset (p_port, 0, sizeof (tPORT)); p_port->in_use = TRUE; @@ -87,7 +85,7 @@ tPORT *port_allocate_port (UINT8 dlci, BD_ADDR bd_addr) rfc_cb.rfc.last_port = yy; RFCOMM_TRACE_DEBUG("rfc_cb.port.port[%d]:%p allocated, last_port:%d", yy, p_port, rfc_cb.rfc.last_port); RFCOMM_TRACE_DEBUG("port_allocate_port:bd_addr:%02x:%02x:%02x:%02x:%02x:%02x", - bd_addr[0], bd_addr[1], bd_addr[2], bd_addr[3], bd_addr[4], bd_addr[5]); + bd_addr[0], bd_addr[1], bd_addr[2], bd_addr[3], bd_addr[4], bd_addr[5]); return (p_port); } } @@ -120,8 +118,8 @@ void port_set_defaults (tPORT *p_port) p_port->credit_tx = 0; p_port->credit_rx = 0; -/* p_port->credit_rx_max = PORT_CREDIT_RX_MAX; Determined later */ -/* p_port->credit_rx_low = PORT_CREDIT_RX_LOW; Determined later */ + /* p_port->credit_rx_max = PORT_CREDIT_RX_MAX; Determined later */ + /* p_port->credit_rx_low = PORT_CREDIT_RX_LOW; Determined later */ memset (&p_port->local_ctrl, 0, sizeof (p_port->local_ctrl)); memset (&p_port->peer_ctrl, 0, sizeof (p_port->peer_ctrl)); @@ -145,18 +143,14 @@ void port_select_mtu (tPORT *p_port) UINT16 packet_size; /* Will select MTU only if application did not setup something */ - if (p_port->mtu == 0) - { + if (p_port->mtu == 0) { /* find packet size which connection supports */ packet_size = btm_get_max_packet_size (p_port->bd_addr); - if (packet_size == 0) - { + if (packet_size == 0) { /* something is very wrong */ RFCOMM_TRACE_WARNING ("port_select_mtu bad packet size"); p_port->mtu = RFCOMM_DEFAULT_MTU; - } - else - { + } else { /* We try to negotiate MTU that each packet can be split into whole number of max packets. For example if link is 1.2 max packet size is 339 bytes. At first calculate how many whole packets it is. MAX L2CAP is 1691 + 4 overhead. @@ -165,33 +159,31 @@ void port_select_mtu (tPORT *p_port) For EDR 2.0 packet size is 1027. So we better send RFCOMM packet as 1 3DH5 packet 1 * 1027 = 1027. Minus 4 bytes L2CAP header 1023. Minus RFCOMM 6 bytes header overhead 1017 */ - if ((L2CAP_MTU_SIZE + L2CAP_PKT_OVERHEAD) >= packet_size) - { + if ((L2CAP_MTU_SIZE + L2CAP_PKT_OVERHEAD) >= packet_size) { p_port->mtu = ((L2CAP_MTU_SIZE + L2CAP_PKT_OVERHEAD) / packet_size * packet_size) - RFCOMM_DATA_OVERHEAD - L2CAP_PKT_OVERHEAD; RFCOMM_TRACE_DEBUG ("port_select_mtu selected %d based on connection speed", p_port->mtu); - } - else - { + } else { p_port->mtu = L2CAP_MTU_SIZE - RFCOMM_DATA_OVERHEAD; RFCOMM_TRACE_DEBUG ("port_select_mtu selected %d based on l2cap PDU size", p_port->mtu); } } - } - else - { + } else { RFCOMM_TRACE_DEBUG ("port_select_mtu application selected %d", p_port->mtu); } p_port->credit_rx_max = (PORT_RX_HIGH_WM / p_port->mtu); - if( p_port->credit_rx_max > PORT_RX_BUF_HIGH_WM ) + if ( p_port->credit_rx_max > PORT_RX_BUF_HIGH_WM ) { p_port->credit_rx_max = PORT_RX_BUF_HIGH_WM; + } p_port->credit_rx_low = (PORT_RX_LOW_WM / p_port->mtu); - if( p_port->credit_rx_low > PORT_RX_BUF_LOW_WM ) + if ( p_port->credit_rx_low > PORT_RX_BUF_LOW_WM ) { p_port->credit_rx_low = PORT_RX_BUF_LOW_WM; + } p_port->rx_buf_critical = (PORT_RX_CRITICAL_WM / p_port->mtu); - if( p_port->rx_buf_critical > PORT_RX_BUF_CRITICAL_WM ) + if ( p_port->rx_buf_critical > PORT_RX_BUF_CRITICAL_WM ) { p_port->rx_buf_critical = PORT_RX_BUF_CRITICAL_WM; + } RFCOMM_TRACE_DEBUG ("port_select_mtu credit_rx_max %d, credit_rx_low %d, rx_buf_critical %d", - p_port->credit_rx_max, p_port->credit_rx_low, p_port->rx_buf_critical); + p_port->credit_rx_max, p_port->credit_rx_low, p_port->rx_buf_critical); } @@ -213,13 +205,15 @@ void port_release_port (tPORT *p_port) PORT_SCHEDULE_LOCK; RFCOMM_TRACE_DEBUG("port_release_port, p_port:%p", p_port); - while ((p_buf = (BT_HDR *)GKI_dequeue (&p_port->rx.queue)) != NULL) + while ((p_buf = (BT_HDR *)GKI_dequeue (&p_port->rx.queue)) != NULL) { GKI_freebuf (p_buf); + } p_port->rx.queue_size = 0; - while ((p_buf = (BT_HDR *)GKI_dequeue (&p_port->tx.queue)) != NULL) + while ((p_buf = (BT_HDR *)GKI_dequeue (&p_port->tx.queue)) != NULL) { GKI_freebuf (p_buf); + } p_port->tx.queue_size = 0; @@ -227,11 +221,9 @@ void port_release_port (tPORT *p_port) p_port->state = PORT_STATE_CLOSED; - if (p_port->rfc.state == RFC_STATE_CLOSED) - { + if (p_port->rfc.state == RFC_STATE_CLOSED) { RFCOMM_TRACE_DEBUG ("rfc_port_closed DONE"); - if (p_port->rfc.p_mcb) - { + if (p_port->rfc.p_mcb) { p_port->rfc.p_mcb->port_inx[p_port->dlci] = 0; /* If there are no more ports opened on this MCB release it */ @@ -239,8 +231,7 @@ void port_release_port (tPORT *p_port) } rfc_port_timer_stop (p_port); RFCOMM_TRACE_DEBUG ("port_release_port:p_port->keep_port_handle:%d", p_port->keep_port_handle); - if( p_port->keep_port_handle ) - { + if ( p_port->keep_port_handle ) { RFCOMM_TRACE_DEBUG ("port_release_port:Initialize handle:%d", p_port->inx); /* save event mask and callback */ mask = p_port->ev_mask; @@ -256,14 +247,13 @@ void port_release_port (tPORT *p_port) p_port->state = PORT_STATE_OPENING; p_port->rfc.p_mcb = NULL; - if(p_port->is_server) + if (p_port->is_server) { p_port->dlci &= 0xfe; + } p_port->local_ctrl.modem_signal = p_port->default_signal_state; memcpy (p_port->bd_addr, BT_BD_ANY, BD_ADDR_LEN); - } - else - { + } else { RFCOMM_TRACE_DEBUG ("port_release_port:Clean-up handle:%d", p_port->inx); memset (p_port, 0, sizeof (tPORT)); } @@ -283,21 +273,19 @@ tRFC_MCB *port_find_mcb (BD_ADDR bd_addr) { int i; - for (i = 0; i < MAX_BD_CONNECTIONS; i++) - { + for (i = 0; i < MAX_BD_CONNECTIONS; i++) { if ((rfc_cb.port.rfc_mcb[i].state != RFC_MX_STATE_IDLE) - && !memcmp (rfc_cb.port.rfc_mcb[i].bd_addr, bd_addr, BD_ADDR_LEN)) - { + && !memcmp (rfc_cb.port.rfc_mcb[i].bd_addr, bd_addr, BD_ADDR_LEN)) { /* Multiplexer channel found do not change anything */ RFCOMM_TRACE_DEBUG("port_find_mcb: found bd_addr:%02x:%02x:%02x:%02x:%02x:%02x", - bd_addr[0], bd_addr[1], bd_addr[2], bd_addr[3], bd_addr[4], bd_addr[5]); + bd_addr[0], bd_addr[1], bd_addr[2], bd_addr[3], bd_addr[4], bd_addr[5]); RFCOMM_TRACE_DEBUG("port_find_mcb: rfc_cb.port.rfc_mcb:index:%d, %p, lcid:%d", - i, &rfc_cb.port.rfc_mcb[i], rfc_cb.port.rfc_mcb[i].lcid); + i, &rfc_cb.port.rfc_mcb[i], rfc_cb.port.rfc_mcb[i].lcid); return (&rfc_cb.port.rfc_mcb[i]); } } RFCOMM_TRACE_DEBUG("port_find_mcb: not found, bd_addr:%02x:%02x:%02x:%02x:%02x:%02x", - bd_addr[0], bd_addr[1], bd_addr[2], bd_addr[3], bd_addr[4], bd_addr[5]); + bd_addr[0], bd_addr[1], bd_addr[2], bd_addr[3], bd_addr[4], bd_addr[5]); return (NULL); } @@ -318,20 +306,21 @@ tPORT *port_find_mcb_dlci_port (tRFC_MCB *p_mcb, UINT8 dlci) { UINT8 inx; - if (!p_mcb) - return (NULL); - - if (dlci > RFCOMM_MAX_DLCI) - return (NULL); - - inx = p_mcb->port_inx[dlci]; - if (inx == 0) - { - RFCOMM_TRACE_DEBUG("port_find_mcb_dlci_port: p_mcb:%p, port_inx[dlci:%d] is 0", p_mcb, dlci); + if (!p_mcb) { return (NULL); } - else + + if (dlci > RFCOMM_MAX_DLCI) { + return (NULL); + } + + inx = p_mcb->port_inx[dlci]; + if (inx == 0) { + RFCOMM_TRACE_DEBUG("port_find_mcb_dlci_port: p_mcb:%p, port_inx[dlci:%d] is 0", p_mcb, dlci); + return (NULL); + } else { return (&rfc_cb.port.port[inx - 1]); + } } @@ -349,18 +338,13 @@ tPORT *port_find_dlci_port (UINT8 dlci) UINT16 i; tPORT *p_port; - for (i = 0; i < MAX_RFC_PORTS; i++) - { + for (i = 0; i < MAX_RFC_PORTS; i++) { p_port = &rfc_cb.port.port[i]; - if (p_port->in_use && (p_port->rfc.p_mcb == NULL)) - { - if (p_port->dlci == dlci) - { + if (p_port->in_use && (p_port->rfc.p_mcb == NULL)) { + if (p_port->dlci == dlci) { return (p_port); - } - else if ((dlci & 0x01) && (p_port->dlci == (dlci - 1))) - { + } else if ((dlci & 0x01) && (p_port->dlci == (dlci - 1))) { p_port->dlci++; return (p_port); } @@ -384,13 +368,11 @@ tPORT *port_find_port (UINT8 dlci, BD_ADDR bd_addr) UINT16 i; tPORT *p_port; - for (i = 0; i < MAX_RFC_PORTS; i++) - { + for (i = 0; i < MAX_RFC_PORTS; i++) { p_port = &rfc_cb.port.port[i]; if (p_port->in_use - && (p_port->dlci == dlci) - && !memcmp (p_port->bd_addr, bd_addr, BD_ADDR_LEN)) - { + && (p_port->dlci == dlci) + && !memcmp (p_port->bd_addr, bd_addr, BD_ADDR_LEN)) { return (p_port); } } @@ -417,20 +399,22 @@ UINT32 port_flow_control_user (tPORT *p_port) /* (FlowInd, or flow control by the peer RFCOMM (Fcon) or internally if */ /* tx_queue is full */ BOOLEAN fc = p_port->tx.peer_fc - || !p_port->rfc.p_mcb - || !p_port->rfc.p_mcb->peer_ready - || (p_port->tx.queue_size > PORT_TX_HIGH_WM) - || (GKI_queue_length(&p_port->tx.queue) > PORT_TX_BUF_HIGH_WM); + || !p_port->rfc.p_mcb + || !p_port->rfc.p_mcb->peer_ready + || (p_port->tx.queue_size > PORT_TX_HIGH_WM) + || (GKI_queue_length(&p_port->tx.queue) > PORT_TX_BUF_HIGH_WM); - if (p_port->tx.user_fc == fc) + if (p_port->tx.user_fc == fc) { return (0); + } p_port->tx.user_fc = fc; - if (fc) + if (fc) { event = PORT_EV_FC; - else + } else { event = PORT_EV_FC | PORT_EV_FCS; + } return (event); } @@ -450,31 +434,32 @@ UINT32 port_get_signal_changes (tPORT *p_port, UINT8 old_signals, UINT8 signal) UINT8 changed_signals = (signal ^ old_signals); UINT32 events = 0; - if (changed_signals & PORT_DTRDSR_ON) - { + if (changed_signals & PORT_DTRDSR_ON) { events |= PORT_EV_DSR; - if (signal & PORT_DTRDSR_ON) + if (signal & PORT_DTRDSR_ON) { events |= PORT_EV_DSRS; + } } - if (changed_signals & PORT_CTSRTS_ON) - { + if (changed_signals & PORT_CTSRTS_ON) { events |= PORT_EV_CTS; - if (signal & PORT_CTSRTS_ON) + if (signal & PORT_CTSRTS_ON) { events |= PORT_EV_CTSS; + } } - if (changed_signals & PORT_RING_ON) + if (changed_signals & PORT_RING_ON) { events |= PORT_EV_RING; + } - if (changed_signals & PORT_DCD_ON) - { + if (changed_signals & PORT_DCD_ON) { events |= PORT_EV_RLSD; - if (signal & PORT_DCD_ON) + if (signal & PORT_DCD_ON) { events |= PORT_EV_RLSDS; + } } return (p_port->ev_mask & events); @@ -493,22 +478,18 @@ UINT32 port_get_signal_changes (tPORT *p_port, UINT8 old_signals, UINT8 signal) *******************************************************************************/ void port_flow_control_peer(tPORT *p_port, BOOLEAN enable, UINT16 count) { - if (!p_port->rfc.p_mcb) + if (!p_port->rfc.p_mcb) { return; + } /* If using credit based flow control */ - if (p_port->rfc.p_mcb->flow == PORT_FC_CREDIT) - { + if (p_port->rfc.p_mcb->flow == PORT_FC_CREDIT) { /* if want to enable flow from peer */ - if (enable) - { + if (enable) { /* update rx credits */ - if (count > p_port->credit_rx) - { + if (count > p_port->credit_rx) { p_port->credit_rx = 0; - } - else - { + } else { p_port->credit_rx -= count; } @@ -516,9 +497,8 @@ void port_flow_control_peer(tPORT *p_port, BOOLEAN enable, UINT16 count) /* did not force flow control, send a credit update */ /* There might be a special case when we just adjusted rx_max */ if ((p_port->credit_rx <= p_port->credit_rx_low) - && !p_port->rx.user_fc - && (p_port->credit_rx_max > p_port->credit_rx)) - { + && !p_port->rx.user_fc + && (p_port->credit_rx_max > p_port->credit_rx)) { rfc_send_credit(p_port->rfc.p_mcb, p_port->dlci, (UINT8) (p_port->credit_rx_max - p_port->credit_rx)); @@ -528,54 +508,46 @@ void port_flow_control_peer(tPORT *p_port, BOOLEAN enable, UINT16 count) } } /* else want to disable flow from peer */ - else - { + else { /* if client registered data callback, just do what they want */ - if (p_port->p_data_callback || p_port->p_data_co_callback) - { + if (p_port->p_data_callback || p_port->p_data_co_callback) { p_port->rx.peer_fc = TRUE; } /* if queue count reached credit rx max, set peer fc */ - else if (GKI_queue_length(&p_port->rx.queue) >= p_port->credit_rx_max) - { + else if (GKI_queue_length(&p_port->rx.queue) >= p_port->credit_rx_max) { p_port->rx.peer_fc = TRUE; } } } /* else using TS 07.10 flow control */ - else - { + else { /* if want to enable flow from peer */ - if (enable) - { + if (enable) { /* If rfcomm suspended traffic from the peer based on the rx_queue_size */ /* check if it can be resumed now */ if (p_port->rx.peer_fc - && (p_port->rx.queue_size < PORT_RX_LOW_WM) - && (GKI_queue_length(&p_port->rx.queue) < PORT_RX_BUF_LOW_WM)) - { + && (p_port->rx.queue_size < PORT_RX_LOW_WM) + && (GKI_queue_length(&p_port->rx.queue) < PORT_RX_BUF_LOW_WM)) { p_port->rx.peer_fc = FALSE; /* If user did not force flow control allow traffic now */ - if (!p_port->rx.user_fc) + if (!p_port->rx.user_fc) { RFCOMM_FlowReq (p_port->rfc.p_mcb, p_port->dlci, TRUE); + } } } /* else want to disable flow from peer */ - else - { + else { /* if client registered data callback, just do what they want */ - if (p_port->p_data_callback || p_port->p_data_co_callback) - { + if (p_port->p_data_callback || p_port->p_data_co_callback) { p_port->rx.peer_fc = TRUE; RFCOMM_FlowReq (p_port->rfc.p_mcb, p_port->dlci, FALSE); } /* Check the size of the rx queue. If it exceeds certain */ /* level and flow control has not been sent to the peer do it now */ else if ( ((p_port->rx.queue_size > PORT_RX_HIGH_WM) - || (GKI_queue_length(&p_port->rx.queue) > PORT_RX_BUF_HIGH_WM)) - && !p_port->rx.peer_fc) - { + || (GKI_queue_length(&p_port->rx.queue) > PORT_RX_BUF_HIGH_WM)) + && !p_port->rx.peer_fc) { RFCOMM_TRACE_EVENT ("PORT_DataInd Data reached HW. Sending FC set."); p_port->rx.peer_fc = TRUE; diff --git a/components/bt/bluedroid/stack/rfcomm/rfc_l2cap_if.c b/components/bt/bluedroid/stack/rfcomm/rfc_l2cap_if.c old mode 100755 new mode 100644 index fba523a0f0..b050532d01 --- a/components/bt/bluedroid/stack/rfcomm/rfc_l2cap_if.c +++ b/components/bt/bluedroid/stack/rfcomm/rfc_l2cap_if.c @@ -91,11 +91,9 @@ void RFCOMM_ConnectInd (BD_ADDR bd_addr, UINT16 lcid, UINT16 psm, UINT8 id) tRFC_MCB *p_mcb = rfc_alloc_multiplexer_channel(bd_addr, FALSE); UNUSED(psm); - if ((p_mcb)&&(p_mcb->state != RFC_MX_STATE_IDLE)) - { + if ((p_mcb) && (p_mcb->state != RFC_MX_STATE_IDLE)) { /* if this is collision case */ - if ((p_mcb->is_initiator)&&(p_mcb->state == RFC_MX_STATE_WAIT_CONN_CNF)) - { + if ((p_mcb->is_initiator) && (p_mcb->state == RFC_MX_STATE_WAIT_CONN_CNF)) { p_mcb->pending_lcid = lcid; p_mcb->pending_id = id; @@ -103,26 +101,21 @@ void RFCOMM_ConnectInd (BD_ADDR bd_addr, UINT16 lcid, UINT16 psm, UINT8 id) /* if peer gives up then local device rejects incoming connection and continues as initiator */ /* if timeout, local device disconnects outgoing connection and continues as acceptor */ RFCOMM_TRACE_DEBUG ("RFCOMM_ConnectInd start timer for collision, initiator's LCID(0x%x), acceptor's LCID(0x%x)", - p_mcb->lcid, p_mcb->pending_lcid); + p_mcb->lcid, p_mcb->pending_lcid); - rfc_timer_start(p_mcb, (UINT16)(GKI_get_os_tick_count()%10 + 2)); + rfc_timer_start(p_mcb, (UINT16)(GKI_get_os_tick_count() % 10 + 2)); return; - } - else - { + } else { /* we cannot accept connection request from peer at this state */ /* don't update lcid */ p_mcb = NULL; } - } - else - { + } else { /* store mcb even if null */ rfc_save_lcid_mcb (p_mcb, lcid); } - if (p_mcb == NULL) - { + if (p_mcb == NULL) { L2CA_ConnectRsp (bd_addr, id, lcid, L2CAP_CONN_NO_RESOURCES, 0); return; } @@ -145,17 +138,14 @@ void RFCOMM_ConnectCnf (UINT16 lcid, UINT16 result) { tRFC_MCB *p_mcb = rfc_find_lcid_mcb (lcid); - if (!p_mcb) - { + if (!p_mcb) { RFCOMM_TRACE_ERROR ("RFCOMM_ConnectCnf LCID:0x%x", lcid); return; } - if (p_mcb->pending_lcid) - { + if (p_mcb->pending_lcid) { /* if peer rejects our connect request but peer's connect request is pending */ - if (result != L2CAP_CONN_OK ) - { + if (result != L2CAP_CONN_OK ) { UINT16 i; UINT8 idx; @@ -172,12 +162,10 @@ void RFCOMM_ConnectCnf (UINT16 lcid, UINT16 result) rfc_save_lcid_mcb (p_mcb, p_mcb->lcid); /* update direction bit */ - for (i = 0; i < RFCOMM_MAX_DLCI; i += 2) - { - if ((idx = p_mcb->port_inx[i]) != 0) - { + for (i = 0; i < RFCOMM_MAX_DLCI; i += 2) { + if ((idx = p_mcb->port_inx[i]) != 0) { p_mcb->port_inx[i] = 0; - p_mcb->port_inx[i+1] = idx; + p_mcb->port_inx[i + 1] = idx; rfc_cb.port.port[idx - 1].dlci += 1; RFCOMM_TRACE_DEBUG ("RFCOMM MX - DLCI:%d -> %d", i, rfc_cb.port.port[idx - 1].dlci); } @@ -185,9 +173,7 @@ void RFCOMM_ConnectCnf (UINT16 lcid, UINT16 result) rfc_mx_sm_execute (p_mcb, RFC_MX_EVENT_CONN_IND, &(p_mcb->pending_id)); return; - } - else - { + } else { RFCOMM_TRACE_DEBUG ("RFCOMM_ConnectCnf peer gave up pending LCID(0x%x)", p_mcb->pending_lcid); /* Peer gave up his connection request, make sure cleaning up L2CAP channel */ @@ -217,8 +203,7 @@ void RFCOMM_ConfigInd (UINT16 lcid, tL2CAP_CFG_INFO *p_cfg) { tRFC_MCB *p_mcb = rfc_find_lcid_mcb (lcid); - if (!p_mcb) - { + if (!p_mcb) { RFCOMM_TRACE_ERROR ("RFCOMM_ConfigInd LCID:0x%x", lcid); return; } @@ -240,8 +225,7 @@ void RFCOMM_ConfigCnf (UINT16 lcid, tL2CAP_CFG_INFO *p_cfg) { tRFC_MCB *p_mcb = rfc_find_lcid_mcb (lcid); - if (!p_mcb) - { + if (!p_mcb) { RFCOMM_TRACE_ERROR ("RFCOMM_ConfigCnf no MCB LCID:0x%x", lcid); return; } @@ -276,13 +260,11 @@ void RFCOMM_DisconnectInd (UINT16 lcid, BOOLEAN is_conf_needed) { tRFC_MCB *p_mcb = rfc_find_lcid_mcb (lcid); - if (is_conf_needed) - { + if (is_conf_needed) { L2CA_DisconnectRsp (lcid); } - if (!p_mcb) - { + if (!p_mcb) { RFCOMM_TRACE_WARNING ("RFCOMM_DisconnectInd LCID:0x%x", lcid); return; } @@ -308,8 +290,7 @@ void RFCOMM_BufDataInd (UINT16 lcid, BT_HDR *p_buf) UINT8 event; - if (!p_mcb) - { + if (!p_mcb) { RFCOMM_TRACE_WARNING ("RFCOMM_BufDataInd LCID:0x%x", lcid); GKI_freebuf (p_buf); return; @@ -318,17 +299,14 @@ void RFCOMM_BufDataInd (UINT16 lcid, BT_HDR *p_buf) event = rfc_parse_data (p_mcb, &rfc_cb.rfc.rx_frame, p_buf); /* If the frame did not pass validation just ignore it */ - if (event == RFC_EVENT_BAD_FRAME) - { + if (event == RFC_EVENT_BAD_FRAME) { GKI_freebuf (p_buf); return; } - if (rfc_cb.rfc.rx_frame.dlci == RFCOMM_MX_DLCI) - { + if (rfc_cb.rfc.rx_frame.dlci == RFCOMM_MX_DLCI) { /* Take special care of the Multiplexer Control Messages */ - if (event == RFC_EVENT_UIH) - { + if (event == RFC_EVENT_UIH) { rfc_process_mx_message (p_mcb, p_buf); return; } @@ -341,20 +319,18 @@ void RFCOMM_BufDataInd (UINT16 lcid, BT_HDR *p_buf) /* The frame was received on the data channel DLCI, verify that DLC exists */ if (((p_port = port_find_mcb_dlci_port (p_mcb, rfc_cb.rfc.rx_frame.dlci)) == NULL) - || (!p_port->rfc.p_mcb)) - { + || (!p_port->rfc.p_mcb)) { /* If this is a SABME on the new port, check if any appl is waiting for it */ - if (event != RFC_EVENT_SABME) - { + if (event != RFC_EVENT_SABME) { if (( p_mcb->is_initiator && !rfc_cb.rfc.rx_frame.cr) - || (!p_mcb->is_initiator && rfc_cb.rfc.rx_frame.cr)) + || (!p_mcb->is_initiator && rfc_cb.rfc.rx_frame.cr)) { rfc_send_dm (p_mcb, rfc_cb.rfc.rx_frame.dlci, rfc_cb.rfc.rx_frame.pf); + } GKI_freebuf (p_buf); return; } - if ((p_port = port_find_dlci_port (rfc_cb.rfc.rx_frame.dlci)) == NULL) - { + if ((p_port = port_find_dlci_port (rfc_cb.rfc.rx_frame.dlci)) == NULL) { rfc_send_dm (p_mcb, rfc_cb.rfc.rx_frame.dlci, TRUE); GKI_freebuf (p_buf); return; @@ -363,15 +339,16 @@ void RFCOMM_BufDataInd (UINT16 lcid, BT_HDR *p_buf) p_port->rfc.p_mcb = p_mcb; } - if (event == RFC_EVENT_UIH) - { - if (p_buf->len > 0) + if (event == RFC_EVENT_UIH) { + if (p_buf->len > 0) { rfc_port_sm_execute (p_port, event, p_buf); - else + } else { GKI_freebuf (p_buf); + } - if (rfc_cb.rfc.rx_frame.credit != 0) + if (rfc_cb.rfc.rx_frame.credit != 0) { rfc_inc_credit (p_port, rfc_cb.rfc.rx_frame.credit); + } return; } @@ -391,13 +368,10 @@ void RFCOMM_CongestionStatusInd (UINT16 lcid, BOOLEAN is_congested) { tRFC_MCB *p_mcb = rfc_find_lcid_mcb (lcid); - if (!p_mcb) - { + if (!p_mcb) { RFCOMM_TRACE_ERROR ("RFCOMM_CongestionStatusInd dropped LCID:0x%x", lcid); return; - } - else - { + } else { RFCOMM_TRACE_EVENT ("RFCOMM_CongestionStatusInd LCID:0x%x", lcid); } rfc_process_l2cap_congestion (p_mcb, is_congested); @@ -414,17 +388,12 @@ tRFC_MCB *rfc_find_lcid_mcb (UINT16 lcid) { tRFC_MCB *p_mcb; - if (lcid - L2CAP_BASE_APPL_CID >= MAX_L2CAP_CHANNELS) - { + if (lcid - L2CAP_BASE_APPL_CID >= MAX_L2CAP_CHANNELS) { RFCOMM_TRACE_ERROR ("rfc_find_lcid_mcb LCID:0x%x", lcid); return (NULL); - } - else - { - if ((p_mcb = rfc_cb.rfc.p_rfc_lcid_mcb[lcid - L2CAP_BASE_APPL_CID]) != NULL) - { - if (p_mcb->lcid != lcid) - { + } else { + if ((p_mcb = rfc_cb.rfc.p_rfc_lcid_mcb[lcid - L2CAP_BASE_APPL_CID]) != NULL) { + if (p_mcb->lcid != lcid) { RFCOMM_TRACE_WARNING ("rfc_find_lcid_mcb LCID reused LCID:0x%x current:0x%x", lcid, p_mcb->lcid); return (NULL); } diff --git a/components/bt/bluedroid/stack/rfcomm/rfc_mx_fsm.c b/components/bt/bluedroid/stack/rfcomm/rfc_mx_fsm.c old mode 100755 new mode 100644 index 10d6d6a0ee..70411e9846 --- a/components/bt/bluedroid/stack/rfcomm/rfc_mx_fsm.c +++ b/components/bt/bluedroid/stack/rfcomm/rfc_mx_fsm.c @@ -66,8 +66,7 @@ static void rfc_mx_conf_cnf (tRFC_MCB *p_mcb, tL2CAP_CFG_INFO *p_cfg); *******************************************************************************/ void rfc_mx_sm_execute (tRFC_MCB *p_mcb, UINT16 event, void *p_data) { - switch (p_mcb->state) - { + switch (p_mcb->state) { case RFC_MX_STATE_IDLE: rfc_mx_sm_state_idle (p_mcb, event, p_data); break; @@ -114,15 +113,13 @@ void rfc_mx_sm_execute (tRFC_MCB *p_mcb, UINT16 event, void *p_data) void rfc_mx_sm_state_idle (tRFC_MCB *p_mcb, UINT16 event, void *p_data) { RFCOMM_TRACE_EVENT ("rfc_mx_sm_state_idle - evt:%d", event); - switch (event) - { + switch (event) { case RFC_MX_EVENT_START_REQ: /* Initialize L2CAP MTU */ p_mcb->peer_l2cap_mtu = L2CAP_DEFAULT_MTU - RFCOMM_MIN_OFFSET - 1; - if ((p_mcb->lcid = L2CA_ConnectReq (BT_PSM_RFCOMM, p_mcb->bd_addr)) == 0) - { + if ((p_mcb->lcid = L2CA_ConnectReq (BT_PSM_RFCOMM, p_mcb->bd_addr)) == 0) { PORT_StartCnf (p_mcb, RFCOMM_ERROR); return; } @@ -181,8 +178,7 @@ void rfc_mx_sm_state_idle (tRFC_MCB *p_mcb, UINT16 event, void *p_data) void rfc_mx_sm_state_wait_conn_cnf (tRFC_MCB *p_mcb, UINT16 event, void *p_data) { RFCOMM_TRACE_EVENT ("rfc_mx_sm_state_wait_conn_cnf - evt:%d", event); - switch (event) - { + switch (event) { case RFC_MX_EVENT_START_REQ: RFCOMM_TRACE_ERROR ("Mx error state %d event %d", p_mcb->state, event); return; @@ -194,8 +190,7 @@ void rfc_mx_sm_state_wait_conn_cnf (tRFC_MCB *p_mcb, UINT16 event, void *p_data) return; case RFC_MX_EVENT_CONN_CNF: - if (*((UINT16 *)p_data) != L2CAP_SUCCESS) - { + if (*((UINT16 *)p_data) != L2CAP_SUCCESS) { p_mcb->state = RFC_MX_STATE_IDLE; PORT_StartCnf (p_mcb, *((UINT16 *)p_data)); @@ -215,8 +210,7 @@ void rfc_mx_sm_state_wait_conn_cnf (tRFC_MCB *p_mcb, UINT16 event, void *p_data) L2CA_DisconnectReq (p_mcb->lcid); /* we gave up outgoing connection request then try peer's request */ - if (p_mcb->pending_lcid) - { + if (p_mcb->pending_lcid) { UINT16 i; UINT8 idx; @@ -229,21 +223,17 @@ void rfc_mx_sm_state_wait_conn_cnf (tRFC_MCB *p_mcb, UINT16 event, void *p_data) p_mcb->is_initiator = FALSE; /* update direction bit */ - for (i = 0; i < RFCOMM_MAX_DLCI; i += 2) - { - if ((idx = p_mcb->port_inx[i]) != 0) - { + for (i = 0; i < RFCOMM_MAX_DLCI; i += 2) { + if ((idx = p_mcb->port_inx[i]) != 0) { p_mcb->port_inx[i] = 0; - p_mcb->port_inx[i+1] = idx; + p_mcb->port_inx[i + 1] = idx; rfc_cb.port.port[idx - 1].dlci += 1; RFCOMM_TRACE_DEBUG ("RFCOMM MX - DLCI:%d -> %d", i, rfc_cb.port.port[idx - 1].dlci); } } rfc_mx_sm_execute (p_mcb, RFC_MX_EVENT_CONN_IND, &(p_mcb->pending_id)); - } - else - { + } else { PORT_CloseInd (p_mcb); } return; @@ -265,8 +255,7 @@ void rfc_mx_sm_state_wait_conn_cnf (tRFC_MCB *p_mcb, UINT16 event, void *p_data) void rfc_mx_sm_state_configure (tRFC_MCB *p_mcb, UINT16 event, void *p_data) { RFCOMM_TRACE_EVENT ("rfc_mx_sm_state_configure - evt:%d", event); - switch (event) - { + switch (event) { case RFC_MX_EVENT_START_REQ: case RFC_MX_EVENT_CONN_CNF: @@ -312,8 +301,7 @@ void rfc_mx_sm_sabme_wait_ua (tRFC_MCB *p_mcb, UINT16 event, void *p_data) UNUSED(p_data); RFCOMM_TRACE_EVENT ("rfc_mx_sm_sabme_wait_ua - evt:%d", event); - switch (event) - { + switch (event) { case RFC_MX_EVENT_START_REQ: case RFC_MX_EVENT_CONN_CNF: RFCOMM_TRACE_ERROR ("Mx error state %d event %d", p_mcb->state, event); @@ -346,7 +334,7 @@ void rfc_mx_sm_sabme_wait_ua (tRFC_MCB *p_mcb, UINT16 event, void *p_data) case RFC_EVENT_DM: rfc_timer_stop (p_mcb); - /* Case falls through */ + /* Case falls through */ case RFC_MX_EVENT_CONF_IND: /* workaround: we don't support reconfig */ case RFC_MX_EVENT_CONF_CNF: /* workaround: we don't support reconfig */ @@ -373,8 +361,7 @@ void rfc_mx_sm_sabme_wait_ua (tRFC_MCB *p_mcb, UINT16 event, void *p_data) void rfc_mx_sm_state_wait_sabme (tRFC_MCB *p_mcb, UINT16 event, void *p_data) { RFCOMM_TRACE_EVENT ("rfc_mx_sm_state_wait_sabme - evt:%d", event); - switch (event) - { + switch (event) { case RFC_MX_EVENT_DISC_IND: p_mcb->state = RFC_MX_STATE_IDLE; PORT_CloseInd (p_mcb); @@ -382,8 +369,7 @@ void rfc_mx_sm_state_wait_sabme (tRFC_MCB *p_mcb, UINT16 event, void *p_data) case RFC_EVENT_SABME: /* if we gave up outgoing connection request */ - if (p_mcb->pending_lcid) - { + if (p_mcb->pending_lcid) { p_mcb->pending_lcid = 0; rfc_send_ua (p_mcb, RFCOMM_MX_DLCI); @@ -394,19 +380,16 @@ void rfc_mx_sm_state_wait_sabme (tRFC_MCB *p_mcb, UINT16 event, void *p_data) /* MX channel collision has been resolved, continue to open ports */ PORT_StartCnf (p_mcb, RFCOMM_SUCCESS); - } - else - { + } else { rfc_timer_stop (p_mcb); PORT_StartInd (p_mcb); } return; case RFC_MX_EVENT_START_RSP: - if (*((UINT16 *)p_data) != RFCOMM_SUCCESS) + if (*((UINT16 *)p_data) != RFCOMM_SUCCESS) { rfc_send_dm (p_mcb, RFCOMM_MX_DLCI, TRUE); - else - { + } else { rfc_send_ua (p_mcb, RFCOMM_MX_DLCI); p_mcb->state = RFC_MX_STATE_CONNECTED; @@ -443,8 +426,7 @@ void rfc_mx_sm_state_connected (tRFC_MCB *p_mcb, UINT16 event, void *p_data) RFCOMM_TRACE_EVENT ("rfc_mx_sm_state_connected - evt:%d", event); - switch (event) - { + switch (event) { case RFC_EVENT_TIMEOUT: case RFC_MX_EVENT_CLOSE_REQ: rfc_timer_start (p_mcb, RFC_DISC_TIMEOUT); @@ -461,8 +443,7 @@ void rfc_mx_sm_state_connected (tRFC_MCB *p_mcb, UINT16 event, void *p_data) /* Reply with UA. If initiator bring down L2CAP connection */ /* If server wait for some time if client decide to reinitiate channel */ rfc_send_ua (p_mcb, RFCOMM_MX_DLCI); - if (p_mcb->is_initiator) - { + if (p_mcb->is_initiator) { L2CA_DisconnectReq (p_mcb->lcid); } /* notify all ports that connection is gone */ @@ -488,18 +469,15 @@ void rfc_mx_sm_state_disc_wait_ua (tRFC_MCB *p_mcb, UINT16 event, void *p_data) BT_HDR *p_buf; RFCOMM_TRACE_EVENT ("rfc_mx_sm_state_disc_wait_ua - evt:%d", event); - switch (event) - { + switch (event) { case RFC_EVENT_UA: case RFC_EVENT_DM: case RFC_EVENT_TIMEOUT: L2CA_DisconnectReq (p_mcb->lcid); - if (p_mcb->restart_required) - { + if (p_mcb->restart_required) { /* Start Request was received while disconnecting. Execute it again */ - if ((p_mcb->lcid = L2CA_ConnectReq (BT_PSM_RFCOMM, p_mcb->bd_addr)) == 0) - { + if ((p_mcb->lcid = L2CA_ConnectReq (BT_PSM_RFCOMM, p_mcb->bd_addr)) == 0) { PORT_StartCnf (p_mcb, RFCOMM_ERROR); return; } @@ -507,8 +485,9 @@ void rfc_mx_sm_state_disc_wait_ua (tRFC_MCB *p_mcb, UINT16 event, void *p_data) rfc_save_lcid_mcb (p_mcb, p_mcb->lcid); /* clean up before reuse it */ - while ((p_buf = (BT_HDR *)GKI_dequeue(&p_mcb->cmd_q)) != NULL) + while ((p_buf = (BT_HDR *)GKI_dequeue(&p_mcb->cmd_q)) != NULL) { GKI_freebuf(p_buf); + } rfc_timer_start (p_mcb, RFC_MCB_INIT_INACT_TIMER); @@ -570,14 +549,14 @@ static void rfc_mx_send_config_req (tRFC_MCB *p_mcb) cfg.mtu_present = TRUE; cfg.mtu = L2CAP_MTU_SIZE; -/* Defaults set by memset - cfg.flush_to_present = FALSE; - cfg.qos_present = FALSE; - cfg.fcr_present = FALSE; - cfg.fcr.mode = L2CAP_FCR_BASIC_MODE; - cfg.fcs_present = FALSE; - cfg.fcs = N/A when fcs_present is FALSE; -*/ + /* Defaults set by memset + cfg.flush_to_present = FALSE; + cfg.qos_present = FALSE; + cfg.fcr_present = FALSE; + cfg.fcr.mode = L2CAP_FCR_BASIC_MODE; + cfg.fcs_present = FALSE; + cfg.fcs = N/A when fcs_present is FALSE; + */ L2CA_ConfigReq (p_mcb->lcid, &cfg); } @@ -596,10 +575,8 @@ static void rfc_mx_conf_cnf (tRFC_MCB *p_mcb, tL2CAP_CFG_INFO *p_cfg) { RFCOMM_TRACE_EVENT ("rfc_mx_conf_cnf p_cfg:%08x res:%d ", p_cfg, (p_cfg) ? p_cfg->result : 0); - if (p_cfg->result != L2CAP_CFG_OK) - { - if (p_mcb->is_initiator) - { + if (p_cfg->result != L2CAP_CFG_OK) { + if (p_mcb->is_initiator) { PORT_StartCnf (p_mcb, p_cfg->result); L2CA_DisconnectReq (p_mcb->lcid); } @@ -608,16 +585,12 @@ static void rfc_mx_conf_cnf (tRFC_MCB *p_mcb, tL2CAP_CFG_INFO *p_cfg) } p_mcb->local_cfg_sent = TRUE; - if ((p_mcb->state == RFC_MX_STATE_CONFIGURE) && p_mcb->peer_cfg_rcvd) - { - if (p_mcb->is_initiator) - { + if ((p_mcb->state == RFC_MX_STATE_CONFIGURE) && p_mcb->peer_cfg_rcvd) { + if (p_mcb->is_initiator) { p_mcb->state = RFC_MX_STATE_SABME_WAIT_UA; rfc_send_sabme (p_mcb, RFCOMM_MX_DLCI); rfc_timer_start (p_mcb, RFC_T1_TIMEOUT); - } - else - { + } else { p_mcb->state = RFC_MX_STATE_WAIT_SABME; rfc_timer_start (p_mcb, RFCOMM_CONN_TIMEOUT); /* - increased from T2=20 to CONN=120 to allow the user more than 10 sec to type in the @@ -639,10 +612,11 @@ static void rfc_mx_conf_ind (tRFC_MCB *p_mcb, tL2CAP_CFG_INFO *p_cfg) { /* Save peer L2CAP MTU if present */ /* RFCOMM adds 3-4 bytes in the beginning and 1 bytes FCS */ - if (p_cfg->mtu_present) + if (p_cfg->mtu_present) { p_mcb->peer_l2cap_mtu = p_cfg->mtu - RFCOMM_MIN_OFFSET - 1; - else + } else { p_mcb->peer_l2cap_mtu = L2CAP_DEFAULT_MTU - RFCOMM_MIN_OFFSET - 1; + } p_cfg->mtu_present = FALSE; p_cfg->flush_to_present = FALSE; @@ -653,16 +627,12 @@ static void rfc_mx_conf_ind (tRFC_MCB *p_mcb, tL2CAP_CFG_INFO *p_cfg) L2CA_ConfigRsp (p_mcb->lcid, p_cfg); p_mcb->peer_cfg_rcvd = TRUE; - if ((p_mcb->state == RFC_MX_STATE_CONFIGURE) && p_mcb->local_cfg_sent) - { - if (p_mcb->is_initiator) - { + if ((p_mcb->state == RFC_MX_STATE_CONFIGURE) && p_mcb->local_cfg_sent) { + if (p_mcb->is_initiator) { p_mcb->state = RFC_MX_STATE_SABME_WAIT_UA; rfc_send_sabme (p_mcb, RFCOMM_MX_DLCI); rfc_timer_start (p_mcb, RFC_T1_TIMEOUT); - } - else - { + } else { p_mcb->state = RFC_MX_STATE_WAIT_SABME; rfc_timer_start (p_mcb, RFCOMM_CONN_TIMEOUT); /* - increased from T2=20 to CONN=120 to allow the user more than 10 sec to type in the diff --git a/components/bt/bluedroid/stack/rfcomm/rfc_port_fsm.c b/components/bt/bluedroid/stack/rfcomm/rfc_port_fsm.c old mode 100755 new mode 100644 index 0d082aac9e..da1e81e806 --- a/components/bt/bluedroid/stack/rfcomm/rfc_port_fsm.c +++ b/components/bt/bluedroid/stack/rfcomm/rfc_port_fsm.c @@ -60,14 +60,12 @@ static void rfc_set_port_state(tPORT_STATE *port_pars, MX_FRAME *p_frame); *******************************************************************************/ void rfc_port_sm_execute (tPORT *p_port, UINT16 event, void *p_data) { - if (!p_port) - { + if (!p_port) { RFCOMM_TRACE_WARNING ("NULL port event %d", event); return; } - switch (p_port->rfc.state) - { + switch (p_port->rfc.state) { case RFC_STATE_CLOSED: rfc_port_sm_state_closed (p_port, event, p_data); break; @@ -108,8 +106,7 @@ void rfc_port_sm_execute (tPORT *p_port, UINT16 event, void *p_data) *******************************************************************************/ void rfc_port_sm_state_closed (tPORT *p_port, UINT16 event, void *p_data) { - switch (event) - { + switch (event) { case RFC_EVENT_OPEN: p_port->rfc.state = RFC_STATE_ORIG_WAIT_SEC_CHECK; btm_sec_mx_access_request (p_port->rfc.p_mcb->bd_addr, BT_PSM_RFCOMM, TRUE, @@ -176,8 +173,7 @@ void rfc_port_sm_state_closed (tPORT *p_port, UINT16 event, void *p_data) *******************************************************************************/ void rfc_port_sm_sabme_wait_ua (tPORT *p_port, UINT16 event, void *p_data) { - switch (event) - { + switch (event) { case RFC_EVENT_OPEN: case RFC_EVENT_ESTABLISH_RSP: RFCOMM_TRACE_ERROR ("Port error state %d event %d", p_port->rfc.state, event); @@ -248,22 +244,17 @@ void rfc_port_sm_sabme_wait_ua (tPORT *p_port, UINT16 event, void *p_data) *******************************************************************************/ void rfc_port_sm_term_wait_sec_check (tPORT *p_port, UINT16 event, void *p_data) { - switch (event) - { + switch (event) { case RFC_EVENT_SEC_COMPLETE: - if (*((UINT8 *)p_data) != BTM_SUCCESS) - { + if (*((UINT8 *)p_data) != BTM_SUCCESS) { /* Authentication/authorization failed. If link is still */ /* up send DM and check if we need to start inactive timer */ - if (p_port->rfc.p_mcb) - { + if (p_port->rfc.p_mcb) { rfc_send_dm (p_port->rfc.p_mcb, p_port->dlci, TRUE); p_port->rfc.p_mcb->is_disc_initiator = TRUE; port_rfc_closed (p_port, PORT_SEC_FAILED); } - } - else - { + } else { PORT_DlcEstablishInd (p_port->rfc.p_mcb, p_port->dlci, p_port->rfc.p_mcb->peer_l2cap_mtu); } return; @@ -300,13 +291,11 @@ void rfc_port_sm_term_wait_sec_check (tPORT *p_port, UINT16 event, void *p_data) return; case RFC_EVENT_ESTABLISH_RSP: - if (*((UINT8 *)p_data) != RFCOMM_SUCCESS) - { - if (p_port->rfc.p_mcb) + if (*((UINT8 *)p_data) != RFCOMM_SUCCESS) { + if (p_port->rfc.p_mcb) { rfc_send_dm (p_port->rfc.p_mcb, p_port->dlci, TRUE); - } - else - { + } + } else { rfc_send_ua (p_port->rfc.p_mcb, p_port->dlci); p_port->rfc.state = RFC_STATE_OPENED; } @@ -329,11 +318,9 @@ void rfc_port_sm_term_wait_sec_check (tPORT *p_port, UINT16 event, void *p_data) *******************************************************************************/ void rfc_port_sm_orig_wait_sec_check (tPORT *p_port, UINT16 event, void *p_data) { - switch (event) - { + switch (event) { case RFC_EVENT_SEC_COMPLETE: - if (*((UINT8 *)p_data) != BTM_SUCCESS) - { + if (*((UINT8 *)p_data) != BTM_SUCCESS) { p_port->rfc.p_mcb->is_disc_initiator = TRUE; PORT_DlcEstablishCnf (p_port->rfc.p_mcb, p_port->dlci, 0, RFCOMM_SECURITY_ERR); rfc_port_closed (p_port); @@ -379,8 +366,7 @@ void rfc_port_sm_orig_wait_sec_check (tPORT *p_port, UINT16 event, void *p_data) *******************************************************************************/ void rfc_port_sm_opened (tPORT *p_port, UINT16 event, void *p_data) { - switch (event) - { + switch (event) { case RFC_EVENT_OPEN: RFCOMM_TRACE_ERROR ("Port error state %d event %d", p_port->rfc.state, event); return; @@ -401,15 +387,12 @@ void rfc_port_sm_opened (tPORT *p_port, UINT16 event, void *p_data) /* There might be an initial case when we reduced rx_max and credit_rx is still */ /* bigger. Make sure that we do not send 255 */ if ((p_port->rfc.p_mcb->flow == PORT_FC_CREDIT) - && (((BT_HDR *)p_data)->len < p_port->peer_mtu) - && (!p_port->rx.user_fc) - && (p_port->credit_rx_max > p_port->credit_rx)) - { + && (((BT_HDR *)p_data)->len < p_port->peer_mtu) + && (!p_port->rx.user_fc) + && (p_port->credit_rx_max > p_port->credit_rx)) { ((BT_HDR *)p_data)->layer_specific = (UINT8) (p_port->credit_rx_max - p_port->credit_rx); p_port->credit_rx = p_port->credit_rx_max; - } - else - { + } else { ((BT_HDR *)p_data)->layer_specific = 0; } rfc_send_buf_uih (p_port->rfc.p_mcb, p_port->dlci, (BT_HDR *)p_data); @@ -431,14 +414,13 @@ void rfc_port_sm_opened (tPORT *p_port, UINT16 event, void *p_data) case RFC_EVENT_DISC: p_port->rfc.state = RFC_STATE_CLOSED; rfc_send_ua (p_port->rfc.p_mcb, p_port->dlci); - if(!GKI_queue_is_empty(&p_port->rx.queue)) - { + if (!GKI_queue_is_empty(&p_port->rx.queue)) { /* give a chance to upper stack to close port properly */ RFCOMM_TRACE_DEBUG("port queue is not empty"); rfc_port_timer_start (p_port, RFC_DISC_TIMEOUT); - } - else + } else { PORT_DlcReleaseInd (p_port->rfc.p_mcb, p_port->dlci); + } return; case RFC_EVENT_UIH: @@ -466,8 +448,7 @@ void rfc_port_sm_opened (tPORT *p_port, UINT16 event, void *p_data) *******************************************************************************/ void rfc_port_sm_disc_wait_ua (tPORT *p_port, UINT16 event, void *p_data) { - switch (event) - { + switch (event) { case RFC_EVENT_OPEN: case RFC_EVENT_ESTABLISH_RSP: RFCOMM_TRACE_ERROR ("Port error state %d event %d", p_port->rfc.state, event); @@ -483,9 +464,9 @@ void rfc_port_sm_disc_wait_ua (tPORT *p_port, UINT16 event, void *p_data) case RFC_EVENT_UA: p_port->rfc.p_mcb->is_disc_initiator = TRUE; - /* Case falls through */ + /* Case falls through */ - case RFC_EVENT_DM: + case RFC_EVENT_DM: rfc_port_closed (p_port); return; @@ -537,16 +518,12 @@ void rfc_process_pn (tRFC_MCB *p_mcb, BOOLEAN is_command, MX_FRAME *p_frame) tPORT *p_port; UINT8 dlci = p_frame->dlci; - if (is_command) - { + if (is_command) { /* Ignore if Multiplexer is being shut down */ - if (p_mcb->state != RFC_MX_STATE_DISC_WAIT_UA) - { + if (p_mcb->state != RFC_MX_STATE_DISC_WAIT_UA) { PORT_ParNegInd (p_mcb, dlci, p_frame->u.pn.mtu, - p_frame->u.pn.conv_layer, p_frame->u.pn.k); - } - else - { + p_frame->u.pn.conv_layer, p_frame->u.pn.k); + } else { rfc_send_dm(p_mcb, dlci, FALSE); RFCOMM_TRACE_WARNING("***** MX PN while disconnecting *****"); } @@ -555,8 +532,9 @@ void rfc_process_pn (tRFC_MCB *p_mcb, BOOLEAN is_command, MX_FRAME *p_frame) } /* If we are not awaiting response just ignore it */ p_port = port_find_mcb_dlci_port (p_mcb, dlci); - if ((p_port == NULL) || !(p_port->rfc.expected_rsp & RFC_RSP_PN)) + if ((p_port == NULL) || !(p_port->rfc.expected_rsp & RFC_RSP_PN)) { return; + } p_port->rfc.expected_rsp &= ~RFC_RSP_PN; @@ -581,11 +559,9 @@ void rfc_process_rpn (tRFC_MCB *p_mcb, BOOLEAN is_command, tPORT_STATE port_pars; tPORT *p_port; - if ((p_port = port_find_mcb_dlci_port (p_mcb, p_frame->dlci)) == NULL) - { + if ((p_port = port_find_mcb_dlci_port (p_mcb, p_frame->dlci)) == NULL) { /* This is the first command on the port */ - if (is_command) - { + if (is_command) { memset(&port_pars, 0, sizeof(tPORT_STATE)); rfc_set_port_state(&port_pars, p_frame); @@ -595,8 +571,7 @@ void rfc_process_rpn (tRFC_MCB *p_mcb, BOOLEAN is_command, return; } - if (is_command && is_request) - { + if (is_command && is_request) { /* This is the special situation when peer just request local pars */ port_pars = p_port->peer_port_pars; rfc_send_rpn (p_mcb, p_frame->dlci, FALSE, &p_port->peer_port_pars, 0); @@ -607,35 +582,31 @@ void rfc_process_rpn (tRFC_MCB *p_mcb, BOOLEAN is_command, rfc_set_port_state(&port_pars, p_frame); - if (is_command) - { + if (is_command) { PORT_PortNegInd (p_mcb, p_frame->dlci, &port_pars, p_frame->u.rpn.param_mask); return; } /* If we are not awaiting response just ignore it */ p_port = port_find_mcb_dlci_port (p_mcb, p_frame->dlci); - if ((p_port == NULL) || !(p_port->rfc.expected_rsp & (RFC_RSP_RPN | RFC_RSP_RPN_REPLY))) + if ((p_port == NULL) || !(p_port->rfc.expected_rsp & (RFC_RSP_RPN | RFC_RSP_RPN_REPLY))) { return; + } /* If we sent a request for port parameters to the peer he is replying with */ /* mask 0. */ rfc_port_timer_stop (p_port); - if (p_port->rfc.expected_rsp & RFC_RSP_RPN_REPLY) - { + if (p_port->rfc.expected_rsp & RFC_RSP_RPN_REPLY) { p_port->rfc.expected_rsp &= ~RFC_RSP_RPN_REPLY; p_port->peer_port_pars = port_pars; if ((port_pars.fc_type == (RFCOMM_FC_RTR_ON_INPUT | RFCOMM_FC_RTR_ON_OUTPUT)) - || (port_pars.fc_type == (RFCOMM_FC_RTC_ON_INPUT | RFCOMM_FC_RTC_ON_OUTPUT))) - { + || (port_pars.fc_type == (RFCOMM_FC_RTC_ON_INPUT | RFCOMM_FC_RTC_ON_OUTPUT))) { /* This is satisfactory port parameters. Set mask as it was Ok */ p_frame->u.rpn.param_mask = RFCOMM_RPN_PM_MASK; - } - else - { + } else { /* Current peer parameters are not good, try to fix them */ p_port->peer_port_pars.fc_type = (RFCOMM_FC_RTR_ON_INPUT | RFCOMM_FC_RTR_ON_OUTPUT); @@ -645,16 +616,15 @@ void rfc_process_rpn (tRFC_MCB *p_mcb, BOOLEAN is_command, rfc_port_timer_start (p_port, RFC_T2_TIMEOUT) ; return; } - } - else + } else { p_port->rfc.expected_rsp &= ~RFC_RSP_RPN; + } /* Check if all suggested parameters were accepted */ if (((p_frame->u.rpn.param_mask & (RFCOMM_RPN_PM_RTR_ON_INPUT | RFCOMM_RPN_PM_RTR_ON_OUTPUT)) == - (RFCOMM_RPN_PM_RTR_ON_INPUT | RFCOMM_RPN_PM_RTR_ON_OUTPUT)) - || ((p_frame->u.rpn.param_mask & (RFCOMM_RPN_PM_RTC_ON_INPUT | RFCOMM_RPN_PM_RTC_ON_OUTPUT)) == - (RFCOMM_RPN_PM_RTC_ON_INPUT | RFCOMM_RPN_PM_RTC_ON_OUTPUT))) - { + (RFCOMM_RPN_PM_RTR_ON_INPUT | RFCOMM_RPN_PM_RTR_ON_OUTPUT)) + || ((p_frame->u.rpn.param_mask & (RFCOMM_RPN_PM_RTC_ON_INPUT | RFCOMM_RPN_PM_RTC_ON_OUTPUT)) == + (RFCOMM_RPN_PM_RTC_ON_INPUT | RFCOMM_RPN_PM_RTC_ON_OUTPUT))) { PORT_PortNegCnf (p_mcb, p_port->dlci, &port_pars, RFCOMM_SUCCESS); return; } @@ -662,8 +632,7 @@ void rfc_process_rpn (tRFC_MCB *p_mcb, BOOLEAN is_command, /* If we were proposing RTR flow control try RTC flow control */ /* If we were proposing RTC flow control try no flow control */ /* otherwise drop the connection */ - if (p_port->peer_port_pars.fc_type == (RFCOMM_FC_RTR_ON_INPUT | RFCOMM_FC_RTR_ON_OUTPUT)) - { + if (p_port->peer_port_pars.fc_type == (RFCOMM_FC_RTR_ON_INPUT | RFCOMM_FC_RTR_ON_OUTPUT)) { /* Current peer parameters are not good, try to fix them */ p_port->peer_port_pars.fc_type = (RFCOMM_FC_RTC_ON_INPUT | RFCOMM_FC_RTC_ON_OUTPUT); @@ -676,8 +645,7 @@ void rfc_process_rpn (tRFC_MCB *p_mcb, BOOLEAN is_command, } /* Other side does not support flow control */ - if (p_port->peer_port_pars.fc_type == (RFCOMM_FC_RTC_ON_INPUT | RFCOMM_FC_RTC_ON_OUTPUT)) - { + if (p_port->peer_port_pars.fc_type == (RFCOMM_FC_RTC_ON_INPUT | RFCOMM_FC_RTC_ON_OUTPUT)) { p_port->peer_port_pars.fc_type = RFCOMM_FC_OFF; PORT_PortNegCnf (p_mcb, p_port->dlci, &port_pars, RFCOMM_SUCCESS); } @@ -700,42 +668,46 @@ void rfc_process_msc (tRFC_MCB *p_mcb, BOOLEAN is_command, MX_FRAME *p_frame) BOOLEAN new_peer_fc = FALSE; p_port = port_find_mcb_dlci_port (p_mcb, p_frame->dlci); - if (p_port == NULL) + if (p_port == NULL) { return; + } pars.modem_signal = 0; - if (modem_signals & RFCOMM_MSC_RTC) + if (modem_signals & RFCOMM_MSC_RTC) { pars.modem_signal |= MODEM_SIGNAL_DTRDSR; + } - if (modem_signals & RFCOMM_MSC_RTR) + if (modem_signals & RFCOMM_MSC_RTR) { pars.modem_signal |= MODEM_SIGNAL_RTSCTS; + } - if (modem_signals & RFCOMM_MSC_IC) + if (modem_signals & RFCOMM_MSC_IC) { pars.modem_signal |= MODEM_SIGNAL_RI; + } - if (modem_signals & RFCOMM_MSC_DV) + if (modem_signals & RFCOMM_MSC_DV) { pars.modem_signal |= MODEM_SIGNAL_DCD; + } pars.fc = ((modem_signals & RFCOMM_MSC_FC) == RFCOMM_MSC_FC); pars.break_signal = (p_frame->u.msc.break_present) ? - p_frame->u.msc.break_duration : 0; + p_frame->u.msc.break_duration : 0; pars.discard_buffers = 0; pars.break_signal_seq = RFCOMM_CTRL_BREAK_IN_SEQ; /* this is default */ /* Check if this command is passed only to indicate flow control */ - if (is_command) - { + if (is_command) { rfc_send_msc (p_mcb, p_frame->dlci, FALSE, &pars); - if (p_port->rfc.p_mcb->flow != PORT_FC_CREDIT) - { + if (p_port->rfc.p_mcb->flow != PORT_FC_CREDIT) { /* Spec 1.1 indicates that only FC bit is used for flow control */ p_port->peer_ctrl.fc = new_peer_fc = pars.fc; - if (new_peer_fc != p_port->tx.peer_fc) + if (new_peer_fc != p_port->tx.peer_fc) { PORT_FlowInd (p_mcb, p_frame->dlci, (BOOLEAN)!new_peer_fc); + } } PORT_ControlInd (p_mcb, p_frame->dlci, &pars); @@ -744,8 +716,9 @@ void rfc_process_msc (tRFC_MCB *p_mcb, BOOLEAN is_command, MX_FRAME *p_frame) } /* If we are not awaiting response just ignore it */ - if (!(p_port->rfc.expected_rsp & RFC_RSP_MSC)) + if (!(p_port->rfc.expected_rsp & RFC_RSP_MSC)) { return; + } p_port->rfc.expected_rsp &= ~RFC_RSP_MSC; @@ -767,18 +740,16 @@ void rfc_process_rls (tRFC_MCB *p_mcb, BOOLEAN is_command, MX_FRAME *p_frame) { tPORT *p_port; - if (is_command) - { + if (is_command) { PORT_LineStatusInd (p_mcb, p_frame->dlci, p_frame->u.rls.line_status); rfc_send_rls (p_mcb, p_frame->dlci, FALSE, p_frame->u.rls.line_status); - } - else - { + } else { p_port = port_find_mcb_dlci_port (p_mcb, p_frame->dlci); /* If we are not awaiting response just ignore it */ - if (!p_port || !(p_port->rfc.expected_rsp & RFC_RSP_RLS)) + if (!p_port || !(p_port->rfc.expected_rsp & RFC_RSP_RLS)) { return; + } p_port->rfc.expected_rsp &= ~RFC_RSP_RLS; @@ -827,14 +798,14 @@ void rfc_process_test_rsp (tRFC_MCB *p_mcb, BT_HDR *p_buf) *******************************************************************************/ void rfc_process_fcon (tRFC_MCB *p_mcb, BOOLEAN is_command) { - if (is_command) - { + if (is_command) { rfc_cb.rfc.peer_rx_disabled = FALSE; rfc_send_fcon (p_mcb, FALSE); - if (!p_mcb->l2cap_congested) + if (!p_mcb->l2cap_congested) { PORT_FlowInd (p_mcb, 0, TRUE); + } } } @@ -848,12 +819,12 @@ void rfc_process_fcon (tRFC_MCB *p_mcb, BOOLEAN is_command) *******************************************************************************/ void rfc_process_fcoff (tRFC_MCB *p_mcb, BOOLEAN is_command) { - if (is_command) - { + if (is_command) { rfc_cb.rfc.peer_rx_disabled = TRUE; - if (!p_mcb->l2cap_congested) + if (!p_mcb->l2cap_congested) { PORT_FlowInd (p_mcb, 0, FALSE); + } rfc_send_fcoff (p_mcb, FALSE); } @@ -871,17 +842,16 @@ void rfc_process_l2cap_congestion (tRFC_MCB *p_mcb, BOOLEAN is_congested) { p_mcb->l2cap_congested = is_congested; - if (!is_congested) - { + if (!is_congested) { rfc_check_send_cmd(p_mcb, NULL); } - if (!rfc_cb.rfc.peer_rx_disabled) - { - if (!is_congested) + if (!rfc_cb.rfc.peer_rx_disabled) { + if (!is_congested) { PORT_FlowInd (p_mcb, 0, TRUE); - else + } else { PORT_FlowInd (p_mcb, 0, FALSE); + } } } @@ -895,26 +865,34 @@ void rfc_process_l2cap_congestion (tRFC_MCB *p_mcb, BOOLEAN is_congested) void rfc_set_port_state(tPORT_STATE *port_pars, MX_FRAME *p_frame) { - if (p_frame->u.rpn.param_mask & RFCOMM_RPN_PM_BIT_RATE) + if (p_frame->u.rpn.param_mask & RFCOMM_RPN_PM_BIT_RATE) { port_pars->baud_rate = p_frame->u.rpn.baud_rate; - if (p_frame->u.rpn.param_mask & RFCOMM_RPN_PM_DATA_BITS) + } + if (p_frame->u.rpn.param_mask & RFCOMM_RPN_PM_DATA_BITS) { port_pars->byte_size = p_frame->u.rpn.byte_size; - if (p_frame->u.rpn.param_mask & RFCOMM_RPN_PM_STOP_BITS) + } + if (p_frame->u.rpn.param_mask & RFCOMM_RPN_PM_STOP_BITS) { port_pars->stop_bits = p_frame->u.rpn.stop_bits; - if (p_frame->u.rpn.param_mask & RFCOMM_RPN_PM_PARITY) + } + if (p_frame->u.rpn.param_mask & RFCOMM_RPN_PM_PARITY) { port_pars->parity = p_frame->u.rpn.parity; - if (p_frame->u.rpn.param_mask & RFCOMM_RPN_PM_PARITY_TYPE) + } + if (p_frame->u.rpn.param_mask & RFCOMM_RPN_PM_PARITY_TYPE) { port_pars->parity_type = p_frame->u.rpn.parity_type; + } if (p_frame->u.rpn.param_mask & (RFCOMM_RPN_PM_XONXOFF_ON_INPUT | RFCOMM_RPN_PM_XONXOFF_ON_OUTPUT | RFCOMM_RPN_PM_RTR_ON_INPUT | RFCOMM_RPN_PM_RTR_ON_OUTPUT | RFCOMM_RPN_PM_RTC_ON_INPUT | - RFCOMM_RPN_PM_RTC_ON_OUTPUT)) + RFCOMM_RPN_PM_RTC_ON_OUTPUT)) { port_pars->fc_type = p_frame->u.rpn.fc_type; - if (p_frame->u.rpn.param_mask & RFCOMM_RPN_PM_XON_CHAR) + } + if (p_frame->u.rpn.param_mask & RFCOMM_RPN_PM_XON_CHAR) { port_pars->xon_char = p_frame->u.rpn.xon_char; - if (p_frame->u.rpn.param_mask & RFCOMM_RPN_PM_XOFF_CHAR) + } + if (p_frame->u.rpn.param_mask & RFCOMM_RPN_PM_XOFF_CHAR) { port_pars->xoff_char = p_frame->u.rpn.xoff_char; + } } diff --git a/components/bt/bluedroid/stack/rfcomm/rfc_port_if.c b/components/bt/bluedroid/stack/rfcomm/rfc_port_if.c old mode 100755 new mode 100644 index cdf9b12e91..845b77940c --- a/components/bt/bluedroid/stack/rfcomm/rfc_port_if.c +++ b/components/bt/bluedroid/stack/rfcomm/rfc_port_if.c @@ -82,8 +82,7 @@ void RFCOMM_StartRsp (tRFC_MCB *p_mcb, UINT16 result) void RFCOMM_DlcEstablishReq (tRFC_MCB *p_mcb, UINT8 dlci, UINT16 mtu) { UNUSED(mtu); - if (p_mcb->state != RFC_MX_STATE_CONNECTED) - { + if (p_mcb->state != RFC_MX_STATE_CONNECTED) { PORT_DlcEstablishCnf (p_mcb, dlci, 0, RFCOMM_ERROR); return; } @@ -91,7 +90,7 @@ void RFCOMM_DlcEstablishReq (tRFC_MCB *p_mcb, UINT8 dlci, UINT16 mtu) tPORT *p_port = port_find_mcb_dlci_port(p_mcb, dlci); if (p_port == NULL) { RFCOMM_TRACE_WARNING("%s Unable to find DLCI port dlci:%d", __func__, - dlci); + dlci); return; } @@ -110,8 +109,7 @@ void RFCOMM_DlcEstablishReq (tRFC_MCB *p_mcb, UINT8 dlci, UINT16 mtu) void RFCOMM_DlcEstablishRsp (tRFC_MCB *p_mcb, UINT8 dlci, UINT16 mtu, UINT16 result) { UNUSED(mtu); - if ((p_mcb->state != RFC_MX_STATE_CONNECTED) && (result == RFCOMM_SUCCESS)) - { + if ((p_mcb->state != RFC_MX_STATE_CONNECTED) && (result == RFCOMM_SUCCESS)) { PORT_DlcReleaseInd (p_mcb, dlci); return; } @@ -119,7 +117,7 @@ void RFCOMM_DlcEstablishRsp (tRFC_MCB *p_mcb, UINT8 dlci, UINT16 mtu, UINT16 res tPORT *p_port = port_find_mcb_dlci_port (p_mcb, dlci); if (p_port == NULL) { RFCOMM_TRACE_WARNING("%s Unable to find DLCI port dlci:%d", __func__, - dlci); + dlci); return; } rfc_port_sm_execute(p_port, RFC_EVENT_ESTABLISH_RSP, &result); @@ -146,12 +144,11 @@ void RFCOMM_ParNegReq (tRFC_MCB *p_mcb, UINT8 dlci, UINT16 mtu) tPORT *p_port = port_find_mcb_dlci_port(p_mcb, dlci); if (p_port == NULL) { RFCOMM_TRACE_WARNING("%s Unable to find DLCI port dlci:%d", __func__, - dlci); + dlci); return; } - if (p_mcb->state != RFC_MX_STATE_CONNECTED) - { + if (p_mcb->state != RFC_MX_STATE_CONNECTED) { p_port->error = PORT_PAR_NEG_FAILED; return; } @@ -162,14 +159,11 @@ void RFCOMM_ParNegReq (tRFC_MCB *p_mcb, UINT8 dlci, UINT16 mtu) flow = (p_mcb->flow == PORT_FC_UNDEFINED) ? PORT_FC_DEFAULT : p_mcb->flow; /* Set convergence layer and number of credits (k) */ - if (flow == PORT_FC_CREDIT) - { + if (flow == PORT_FC_CREDIT) { cl = RFCOMM_PN_CONV_LAYER_CBFC_I; k = (p_port->credit_rx_max < RFCOMM_K_MAX) ? p_port->credit_rx_max : RFCOMM_K_MAX; p_port->credit_rx = k; - } - else - { + } else { cl = RFCOMM_PN_CONV_LAYER_TYPE_1; k = 0; } @@ -193,8 +187,9 @@ void RFCOMM_ParNegReq (tRFC_MCB *p_mcb, UINT8 dlci, UINT16 mtu) *******************************************************************************/ void RFCOMM_ParNegRsp (tRFC_MCB *p_mcb, UINT8 dlci, UINT16 mtu, UINT8 cl, UINT8 k) { - if (p_mcb->state != RFC_MX_STATE_CONNECTED) + if (p_mcb->state != RFC_MX_STATE_CONNECTED) { return; + } /* Send Parameter Negotiation Response UIH frame */ rfc_send_pn (p_mcb, dlci, FALSE, mtu, cl, k); @@ -214,8 +209,7 @@ void RFCOMM_ParNegRsp (tRFC_MCB *p_mcb, UINT8 dlci, UINT16 mtu, UINT8 cl, UINT8 *******************************************************************************/ void RFCOMM_PortNegReq (tRFC_MCB *p_mcb, UINT8 dlci, tPORT_STATE *p_pars) { - if (p_mcb->state != RFC_MX_STATE_CONNECTED) - { + if (p_mcb->state != RFC_MX_STATE_CONNECTED) { PORT_PortNegCnf (p_mcb, dlci, NULL, RFCOMM_ERROR); return; } @@ -223,15 +217,16 @@ void RFCOMM_PortNegReq (tRFC_MCB *p_mcb, UINT8 dlci, tPORT_STATE *p_pars) tPORT *p_port = port_find_mcb_dlci_port(p_mcb, dlci); if (p_port == NULL) { RFCOMM_TRACE_WARNING("%s Unable to find DLCI port dlci:%d", __func__, - dlci); + dlci); return; } /* Send Parameter Negotiation Command UIH frame */ - if (!p_pars) + if (!p_pars) { p_port->rfc.expected_rsp |= RFC_RSP_RPN_REPLY; - else + } else { p_port->rfc.expected_rsp |= RFC_RSP_RPN; + } rfc_send_rpn (p_mcb, dlci, TRUE, p_pars, RFCOMM_RPN_PM_MASK); rfc_port_timer_start (p_port, RFC_T2_TIMEOUT) ; @@ -250,10 +245,11 @@ void RFCOMM_PortNegReq (tRFC_MCB *p_mcb, UINT8 dlci, tPORT_STATE *p_pars) void RFCOMM_PortNegRsp (tRFC_MCB *p_mcb, UINT8 dlci, tPORT_STATE *p_pars, UINT16 param_mask) { - if (p_mcb->state != RFC_MX_STATE_CONNECTED) + if (p_mcb->state != RFC_MX_STATE_CONNECTED) { return; + } - rfc_send_rpn (p_mcb, dlci, FALSE, p_pars, param_mask); + rfc_send_rpn (p_mcb, dlci, FALSE, p_pars, param_mask); } @@ -270,13 +266,14 @@ void RFCOMM_ControlReq (tRFC_MCB *p_mcb, UINT8 dlci, tPORT_CTRL *p_pars) tPORT *p_port = port_find_mcb_dlci_port(p_mcb, dlci); if (p_port == NULL) { RFCOMM_TRACE_WARNING("%s Unable to find DLCI port dlci:%d", __func__, - dlci); + dlci); return; } if ((p_port->state != PORT_STATE_OPENED) - || (p_port->rfc.state != RFC_STATE_OPENED)) + || (p_port->rfc.state != RFC_STATE_OPENED)) { return; + } p_port->port_ctrl |= PORT_CTRL_REQ_SENT; @@ -302,13 +299,14 @@ void RFCOMM_FlowReq (tRFC_MCB *p_mcb, UINT8 dlci, UINT8 enable) tPORT *p_port = port_find_mcb_dlci_port(p_mcb, dlci); if (p_port == NULL) { RFCOMM_TRACE_WARNING("%s Unable to find DLCI port dlci:%d", __func__, - dlci); + dlci); return; } if ((p_port->state != PORT_STATE_OPENED) - || (p_port->rfc.state != RFC_STATE_OPENED)) + || (p_port->rfc.state != RFC_STATE_OPENED)) { return; + } p_port->local_ctrl.fc = !enable; @@ -333,13 +331,14 @@ void RFCOMM_LineStatusReq (tRFC_MCB *p_mcb, UINT8 dlci, UINT8 status) tPORT *p_port = port_find_mcb_dlci_port(p_mcb, dlci); if (p_port == NULL) { RFCOMM_TRACE_WARNING("%s Unable to find DLCI port dlci:%d", __func__, - dlci); + dlci); return; } if ((p_port->state != PORT_STATE_OPENED) - || (p_port->rfc.state != RFC_STATE_OPENED)) + || (p_port->rfc.state != RFC_STATE_OPENED)) { return; + } p_port->rfc.expected_rsp |= RFC_RSP_RLS; diff --git a/components/bt/bluedroid/stack/rfcomm/rfc_ts_frames.c b/components/bt/bluedroid/stack/rfcomm/rfc_ts_frames.c old mode 100755 new mode 100644 index 357df4f9f0..617e2f4bf0 --- a/components/bt/bluedroid/stack/rfcomm/rfc_ts_frames.c +++ b/components/bt/bluedroid/stack/rfcomm/rfc_ts_frames.c @@ -44,8 +44,9 @@ void rfc_send_sabme (tRFC_MCB *p_mcb, UINT8 dlci) UINT8 *p_data; UINT8 cr = RFCOMM_CR(p_mcb->is_initiator, TRUE); - if ((p_buf = (BT_HDR *)GKI_getpoolbuf (RFCOMM_CMD_POOL_ID)) == NULL) + if ((p_buf = (BT_HDR *)GKI_getpoolbuf (RFCOMM_CMD_POOL_ID)) == NULL) { return; + } p_buf->offset = L2CAP_MIN_OFFSET; p_data = (UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; @@ -76,8 +77,9 @@ void rfc_send_ua (tRFC_MCB *p_mcb, UINT8 dlci) UINT8 *p_data; UINT8 cr = RFCOMM_CR(p_mcb->is_initiator, FALSE); - if ((p_buf = (BT_HDR *)GKI_getpoolbuf (RFCOMM_CMD_POOL_ID)) == NULL) + if ((p_buf = (BT_HDR *)GKI_getpoolbuf (RFCOMM_CMD_POOL_ID)) == NULL) { return; + } p_buf->offset = L2CAP_MIN_OFFSET; p_data = (UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; @@ -108,8 +110,9 @@ void rfc_send_dm (tRFC_MCB *p_mcb, UINT8 dlci, BOOLEAN pf) UINT8 *p_data; UINT8 cr = RFCOMM_CR(p_mcb->is_initiator, FALSE); - if ((p_buf = (BT_HDR *)GKI_getpoolbuf (RFCOMM_CMD_POOL_ID)) == NULL) + if ((p_buf = (BT_HDR *)GKI_getpoolbuf (RFCOMM_CMD_POOL_ID)) == NULL) { return; + } p_buf->offset = L2CAP_MIN_OFFSET; p_data = (UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; @@ -140,8 +143,9 @@ void rfc_send_disc (tRFC_MCB *p_mcb, UINT8 dlci) UINT8 *p_data; UINT8 cr = RFCOMM_CR(p_mcb->is_initiator, TRUE); - if ((p_buf = (BT_HDR *)GKI_getpoolbuf (RFCOMM_CMD_POOL_ID)) == NULL) + if ((p_buf = (BT_HDR *)GKI_getpoolbuf (RFCOMM_CMD_POOL_ID)) == NULL) { return; + } p_buf->offset = L2CAP_MIN_OFFSET; p_data = (UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; @@ -173,36 +177,35 @@ void rfc_send_buf_uih (tRFC_MCB *p_mcb, UINT8 dlci, BT_HDR *p_buf) UINT8 credits; p_buf->offset -= RFCOMM_CTRL_FRAME_LEN; - if (p_buf->len > 127) + if (p_buf->len > 127) { p_buf->offset--; + } - if (dlci) + if (dlci) { credits = (UINT8)p_buf->layer_specific; - else + } else { credits = 0; + } - if (credits) + if (credits) { p_buf->offset--; + } p_data = (UINT8 *)(p_buf + 1) + p_buf->offset; /* UIH frame, command, PF = 0, dlci */ *p_data++ = RFCOMM_EA | cr | (dlci << RFCOMM_SHIFT_DLCI); *p_data++ = RFCOMM_UIH | ((credits) ? RFCOMM_PF : 0); - if (p_buf->len <= 127) - { + if (p_buf->len <= 127) { *p_data++ = RFCOMM_EA | (p_buf->len << 1); p_buf->len += 3; - } - else - { + } else { *p_data++ = (p_buf->len & 0x7f) << 1; *p_data++ = p_buf->len >> RFCOMM_SHIFT_LENGTH2; p_buf->len += 4; } - if (credits) - { + if (credits) { *p_data++ = credits; p_buf->len++; } @@ -211,12 +214,9 @@ void rfc_send_buf_uih (tRFC_MCB *p_mcb, UINT8 dlci, BT_HDR *p_buf) *p_data = RFCOMM_UIH_FCS ((UINT8 *)(p_buf + 1) + p_buf->offset, dlci); - if (dlci == RFCOMM_MX_DLCI) - { + if (dlci == RFCOMM_MX_DLCI) { rfc_check_send_cmd(p_mcb, p_buf); - } - else - { + } else { L2CA_DataWrite (p_mcb->lcid, p_buf); } } @@ -234,8 +234,9 @@ void rfc_send_pn (tRFC_MCB *p_mcb, UINT8 dlci, BOOLEAN is_command, UINT16 mtu, U BT_HDR *p_buf; UINT8 *p_data; - if ((p_buf = (BT_HDR *)GKI_getpoolbuf (RFCOMM_CMD_POOL_ID)) == NULL) + if ((p_buf = (BT_HDR *)GKI_getpoolbuf (RFCOMM_CMD_POOL_ID)) == NULL) { return; + } p_buf->offset = L2CAP_MIN_OFFSET + RFCOMM_CTRL_FRAME_LEN; p_data = (UINT8 *)(p_buf + 1) + p_buf->offset; @@ -249,10 +250,11 @@ void rfc_send_pn (tRFC_MCB *p_mcb, UINT8 dlci, BOOLEAN is_command, UINT16 mtu, U /* It appeared that we need to reply with the same priority bits as we received. ** We will use the fact that we reply in the same context so rx_frame can still be used. */ - if (is_command) + if (is_command) { *p_data++ = RFCOMM_PN_PRIORITY_0; - else + } else { *p_data++ = rfc_cb.rfc.rx_frame.u.pn.priority; + } *p_data++ = RFCOMM_T1_DSEC; *p_data++ = mtu & 0xFF; @@ -279,8 +281,9 @@ void rfc_send_fcon (tRFC_MCB *p_mcb, BOOLEAN is_command) BT_HDR *p_buf; UINT8 *p_data; - if ((p_buf = (BT_HDR *)GKI_getpoolbuf (RFCOMM_CMD_POOL_ID)) == NULL) + if ((p_buf = (BT_HDR *)GKI_getpoolbuf (RFCOMM_CMD_POOL_ID)) == NULL) { return; + } p_buf->offset = L2CAP_MIN_OFFSET + RFCOMM_CTRL_FRAME_LEN; p_data = (UINT8 *)(p_buf + 1) + p_buf->offset; @@ -307,8 +310,9 @@ void rfc_send_fcoff (tRFC_MCB *p_mcb, BOOLEAN is_command) BT_HDR *p_buf; UINT8 *p_data; - if ((p_buf = (BT_HDR *)GKI_getpoolbuf (RFCOMM_CMD_POOL_ID)) == NULL) + if ((p_buf = (BT_HDR *)GKI_getpoolbuf (RFCOMM_CMD_POOL_ID)) == NULL) { return; + } p_buf->offset = L2CAP_MIN_OFFSET + RFCOMM_CTRL_FRAME_LEN; p_data = (UINT8 *)(p_buf + 1) + p_buf->offset; @@ -342,16 +346,18 @@ void rfc_send_msc (tRFC_MCB *p_mcb, UINT8 dlci, BOOLEAN is_command, signals = p_pars->modem_signal; break_duration = p_pars->break_signal; - if ((p_buf = (BT_HDR *)GKI_getpoolbuf (RFCOMM_CMD_POOL_ID)) == NULL) + if ((p_buf = (BT_HDR *)GKI_getpoolbuf (RFCOMM_CMD_POOL_ID)) == NULL) { return; + } p_buf->offset = L2CAP_MIN_OFFSET + RFCOMM_CTRL_FRAME_LEN; p_data = (UINT8 *)(p_buf + 1) + p_buf->offset; - if (break_duration) + if (break_duration) { len = RFCOMM_MX_MSC_LEN_WITH_BREAK; - else + } else { len = RFCOMM_MX_MSC_LEN_NO_BREAK; + } *p_data++ = RFCOMM_EA | RFCOMM_I_CR(is_command) | RFCOMM_MX_MSC; *p_data++ = RFCOMM_EA | (len << 1); @@ -364,8 +370,7 @@ void rfc_send_msc (tRFC_MCB *p_mcb, UINT8 dlci, BOOLEAN is_command, ((signals & MODEM_SIGNAL_RI) ? RFCOMM_MSC_IC : 0) | ((signals & MODEM_SIGNAL_DCD) ? RFCOMM_MSC_DV : 0); - if (break_duration) - { + if (break_duration) { *p_data++ = RFCOMM_EA | RFCOMM_MSC_BREAK_PRESENT_MASK | (break_duration << RFCOMM_MSC_SHIFT_BREAK); } @@ -389,8 +394,9 @@ void rfc_send_rls (tRFC_MCB *p_mcb, UINT8 dlci, BOOLEAN is_command, UINT8 status BT_HDR *p_buf; UINT8 *p_data; - if ((p_buf = (BT_HDR *)GKI_getpoolbuf (RFCOMM_CMD_POOL_ID)) == NULL) + if ((p_buf = (BT_HDR *)GKI_getpoolbuf (RFCOMM_CMD_POOL_ID)) == NULL) { return; + } p_buf->offset = L2CAP_MIN_OFFSET + RFCOMM_CTRL_FRAME_LEN; p_data = (UINT8 *)(p_buf + 1) + p_buf->offset; @@ -420,8 +426,9 @@ void rfc_send_nsc (tRFC_MCB *p_mcb) BT_HDR *p_buf; UINT8 *p_data; - if ((p_buf = (BT_HDR *)GKI_getpoolbuf (RFCOMM_CMD_POOL_ID)) == NULL) + if ((p_buf = (BT_HDR *)GKI_getpoolbuf (RFCOMM_CMD_POOL_ID)) == NULL) { return; + } p_buf->offset = L2CAP_MIN_OFFSET + RFCOMM_CTRL_FRAME_LEN; p_data = (UINT8 *)(p_buf + 1) + p_buf->offset; @@ -430,7 +437,7 @@ void rfc_send_nsc (tRFC_MCB *p_mcb) *p_data++ = RFCOMM_EA | (RFCOMM_MX_NSC_LEN << 1); *p_data++ = rfc_cb.rfc.rx_frame.ea | - (rfc_cb.rfc.rx_frame.cr << RFCOMM_SHIFT_CR) | + (rfc_cb.rfc.rx_frame.cr << RFCOMM_SHIFT_CR) | rfc_cb.rfc.rx_frame.type; /* Total length is sizeof NSC data + mx header 2 */ @@ -453,32 +460,30 @@ void rfc_send_rpn (tRFC_MCB *p_mcb, UINT8 dlci, BOOLEAN is_command, BT_HDR *p_buf; UINT8 *p_data; - if ((p_buf = (BT_HDR *)GKI_getpoolbuf (RFCOMM_CMD_POOL_ID)) == NULL) + if ((p_buf = (BT_HDR *)GKI_getpoolbuf (RFCOMM_CMD_POOL_ID)) == NULL) { return; + } p_buf->offset = L2CAP_MIN_OFFSET + RFCOMM_CTRL_FRAME_LEN; p_data = (UINT8 *)(p_buf + 1) + p_buf->offset; *p_data++ = RFCOMM_EA | RFCOMM_I_CR(is_command) | RFCOMM_MX_RPN; - if (!p_pars) - { + if (!p_pars) { *p_data++ = RFCOMM_EA | (RFCOMM_MX_RPN_REQ_LEN << 1); *p_data++ = RFCOMM_EA | RFCOMM_CR_MASK | (dlci << RFCOMM_SHIFT_DLCI); p_buf->len = RFCOMM_MX_RPN_REQ_LEN + 2; - } - else - { + } else { *p_data++ = RFCOMM_EA | (RFCOMM_MX_RPN_LEN << 1); *p_data++ = RFCOMM_EA | RFCOMM_CR_MASK | (dlci << RFCOMM_SHIFT_DLCI); *p_data++ = p_pars->baud_rate; *p_data++ = (p_pars->byte_size << RFCOMM_RPN_BITS_SHIFT) - | (p_pars->stop_bits << RFCOMM_RPN_STOP_BITS_SHIFT) - | (p_pars->parity << RFCOMM_RPN_PARITY_SHIFT) - | (p_pars->parity_type << RFCOMM_RPN_PARITY_TYPE_SHIFT); + | (p_pars->stop_bits << RFCOMM_RPN_STOP_BITS_SHIFT) + | (p_pars->parity << RFCOMM_RPN_PARITY_SHIFT) + | (p_pars->parity_type << RFCOMM_RPN_PARITY_TYPE_SHIFT); *p_data++ = p_pars->fc_type; *p_data++ = p_pars->xon_char; *p_data++ = p_pars->xoff_char; @@ -507,13 +512,13 @@ void rfc_send_test (tRFC_MCB *p_mcb, BOOLEAN is_command, BT_HDR *p_buf) UINT8 *p_src, *p_dest; /* Shift buffer to give space for header */ - if (p_buf->offset < (L2CAP_MIN_OFFSET + RFCOMM_MIN_OFFSET + 2)) - { + if (p_buf->offset < (L2CAP_MIN_OFFSET + RFCOMM_MIN_OFFSET + 2)) { p_src = (UINT8 *) (p_buf + 1) + p_buf->offset + p_buf->len - 1; p_dest = (UINT8 *) (p_buf + 1) + L2CAP_MIN_OFFSET + RFCOMM_MIN_OFFSET + 2 + p_buf->len - 1; - for (xx = 0; xx < p_buf->len; xx++) + for (xx = 0; xx < p_buf->len; xx++) { *p_dest-- = *p_src--; + } p_buf->offset = L2CAP_MIN_OFFSET + RFCOMM_MIN_OFFSET + 2; } @@ -543,8 +548,9 @@ void rfc_send_credit(tRFC_MCB *p_mcb, UINT8 dlci, UINT8 credit) UINT8 *p_data; UINT8 cr = RFCOMM_CR(p_mcb->is_initiator, TRUE); - if ((p_buf = (BT_HDR *)GKI_getpoolbuf (RFCOMM_CMD_POOL_ID)) == NULL) + if ((p_buf = (BT_HDR *)GKI_getpoolbuf (RFCOMM_CMD_POOL_ID)) == NULL) { return; + } p_buf->offset = L2CAP_MIN_OFFSET; p_data = (UINT8 *)(p_buf + 1) + p_buf->offset; @@ -575,15 +581,13 @@ UINT8 rfc_parse_data (tRFC_MCB *p_mcb, MX_FRAME *p_frame, BT_HDR *p_buf) UINT8 *p_start = p_data; UINT16 len; - if (p_buf->len < RFCOMM_CTRL_FRAME_LEN) - { + if (p_buf->len < RFCOMM_CTRL_FRAME_LEN) { RFCOMM_TRACE_ERROR ("Bad Length1: %d", p_buf->len); return (RFC_EVENT_BAD_FRAME); } RFCOMM_PARSE_CTRL_FIELD (ead, p_frame->cr, p_frame->dlci, p_data); - if( !ead ) - { + if ( !ead ) { RFCOMM_TRACE_ERROR ("Bad Address(EA must be 1)"); return (RFC_EVENT_BAD_FRAME); } @@ -595,17 +599,15 @@ UINT8 rfc_parse_data (tRFC_MCB *p_mcb, MX_FRAME *p_frame, BT_HDR *p_buf) /* handle credit if credit based flow control */ if ((p_mcb->flow == PORT_FC_CREDIT) && (p_frame->type == RFCOMM_UIH) && - (p_frame->dlci != RFCOMM_MX_DLCI) && (p_frame->pf == 1)) - { + (p_frame->dlci != RFCOMM_MX_DLCI) && (p_frame->pf == 1)) { p_frame->credit = *p_data++; p_buf->len--; p_buf->offset++; - } - else + } else { p_frame->credit = 0; + } - if (p_buf->len != len) - { + if (p_buf->len != len) { RFCOMM_TRACE_ERROR ("Bad Length2 %d %d", p_buf->len, len); return (RFC_EVENT_BAD_FRAME); } @@ -616,71 +618,61 @@ UINT8 rfc_parse_data (tRFC_MCB *p_mcb, MX_FRAME *p_frame, BT_HDR *p_buf) /* reply with F=1 */ /* According to TS 07.10 spec ivalid frames are discarded without */ /* notification to the sender */ - switch (p_frame->type) - { + switch (p_frame->type) { case RFCOMM_SABME: if (RFCOMM_FRAME_IS_RSP(p_mcb->is_initiator, p_frame->cr) - || !p_frame->pf || len || !RFCOMM_VALID_DLCI (p_frame->dlci) - || !rfc_check_fcs (RFCOMM_CTRL_FRAME_LEN, p_start, fcs)) - { + || !p_frame->pf || len || !RFCOMM_VALID_DLCI (p_frame->dlci) + || !rfc_check_fcs (RFCOMM_CTRL_FRAME_LEN, p_start, fcs)) { RFCOMM_TRACE_ERROR ("Bad SABME"); return (RFC_EVENT_BAD_FRAME); - } - else + } else { return (RFC_EVENT_SABME); + } case RFCOMM_UA: if (RFCOMM_FRAME_IS_CMD(p_mcb->is_initiator, p_frame->cr) - || !p_frame->pf || len || !RFCOMM_VALID_DLCI (p_frame->dlci) - || !rfc_check_fcs (RFCOMM_CTRL_FRAME_LEN, p_start, fcs)) - { + || !p_frame->pf || len || !RFCOMM_VALID_DLCI (p_frame->dlci) + || !rfc_check_fcs (RFCOMM_CTRL_FRAME_LEN, p_start, fcs)) { RFCOMM_TRACE_ERROR ("Bad UA"); return (RFC_EVENT_BAD_FRAME); - } - else + } else { return (RFC_EVENT_UA); + } case RFCOMM_DM: if (RFCOMM_FRAME_IS_CMD(p_mcb->is_initiator, p_frame->cr) - || len || !RFCOMM_VALID_DLCI(p_frame->dlci) - || !rfc_check_fcs (RFCOMM_CTRL_FRAME_LEN, p_start, fcs)) - { + || len || !RFCOMM_VALID_DLCI(p_frame->dlci) + || !rfc_check_fcs (RFCOMM_CTRL_FRAME_LEN, p_start, fcs)) { RFCOMM_TRACE_ERROR ("Bad DM"); return (RFC_EVENT_BAD_FRAME); - } - else + } else { return (RFC_EVENT_DM); + } case RFCOMM_DISC: if (RFCOMM_FRAME_IS_RSP(p_mcb->is_initiator, p_frame->cr) - || !p_frame->pf || len || !RFCOMM_VALID_DLCI(p_frame->dlci) - || !rfc_check_fcs (RFCOMM_CTRL_FRAME_LEN, p_start, fcs)) - { + || !p_frame->pf || len || !RFCOMM_VALID_DLCI(p_frame->dlci) + || !rfc_check_fcs (RFCOMM_CTRL_FRAME_LEN, p_start, fcs)) { RFCOMM_TRACE_ERROR ("Bad DISC"); return (RFC_EVENT_BAD_FRAME); - } - else + } else { return (RFC_EVENT_DISC); + } case RFCOMM_UIH: - if (!RFCOMM_VALID_DLCI(p_frame->dlci)) - { + if (!RFCOMM_VALID_DLCI(p_frame->dlci)) { RFCOMM_TRACE_ERROR ("Bad UIH - invalid DLCI"); return (RFC_EVENT_BAD_FRAME); - } - else if (!rfc_check_fcs (2, p_start, fcs)) - { + } else if (!rfc_check_fcs (2, p_start, fcs)) { RFCOMM_TRACE_ERROR ("Bad UIH - FCS"); return (RFC_EVENT_BAD_FRAME); - } - else if (RFCOMM_FRAME_IS_RSP(p_mcb->is_initiator, p_frame->cr)) - { + } else if (RFCOMM_FRAME_IS_RSP(p_mcb->is_initiator, p_frame->cr)) { /* we assume that this is ok to allow bad implementations to work */ RFCOMM_TRACE_ERROR ("Bad UIH - response"); return (RFC_EVENT_UIH); - } - else + } else { return (RFC_EVENT_UIH); + } } return (RFC_EVENT_BAD_FRAME); @@ -707,8 +699,7 @@ void rfc_process_mx_message (tRFC_MCB *p_mcb, BT_HDR *p_buf) p_rx_frame->cr = (*p_data & RFCOMM_CR_MASK) >> RFCOMM_SHIFT_CR; p_rx_frame->type = *p_data++ & ~(RFCOMM_CR_MASK | RFCOMM_EA_MASK); - if (!p_rx_frame->ea || !length) - { + if (!p_rx_frame->ea || !length) { RFCOMM_TRACE_ERROR ("Illegal MX Frame ea:%d len:%d", p_rx_frame->ea, length); GKI_freebuf (p_buf); return; @@ -723,24 +714,22 @@ void rfc_process_mx_message (tRFC_MCB *p_mcb, BT_HDR *p_buf) mx_len = *p_data++ >> RFCOMM_SHIFT_LENGTH1; length--; - if (!ea) - { + if (!ea) { mx_len += *p_data++ << RFCOMM_SHIFT_LENGTH2; length --; } - if (mx_len != length) - { + if (mx_len != length) { RFCOMM_TRACE_ERROR ("Bad MX frame"); GKI_freebuf (p_buf); return; } - switch (p_rx_frame->type) - { + switch (p_rx_frame->type) { case RFCOMM_MX_PN: - if (length != RFCOMM_MX_PN_LEN) + if (length != RFCOMM_MX_PN_LEN) { break; + } p_rx_frame->dlci = *p_data++ & RFCOMM_PN_DLCI_MASK; p_rx_frame->u.pn.frame_type = *p_data & RFCOMM_PN_FRAME_TYPE_MASK; @@ -753,10 +742,9 @@ void rfc_process_mx_message (tRFC_MCB *p_mcb, BT_HDR *p_buf) p_rx_frame->u.pn.k = *p_data++ & RFCOMM_PN_K_MASK; if (!p_rx_frame->dlci - || !RFCOMM_VALID_DLCI (p_rx_frame->dlci) - || (p_rx_frame->u.pn.mtu < RFCOMM_MIN_MTU) - || (p_rx_frame->u.pn.mtu > RFCOMM_MAX_MTU)) - { + || !RFCOMM_VALID_DLCI (p_rx_frame->dlci) + || (p_rx_frame->u.pn.mtu < RFCOMM_MIN_MTU) + || (p_rx_frame->u.pn.mtu > RFCOMM_MAX_MTU)) { RFCOMM_TRACE_ERROR ("Bad PN frame"); break; } @@ -767,8 +755,9 @@ void rfc_process_mx_message (tRFC_MCB *p_mcb, BT_HDR *p_buf) return; case RFCOMM_MX_TEST: - if (!length) + if (!length) { break; + } p_rx_frame->u.test.p_data = p_data; p_rx_frame->u.test.data_len = length; @@ -776,15 +765,17 @@ void rfc_process_mx_message (tRFC_MCB *p_mcb, BT_HDR *p_buf) p_buf->offset += 2; p_buf->len -= 2; - if (is_command) + if (is_command) { rfc_send_test (p_mcb, FALSE, p_buf); - else + } else { rfc_process_test_rsp (p_mcb, p_buf); + } return; case RFCOMM_MX_FCON: - if (length != RFCOMM_MX_FCON_LEN) + if (length != RFCOMM_MX_FCON_LEN) { break; + } GKI_freebuf (p_buf); @@ -792,8 +783,9 @@ void rfc_process_mx_message (tRFC_MCB *p_mcb, BT_HDR *p_buf) return; case RFCOMM_MX_FCOFF: - if (length != RFCOMM_MX_FCOFF_LEN) + if (length != RFCOMM_MX_FCOFF_LEN) { break; + } GKI_freebuf (p_buf); @@ -807,21 +799,17 @@ void rfc_process_mx_message (tRFC_MCB *p_mcb, BT_HDR *p_buf) p_rx_frame->dlci = *p_data++ >> RFCOMM_SHIFT_DLCI; if (!ea || !cr || !p_rx_frame->dlci - || !RFCOMM_VALID_DLCI (p_rx_frame->dlci)) - { + || !RFCOMM_VALID_DLCI (p_rx_frame->dlci)) { RFCOMM_TRACE_ERROR ("Bad MSC frame"); break; } p_rx_frame->u.msc.signals = *p_data++; - if (mx_len == RFCOMM_MX_MSC_LEN_WITH_BREAK) - { + if (mx_len == RFCOMM_MX_MSC_LEN_WITH_BREAK) { p_rx_frame->u.msc.break_present = *p_data & RFCOMM_MSC_BREAK_PRESENT_MASK; p_rx_frame->u.msc.break_duration = (*p_data & RFCOMM_MSC_BREAK_MASK) >> RFCOMM_MSC_SHIFT_BREAK; - } - else - { + } else { p_rx_frame->u.msc.break_present = FALSE; p_rx_frame->u.msc.break_duration = 0; } @@ -831,8 +819,9 @@ void rfc_process_mx_message (tRFC_MCB *p_mcb, BT_HDR *p_buf) return; case RFCOMM_MX_NSC: - if ((length != RFCOMM_MX_NSC_LEN) || !is_command) + if ((length != RFCOMM_MX_NSC_LEN) || !is_command) { break; + } p_rx_frame->u.nsc.ea = *p_data & RFCOMM_EA; p_rx_frame->u.nsc.cr = (*p_data & RFCOMM_CR_MASK) >> RFCOMM_SHIFT_CR; @@ -844,24 +833,23 @@ void rfc_process_mx_message (tRFC_MCB *p_mcb, BT_HDR *p_buf) return; case RFCOMM_MX_RPN: - if ((length != RFCOMM_MX_RPN_REQ_LEN) && (length != RFCOMM_MX_RPN_LEN)) + if ((length != RFCOMM_MX_RPN_REQ_LEN) && (length != RFCOMM_MX_RPN_LEN)) { break; + } ea = *p_data & RFCOMM_EA; cr = (*p_data & RFCOMM_CR_MASK) >> RFCOMM_SHIFT_CR; p_rx_frame->dlci = *p_data++ >> RFCOMM_SHIFT_DLCI; if (!ea || !cr || !p_rx_frame->dlci - || !RFCOMM_VALID_DLCI (p_rx_frame->dlci)) - { + || !RFCOMM_VALID_DLCI (p_rx_frame->dlci)) { RFCOMM_TRACE_ERROR ("Bad RPN frame"); break; } p_rx_frame->u.rpn.is_request = (length == RFCOMM_MX_RPN_REQ_LEN); - if (!p_rx_frame->u.rpn.is_request) - { + if (!p_rx_frame->u.rpn.is_request) { p_rx_frame->u.rpn.baud_rate = *p_data++; p_rx_frame->u.rpn.byte_size = (*p_data >> RFCOMM_RPN_BITS_SHIFT) & RFCOMM_RPN_BITS_MASK; p_rx_frame->u.rpn.stop_bits = (*p_data >> RFCOMM_RPN_STOP_BITS_SHIFT) & RFCOMM_RPN_STOP_BITS_MASK; @@ -879,8 +867,9 @@ void rfc_process_mx_message (tRFC_MCB *p_mcb, BT_HDR *p_buf) return; case RFCOMM_MX_RLS: - if (length != RFCOMM_MX_RLS_LEN) + if (length != RFCOMM_MX_RLS_LEN) { break; + } ea = *p_data & RFCOMM_EA; cr = (*p_data & RFCOMM_CR_MASK) >> RFCOMM_SHIFT_CR; @@ -889,8 +878,7 @@ void rfc_process_mx_message (tRFC_MCB *p_mcb, BT_HDR *p_buf) p_rx_frame->u.rls.line_status = (*p_data & ~0x01); if (!ea || !cr || !p_rx_frame->dlci - || !RFCOMM_VALID_DLCI (p_rx_frame->dlci)) - { + || !RFCOMM_VALID_DLCI (p_rx_frame->dlci)) { RFCOMM_TRACE_ERROR ("Bad RPN frame"); break; } @@ -903,7 +891,8 @@ void rfc_process_mx_message (tRFC_MCB *p_mcb, BT_HDR *p_buf) GKI_freebuf (p_buf); - if (is_command) + if (is_command) { rfc_send_nsc (p_mcb); + } } diff --git a/components/bt/bluedroid/stack/rfcomm/rfc_utils.c b/components/bt/bluedroid/stack/rfcomm/rfc_utils.c old mode 100755 new mode 100644 index 4850fc9d95..42183021fd --- a/components/bt/bluedroid/stack/rfcomm/rfc_utils.c +++ b/components/bt/bluedroid/stack/rfcomm/rfc_utils.c @@ -44,8 +44,7 @@ ** Description Reversed CRC Table , 8-bit, poly=0x07 ** (GSM 07.10 TS 101 369 V6.3.0) *******************************************************************************/ -static const UINT8 rfc_crctable[] = -{ +static const UINT8 rfc_crctable[] = { 0x00, 0x91, 0xE3, 0x72, 0x07, 0x96, 0xE4, 0x75, 0x0E, 0x9F, 0xED, 0x7C, 0x09, 0x98, 0xEA, 0x7B, 0x1C, 0x8D, 0xFF, 0x6E, 0x1B, 0x8A, 0xF8, 0x69, 0x12, 0x83, 0xF1, 0x60, 0x15, 0x84, 0xF6, 0x67, 0x38, 0xA9, 0xDB, 0x4A, 0x3F, 0xAE, 0xDC, 0x4D, 0x36, 0xA7, 0xD5, 0x44, 0x31, 0xA0, 0xD2, 0x43, @@ -83,8 +82,7 @@ UINT8 rfc_calc_fcs (UINT16 len, UINT8 *p) { UINT8 fcs = 0xFF; - while (len--) - { + while (len--) { fcs = rfc_crctable[fcs ^ *p++]; } @@ -109,8 +107,7 @@ BOOLEAN rfc_check_fcs (UINT16 len, UINT8 *p, UINT8 received_fcs) { UINT8 fcs = 0xFF; - while (len--) - { + while (len--) { fcs = rfc_crctable[fcs ^ *p++]; } @@ -135,45 +132,43 @@ tRFC_MCB *rfc_alloc_multiplexer_channel (BD_ADDR bd_addr, BOOLEAN is_initiator) int i, j; tRFC_MCB *p_mcb = NULL; RFCOMM_TRACE_DEBUG("rfc_alloc_multiplexer_channel: bd_addr:%02x:%02x:%02x:%02x:%02x:%02x", - bd_addr[0], bd_addr[1], bd_addr[2], bd_addr[3], bd_addr[4], bd_addr[5]); + bd_addr[0], bd_addr[1], bd_addr[2], bd_addr[3], bd_addr[4], bd_addr[5]); RFCOMM_TRACE_DEBUG("rfc_alloc_multiplexer_channel:is_initiator:%d", is_initiator); - for (i = 0; i < MAX_BD_CONNECTIONS; i++) - { + for (i = 0; i < MAX_BD_CONNECTIONS; i++) { RFCOMM_TRACE_DEBUG("rfc_alloc_multiplexer_channel rfc_cb.port.rfc_mcb[%d].state:%d", - i, rfc_cb.port.rfc_mcb[i].state); + i, rfc_cb.port.rfc_mcb[i].state); RFCOMM_TRACE_DEBUG("(rfc_cb.port.rfc_mcb[i].bd_addr:%02x:%02x:%02x:%02x:%02x:%02x", - rfc_cb.port.rfc_mcb[i].bd_addr[0], rfc_cb.port.rfc_mcb[i].bd_addr[1], - rfc_cb.port.rfc_mcb[i].bd_addr[2], rfc_cb.port.rfc_mcb[i].bd_addr[3], - rfc_cb.port.rfc_mcb[i].bd_addr[4], rfc_cb.port.rfc_mcb[i].bd_addr[5]); + rfc_cb.port.rfc_mcb[i].bd_addr[0], rfc_cb.port.rfc_mcb[i].bd_addr[1], + rfc_cb.port.rfc_mcb[i].bd_addr[2], rfc_cb.port.rfc_mcb[i].bd_addr[3], + rfc_cb.port.rfc_mcb[i].bd_addr[4], rfc_cb.port.rfc_mcb[i].bd_addr[5]); if ((rfc_cb.port.rfc_mcb[i].state != RFC_MX_STATE_IDLE) - && (!memcmp (rfc_cb.port.rfc_mcb[i].bd_addr, bd_addr, BD_ADDR_LEN))) - { + && (!memcmp (rfc_cb.port.rfc_mcb[i].bd_addr, bd_addr, BD_ADDR_LEN))) { /* Multiplexer channel found do not change anything */ /* If there was an inactivity timer running stop it now */ - if (rfc_cb.port.rfc_mcb[i].state == RFC_MX_STATE_CONNECTED) + if (rfc_cb.port.rfc_mcb[i].state == RFC_MX_STATE_CONNECTED) { rfc_timer_stop (&rfc_cb.port.rfc_mcb[i]); + } RFCOMM_TRACE_DEBUG("rfc_alloc_multiplexer_channel:is_initiator:%d, found, state:%d, p_mcb:%p", - is_initiator, rfc_cb.port.rfc_mcb[i].state, &rfc_cb.port.rfc_mcb[i]); + is_initiator, rfc_cb.port.rfc_mcb[i].state, &rfc_cb.port.rfc_mcb[i]); return (&rfc_cb.port.rfc_mcb[i]); } } /* connection with bd_addr does not exist */ - for (i = 0, j = rfc_cb.rfc.last_mux + 1; i < MAX_BD_CONNECTIONS; i++, j++) - { - if (j >= MAX_BD_CONNECTIONS) + for (i = 0, j = rfc_cb.rfc.last_mux + 1; i < MAX_BD_CONNECTIONS; i++, j++) { + if (j >= MAX_BD_CONNECTIONS) { j = 0; + } p_mcb = &rfc_cb.port.rfc_mcb[j]; - if (rfc_cb.port.rfc_mcb[j].state == RFC_MX_STATE_IDLE) - { + if (rfc_cb.port.rfc_mcb[j].state == RFC_MX_STATE_IDLE) { /* New multiplexer control block */ memset (p_mcb, 0, sizeof (tRFC_MCB)); memcpy (p_mcb->bd_addr, bd_addr, BD_ADDR_LEN); RFCOMM_TRACE_DEBUG("rfc_alloc_multiplexer_channel:is_initiator:%d, create new p_mcb:%p, index:%d", - is_initiator, &rfc_cb.port.rfc_mcb[j], j); + is_initiator, &rfc_cb.port.rfc_mcb[j], j); GKI_init_q(&p_mcb->cmd_q); @@ -203,8 +198,9 @@ void rfc_release_multiplexer_channel (tRFC_MCB *p_mcb) rfc_timer_stop (p_mcb); - while ((p_buf = GKI_dequeue(&p_mcb->cmd_q)) != NULL) + while ((p_buf = GKI_dequeue(&p_mcb->cmd_q)) != NULL) { GKI_freebuf(p_buf); + } memset (p_mcb, 0, sizeof (tRFC_MCB)); p_mcb->state = RFC_MX_STATE_IDLE; @@ -293,23 +289,20 @@ void rfc_check_mcb_active (tRFC_MCB *p_mcb) { UINT16 i; - for (i = 0; i < RFCOMM_MAX_DLCI; i++) - { - if (p_mcb->port_inx[i] != 0) - { + for (i = 0; i < RFCOMM_MAX_DLCI; i++) { + if (p_mcb->port_inx[i] != 0) { p_mcb->is_disc_initiator = FALSE; return; } } /* The last port was DISCed. On the client side start disconnecting Mx */ /* On the server side start inactivity timer */ - if (p_mcb->is_disc_initiator) - { + if (p_mcb->is_disc_initiator) { p_mcb->is_disc_initiator = FALSE; rfc_mx_sm_execute (p_mcb, RFC_MX_EVENT_CLOSE_REQ, NULL); - } - else + } else { rfc_timer_start (p_mcb, RFC_MCB_RELEASE_INACT_TIMER); + } } @@ -324,8 +317,7 @@ void rfc_check_mcb_active (tRFC_MCB *p_mcb) *******************************************************************************/ void rfcomm_process_timeout (TIMER_LIST_ENT *p_tle) { - switch (p_tle->event) - { + switch (p_tle->event) { case BTU_TTYPE_RFCOMM_MFC: rfc_mx_sm_execute ((tRFC_MCB *)p_tle->param, RFC_EVENT_TIMEOUT, NULL); break; @@ -358,9 +350,10 @@ void rfc_sec_check_complete (BD_ADDR bd_addr, tBT_TRANSPORT transport, void *p_r /* Verify that PORT is still waiting for Security to complete */ if (!p_port->in_use - || ((p_port->rfc.state != RFC_STATE_ORIG_WAIT_SEC_CHECK) - && (p_port->rfc.state != RFC_STATE_TERM_WAIT_SEC_CHECK))) + || ((p_port->rfc.state != RFC_STATE_ORIG_WAIT_SEC_CHECK) + && (p_port->rfc.state != RFC_STATE_TERM_WAIT_SEC_CHECK))) { return; + } rfc_port_sm_execute ((tPORT *)p_ref_data, RFC_EVENT_SEC_COMPLETE, &res); } @@ -388,8 +381,7 @@ void rfc_port_closed (tPORT *p_port) p_port->rfc.state = RFC_STATE_CLOSED; /* If multiplexer channel was up mark it as down */ - if (p_mcb) - { + if (p_mcb) { p_mcb->port_inx[p_port->dlci] = 0; /* If there are no more ports opened on this MCB release it */ @@ -413,14 +405,14 @@ void rfc_port_closed (tPORT *p_port) *******************************************************************************/ void rfc_inc_credit (tPORT *p_port, UINT8 credit) { - if (p_port->rfc.p_mcb->flow == PORT_FC_CREDIT) - { + if (p_port->rfc.p_mcb->flow == PORT_FC_CREDIT) { p_port->credit_tx += credit; RFCOMM_TRACE_EVENT ("rfc_inc_credit:%d", p_port->credit_tx); - if (p_port->tx.peer_fc == TRUE) + if (p_port->tx.peer_fc == TRUE) { PORT_FlowInd(p_port->rfc.p_mcb, p_port->dlci, TRUE); + } } } @@ -437,13 +429,14 @@ void rfc_inc_credit (tPORT *p_port, UINT8 credit) *******************************************************************************/ void rfc_dec_credit (tPORT *p_port) { - if (p_port->rfc.p_mcb->flow == PORT_FC_CREDIT) - { - if (p_port->credit_tx > 0) + if (p_port->rfc.p_mcb->flow == PORT_FC_CREDIT) { + if (p_port->credit_tx > 0) { p_port->credit_tx--; + } - if (p_port->credit_tx == 0) + if (p_port->credit_tx == 0) { p_port->tx.peer_fc = TRUE; + } } } @@ -463,16 +456,13 @@ void rfc_check_send_cmd(tRFC_MCB *p_mcb, BT_HDR *p_buf) BT_HDR *p; /* if passed a buffer queue it */ - if (p_buf != NULL) - { + if (p_buf != NULL) { GKI_enqueue(&p_mcb->cmd_q, p_buf); } /* handle queue if L2CAP not congested */ - while (p_mcb->l2cap_congested == FALSE) - { - if ((p = (BT_HDR *) GKI_dequeue(&p_mcb->cmd_q)) == NULL) - { + while (p_mcb->l2cap_congested == FALSE) { + if ((p = (BT_HDR *) GKI_dequeue(&p_mcb->cmd_q)) == NULL) { break; } diff --git a/components/bt/bluedroid/stack/sdp/include/sdpint.h b/components/bt/bluedroid/stack/sdp/include/sdpint.h old mode 100755 new mode 100644 index 834266edc1..9e935ea5ad --- a/components/bt/bluedroid/stack/sdp/include/sdpint.h +++ b/components/bt/bluedroid/stack/sdp/include/sdpint.h @@ -90,36 +90,31 @@ // btla-specific -- /* Internal UUID sequence representation */ -typedef struct -{ +typedef struct { UINT16 len; UINT8 value[MAX_UUID_SIZE]; } tUID_ENT; -typedef struct -{ +typedef struct { UINT16 num_uids; tUID_ENT uuid_entry[MAX_UUIDS_PER_SEQ]; } tSDP_UUID_SEQ; /* Internal attribute sequence definitions */ -typedef struct -{ +typedef struct { UINT16 start; UINT16 end; } tATT_ENT; -typedef struct -{ +typedef struct { UINT16 num_attr; tATT_ENT attr_entry[MAX_ATTR_PER_SEQ]; } tSDP_ATTR_SEQ; /* Define the attribute element of the SDP database record */ -typedef struct -{ +typedef struct { UINT32 len; /* Number of bytes in the entry */ UINT8 *value_ptr; /* Points to attr_pad */ UINT16 id; @@ -127,8 +122,7 @@ typedef struct } tSDP_ATTRIBUTE; /* An SDP record consists of a handle, and 1 or more attributes */ -typedef struct -{ +typedef struct { UINT32 record_handle; UINT32 free_pad_ptr; UINT16 num_attributes; @@ -138,23 +132,20 @@ typedef struct /* Define the SDP database */ -typedef struct -{ +typedef struct { UINT32 di_primary_handle; /* Device ID Primary record or NULL if nonexistent */ UINT16 num_records; tSDP_RECORD record[SDP_MAX_RECORDS]; } tSDP_DB; -enum -{ +enum { SDP_IS_SEARCH, SDP_IS_ATTR_SEARCH, }; #if SDP_SERVER_ENABLED == TRUE /* Continuation information for the SDP server response */ -typedef struct -{ +typedef struct { UINT16 next_attr_index; /* attr index for next continuation response */ UINT16 next_attr_start_id; /* attr id to start with for the attr index in next cont. response */ tSDP_RECORD *prev_sdp_rec; /* last sdp record that was completely sent in the response */ @@ -164,8 +155,7 @@ typedef struct #endif /* SDP_SERVER_ENABLED == TRUE */ /* Define the SDP Connection Control Block */ -typedef struct -{ +typedef struct { #define SDP_STATE_IDLE 0 #define SDP_STATE_CONN_SETUP 1 #define SDP_STATE_CFG_SETUP 2 @@ -217,8 +207,7 @@ typedef struct /* The main SDP control block */ -typedef struct -{ +typedef struct { tL2CAP_CFG_INFO l2cap_my_cfg; /* My L2CAP config */ tCONN_CB ccb[SDP_MAX_CONNECTIONS]; #if SDP_SERVER_ENABLED == TRUE @@ -247,7 +236,7 @@ extern tSDP_CB *sdp_cb_ptr; /* Functions provided by sdp_main.c */ extern void sdp_init (void); -extern void sdp_disconnect (tCONN_CB*p_ccb, UINT16 reason); +extern void sdp_disconnect (tCONN_CB *p_ccb, UINT16 reason); #if (defined(SDP_DEBUG) && SDP_DEBUG == TRUE) extern UINT16 sdp_set_max_attr_list_size (UINT16 max_size); @@ -293,7 +282,7 @@ extern UINT16 sdpu_get_list_len( tSDP_UUID_SEQ *uid_seq, tSDP_ATTR_SEQ *attr extern UINT16 sdpu_get_attrib_seq_len(tSDP_RECORD *p_rec, tSDP_ATTR_SEQ *attr_seq); extern UINT16 sdpu_get_attrib_entry_len(tSDP_ATTRIBUTE *p_attr); extern UINT8 *sdpu_build_partial_attrib_entry (UINT8 *p_out, tSDP_ATTRIBUTE *p_attr, UINT16 len, UINT16 *offset); -extern void sdpu_uuid16_to_uuid128(UINT16 uuid16, UINT8* p_uuid128); +extern void sdpu_uuid16_to_uuid128(UINT16 uuid16, UINT8 *p_uuid128); /* Functions provided by sdp_db.c */ diff --git a/components/bt/bluedroid/stack/sdp/sdp_api.c b/components/bt/bluedroid/stack/sdp/sdp_api.c old mode 100755 new mode 100644 index 1eab7d541c..241fb9598c --- a/components/bt/bluedroid/stack/sdp/sdp_api.c +++ b/components/bt/bluedroid/stack/sdp/sdp_api.c @@ -70,12 +70,11 @@ BOOLEAN SDP_InitDiscoveryDb (tSDP_DISCOVERY_DB *p_db, UINT32 len, UINT16 num_uui /* verify the parameters */ if (p_db == NULL || (sizeof (tSDP_DISCOVERY_DB) > len) || - num_attr > SDP_MAX_ATTR_FILTERS || num_uuid > SDP_MAX_UUID_FILTERS) - { + num_attr > SDP_MAX_ATTR_FILTERS || num_uuid > SDP_MAX_UUID_FILTERS) { SDP_TRACE_ERROR("SDP_InitDiscoveryDb Illegal param: p_db 0x%x, len %d, num_uuid %d, num_attr %d", - (UINT32)p_db, len, num_uuid, num_attr); + (UINT32)p_db, len, num_uuid, num_attr); - return(FALSE); + return (FALSE); } memset (p_db, 0, (size_t)len); @@ -85,20 +84,22 @@ BOOLEAN SDP_InitDiscoveryDb (tSDP_DISCOVERY_DB *p_db, UINT32 len, UINT16 num_uui p_db->p_first_rec = NULL; p_db->p_free_mem = (UINT8 *)(p_db + 1); - for (xx = 0; xx < num_uuid; xx++) + for (xx = 0; xx < num_uuid; xx++) { p_db->uuid_filters[xx] = *p_uuid_list++; + } p_db->num_uuid_filters = num_uuid; - for (xx = 0; xx < num_attr; xx++) + for (xx = 0; xx < num_attr; xx++) { p_db->attr_filters[xx] = *p_attr_list++; + } /* sort attributes */ sdpu_sort_attr_list( num_attr, p_db ); p_db->num_attr_filters = num_attr; #endif - return(TRUE); + return (TRUE); } @@ -116,13 +117,14 @@ BOOLEAN SDP_CancelServiceSearch (tSDP_DISCOVERY_DB *p_db) { #if SDP_CLIENT_ENABLED == TRUE tCONN_CB *p_ccb = sdpu_find_ccb_by_db (p_db); - if (!p_ccb) - return(FALSE); + if (!p_ccb) { + return (FALSE); + } sdp_disconnect (p_ccb, SDP_CANCEL); p_ccb->disc_state = SDP_DISC_WAIT_CANCEL; #endif - return(TRUE); + return (TRUE); } @@ -145,16 +147,17 @@ BOOLEAN SDP_ServiceSearchRequest (UINT8 *p_bd_addr, tSDP_DISCOVERY_DB *p_db, /* Specific BD address */ p_ccb = sdp_conn_originate (p_bd_addr); - if (!p_ccb) - return(FALSE); + if (!p_ccb) { + return (FALSE); + } p_ccb->disc_state = SDP_DISC_WAIT_CONN; p_ccb->p_db = p_db; p_ccb->p_cb = p_cb; - return(TRUE); + return (TRUE); #else - return(FALSE); + return (FALSE); #endif } @@ -174,7 +177,7 @@ BOOLEAN SDP_ServiceSearchRequest (UINT8 *p_bd_addr, tSDP_DISCOVERY_DB *p_db, ** *******************************************************************************/ BOOLEAN SDP_ServiceSearchAttributeRequest (UINT8 *p_bd_addr, tSDP_DISCOVERY_DB *p_db, - tSDP_DISC_CMPL_CB *p_cb) + tSDP_DISC_CMPL_CB *p_cb) { #if SDP_CLIENT_ENABLED == TRUE tCONN_CB *p_ccb; @@ -182,8 +185,9 @@ BOOLEAN SDP_ServiceSearchAttributeRequest (UINT8 *p_bd_addr, tSDP_DISCOVERY_DB * /* Specific BD address */ p_ccb = sdp_conn_originate (p_bd_addr); - if (!p_ccb) - return(FALSE); + if (!p_ccb) { + return (FALSE); + } p_ccb->disc_state = SDP_DISC_WAIT_CONN; p_ccb->p_db = p_db; @@ -191,9 +195,9 @@ BOOLEAN SDP_ServiceSearchAttributeRequest (UINT8 *p_bd_addr, tSDP_DISCOVERY_DB * p_ccb->is_attr_search = TRUE; - return(TRUE); + return (TRUE); #else - return(FALSE); + return (FALSE); #endif } /******************************************************************************* @@ -211,7 +215,7 @@ BOOLEAN SDP_ServiceSearchAttributeRequest (UINT8 *p_bd_addr, tSDP_DISCOVERY_DB * ** *******************************************************************************/ BOOLEAN SDP_ServiceSearchAttributeRequest2 (UINT8 *p_bd_addr, tSDP_DISCOVERY_DB *p_db, - tSDP_DISC_CMPL_CB2 *p_cb2, void * user_data) + tSDP_DISC_CMPL_CB2 *p_cb2, void *user_data) { #if SDP_CLIENT_ENABLED == TRUE tCONN_CB *p_ccb; @@ -219,8 +223,9 @@ BOOLEAN SDP_ServiceSearchAttributeRequest2 (UINT8 *p_bd_addr, tSDP_DISCOVERY_DB /* Specific BD address */ p_ccb = sdp_conn_originate (p_bd_addr); - if (!p_ccb) - return(FALSE); + if (!p_ccb) { + return (FALSE); + } p_ccb->disc_state = SDP_DISC_WAIT_CONN; p_ccb->p_db = p_db; @@ -229,9 +234,9 @@ BOOLEAN SDP_ServiceSearchAttributeRequest2 (UINT8 *p_bd_addr, tSDP_DISCOVERY_DB p_ccb->is_attr_search = TRUE; p_ccb->user_data = user_data; - return(TRUE); + return (TRUE); #else - return(FALSE); + return (FALSE); #endif } @@ -263,21 +268,22 @@ tSDP_DISC_REC *SDP_FindAttributeInDb (tSDP_DISCOVERY_DB *p_db, UINT16 attr_id, tSDP_DISC_ATTR *p_attr; /* Must have a valid database */ - if (p_db == NULL) - return(NULL); + if (p_db == NULL) { + return (NULL); + } - if (!p_start_rec) + if (!p_start_rec) { p_rec = p_db->p_first_rec; - else + } else { p_rec = p_start_rec->p_next_rec; + } - while (p_rec) - { + while (p_rec) { p_attr = p_rec->p_first_attr; - while (p_attr) - { - if (p_attr->attr_id == attr_id) - return(p_rec); + while (p_attr) { + if (p_attr->attr_id == attr_id) { + return (p_rec); + } p_attr = p_attr->p_next_attr; } @@ -286,7 +292,7 @@ tSDP_DISC_REC *SDP_FindAttributeInDb (tSDP_DISCOVERY_DB *p_db, UINT16 attr_id, } #endif /* If here, no matching attribute found */ - return(NULL); + return (NULL); } @@ -306,16 +312,16 @@ tSDP_DISC_ATTR *SDP_FindAttributeInRec (tSDP_DISC_REC *p_rec, UINT16 attr_id) tSDP_DISC_ATTR *p_attr; p_attr = p_rec->p_first_attr; - while (p_attr) - { - if (p_attr->attr_id == attr_id) - return(p_attr); + while (p_attr) { + if (p_attr->attr_id == attr_id) { + return (p_attr); + } p_attr = p_attr->p_next_attr; } #endif /* If here, no matching attribute found */ - return(NULL); + return (NULL); } /******************************************************************************* @@ -331,77 +337,62 @@ tSDP_DISC_ATTR *SDP_FindAttributeInRec (tSDP_DISC_REC *p_rec, UINT16 attr_id) ** Returns TRUE if found, otherwise FALSE. ** *******************************************************************************/ -BOOLEAN SDP_FindServiceUUIDInRec(tSDP_DISC_REC *p_rec, tBT_UUID * p_uuid) +BOOLEAN SDP_FindServiceUUIDInRec(tSDP_DISC_REC *p_rec, tBT_UUID *p_uuid) { #if SDP_CLIENT_ENABLED == TRUE tSDP_DISC_ATTR *p_attr, *p_sattr, *p_extra_sattr; p_attr = p_rec->p_first_attr; - while (p_attr) - { + while (p_attr) { if ((p_attr->attr_id == ATTR_ID_SERVICE_CLASS_ID_LIST) - && (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) == DATA_ELE_SEQ_DESC_TYPE)) - { - for (p_sattr = p_attr->attr_value.v.p_sub_attr; p_sattr; p_sattr = p_sattr->p_next_attr) - { - if (SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) == UUID_DESC_TYPE) - { - if (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == LEN_UUID_16) - { + && (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) == DATA_ELE_SEQ_DESC_TYPE)) { + for (p_sattr = p_attr->attr_value.v.p_sub_attr; p_sattr; p_sattr = p_sattr->p_next_attr) { + if (SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) == UUID_DESC_TYPE) { + if (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == LEN_UUID_16) { p_uuid->len = LEN_UUID_16; p_uuid->uu.uuid16 = p_sattr->attr_value.v.u16; - } - else if (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == LEN_UUID_128) - { + } else if (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == LEN_UUID_128) { p_uuid->len = LEN_UUID_128; - for (uint8_t i = 0; i != LEN_UUID_128; ++i) - p_uuid->uu.uuid128[i] = p_sattr->attr_value.v.array[LEN_UUID_128-i-1]; - } - else if (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == LEN_UUID_32) - { + for (uint8_t i = 0; i != LEN_UUID_128; ++i) { + p_uuid->uu.uuid128[i] = p_sattr->attr_value.v.array[LEN_UUID_128 - i - 1]; + } + } else if (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == LEN_UUID_32) { p_uuid->len = LEN_UUID_32; p_uuid->uu.uuid32 = p_sattr->attr_value.v.u32; } - return(TRUE); + return (TRUE); } /* Checking for Toyota G Block Car Kit: ** This car kit puts an extra data element sequence ** where the UUID is suppose to be!!! */ - else - { - if (SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) == DATA_ELE_SEQ_DESC_TYPE) - { + else { + if (SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) == DATA_ELE_SEQ_DESC_TYPE) { /* Look through data element sequence until no more UUIDs */ - for (p_extra_sattr = p_sattr->attr_value.v.p_sub_attr; p_extra_sattr; p_extra_sattr = p_extra_sattr->p_next_attr) - { + for (p_extra_sattr = p_sattr->attr_value.v.p_sub_attr; p_extra_sattr; p_extra_sattr = p_extra_sattr->p_next_attr) { /* Increment past this to see if the next attribut is UUID */ if ((SDP_DISC_ATTR_TYPE(p_extra_sattr->attr_len_type) == UUID_DESC_TYPE) - /* only support 16 bits UUID for now */ - && (SDP_DISC_ATTR_LEN(p_extra_sattr->attr_len_type) == 2)) - { + /* only support 16 bits UUID for now */ + && (SDP_DISC_ATTR_LEN(p_extra_sattr->attr_len_type) == 2)) { p_uuid->len = 2; p_uuid->uu.uuid16 = p_extra_sattr->attr_value.v.u16; - return(TRUE); + return (TRUE); } } } } } break; - } - else if (p_attr->attr_id == ATTR_ID_SERVICE_ID) - { + } else if (p_attr->attr_id == ATTR_ID_SERVICE_ID) { if ((SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) == UUID_DESC_TYPE) - /* only support 16 bits UUID for now */ - && (SDP_DISC_ATTR_LEN(p_attr->attr_len_type) == 2)) - { + /* only support 16 bits UUID for now */ + && (SDP_DISC_ATTR_LEN(p_attr->attr_len_type) == 2)) { p_uuid->len = 2; p_uuid->uu.uuid16 = p_attr->attr_value.v.u16; - return(TRUE); + return (TRUE); } } p_attr = p_attr->p_next_attr; @@ -423,44 +414,38 @@ BOOLEAN SDP_FindServiceUUIDInRec(tSDP_DISC_REC *p_rec, tBT_UUID * p_uuid) ** Returns TRUE if found, otherwise FALSE. ** *******************************************************************************/ -BOOLEAN SDP_FindServiceUUIDInRec_128bit(tSDP_DISC_REC *p_rec, tBT_UUID * p_uuid) +BOOLEAN SDP_FindServiceUUIDInRec_128bit(tSDP_DISC_REC *p_rec, tBT_UUID *p_uuid) { #if SDP_CLIENT_ENABLED == TRUE tSDP_DISC_ATTR *p_attr, *p_sattr; p_attr = p_rec->p_first_attr; - while (p_attr) - { + while (p_attr) { if ((p_attr->attr_id == ATTR_ID_SERVICE_CLASS_ID_LIST) - && (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) == DATA_ELE_SEQ_DESC_TYPE)) - { - for (p_sattr = p_attr->attr_value.v.p_sub_attr; p_sattr; p_sattr = p_sattr->p_next_attr) - { - if (SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) == UUID_DESC_TYPE) - { + && (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) == DATA_ELE_SEQ_DESC_TYPE)) { + for (p_sattr = p_attr->attr_value.v.p_sub_attr; p_sattr; p_sattr = p_sattr->p_next_attr) { + if (SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) == UUID_DESC_TYPE) { /* only support 128 bits UUID for now */ - if (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == 16) - { + if (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == 16) { p_uuid->len = LEN_UUID_128; - for (uint8_t i = 0; i != LEN_UUID_128; ++i) - p_uuid->uu.uuid128[i] = p_sattr->attr_value.v.array[LEN_UUID_128-i-1]; + for (uint8_t i = 0; i != LEN_UUID_128; ++i) { + p_uuid->uu.uuid128[i] = p_sattr->attr_value.v.array[LEN_UUID_128 - i - 1]; + } } - return(TRUE); + return (TRUE); } } break; - } - else if (p_attr->attr_id == ATTR_ID_SERVICE_ID) - { + } else if (p_attr->attr_id == ATTR_ID_SERVICE_ID) { if ((SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) == UUID_DESC_TYPE) - /* only support 128 bits UUID for now */ - && (SDP_DISC_ATTR_LEN(p_attr->attr_len_type) == 16)) - { + /* only support 128 bits UUID for now */ + && (SDP_DISC_ATTR_LEN(p_attr->attr_len_type) == 16)) { p_uuid->len = LEN_UUID_128; - for (uint8_t i = 0; i != LEN_UUID_128; ++i) - p_uuid->uu.uuid128[i] = p_attr->attr_value.v.array[LEN_UUID_128-i-1]; - return(TRUE); + for (uint8_t i = 0; i != LEN_UUID_128; ++i) { + p_uuid->uu.uuid128[i] = p_attr->attr_value.v.array[LEN_UUID_128 - i - 1]; + } + return (TRUE); } } p_attr = p_attr->p_next_attr; @@ -488,33 +473,29 @@ tSDP_DISC_REC *SDP_FindServiceInDb (tSDP_DISCOVERY_DB *p_db, UINT16 service_uuid tSDP_DISC_ATTR *p_attr, *p_sattr, *p_extra_sattr; /* Must have a valid database */ - if (p_db == NULL) - return(NULL); + if (p_db == NULL) { + return (NULL); + } - if (!p_start_rec) + if (!p_start_rec) { p_rec = p_db->p_first_rec; - else + } else { p_rec = p_start_rec->p_next_rec; + } - while (p_rec) - { + while (p_rec) { p_attr = p_rec->p_first_attr; - while (p_attr) - { + while (p_attr) { if ((p_attr->attr_id == ATTR_ID_SERVICE_CLASS_ID_LIST) - && (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) == DATA_ELE_SEQ_DESC_TYPE)) - { - for (p_sattr = p_attr->attr_value.v.p_sub_attr; p_sattr; p_sattr = p_sattr->p_next_attr) - { + && (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) == DATA_ELE_SEQ_DESC_TYPE)) { + for (p_sattr = p_attr->attr_value.v.p_sub_attr; p_sattr; p_sattr = p_sattr->p_next_attr) { if ((SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) == UUID_DESC_TYPE) - && (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == 2) ) { + && (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == 2) ) { SDP_TRACE_DEBUG("SDP_FindServiceInDb - p_sattr value = 0x%x serviceuuid = 0x%x\r\n", p_sattr->attr_value.v.u16, service_uuid); - if(service_uuid == UUID_SERVCLASS_HDP_PROFILE) - { - if( (p_sattr->attr_value.v.u16==UUID_SERVCLASS_HDP_SOURCE) || ( p_sattr->attr_value.v.u16==UUID_SERVCLASS_HDP_SINK)) - { + if (service_uuid == UUID_SERVCLASS_HDP_PROFILE) { + if ( (p_sattr->attr_value.v.u16 == UUID_SERVCLASS_HDP_SOURCE) || ( p_sattr->attr_value.v.u16 == UUID_SERVCLASS_HDP_SINK)) { SDP_TRACE_DEBUG("SDP_FindServiceInDb found HDP source or sink\n" ); return (p_rec); } @@ -523,45 +504,40 @@ tSDP_DISC_REC *SDP_FindServiceInDb (tSDP_DISCOVERY_DB *p_db, UINT16 service_uuid } if (SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) == UUID_DESC_TYPE && (service_uuid == 0 - || (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == 2 - && p_sattr->attr_value.v.u16 == service_uuid))) + || (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == 2 + && p_sattr->attr_value.v.u16 == service_uuid))) /* for a specific uuid, or any one */ { - return(p_rec); + return (p_rec); } /* Checking for Toyota G Block Car Kit: ** This car kit puts an extra data element sequence ** where the UUID is suppose to be!!! */ - else - { - if (SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) == DATA_ELE_SEQ_DESC_TYPE) - { + else { + if (SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) == DATA_ELE_SEQ_DESC_TYPE) { /* Look through data element sequence until no more UUIDs */ - for (p_extra_sattr = p_sattr->attr_value.v.p_sub_attr; p_extra_sattr; p_extra_sattr = p_extra_sattr->p_next_attr) - { + for (p_extra_sattr = p_sattr->attr_value.v.p_sub_attr; p_extra_sattr; p_extra_sattr = p_extra_sattr->p_next_attr) { /* Increment past this to see if the next attribut is UUID */ if ((SDP_DISC_ATTR_TYPE(p_extra_sattr->attr_len_type) == UUID_DESC_TYPE) - && (SDP_DISC_ATTR_LEN(p_extra_sattr->attr_len_type) == 2) - /* for a specific uuid, or any one */ - && ((p_extra_sattr->attr_value.v.u16 == service_uuid) || (service_uuid == 0))) - { - return(p_rec); + && (SDP_DISC_ATTR_LEN(p_extra_sattr->attr_len_type) == 2) + /* for a specific uuid, or any one */ + && ((p_extra_sattr->attr_value.v.u16 == service_uuid) || (service_uuid == 0))) { + return (p_rec); } } } } } break; - } - else if (p_attr->attr_id == ATTR_ID_SERVICE_ID) - { + } else if (p_attr->attr_id == ATTR_ID_SERVICE_ID) { if ((SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) == UUID_DESC_TYPE) - && (SDP_DISC_ATTR_LEN(p_attr->attr_len_type) == 2) - /* find a specific UUID or anyone */ - && ((p_attr->attr_value.v.u16 == service_uuid) || service_uuid == 0)) - return(p_rec); + && (SDP_DISC_ATTR_LEN(p_attr->attr_len_type) == 2) + /* find a specific UUID or anyone */ + && ((p_attr->attr_value.v.u16 == service_uuid) || service_uuid == 0)) { + return (p_rec); + } } p_attr = p_attr->p_next_attr; @@ -571,7 +547,7 @@ tSDP_DISC_REC *SDP_FindServiceInDb (tSDP_DISCOVERY_DB *p_db, UINT16 service_uuid } #endif /* If here, no matching UUID found */ - return(NULL); + return (NULL); } /******************************************************************************* @@ -596,37 +572,33 @@ tSDP_DISC_REC *SDP_FindServiceInDb_128bit(tSDP_DISCOVERY_DB *p_db, tSDP_DISC_REC tSDP_DISC_ATTR *p_attr, *p_sattr; /* Must have a valid database */ - if (p_db == NULL) - return(NULL); + if (p_db == NULL) { + return (NULL); + } - if (!p_start_rec) + if (!p_start_rec) { p_rec = p_db->p_first_rec; - else + } else { p_rec = p_start_rec->p_next_rec; + } - while (p_rec) - { + while (p_rec) { p_attr = p_rec->p_first_attr; - while (p_attr) - { + while (p_attr) { if ((p_attr->attr_id == ATTR_ID_SERVICE_CLASS_ID_LIST) - && (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) == DATA_ELE_SEQ_DESC_TYPE)) - { - for (p_sattr = p_attr->attr_value.v.p_sub_attr; p_sattr; p_sattr = p_sattr->p_next_attr) - { + && (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) == DATA_ELE_SEQ_DESC_TYPE)) { + for (p_sattr = p_attr->attr_value.v.p_sub_attr; p_sattr; p_sattr = p_sattr->p_next_attr) { if ((SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) == UUID_DESC_TYPE) - && (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == 16)) - { - return(p_rec); + && (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == 16)) { + return (p_rec); } } break; - } - else if (p_attr->attr_id == ATTR_ID_SERVICE_ID) - { + } else if (p_attr->attr_id == ATTR_ID_SERVICE_ID) { if ((SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) == UUID_DESC_TYPE) - && (SDP_DISC_ATTR_LEN(p_attr->attr_len_type) == 16)) - return(p_rec); + && (SDP_DISC_ATTR_LEN(p_attr->attr_len_type) == 16)) { + return (p_rec); + } } p_attr = p_attr->p_next_attr; @@ -636,7 +608,7 @@ tSDP_DISC_REC *SDP_FindServiceInDb_128bit(tSDP_DISCOVERY_DB *p_db, tSDP_DISC_REC } #endif /* If here, no matching UUID found */ - return(NULL); + return (NULL); } @@ -662,38 +634,34 @@ tSDP_DISC_REC *SDP_FindServiceUUIDInDb (tSDP_DISCOVERY_DB *p_db, tBT_UUID *p_uui tSDP_DISC_ATTR *p_attr, *p_sattr; /* Must have a valid database */ - if (p_db == NULL) - return(NULL); + if (p_db == NULL) { + return (NULL); + } - if (!p_start_rec) + if (!p_start_rec) { p_rec = p_db->p_first_rec; - else + } else { p_rec = p_start_rec->p_next_rec; + } - while (p_rec) - { + while (p_rec) { p_attr = p_rec->p_first_attr; - while (p_attr) - { + while (p_attr) { if ((p_attr->attr_id == ATTR_ID_SERVICE_CLASS_ID_LIST) - && (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) == DATA_ELE_SEQ_DESC_TYPE)) - { - for (p_sattr = p_attr->attr_value.v.p_sub_attr; p_sattr; p_sattr = p_sattr->p_next_attr) - { - if (SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) == UUID_DESC_TYPE) - { - if (sdpu_compare_uuid_with_attr (p_uuid, p_sattr)) - return(p_rec); + && (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) == DATA_ELE_SEQ_DESC_TYPE)) { + for (p_sattr = p_attr->attr_value.v.p_sub_attr; p_sattr; p_sattr = p_sattr->p_next_attr) { + if (SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) == UUID_DESC_TYPE) { + if (sdpu_compare_uuid_with_attr (p_uuid, p_sattr)) { + return (p_rec); + } } } break; - } - else if (p_attr->attr_id == ATTR_ID_SERVICE_ID) - { - if (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) == UUID_DESC_TYPE ) - { - if (sdpu_compare_uuid_with_attr (p_uuid, p_attr)) - return(p_rec); + } else if (p_attr->attr_id == ATTR_ID_SERVICE_ID) { + if (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) == UUID_DESC_TYPE ) { + if (sdpu_compare_uuid_with_attr (p_uuid, p_attr)) { + return (p_rec); + } } } @@ -704,7 +672,7 @@ tSDP_DISC_REC *SDP_FindServiceUUIDInDb (tSDP_DISCOVERY_DB *p_db, tBT_UUID *p_uui } #endif /* CLIENT_ENABLED == TRUE */ /* If here, no matching UUID found */ - return(NULL); + return (NULL); } #if SDP_CLIENT_ENABLED == TRUE @@ -724,46 +692,46 @@ static BOOLEAN sdp_fill_proto_elem( tSDP_DISC_ATTR *p_attr, UINT16 layer_uuid, tSDP_DISC_ATTR *p_sattr; /* Walk through the protocol descriptor list */ - for (p_attr = p_attr->attr_value.v.p_sub_attr; p_attr; p_attr = p_attr->p_next_attr) - { + for (p_attr = p_attr->attr_value.v.p_sub_attr; p_attr; p_attr = p_attr->p_next_attr) { /* Safety check - each entry should itself be a sequence */ - if (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) != DATA_ELE_SEQ_DESC_TYPE) - return(FALSE); + if (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) != DATA_ELE_SEQ_DESC_TYPE) { + return (FALSE); + } /* Now, see if the entry contains the layer we are interested in */ - for (p_sattr = p_attr->attr_value.v.p_sub_attr; p_sattr; p_sattr = p_sattr->p_next_attr) - { + for (p_sattr = p_attr->attr_value.v.p_sub_attr; p_sattr; p_sattr = p_sattr->p_next_attr) { /* SDP_TRACE_DEBUG ("SDP - p_sattr 0x%x, layer_uuid:0x%x, u16:0x%x####", p_sattr, layer_uuid, p_sattr->attr_value.v.u16); */ if ((SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) == UUID_DESC_TYPE) - && (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == 2) - && (p_sattr->attr_value.v.u16 == layer_uuid)) - { + && (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == 2) + && (p_sattr->attr_value.v.u16 == layer_uuid)) { /* Bingo. Now fill in the passed element */ p_elem->protocol_uuid = layer_uuid; p_elem->num_params = 0; /* Store the parameters, if any */ - for (p_sattr = p_sattr->p_next_attr; p_sattr; p_sattr = p_sattr->p_next_attr) - { - if (SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) != UINT_DESC_TYPE) + for (p_sattr = p_sattr->p_next_attr; p_sattr; p_sattr = p_sattr->p_next_attr) { + if (SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) != UINT_DESC_TYPE) { break; + } - if (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == 2) + if (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == 2) { p_elem->params[p_elem->num_params++] = p_sattr->attr_value.v.u16; - else + } else { p_elem->params[p_elem->num_params++] = p_sattr->attr_value.v.u8; + } - if (p_elem->num_params >= SDP_MAX_PROTOCOL_PARAMS) + if (p_elem->num_params >= SDP_MAX_PROTOCOL_PARAMS) { break; + } } - return(TRUE); + return (TRUE); } } } - return(FALSE); + return (FALSE); } #endif /* CLIENT_ENABLED == TRUE */ @@ -784,19 +752,17 @@ BOOLEAN SDP_FindProtocolListElemInRec (tSDP_DISC_REC *p_rec, UINT16 layer_uuid, tSDP_DISC_ATTR *p_attr; p_attr = p_rec->p_first_attr; - while (p_attr) - { + while (p_attr) { /* Find the protocol descriptor list */ if ((p_attr->attr_id == ATTR_ID_PROTOCOL_DESC_LIST) - && (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) == DATA_ELE_SEQ_DESC_TYPE)) - { + && (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) == DATA_ELE_SEQ_DESC_TYPE)) { return sdp_fill_proto_elem(p_attr, layer_uuid, p_elem); } p_attr = p_attr->p_next_attr; } #endif /* If here, no match found */ - return(FALSE); + return (FALSE); } @@ -818,19 +784,16 @@ BOOLEAN SDP_FindAddProtoListsElemInRec (tSDP_DISC_REC *p_rec, UINT16 layer_uuid, BOOLEAN ret = FALSE; p_attr = p_rec->p_first_attr; - while (p_attr) - { + while (p_attr) { /* Find the additional protocol descriptor list attribute */ if ((p_attr->attr_id == ATTR_ID_ADDITION_PROTO_DESC_LISTS) - && (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) == DATA_ELE_SEQ_DESC_TYPE)) - { - for (p_sattr = p_attr->attr_value.v.p_sub_attr; p_sattr; p_sattr = p_sattr->p_next_attr) - { + && (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) == DATA_ELE_SEQ_DESC_TYPE)) { + for (p_sattr = p_attr->attr_value.v.p_sub_attr; p_sattr; p_sattr = p_sattr->p_next_attr) { /* Safety check - each entry should itself be a sequence */ - if (SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) == DATA_ELE_SEQ_DESC_TYPE) - { - if ( (ret = sdp_fill_proto_elem(p_sattr, layer_uuid, p_elem)) == TRUE) + if (SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) == DATA_ELE_SEQ_DESC_TYPE) { + if ( (ret = sdp_fill_proto_elem(p_sattr, layer_uuid, p_elem)) == TRUE) { break; + } } } return ret; @@ -839,7 +802,7 @@ BOOLEAN SDP_FindAddProtoListsElemInRec (tSDP_DISC_REC *p_rec, UINT16 layer_uuid, } #endif /* If here, no match found */ - return(FALSE); + return (FALSE); } @@ -863,52 +826,47 @@ BOOLEAN SDP_FindProfileVersionInRec (tSDP_DISC_REC *p_rec, UINT16 profile_uuid, tSDP_DISC_ATTR *p_attr, *p_sattr; p_attr = p_rec->p_first_attr; - while (p_attr) - { + while (p_attr) { /* Find the profile descriptor list */ if ((p_attr->attr_id == ATTR_ID_BT_PROFILE_DESC_LIST) - && (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) == DATA_ELE_SEQ_DESC_TYPE)) - { + && (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) == DATA_ELE_SEQ_DESC_TYPE)) { /* Walk through the protocol descriptor list */ - for (p_attr = p_attr->attr_value.v.p_sub_attr; p_attr; p_attr = p_attr->p_next_attr) - { + for (p_attr = p_attr->attr_value.v.p_sub_attr; p_attr; p_attr = p_attr->p_next_attr) { /* Safety check - each entry should itself be a sequence */ - if (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) != DATA_ELE_SEQ_DESC_TYPE) - return(FALSE); + if (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) != DATA_ELE_SEQ_DESC_TYPE) { + return (FALSE); + } /* Now, see if the entry contains the profile UUID we are interested in */ - for (p_sattr = p_attr->attr_value.v.p_sub_attr; p_sattr; p_sattr = p_sattr->p_next_attr) - { + for (p_sattr = p_attr->attr_value.v.p_sub_attr; p_sattr; p_sattr = p_sattr->p_next_attr) { if ((SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) == UUID_DESC_TYPE) - && (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == 2) /* <- This is bytes, not size code! */ - && (p_sattr->attr_value.v.u16 == profile_uuid)) - { + && (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == 2) /* <- This is bytes, not size code! */ + && (p_sattr->attr_value.v.u16 == profile_uuid)) { /* Now fill in the major and minor numbers */ /* if the attribute matches the description for version (type UINT, size 2 bytes) */ p_sattr = p_sattr->p_next_attr; if ((SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) == UINT_DESC_TYPE) && - (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == 2)) - { + (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == 2)) { /* The high order 8 bits is the major number, low order is the minor number (big endian) */ *p_version = p_sattr->attr_value.v.u16; - return(TRUE); + return (TRUE); + } else { + return (FALSE); /* The type and/or size was not valid for the profile list version */ } - else - return(FALSE); /* The type and/or size was not valid for the profile list version */ } } } - return(FALSE); + return (FALSE); } p_attr = p_attr->p_next_attr; } #endif /* CLIENT_ENABLED == TRUE */ /* If here, no match found */ - return(FALSE); + return (FALSE); } /******************************************************************************* @@ -938,8 +896,9 @@ UINT16 SDP_DiDiscover( BD_ADDR remote_device, tSDP_DISCOVERY_DB *p_db, init_uuid.uu.uuid16 = di_uuid; if ( SDP_InitDiscoveryDb(p_db, len, num_uuids, &init_uuid, 0, NULL) ) - if ( SDP_ServiceSearchRequest(remote_device, p_db, p_cb) ) + if ( SDP_ServiceSearchRequest(remote_device, p_db, p_cb) ) { result = SDP_SUCCESS; + } return result; #else @@ -962,13 +921,13 @@ UINT8 SDP_GetNumDiRecords( tSDP_DISCOVERY_DB *p_db ) UINT8 num_records = 0; tSDP_DISC_REC *p_curr_record = NULL; - do - { + do { p_curr_record = SDP_FindServiceInDb( p_db, UUID_SERVCLASS_PNP_INFORMATION, p_curr_record ); - if ( p_curr_record ) + if ( p_curr_record ) { num_records++; - }while ( p_curr_record ); + } + } while ( p_curr_record ); return num_records; #else @@ -987,19 +946,17 @@ UINT8 SDP_GetNumDiRecords( tSDP_DISCOVERY_DB *p_db ) *******************************************************************************/ static void SDP_AttrStringCopy(char *dst, tSDP_DISC_ATTR *p_attr, UINT16 dst_size) { - if ( dst == NULL ) return; - if ( p_attr ) - { + if ( dst == NULL ) { + return; + } + if ( p_attr ) { UINT16 len = SDP_DISC_ATTR_LEN(p_attr->attr_len_type); - if ( len > dst_size - 1 ) - { + if ( len > dst_size - 1 ) { len = dst_size - 1; } memcpy(dst, (char *)p_attr->attr_value.v.array, len); dst[len] = '\0'; - } - else - { + } else { dst[0] = '\0'; } } @@ -1024,22 +981,18 @@ UINT16 SDP_GetDiRecord( UINT8 get_record_index, tSDP_DI_GET_RECORD *p_device_inf tSDP_DISC_REC *p_curr_record = NULL; /* find the requested SDP record in the discovery database */ - do - { + do { p_curr_record = SDP_FindServiceInDb( p_db, UUID_SERVCLASS_PNP_INFORMATION, p_curr_record ); - if ( p_curr_record ) - { - if ( curr_record_index++ == get_record_index ) - { + if ( p_curr_record ) { + if ( curr_record_index++ == get_record_index ) { result = SDP_SUCCESS; break; } } - }while ( p_curr_record ); + } while ( p_curr_record ); - if ( result == SDP_SUCCESS ) - { + if ( result == SDP_SUCCESS ) { /* copy the information from the SDP record to the DI record */ tSDP_DISC_ATTR *p_curr_attr = NULL; @@ -1057,40 +1010,46 @@ UINT16 SDP_GetDiRecord( UINT8 get_record_index, tSDP_DI_GET_RECORD *p_device_inf SDP_AttrStringCopy( p_device_info->rec.documentation_url, p_curr_attr, SDP_MAX_ATTR_LEN ); p_curr_attr = SDP_FindAttributeInRec( p_curr_record, ATTR_ID_SPECIFICATION_ID ); - if ( p_curr_attr ) + if ( p_curr_attr ) { p_device_info->spec_id = p_curr_attr->attr_value.v.u16; - else + } else { result = SDP_ERR_ATTR_NOT_PRESENT; + } p_curr_attr = SDP_FindAttributeInRec( p_curr_record, ATTR_ID_VENDOR_ID ); - if ( p_curr_attr ) + if ( p_curr_attr ) { p_device_info->rec.vendor = p_curr_attr->attr_value.v.u16; - else + } else { result = SDP_ERR_ATTR_NOT_PRESENT; + } p_curr_attr = SDP_FindAttributeInRec( p_curr_record, ATTR_ID_VENDOR_ID_SOURCE ); - if ( p_curr_attr ) + if ( p_curr_attr ) { p_device_info->rec.vendor_id_source = p_curr_attr->attr_value.v.u16; - else + } else { result = SDP_ERR_ATTR_NOT_PRESENT; + } p_curr_attr = SDP_FindAttributeInRec( p_curr_record, ATTR_ID_PRODUCT_ID ); - if ( p_curr_attr ) + if ( p_curr_attr ) { p_device_info->rec.product = p_curr_attr->attr_value.v.u16; - else + } else { result = SDP_ERR_ATTR_NOT_PRESENT; + } p_curr_attr = SDP_FindAttributeInRec( p_curr_record, ATTR_ID_PRODUCT_VERSION ); - if ( p_curr_attr ) + if ( p_curr_attr ) { p_device_info->rec.version = p_curr_attr->attr_value.v.u16; - else + } else { result = SDP_ERR_ATTR_NOT_PRESENT; + } p_curr_attr = SDP_FindAttributeInRec( p_curr_record, ATTR_ID_PRIMARY_RECORD ); - if ( p_curr_attr ) + if ( p_curr_attr ) { p_device_info->rec.primary_record = (BOOLEAN)p_curr_attr->attr_value.v.u8; - else + } else { result = SDP_ERR_ATTR_NOT_PRESENT; + } } return result; @@ -1126,129 +1085,129 @@ UINT16 SDP_SetLocalDiRecord( tSDP_DI_RECORD *p_device_info, UINT32 *p_handle ) UINT8 u8; *p_handle = 0; - if ( p_device_info == NULL ) + if ( p_device_info == NULL ) { return SDP_ILLEGAL_PARAMETER; + } /* if record is to be primary record, get handle to replace old primary */ - if ( p_device_info->primary_record == TRUE && sdp_cb.server_db.di_primary_handle ) + if ( p_device_info->primary_record == TRUE && sdp_cb.server_db.di_primary_handle ) { handle = sdp_cb.server_db.di_primary_handle; - else - { - if ( (handle = SDP_CreateRecord()) == 0 ) + } else { + if ( (handle = SDP_CreateRecord()) == 0 ) { return SDP_NO_RESOURCES; + } } *p_handle = handle; /* build the SDP entry */ /* Add the UUID to the Service Class ID List */ - if ((SDP_AddServiceClassIdList(handle, 1, &di_uuid)) == FALSE) + if ((SDP_AddServiceClassIdList(handle, 1, &di_uuid)) == FALSE) { result = SDP_DI_REG_FAILED; + } /* mandatory */ - if ( result == SDP_SUCCESS) - { + if ( result == SDP_SUCCESS) { p_temp = temp_u16; UINT16_TO_BE_STREAM(p_temp, di_specid); if ( !(SDP_AddAttribute(handle, ATTR_ID_SPECIFICATION_ID, UINT_DESC_TYPE, sizeof(di_specid), - temp_u16)) ) + temp_u16)) ) { result = SDP_DI_REG_FAILED; - } - - /* optional - if string is null, do not add attribute */ - if ( result == SDP_SUCCESS ) - { - if ( p_device_info->client_executable_url[0] != '\0' ) - { - if ( !((strlen(p_device_info->client_executable_url)+1 <= SDP_MAX_ATTR_LEN) && - SDP_AddAttribute(handle, ATTR_ID_CLIENT_EXE_URL, URL_DESC_TYPE, - (UINT32)(strlen(p_device_info->client_executable_url)+1), - (UINT8 *)p_device_info->client_executable_url)) ) - result = SDP_DI_REG_FAILED; } } /* optional - if string is null, do not add attribute */ - if ( result == SDP_SUCCESS ) - { - if ( p_device_info->service_description[0] != '\0' ) - { - if ( !((strlen(p_device_info->service_description)+1 <= SDP_MAX_ATTR_LEN) && - SDP_AddAttribute(handle, ATTR_ID_SERVICE_DESCRIPTION, - TEXT_STR_DESC_TYPE, - (UINT32)(strlen(p_device_info->service_description)+1), - (UINT8 *)p_device_info->service_description)) ) + if ( result == SDP_SUCCESS ) { + if ( p_device_info->client_executable_url[0] != '\0' ) { + if ( !((strlen(p_device_info->client_executable_url) + 1 <= SDP_MAX_ATTR_LEN) && + SDP_AddAttribute(handle, ATTR_ID_CLIENT_EXE_URL, URL_DESC_TYPE, + (UINT32)(strlen(p_device_info->client_executable_url) + 1), + (UINT8 *)p_device_info->client_executable_url)) ) { result = SDP_DI_REG_FAILED; + } } } /* optional - if string is null, do not add attribute */ - if ( result == SDP_SUCCESS ) - { - if ( p_device_info->documentation_url[0] != '\0' ) - { - if ( !((strlen(p_device_info->documentation_url)+1 <= SDP_MAX_ATTR_LEN) && - SDP_AddAttribute(handle, ATTR_ID_DOCUMENTATION_URL, URL_DESC_TYPE, - (UINT32)(strlen(p_device_info->documentation_url)+1), - (UINT8 *)p_device_info->documentation_url)) ) + if ( result == SDP_SUCCESS ) { + if ( p_device_info->service_description[0] != '\0' ) { + if ( !((strlen(p_device_info->service_description) + 1 <= SDP_MAX_ATTR_LEN) && + SDP_AddAttribute(handle, ATTR_ID_SERVICE_DESCRIPTION, + TEXT_STR_DESC_TYPE, + (UINT32)(strlen(p_device_info->service_description) + 1), + (UINT8 *)p_device_info->service_description)) ) { result = SDP_DI_REG_FAILED; + } + } + } + + /* optional - if string is null, do not add attribute */ + if ( result == SDP_SUCCESS ) { + if ( p_device_info->documentation_url[0] != '\0' ) { + if ( !((strlen(p_device_info->documentation_url) + 1 <= SDP_MAX_ATTR_LEN) && + SDP_AddAttribute(handle, ATTR_ID_DOCUMENTATION_URL, URL_DESC_TYPE, + (UINT32)(strlen(p_device_info->documentation_url) + 1), + (UINT8 *)p_device_info->documentation_url)) ) { + result = SDP_DI_REG_FAILED; + } } } /* mandatory */ - if ( result == SDP_SUCCESS) - { + if ( result == SDP_SUCCESS) { p_temp = temp_u16; UINT16_TO_BE_STREAM(p_temp, p_device_info->vendor); if ( !(SDP_AddAttribute(handle, ATTR_ID_VENDOR_ID, UINT_DESC_TYPE, - sizeof(p_device_info->vendor), temp_u16)) ) + sizeof(p_device_info->vendor), temp_u16)) ) { result = SDP_DI_REG_FAILED; + } } /* mandatory */ - if ( result == SDP_SUCCESS) - { + if ( result == SDP_SUCCESS) { p_temp = temp_u16; UINT16_TO_BE_STREAM (p_temp, p_device_info->product); if ( !(SDP_AddAttribute(handle, ATTR_ID_PRODUCT_ID, - UINT_DESC_TYPE, sizeof(p_device_info->product), temp_u16)) ) + UINT_DESC_TYPE, sizeof(p_device_info->product), temp_u16)) ) { result = SDP_DI_REG_FAILED; + } } /* mandatory */ - if ( result == SDP_SUCCESS) - { + if ( result == SDP_SUCCESS) { p_temp = temp_u16; UINT16_TO_BE_STREAM (p_temp, p_device_info->version); if ( !(SDP_AddAttribute(handle, ATTR_ID_PRODUCT_VERSION, UINT_DESC_TYPE, - sizeof(p_device_info->version), temp_u16)) ) + sizeof(p_device_info->version), temp_u16)) ) { result = SDP_DI_REG_FAILED; + } } /* mandatory */ - if ( result == SDP_SUCCESS) - { + if ( result == SDP_SUCCESS) { u8 = (UINT8)p_device_info->primary_record; if ( !(SDP_AddAttribute(handle, ATTR_ID_PRIMARY_RECORD, - BOOLEAN_DESC_TYPE, 1, &u8)) ) + BOOLEAN_DESC_TYPE, 1, &u8)) ) { result = SDP_DI_REG_FAILED; + } } /* mandatory */ - if ( result == SDP_SUCCESS) - { + if ( result == SDP_SUCCESS) { p_temp = temp_u16; UINT16_TO_BE_STREAM(p_temp, p_device_info->vendor_id_source); if ( !(SDP_AddAttribute(handle, ATTR_ID_VENDOR_ID_SOURCE, UINT_DESC_TYPE, - sizeof(p_device_info->vendor_id_source), temp_u16)) ) + sizeof(p_device_info->vendor_id_source), temp_u16)) ) { result = SDP_DI_REG_FAILED; + } } - if ( result != SDP_SUCCESS ) + if ( result != SDP_SUCCESS ) { SDP_DeleteRecord( handle ); - else if (p_device_info->primary_record == TRUE) + } else if (p_device_info->primary_record == TRUE) { sdp_cb.server_db.di_primary_handle = handle; + } return result; #else /* SDP_SERVER_ENABLED is FALSE */ @@ -1268,8 +1227,9 @@ UINT16 SDP_SetLocalDiRecord( tSDP_DI_RECORD *p_device_info, UINT32 *p_handle ) *******************************************************************************/ UINT8 SDP_SetTraceLevel (UINT8 new_level) { - if (new_level != 0xFF) + if (new_level != 0xFF) { sdp_cb.trace_level = new_level; + } - return(sdp_cb.trace_level); + return (sdp_cb.trace_level); } diff --git a/components/bt/bluedroid/stack/sdp/sdp_db.c b/components/bt/bluedroid/stack/sdp/sdp_db.c old mode 100755 new mode 100644 index 8eb680dcd4..264a0d25cf --- a/components/bt/bluedroid/stack/sdp/sdp_db.c +++ b/components/bt/bluedroid/stack/sdp/sdp_db.c @@ -63,43 +63,42 @@ tSDP_RECORD *sdp_db_service_search (tSDP_RECORD *p_rec, tSDP_UUID_SEQ *p_seq) tSDP_RECORD *p_end = &sdp_cb.server_db.record[sdp_cb.server_db.num_records]; /* If NULL, start at the beginning, else start at the first specified record */ - if (!p_rec) + if (!p_rec) { p_rec = &sdp_cb.server_db.record[0]; - else + } else { p_rec++; + } /* Look through the records. The spec says that a match occurs if */ /* the record contains all the passed UUIDs in it. */ - for ( ; p_rec < p_end; p_rec++) - { - for (yy = 0; yy < p_seq->num_uids; yy++) - { + for ( ; p_rec < p_end; p_rec++) { + for (yy = 0; yy < p_seq->num_uids; yy++) { p_attr = &p_rec->attribute[0]; - for (xx = 0; xx < p_rec->num_attributes; xx++, p_attr++) - { - if (p_attr->type == UUID_DESC_TYPE) - { + for (xx = 0; xx < p_rec->num_attributes; xx++, p_attr++) { + if (p_attr->type == UUID_DESC_TYPE) { if (sdpu_compare_uuid_arrays (p_attr->value_ptr, p_attr->len, &p_seq->uuid_entry[yy].value[0], - p_seq->uuid_entry[yy].len)) + p_seq->uuid_entry[yy].len)) { break; - } - else if (p_attr->type == DATA_ELE_SEQ_DESC_TYPE) - { + } + } else if (p_attr->type == DATA_ELE_SEQ_DESC_TYPE) { if (find_uuid_in_seq (p_attr->value_ptr, p_attr->len, &p_seq->uuid_entry[yy].value[0], - p_seq->uuid_entry[yy].len, 0)) + p_seq->uuid_entry[yy].len, 0)) { break; + } } } /* If any UUID was not found, on to the next record */ - if (xx == p_rec->num_attributes) + if (xx == p_rec->num_attributes) { break; + } } /* If every UUID was found in the record, return the record */ - if (yy == p_seq->num_uids) + if (yy == p_seq->num_uids) { return (p_rec); + } } /* If here, no more records found */ @@ -123,23 +122,22 @@ static BOOLEAN find_uuid_in_seq (UINT8 *p , UINT32 seq_len, UINT8 *p_uuid, UINT32 len; /* A little safety check to avoid excessive recursion */ - if (nest_level > 3) + if (nest_level > 3) { return (FALSE); + } - while (p < p_end) - { + while (p < p_end) { type = *p++; p = sdpu_get_len_from_type (p, type, &len); type = type >> 3; - if (type == UUID_DESC_TYPE) - { - if (sdpu_compare_uuid_arrays (p, len, p_uuid, uuid_len)) + if (type == UUID_DESC_TYPE) { + if (sdpu_compare_uuid_arrays (p, len, p_uuid, uuid_len)) { return (TRUE); - } - else if (type == DATA_ELE_SEQ_DESC_TYPE) - { - if (find_uuid_in_seq (p, len, p_uuid, uuid_len, nest_level + 1)) + } + } else if (type == DATA_ELE_SEQ_DESC_TYPE) { + if (find_uuid_in_seq (p, len, p_uuid, uuid_len, nest_level + 1)) { return (TRUE); + } } p = p + len; } @@ -164,10 +162,10 @@ tSDP_RECORD *sdp_db_find_record (UINT32 handle) tSDP_RECORD *p_end = &sdp_cb.server_db.record[sdp_cb.server_db.num_records]; /* Look through the records for the caller's handle */ - for (p_rec = &sdp_cb.server_db.record[0]; p_rec < p_end; p_rec++) - { - if (p_rec->record_handle == handle) + for (p_rec = &sdp_cb.server_db.record[0]; p_rec < p_end; p_rec++) { + if (p_rec->record_handle == handle) { return (p_rec); + } } /* Record with that handle not found. */ @@ -187,17 +185,17 @@ tSDP_RECORD *sdp_db_find_record (UINT32 handle) ** *******************************************************************************/ tSDP_ATTRIBUTE *sdp_db_find_attr_in_rec (tSDP_RECORD *p_rec, UINT16 start_attr, - UINT16 end_attr) + UINT16 end_attr) { tSDP_ATTRIBUTE *p_at; UINT16 xx; /* Note that the attributes in a record are assumed to be in sorted order */ for (xx = 0, p_at = &p_rec->attribute[0]; xx < p_rec->num_attributes; - xx++, p_at++) - { - if ((p_at->id >= start_attr) && (p_at->id <= end_attr)) + xx++, p_at++) { + if ((p_at->id >= start_attr) && (p_at->id <= end_attr)) { return (p_at); + } } /* No matching attribute found */ @@ -216,7 +214,7 @@ tSDP_ATTRIBUTE *sdp_db_find_attr_in_rec (tSDP_RECORD *p_rec, UINT16 start_attr, ** *******************************************************************************/ static int sdp_compose_proto_list( UINT8 *p, UINT16 num_elem, - tSDP_PROTOCOL_ELEM *p_elem_list) + tSDP_PROTOCOL_ELEM *p_elem_list) { UINT16 xx, yy, len; BOOLEAN is_rfcomm_scn; @@ -227,8 +225,7 @@ static int sdp_compose_proto_list( UINT8 *p, UINT16 num_elem, ** sequences, one for each layer. Each layer sequence consists of layer's ** UUID and optional parameters */ - for (xx = 0; xx < num_elem; xx++, p_elem_list++) - { + for (xx = 0; xx < num_elem; xx++, p_elem_list++) { len = 3 + (p_elem_list->num_params * 3); UINT8_TO_BE_STREAM (p, (DATA_ELE_SEQ_DESC_TYPE << 3) | SIZE_IN_NEXT_BYTE); @@ -238,22 +235,19 @@ static int sdp_compose_proto_list( UINT8 *p, UINT16 num_elem, UINT8_TO_BE_STREAM (p, (UUID_DESC_TYPE << 3) | SIZE_TWO_BYTES); UINT16_TO_BE_STREAM (p, p_elem_list->protocol_uuid); - if (p_elem_list->protocol_uuid == UUID_PROTOCOL_RFCOMM) + if (p_elem_list->protocol_uuid == UUID_PROTOCOL_RFCOMM) { is_rfcomm_scn = TRUE; - else + } else { is_rfcomm_scn = FALSE; + } - for (yy = 0; yy < p_elem_list->num_params; yy++) - { - if (is_rfcomm_scn) - { + for (yy = 0; yy < p_elem_list->num_params; yy++) { + if (is_rfcomm_scn) { UINT8_TO_BE_STREAM (p, (UINT_DESC_TYPE << 3) | SIZE_ONE_BYTE); UINT8_TO_BE_STREAM (p, p_elem_list->params[yy]); *p_len -= 1; - } - else - { + } else { UINT8_TO_BE_STREAM (p, (UINT_DESC_TYPE << 3) | SIZE_TWO_BYTES); UINT16_TO_BE_STREAM (p, p_elem_list->params[yy]); } @@ -284,17 +278,17 @@ UINT32 SDP_CreateRecord (void) tSDP_DB *p_db = &sdp_cb.server_db; /* First, check if there is a free record */ - if (p_db->num_records < SDP_MAX_RECORDS) - { + if (p_db->num_records < SDP_MAX_RECORDS) { memset (&p_db->record[p_db->num_records], 0, sizeof (tSDP_RECORD)); /* We will use a handle of the first unreserved handle plus last record ** number + 1 */ - if (p_db->num_records) + if (p_db->num_records) { handle = p_db->record[p_db->num_records - 1].record_handle + 1; - else + } else { handle = 0x10000; + } p_db->record[p_db->num_records].record_handle = handle; @@ -306,10 +300,11 @@ UINT32 SDP_CreateRecord (void) 4, buf); return (p_db->record[p_db->num_records - 1].record_handle); + } else { + SDP_TRACE_ERROR("SDP_CreateRecord fail, exceed maximum records:%d\n", SDP_MAX_RECORDS); } - else SDP_TRACE_ERROR("SDP_CreateRecord fail, exceed maximum records:%d\n", SDP_MAX_RECORDS); #endif - return (0); + return (0); } @@ -332,8 +327,7 @@ BOOLEAN SDP_DeleteRecord (UINT32 handle) UINT16 xx, yy, zz; tSDP_RECORD *p_rec = &sdp_cb.server_db.record[0]; - if (handle == 0 || sdp_cb.server_db.num_records == 0) - { + if (handle == 0 || sdp_cb.server_db.num_records == 0) { /* Delete all records in the database */ sdp_cb.server_db.num_records = 0; @@ -341,22 +335,18 @@ BOOLEAN SDP_DeleteRecord (UINT32 handle) sdp_cb.server_db.di_primary_handle = 0; return (TRUE); - } - else - { + } else { /* Find the record in the database */ - for (xx = 0; xx < sdp_cb.server_db.num_records; xx++, p_rec++) - { - if (p_rec->record_handle == handle) - { + for (xx = 0; xx < sdp_cb.server_db.num_records; xx++, p_rec++) { + if (p_rec->record_handle == handle) { /* Found it. Shift everything up one */ - for (yy = xx; yy < sdp_cb.server_db.num_records; yy++, p_rec++) - { + for (yy = xx; yy < sdp_cb.server_db.num_records; yy++, p_rec++) { *p_rec = *(p_rec + 1); /* Adjust the attribute value pointer for each attribute */ - for (zz = 0; zz < p_rec->num_attributes; zz++) + for (zz = 0; zz < p_rec->num_attributes; zz++) { p_rec->attribute[zz].value_ptr -= sizeof(tSDP_RECORD); + } } sdp_cb.server_db.num_records--; @@ -364,8 +354,7 @@ BOOLEAN SDP_DeleteRecord (UINT32 handle) SDP_TRACE_DEBUG("SDP_DeleteRecord ok, num_records:%d\n", sdp_cb.server_db.num_records); /* if we're deleting the primary DI record, clear the */ /* value in the control block */ - if( sdp_cb.server_db.di_primary_handle == handle ) - { + if ( sdp_cb.server_db.di_primary_handle == handle ) { sdp_cb.server_db.di_primary_handle = 0; } @@ -400,104 +389,90 @@ BOOLEAN SDP_AddAttribute (UINT32 handle, UINT16 attr_id, UINT8 attr_type, tSDP_RECORD *p_rec = &sdp_cb.server_db.record[0]; #if (BT_TRACE_VERBOSE == TRUE) - if (sdp_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) - { + if (sdp_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) { if ((attr_type == UINT_DESC_TYPE) || - (attr_type == TWO_COMP_INT_DESC_TYPE) || - (attr_type == UUID_DESC_TYPE) || - (attr_type == DATA_ELE_SEQ_DESC_TYPE) || - (attr_type == DATA_ELE_ALT_DESC_TYPE)) - { + (attr_type == TWO_COMP_INT_DESC_TYPE) || + (attr_type == UUID_DESC_TYPE) || + (attr_type == DATA_ELE_SEQ_DESC_TYPE) || + (attr_type == DATA_ELE_ALT_DESC_TYPE)) { UINT8 num_array[400]; UINT32 i; UINT32 len = (attr_len > 200) ? 200 : attr_len; - num_array[0] ='\0'; - for (i = 0; i < len; i++) - { - sprintf((char *)&num_array[i*2],"%02X",(UINT8)(p_val[i])); + num_array[0] = '\0'; + for (i = 0; i < len; i++) { + sprintf((char *)&num_array[i * 2], "%02X", (UINT8)(p_val[i])); } SDP_TRACE_DEBUG("SDP_AddAttribute: handle:%X, id:%04X, type:%d, len:%d, p_val:%p, *p_val:%s\n", - handle,attr_id,attr_type,attr_len,p_val,num_array); - } - else if (attr_type == BOOLEAN_DESC_TYPE) - { + handle, attr_id, attr_type, attr_len, p_val, num_array); + } else if (attr_type == BOOLEAN_DESC_TYPE) { SDP_TRACE_DEBUG("SDP_AddAttribute: handle:%X, id:%04X, type:%d, len:%d, p_val:%p, *p_val:%d\n", - handle,attr_id,attr_type,attr_len,p_val,*p_val); - } - else - { + handle, attr_id, attr_type, attr_len, p_val, *p_val); + } else { SDP_TRACE_DEBUG("SDP_AddAttribute: handle:%X, id:%04X, type:%d, len:%d, p_val:%p, *p_val:%s\n", - handle,attr_id,attr_type,attr_len,p_val,p_val); + handle, attr_id, attr_type, attr_len, p_val, p_val); } } #endif /* Find the record in the database */ - for (zz = 0; zz < sdp_cb.server_db.num_records; zz++, p_rec++) - { - if (p_rec->record_handle == handle) - { + for (zz = 0; zz < sdp_cb.server_db.num_records; zz++, p_rec++) { + if (p_rec->record_handle == handle) { tSDP_ATTRIBUTE *p_attr = &p_rec->attribute[0]; /* Found the record. Now, see if the attribute already exists */ - for (xx = 0; xx < p_rec->num_attributes; xx++, p_attr++) - { + for (xx = 0; xx < p_rec->num_attributes; xx++, p_attr++) { /* The attribute exists. replace it */ - if (p_attr->id == attr_id) - { + if (p_attr->id == attr_id) { SDP_DeleteAttribute (handle, attr_id); break; } - if (p_attr->id > attr_id) + if (p_attr->id > attr_id) { break; + } } - if (p_rec->num_attributes == SDP_MAX_REC_ATTR) + if (p_rec->num_attributes == SDP_MAX_REC_ATTR) { return (FALSE); + } /* If not found, see if we can allocate a new entry */ - if (xx == p_rec->num_attributes) + if (xx == p_rec->num_attributes) { p_attr = &p_rec->attribute[p_rec->num_attributes]; - else - { + } else { /* Since the attributes are kept in sorted order, insert ours here */ - for (yy = p_rec->num_attributes; yy > xx; yy--) + for (yy = p_rec->num_attributes; yy > xx; yy--) { p_rec->attribute[yy] = p_rec->attribute[yy - 1]; + } } p_attr->id = attr_id; p_attr->type = attr_type; p_attr->len = attr_len; - if (p_rec->free_pad_ptr + attr_len >= SDP_MAX_PAD_LEN) - { + if (p_rec->free_pad_ptr + attr_len >= SDP_MAX_PAD_LEN) { /* do truncate only for text string type descriptor */ - if (attr_type == TEXT_STR_DESC_TYPE) - { + if (attr_type == TEXT_STR_DESC_TYPE) { SDP_TRACE_WARNING("SDP_AddAttribute: attr_len:%d too long. truncate to (%d)\n", - attr_len, SDP_MAX_PAD_LEN - p_rec->free_pad_ptr ); + attr_len, SDP_MAX_PAD_LEN - p_rec->free_pad_ptr ); attr_len = SDP_MAX_PAD_LEN - p_rec->free_pad_ptr; p_val[SDP_MAX_PAD_LEN - p_rec->free_pad_ptr] = '\0'; - p_val[SDP_MAX_PAD_LEN - p_rec->free_pad_ptr+1] = '\0'; - } - else + p_val[SDP_MAX_PAD_LEN - p_rec->free_pad_ptr + 1] = '\0'; + } else { attr_len = 0; + } } - if ((attr_len > 0) && (p_val != 0)) - { + if ((attr_len > 0) && (p_val != 0)) { p_attr->len = attr_len; memcpy (&p_rec->attr_pad[p_rec->free_pad_ptr], p_val, (size_t)attr_len); p_attr->value_ptr = &p_rec->attr_pad[p_rec->free_pad_ptr]; p_rec->free_pad_ptr += attr_len; - } - else if ((attr_len == 0 && p_attr->len != 0) || /* if truncate to 0 length, simply don't add */ - p_val == 0) - { + } else if ((attr_len == 0 && p_attr->len != 0) || /* if truncate to 0 length, simply don't add */ + p_val == 0) { SDP_TRACE_ERROR("SDP_AddAttribute fail, length exceed maximum: ID %d: attr_len:%d \n", - attr_id, attr_len ); + attr_id, attr_len ); p_attr->id = p_attr->type = p_attr->len = 0; return (FALSE); } @@ -534,19 +509,16 @@ BOOLEAN SDP_AddSequence (UINT32 handle, UINT16 attr_id, UINT16 num_elem, UINT8 *p_head; BOOLEAN result; - if ((p_buff = (UINT8 *) GKI_getbuf(sizeof(UINT8) * SDP_MAX_ATTR_LEN * 2)) == NULL) - { + if ((p_buff = (UINT8 *) GKI_getbuf(sizeof(UINT8) * SDP_MAX_ATTR_LEN * 2)) == NULL) { SDP_TRACE_ERROR("SDP_AddSequence cannot get a buffer!\n"); return (FALSE); } p = p_buff; /* First, build the sequence */ - for (xx = 0; xx < num_elem; xx++) - { + for (xx = 0; xx < num_elem; xx++) { p_head = p; - switch (len[xx]) - { + switch (len[xx]) { case 1: UINT8_TO_BE_STREAM (p, (type[xx] << 3) | SIZE_ONE_BYTE); break; @@ -570,23 +542,21 @@ BOOLEAN SDP_AddSequence (UINT32 handle, UINT16 attr_id, UINT16 num_elem, ARRAY_TO_BE_STREAM (p, p_val[xx], len[xx]); - if (p - p_buff > SDP_MAX_ATTR_LEN) - { + if (p - p_buff > SDP_MAX_ATTR_LEN) { /* go back to before we add this element */ p = p_head; - if(p_head == p_buff) - { + if (p_head == p_buff) { /* the first element exceed the max length */ SDP_TRACE_ERROR ("SDP_AddSequence - too long(attribute is not added)!!\n"); GKI_freebuf(p_buff); return FALSE; - } - else + } else { SDP_TRACE_ERROR ("SDP_AddSequence - too long, add %d elements of %d\n", xx, num_elem); + } break; } } - result = SDP_AddAttribute (handle, attr_id, DATA_ELE_SEQ_DESC_TYPE,(UINT32) (p - p_buff), p_buff); + result = SDP_AddAttribute (handle, attr_id, DATA_ELE_SEQ_DESC_TYPE, (UINT32) (p - p_buff), p_buff); GKI_freebuf(p_buff); return result; #else /* SDP_SERVER_ENABLED == FALSE */ @@ -614,30 +584,27 @@ BOOLEAN SDP_AddUuidSequence (UINT32 handle, UINT16 attr_id, UINT16 num_uuids, UINT16 xx; UINT8 *p_buff; UINT8 *p; - INT32 max_len = SDP_MAX_ATTR_LEN -3; + INT32 max_len = SDP_MAX_ATTR_LEN - 3; BOOLEAN result; - if ((p_buff = (UINT8 *) GKI_getbuf(sizeof(UINT8) * SDP_MAX_ATTR_LEN * 2)) == NULL) - { + if ((p_buff = (UINT8 *) GKI_getbuf(sizeof(UINT8) * SDP_MAX_ATTR_LEN * 2)) == NULL) { SDP_TRACE_ERROR("SDP_AddUuidSequence cannot get a buffer!\n"); return (FALSE); } p = p_buff; /* First, build the sequence */ - for (xx = 0; xx < num_uuids ; xx++, p_uuids++) - { + for (xx = 0; xx < num_uuids ; xx++, p_uuids++) { UINT8_TO_BE_STREAM (p, (UUID_DESC_TYPE << 3) | SIZE_TWO_BYTES); UINT16_TO_BE_STREAM (p, *p_uuids); - if((p - p_buff) > max_len) - { + if ((p - p_buff) > max_len) { SDP_TRACE_WARNING ("SDP_AddUuidSequence - too long, add %d uuids of %d\n", xx, num_uuids); break; } } - result = SDP_AddAttribute (handle, attr_id, DATA_ELE_SEQ_DESC_TYPE,(UINT32) (p - p_buff), p_buff); + result = SDP_AddAttribute (handle, attr_id, DATA_ELE_SEQ_DESC_TYPE, (UINT32) (p - p_buff), p_buff); GKI_freebuf(p_buff); return result; #else /* SDP_SERVER_ENABLED == FALSE */ @@ -665,14 +632,13 @@ BOOLEAN SDP_AddProtocolList (UINT32 handle, UINT16 num_elem, int offset; BOOLEAN result; - if ((p_buff = (UINT8 *) GKI_getbuf(sizeof(UINT8) * SDP_MAX_ATTR_LEN * 2)) == NULL) - { + if ((p_buff = (UINT8 *) GKI_getbuf(sizeof(UINT8) * SDP_MAX_ATTR_LEN * 2)) == NULL) { SDP_TRACE_ERROR("SDP_AddProtocolList cannot get a buffer!\n"); return (FALSE); } offset = sdp_compose_proto_list(p_buff, num_elem, p_elem_list); - result = SDP_AddAttribute (handle, ATTR_ID_PROTOCOL_DESC_LIST,DATA_ELE_SEQ_DESC_TYPE, (UINT32) offset, p_buff); + result = SDP_AddAttribute (handle, ATTR_ID_PROTOCOL_DESC_LIST, DATA_ELE_SEQ_DESC_TYPE, (UINT32) offset, p_buff); GKI_freebuf(p_buff); return result; #else /* SDP_SERVER_ENABLED == FALSE */ @@ -704,16 +670,14 @@ BOOLEAN SDP_AddAdditionProtoLists (UINT32 handle, UINT16 num_elem, int offset; BOOLEAN result; - if ((p_buff = (UINT8 *) GKI_getbuf(sizeof(UINT8) * SDP_MAX_ATTR_LEN * 2)) == NULL) - { + if ((p_buff = (UINT8 *) GKI_getbuf(sizeof(UINT8) * SDP_MAX_ATTR_LEN * 2)) == NULL) { SDP_TRACE_ERROR("SDP_AddAdditionProtoLists cannot get a buffer!\n"); return (FALSE); } p = p_buff; /* for each ProtocolDescriptorList */ - for (xx = 0; xx < num_elem; xx++, p_proto_list++) - { + for (xx = 0; xx < num_elem; xx++, p_proto_list++) { UINT8_TO_BE_STREAM (p, (DATA_ELE_SEQ_DESC_TYPE << 3) | SIZE_IN_NEXT_BYTE); p_len = p++; @@ -723,8 +687,8 @@ BOOLEAN SDP_AddAdditionProtoLists (UINT32 handle, UINT16 num_elem, *p_len = (UINT8)(p - p_len - 1); } - result = SDP_AddAttribute (handle, ATTR_ID_ADDITION_PROTO_DESC_LISTS,DATA_ELE_SEQ_DESC_TYPE, - (UINT32) (p - p_buff), p_buff); + result = SDP_AddAttribute (handle, ATTR_ID_ADDITION_PROTO_DESC_LISTS, DATA_ELE_SEQ_DESC_TYPE, + (UINT32) (p - p_buff), p_buff); GKI_freebuf(p_buff); return result; @@ -751,14 +715,13 @@ BOOLEAN SDP_AddProfileDescriptorList (UINT32 handle, UINT16 profile_uuid, #if SDP_SERVER_ENABLED == TRUE UINT8 *p_buff; UINT8 *p; - BOOLEAN result; + BOOLEAN result; - if ((p_buff = (UINT8 *) GKI_getbuf(sizeof(UINT8) * SDP_MAX_ATTR_LEN)) == NULL) - { + if ((p_buff = (UINT8 *) GKI_getbuf(sizeof(UINT8) * SDP_MAX_ATTR_LEN)) == NULL) { SDP_TRACE_ERROR("SDP_AddProfileDescriptorList cannot get a buffer!\n"); return (FALSE); } - p = p_buff+2; + p = p_buff + 2; /* First, build the profile descriptor list. This consists of a data element sequence. */ /* The sequence consists of profile's UUID and version number */ @@ -770,9 +733,9 @@ BOOLEAN SDP_AddProfileDescriptorList (UINT32 handle, UINT16 profile_uuid, /* Add in type and length fields */ *p_buff = (UINT8) ((DATA_ELE_SEQ_DESC_TYPE << 3) | SIZE_IN_NEXT_BYTE); - *(p_buff+1) = (UINT8) (p - (p_buff+2)); + *(p_buff + 1) = (UINT8) (p - (p_buff + 2)); - result = SDP_AddAttribute (handle, ATTR_ID_BT_PROFILE_DESC_LIST,DATA_ELE_SEQ_DESC_TYPE, (UINT32) (p - p_buff), p_buff); + result = SDP_AddAttribute (handle, ATTR_ID_BT_PROFILE_DESC_LIST, DATA_ELE_SEQ_DESC_TYPE, (UINT32) (p - p_buff), p_buff); GKI_freebuf(p_buff); return result; @@ -802,8 +765,7 @@ BOOLEAN SDP_AddLanguageBaseAttrIDList (UINT32 handle, UINT16 lang, UINT8 *p; BOOLEAN result; - if ((p_buff = (UINT8 *) GKI_getbuf(sizeof(UINT8) * SDP_MAX_ATTR_LEN)) == NULL) - { + if ((p_buff = (UINT8 *) GKI_getbuf(sizeof(UINT8) * SDP_MAX_ATTR_LEN)) == NULL) { SDP_TRACE_ERROR("SDP_AddLanguageBaseAttrIDList cannot get a buffer!\n"); return (FALSE); } @@ -820,8 +782,8 @@ BOOLEAN SDP_AddLanguageBaseAttrIDList (UINT32 handle, UINT16 lang, UINT8_TO_BE_STREAM (p, (UINT_DESC_TYPE << 3) | SIZE_TWO_BYTES); UINT16_TO_BE_STREAM (p, base_id); - result = SDP_AddAttribute (handle, ATTR_ID_LANGUAGE_BASE_ATTR_ID_LIST,DATA_ELE_SEQ_DESC_TYPE, - (UINT32) (p - p_buff), p_buff); + result = SDP_AddAttribute (handle, ATTR_ID_LANGUAGE_BASE_ATTR_ID_LIST, DATA_ELE_SEQ_DESC_TYPE, + (UINT32) (p - p_buff), p_buff); GKI_freebuf(p_buff); return result; #else /* SDP_SERVER_ENABLED == FALSE */ @@ -851,21 +813,19 @@ BOOLEAN SDP_AddServiceClassIdList (UINT32 handle, UINT16 num_services, UINT8 *p; BOOLEAN result; - if ((p_buff = (UINT8 *) GKI_getbuf(sizeof(UINT8) * SDP_MAX_ATTR_LEN * 2)) == NULL) - { + if ((p_buff = (UINT8 *) GKI_getbuf(sizeof(UINT8) * SDP_MAX_ATTR_LEN * 2)) == NULL) { SDP_TRACE_ERROR("SDP_AddServiceClassIdList cannot get a buffer!\n"); return (FALSE); } p = p_buff; - for (xx = 0; xx < num_services; xx++, p_service_uuids++) - { + for (xx = 0; xx < num_services; xx++, p_service_uuids++) { UINT8_TO_BE_STREAM (p, (UUID_DESC_TYPE << 3) | SIZE_TWO_BYTES); UINT16_TO_BE_STREAM (p, *p_service_uuids); } - result = SDP_AddAttribute (handle, ATTR_ID_SERVICE_CLASS_ID_LIST,DATA_ELE_SEQ_DESC_TYPE, - (UINT32) (p - p_buff), p_buff); + result = SDP_AddAttribute (handle, ATTR_ID_SERVICE_CLASS_ID_LIST, DATA_ELE_SEQ_DESC_TYPE, + (UINT32) (p - p_buff), p_buff); GKI_freebuf(p_buff); return result; #else /* SDP_SERVER_ENABLED == FALSE */ @@ -893,45 +853,39 @@ BOOLEAN SDP_DeleteAttribute (UINT32 handle, UINT16 attr_id) UINT32 len; /* Number of bytes in the entry */ /* Find the record in the database */ - for (xx = 0; xx < sdp_cb.server_db.num_records; xx++, p_rec++) - { - if (p_rec->record_handle == handle) - { + for (xx = 0; xx < sdp_cb.server_db.num_records; xx++, p_rec++) { + if (p_rec->record_handle == handle) { tSDP_ATTRIBUTE *p_attr = &p_rec->attribute[0]; SDP_TRACE_API("Deleting attr_id 0x%04x for handle 0x%x\n", attr_id, handle); /* Found it. Now, find the attribute */ - for (xx = 0; xx < p_rec->num_attributes; xx++, p_attr++) - { - if (p_attr->id == attr_id) - { + for (xx = 0; xx < p_rec->num_attributes; xx++, p_attr++) { + if (p_attr->id == attr_id) { pad_ptr = p_attr->value_ptr; len = p_attr->len; - if (len) - { - for (yy = 0; yy < p_rec->num_attributes; yy++) - { - if( p_rec->attribute[yy].value_ptr > pad_ptr ) + if (len) { + for (yy = 0; yy < p_rec->num_attributes; yy++) { + if ( p_rec->attribute[yy].value_ptr > pad_ptr ) { p_rec->attribute[yy].value_ptr -= len; + } } } /* Found it. Shift everything up one */ p_rec->num_attributes--; - for (yy = xx; yy < p_rec->num_attributes; yy++, p_attr++) - { + for (yy = xx; yy < p_rec->num_attributes; yy++, p_attr++) { *p_attr = *(p_attr + 1); } /* adjust attribute values if needed */ - if (len) - { - xx = (p_rec->free_pad_ptr - ((pad_ptr+len) - - &p_rec->attr_pad[0])); - for( yy=0; yyfree_pad_ptr - ((pad_ptr + len) - + &p_rec->attr_pad[0])); + for ( yy = 0; yy < xx; yy++, pad_ptr++) { + *pad_ptr = *(pad_ptr + len); + } p_rec->free_pad_ptr -= len; } return (TRUE); @@ -972,16 +926,15 @@ INT32 SDP_ReadRecord(UINT32 handle, UINT8 *p_data, INT32 *p_data_len) /* Find the record in the database */ p_rec = sdp_db_find_record(handle); - if(p_rec && p_data && p_data_len) - { + if (p_rec && p_data && p_data_len) { p_rsp = &p_data[3]; - while ( (p_attr = sdp_db_find_attr_in_rec (p_rec, start, end)) != NULL) - { + while ( (p_attr = sdp_db_find_attr_in_rec (p_rec, start, end)) != NULL) { /* Check if attribute fits. Assume 3-byte value type/length */ rem_len = *p_data_len - (UINT16) (p_rsp - p_data); - if (p_attr->len > (UINT32)(rem_len - 6)) + if (p_attr->len > (UINT32)(rem_len - 6)) { break; + } p_rsp = sdpu_build_attrib_entry (p_rsp, p_attr); @@ -991,15 +944,12 @@ INT32 SDP_ReadRecord(UINT32 handle, UINT8 *p_data, INT32 *p_data_len) len = (INT32) (p_rsp - p_data); /* Put in the sequence header (2 or 3 bytes) */ - if (len > 255) - { + if (len > 255) { offset = 0; p_data[0] = (UINT8) ((DATA_ELE_SEQ_DESC_TYPE << 3) | SIZE_IN_NEXT_WORD); p_data[1] = (UINT8) ((len - 3) >> 8); p_data[2] = (UINT8) (len - 3); - } - else - { + } else { offset = 1; p_data[1] = (UINT8) ((DATA_ELE_SEQ_DESC_TYPE << 3) | SIZE_IN_NEXT_BYTE); diff --git a/components/bt/bluedroid/stack/sdp/sdp_discovery.c b/components/bt/bluedroid/stack/sdp/sdp_discovery.c old mode 100755 new mode 100644 index 8e17a28b1f..dcbd357e41 --- a/components/bt/bluedroid/stack/sdp/sdp_discovery.c +++ b/components/bt/bluedroid/stack/sdp/sdp_discovery.c @@ -81,20 +81,14 @@ static UINT8 *sdpu_build_uuid_seq (UINT8 *p_out, UINT16 num_uuids, tSDP_UUID *p_ p_out += 1; /* Now, loop through and put in all the UUID(s) */ - for (xx = 0; xx < num_uuids; xx++, p_uuid_list++) - { - if (p_uuid_list->len == 2) - { + for (xx = 0; xx < num_uuids; xx++, p_uuid_list++) { + if (p_uuid_list->len == 2) { UINT8_TO_BE_STREAM (p_out, (UUID_DESC_TYPE << 3) | SIZE_TWO_BYTES); UINT16_TO_BE_STREAM (p_out, p_uuid_list->uu.uuid16); - } - else if (p_uuid_list->len == 4) - { + } else if (p_uuid_list->len == 4) { UINT8_TO_BE_STREAM (p_out, (UUID_DESC_TYPE << 3) | SIZE_FOUR_BYTES); UINT32_TO_BE_STREAM (p_out, p_uuid_list->uu.uuid32); - } - else - { + } else { UINT8_TO_BE_STREAM (p_out, (UUID_DESC_TYPE << 3) | SIZE_SIXTEEN_BYTES); ARRAY_TO_BE_STREAM (p_out, p_uuid_list->uu.uuid128, p_uuid_list->len); } @@ -116,15 +110,14 @@ static UINT8 *sdpu_build_uuid_seq (UINT8 *p_out, UINT16 num_uuids, tSDP_UUID *p_ ** Returns void ** *******************************************************************************/ -static void sdp_snd_service_search_req(tCONN_CB *p_ccb, UINT8 cont_len, UINT8 * p_cont) +static void sdp_snd_service_search_req(tCONN_CB *p_ccb, UINT8 cont_len, UINT8 *p_cont) { UINT8 *p, *p_start, *p_param_len; BT_HDR *p_cmd; UINT16 param_len; /* Get a buffer to send the packet to L2CAP */ - if ((p_cmd = (BT_HDR *) GKI_getpoolbuf (SDP_POOL_ID)) == NULL) - { + if ((p_cmd = (BT_HDR *) GKI_getpoolbuf (SDP_POOL_ID)) == NULL) { sdp_disconnect (p_ccb, SDP_NO_RESOURCES); return; } @@ -155,8 +148,7 @@ static void sdp_snd_service_search_req(tCONN_CB *p_ccb, UINT8 cont_len, UINT8 * UINT8_TO_BE_STREAM (p, cont_len); /* if this is not the first request */ - if(cont_len && p_cont) - { + if (cont_len && p_cont) { memcpy(p, p_cont, cont_len); p += cont_len; } @@ -171,7 +163,7 @@ static void sdp_snd_service_search_req(tCONN_CB *p_ccb, UINT8 cont_len, UINT8 * p_cmd->len = (UINT16)(p - p_start); #if (SDP_DEBUG_RAW == TRUE) - SDP_TRACE_WARNING("sdp_snd_service_search_req cont_len :%d disc_state:%d\n",cont_len, p_ccb->disc_state); + SDP_TRACE_WARNING("sdp_snd_service_search_req cont_len :%d disc_state:%d\n", cont_len, p_ccb->disc_state); #endif @@ -194,14 +186,11 @@ static void sdp_snd_service_search_req(tCONN_CB *p_ccb, UINT8 cont_len, UINT8 * *******************************************************************************/ void sdp_disc_connected (tCONN_CB *p_ccb) { - if (p_ccb->is_attr_search) - { + if (p_ccb->is_attr_search) { p_ccb->disc_state = SDP_DISC_WAIT_SEARCH_ATTR; process_service_search_attr_rsp (p_ccb, NULL); - } - else - { + } else { /* First step is to get a list of the handles from the server. */ /* We are not searching for a specific attribute, so we will */ /* first search for the service, then get all attributes of it */ @@ -241,35 +230,30 @@ void sdp_disc_server_rsp (tCONN_CB *p_ccb, BT_HDR *p_msg) p_msg->len--; - switch (rsp_pdu) - { + switch (rsp_pdu) { case SDP_PDU_SERVICE_SEARCH_RSP: - if (p_ccb->disc_state == SDP_DISC_WAIT_HANDLES) - { + if (p_ccb->disc_state == SDP_DISC_WAIT_HANDLES) { process_service_search_rsp (p_ccb, p); invalid_pdu = FALSE; } break; case SDP_PDU_SERVICE_ATTR_RSP: - if (p_ccb->disc_state == SDP_DISC_WAIT_ATTR) - { + if (p_ccb->disc_state == SDP_DISC_WAIT_ATTR) { process_service_attr_rsp (p_ccb, p); invalid_pdu = FALSE; } break; case SDP_PDU_SERVICE_SEARCH_ATTR_RSP: - if (p_ccb->disc_state == SDP_DISC_WAIT_SEARCH_ATTR) - { + if (p_ccb->disc_state == SDP_DISC_WAIT_SEARCH_ATTR) { process_service_search_attr_rsp (p_ccb, p); invalid_pdu = FALSE; } break; } - if (invalid_pdu) - { + if (invalid_pdu) { SDP_TRACE_WARNING ("SDP - Unexp. PDU: %d in state: %d\n", rsp_pdu, p_ccb->disc_state); sdp_disconnect (p_ccb, SDP_GENERIC_ERROR); } @@ -298,35 +282,33 @@ static void process_service_search_rsp (tCONN_CB *p_ccb, UINT8 *p_reply) orig = p_ccb->num_handles; p_ccb->num_handles += cur_handles; - if (p_ccb->num_handles == 0) - { + if (p_ccb->num_handles == 0) { SDP_TRACE_WARNING ("SDP - Rcvd ServiceSearchRsp, no matches\n"); sdp_disconnect (p_ccb, SDP_NO_RECS_MATCH); return; } /* Save the handles that match. We will can only process a certain number. */ - if (total > sdp_cb.max_recs_per_search) + if (total > sdp_cb.max_recs_per_search) { total = sdp_cb.max_recs_per_search; - if (p_ccb->num_handles > sdp_cb.max_recs_per_search) + } + if (p_ccb->num_handles > sdp_cb.max_recs_per_search) { p_ccb->num_handles = sdp_cb.max_recs_per_search; + } - for (xx = orig; xx < p_ccb->num_handles; xx++) + for (xx = orig; xx < p_ccb->num_handles; xx++) { BE_STREAM_TO_UINT32 (p_ccb->handles[xx], p_reply); + } BE_STREAM_TO_UINT8 (cont_len, p_reply); - if(cont_len != 0) - { - if(cont_len > SDP_MAX_CONTINUATION_LEN) - { + if (cont_len != 0) { + if (cont_len > SDP_MAX_CONTINUATION_LEN) { sdp_disconnect (p_ccb, SDP_INVALID_CONT_STATE); return; } /* stay in the same state */ sdp_snd_service_search_req(p_ccb, cont_len, p_reply); - } - else - { + } else { /* change state */ p_ccb->disc_state = SDP_DISC_WAIT_ATTR; @@ -357,31 +339,27 @@ static void sdp_copy_raw_data (tCONN_CB *p_ccb, BOOLEAN offset) UINT8 num_array[SDP_MAX_LIST_BYTE_COUNT]; UINT32 i; - for (i = 0; i < p_ccb->list_len; i++) - { - sprintf((char *)&num_array[i*2],"%02X\n",(UINT8)(p_ccb->rsp_list[i])); + for (i = 0; i < p_ccb->list_len; i++) { + sprintf((char *)&num_array[i * 2], "%02X\n", (UINT8)(p_ccb->rsp_list[i])); } - SDP_TRACE_WARNING("result :%s\n",num_array); + SDP_TRACE_WARNING("result :%s\n", num_array); #endif - if(p_ccb->p_db->raw_data) - { + if (p_ccb->p_db->raw_data) { cpy_len = p_ccb->p_db->raw_size - p_ccb->p_db->raw_used; list_len = p_ccb->list_len; p = &p_ccb->rsp_list[0]; - if(offset) - { + if (offset) { type = *p++; p = sdpu_get_len_from_type (p, type, &list_len); } - if(list_len && list_len < cpy_len ) - { + if (list_len && list_len < cpy_len ) { cpy_len = list_len; } #if (SDP_DEBUG_RAW == TRUE) SDP_TRACE_WARNING("list_len :%d cpy_len:%d raw_size:%d raw_used:%d\n", - list_len, cpy_len, p_ccb->p_db->raw_size, p_ccb->p_db->raw_used); + list_len, cpy_len, p_ccb->p_db->raw_size, p_ccb->p_db->raw_used); #endif memcpy (&p_ccb->p_db->raw_data[p_ccb->p_db->raw_used], p, cpy_len); p_ccb->p_db->raw_used += cpy_len; @@ -407,14 +385,13 @@ static void process_service_attr_rsp (tCONN_CB *p_ccb, UINT8 *p_reply) #if (SDP_DEBUG_RAW == TRUE) SDP_TRACE_WARNING("process_service_attr_rsp raw inc:%d\n", - SDP_RAW_DATA_INCLUDED); + SDP_RAW_DATA_INCLUDED); #endif /* If p_reply is NULL, we were called after the records handles were read */ - if (p_reply) - { + if (p_reply) { #if (SDP_DEBUG_RAW == TRUE) SDP_TRACE_WARNING("ID & len: 0x%02x-%02x-%02x-%02x\n", - p_reply[0], p_reply[1], p_reply[2], p_reply[3]); + p_reply[0], p_reply[1], p_reply[2], p_reply[3]); #endif /* Skip transaction ID and length */ p_reply += 4; @@ -425,21 +402,18 @@ static void process_service_attr_rsp (tCONN_CB *p_ccb, UINT8 *p_reply) #endif /* Copy the response to the scratchpad. First, a safety check on the length */ - if ((p_ccb->list_len + list_byte_count) > SDP_MAX_LIST_BYTE_COUNT) - { + if ((p_ccb->list_len + list_byte_count) > SDP_MAX_LIST_BYTE_COUNT) { sdp_disconnect (p_ccb, SDP_INVALID_PDU_SIZE); return; } #if (SDP_DEBUG_RAW == TRUE) SDP_TRACE_WARNING("list_len: %d, list_byte_count: %d\n", - p_ccb->list_len, list_byte_count); + p_ccb->list_len, list_byte_count); #endif - if (p_ccb->rsp_list == NULL) - { + if (p_ccb->rsp_list == NULL) { p_ccb->rsp_list = (UINT8 *)GKI_getbuf (SDP_MAX_LIST_BYTE_COUNT); - if (p_ccb->rsp_list == NULL) - { + if (p_ccb->rsp_list == NULL) { SDP_TRACE_ERROR ("SDP - no gki buf to save rsp\n"); sdp_disconnect (p_ccb, SDP_NO_RESOURCES); return; @@ -454,17 +428,13 @@ static void process_service_attr_rsp (tCONN_CB *p_ccb, UINT8 *p_reply) /* Check if we need to request a continuation */ SDP_TRACE_WARNING("*p_reply:%d(%d)\n", *p_reply, SDP_MAX_CONTINUATION_LEN); #endif - if (*p_reply) - { - if (*p_reply > SDP_MAX_CONTINUATION_LEN) - { + if (*p_reply) { + if (*p_reply > SDP_MAX_CONTINUATION_LEN) { sdp_disconnect (p_ccb, SDP_INVALID_CONT_STATE); return; } cont_request_needed = TRUE; - } - else - { + } else { #if (SDP_RAW_DATA_INCLUDED == TRUE) SDP_TRACE_WARNING("process_service_attr_rsp\n"); @@ -472,8 +442,7 @@ static void process_service_attr_rsp (tCONN_CB *p_ccb, UINT8 *p_reply) #endif /* Save the response in the database. Stop on any error */ - if (!save_attr_seq (p_ccb, &p_ccb->rsp_list[0], &p_ccb->rsp_list[p_ccb->list_len])) - { + if (!save_attr_seq (p_ccb, &p_ccb->rsp_list[0], &p_ccb->rsp_list[p_ccb->list_len])) { sdp_disconnect (p_ccb, SDP_DB_FULL); return; } @@ -483,13 +452,11 @@ static void process_service_attr_rsp (tCONN_CB *p_ccb, UINT8 *p_reply) } /* Now, ask for the next handle. Re-use the buffer we just got. */ - if (p_ccb->cur_handle < p_ccb->num_handles) - { + if (p_ccb->cur_handle < p_ccb->num_handles) { BT_HDR *p_msg = (BT_HDR *) GKI_getpoolbuf (SDP_POOL_ID); UINT8 *p; - if (!p_msg) - { + if (!p_msg) { sdp_disconnect (p_ccb, SDP_NO_RESOURCES); return; } @@ -512,19 +479,19 @@ static void process_service_attr_rsp (tCONN_CB *p_ccb, UINT8 *p_reply) UINT16_TO_BE_STREAM (p, sdp_cb.max_attr_list_size); /* If no attribute filters, build a wildcard attribute sequence */ - if (p_ccb->p_db->num_attr_filters) + if (p_ccb->p_db->num_attr_filters) { p = sdpu_build_attrib_seq (p, p_ccb->p_db->attr_filters, p_ccb->p_db->num_attr_filters); - else + } else { p = sdpu_build_attrib_seq (p, NULL, 0); + } /* Was this a continuation request ? */ - if (cont_request_needed) - { + if (cont_request_needed) { memcpy (p, p_reply, *p_reply + 1); p += *p_reply + 1; - } - else + } else { UINT8_TO_BE_STREAM (p, 0); + } /* Go back and put the parameter length into the buffer */ param_len = (UINT16)(p - p_param_len - 2); @@ -538,9 +505,7 @@ static void process_service_attr_rsp (tCONN_CB *p_ccb, UINT8 *p_reply) /* Start inactivity timer */ btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_SDP, SDP_INACT_TIMEOUT); - } - else - { + } else { sdp_disconnect (p_ccb, SDP_SUCCESS); return; } @@ -569,11 +534,10 @@ static void process_service_search_attr_rsp (tCONN_CB *p_ccb, UINT8 *p_reply) SDP_TRACE_WARNING("process_service_search_attr_rsp\n"); #endif /* If p_reply is NULL, we were called for the initial read */ - if (p_reply) - { + if (p_reply) { #if (SDP_DEBUG_RAW == TRUE) SDP_TRACE_WARNING("ID & len: 0x%02x-%02x-%02x-%02x\n", - p_reply[0], p_reply[1], p_reply[2], p_reply[3]); + p_reply[0], p_reply[1], p_reply[2], p_reply[3]); #endif /* Skip transaction ID and length */ p_reply += 4; @@ -584,21 +548,18 @@ static void process_service_search_attr_rsp (tCONN_CB *p_ccb, UINT8 *p_reply) #endif /* Copy the response to the scratchpad. First, a safety check on the length */ - if ((p_ccb->list_len + lists_byte_count) > SDP_MAX_LIST_BYTE_COUNT) - { + if ((p_ccb->list_len + lists_byte_count) > SDP_MAX_LIST_BYTE_COUNT) { sdp_disconnect (p_ccb, SDP_INVALID_PDU_SIZE); return; } #if (SDP_DEBUG_RAW == TRUE) SDP_TRACE_WARNING("list_len: %d, list_byte_count: %d\n", - p_ccb->list_len, lists_byte_count); + p_ccb->list_len, lists_byte_count); #endif - if (p_ccb->rsp_list == NULL) - { + if (p_ccb->rsp_list == NULL) { p_ccb->rsp_list = (UINT8 *)GKI_getbuf (SDP_MAX_LIST_BYTE_COUNT); - if (p_ccb->rsp_list == NULL) - { + if (p_ccb->rsp_list == NULL) { SDP_TRACE_ERROR ("SDP - no gki buf to save rsp\n"); sdp_disconnect (p_ccb, SDP_NO_RESOURCES); return; @@ -613,10 +574,8 @@ static void process_service_search_attr_rsp (tCONN_CB *p_ccb, UINT8 *p_reply) /* Check if we need to request a continuation */ SDP_TRACE_WARNING("*p_reply:%d(%d)\n", *p_reply, SDP_MAX_CONTINUATION_LEN); #endif - if (*p_reply) - { - if (*p_reply > SDP_MAX_CONTINUATION_LEN) - { + if (*p_reply) { + if (*p_reply > SDP_MAX_CONTINUATION_LEN) { sdp_disconnect (p_ccb, SDP_INVALID_CONT_STATE); return; } @@ -629,13 +588,11 @@ static void process_service_search_attr_rsp (tCONN_CB *p_ccb, UINT8 *p_reply) SDP_TRACE_WARNING("cont_request_needed:%d\n", cont_request_needed); #endif /* If continuation request (or first time request) */ - if ((cont_request_needed) || (!p_reply)) - { + if ((cont_request_needed) || (!p_reply)) { BT_HDR *p_msg = (BT_HDR *) GKI_getpoolbuf (SDP_POOL_ID); UINT8 *p; - if (!p_msg) - { + if (!p_msg) { sdp_disconnect (p_ccb, SDP_NO_RESOURCES); return; } @@ -663,19 +620,19 @@ static void process_service_search_attr_rsp (tCONN_CB *p_ccb, UINT8 *p_reply) UINT16_TO_BE_STREAM (p, sdp_cb.max_attr_list_size); /* If no attribute filters, build a wildcard attribute sequence */ - if (p_ccb->p_db->num_attr_filters) + if (p_ccb->p_db->num_attr_filters) { p = sdpu_build_attrib_seq (p, p_ccb->p_db->attr_filters, p_ccb->p_db->num_attr_filters); - else + } else { p = sdpu_build_attrib_seq (p, NULL, 0); + } /* No continuation for first request */ - if (p_reply) - { + if (p_reply) { memcpy (p, p_reply, *p_reply + 1); p += *p_reply + 1; - } - else + } else { UINT8_TO_BE_STREAM (p, 0); + } /* Go back and put the parameter length into the buffer */ param_len = p - p_param_len - 2; @@ -708,8 +665,7 @@ static void process_service_search_attr_rsp (tCONN_CB *p_ccb, UINT8 *p_reply) /* The contents is a sequence of attribute sequences */ type = *p++; - if ((type >> 3) != DATA_ELE_SEQ_DESC_TYPE) - { + if ((type >> 3) != DATA_ELE_SEQ_DESC_TYPE) { SDP_TRACE_WARNING ("SDP - Wrong type: 0x%02x in attr_rsp\n", type); return; } @@ -717,17 +673,14 @@ static void process_service_search_attr_rsp (tCONN_CB *p_ccb, UINT8 *p_reply) p_end = &p_ccb->rsp_list[p_ccb->list_len]; - if ((p + seq_len) != p_end) - { + if ((p + seq_len) != p_end) { sdp_disconnect (p_ccb, SDP_INVALID_CONT_STATE); return; } - while (p < p_end) - { + while (p < p_end) { p = save_attr_seq (p_ccb, p, &p_ccb->rsp_list[p_ccb->list_len]); - if (!p) - { + if (!p) { sdp_disconnect (p_ccb, SDP_DB_FULL); return; } @@ -756,36 +709,31 @@ static UINT8 *save_attr_seq (tCONN_CB *p_ccb, UINT8 *p, UINT8 *p_msg_end) type = *p++; - if ((type >> 3) != DATA_ELE_SEQ_DESC_TYPE) - { + if ((type >> 3) != DATA_ELE_SEQ_DESC_TYPE) { SDP_TRACE_WARNING ("SDP - Wrong type: 0x%02x in attr_rsp\n", type); return (NULL); } p = sdpu_get_len_from_type (p, type, &seq_len); - if ((p + seq_len) > p_msg_end) - { + if ((p + seq_len) > p_msg_end) { SDP_TRACE_WARNING ("SDP - Bad len in attr_rsp %d\n", seq_len); return (NULL); } /* Create a record */ p_rec = add_record (p_ccb->p_db, p_ccb->device_address); - if (!p_rec) - { + if (!p_rec) { SDP_TRACE_WARNING ("SDP - DB full add_record\n"); return (NULL); } p_seq_end = p + seq_len; - while (p < p_seq_end) - { + while (p < p_seq_end) { /* First get the attribute ID */ type = *p++; p = sdpu_get_len_from_type (p, type, &attr_len); - if (((type >> 3) != UINT_DESC_TYPE) || (attr_len != 2)) - { + if (((type >> 3) != UINT_DESC_TYPE) || (attr_len != 2)) { SDP_TRACE_WARNING ("SDP - Bad type: 0x%02x or len: %d in attr_rsp\n", type, attr_len); return (NULL); } @@ -794,8 +742,7 @@ static UINT8 *save_attr_seq (tCONN_CB *p_ccb, UINT8 *p, UINT8 *p_msg_end) /* Now, add the attribute value */ p = add_attr (p, p_ccb->p_db, p_rec, attr_id, NULL, 0); - if (!p) - { + if (!p) { SDP_TRACE_WARNING ("SDP - DB full add_attr\n"); return (NULL); } @@ -819,8 +766,9 @@ tSDP_DISC_REC *add_record (tSDP_DISCOVERY_DB *p_db, BD_ADDR p_bda) tSDP_DISC_REC *p_rec; /* See if there is enough space in the database */ - if (p_db->mem_free < sizeof (tSDP_DISC_REC)) + if (p_db->mem_free < sizeof (tSDP_DISC_REC)) { return (NULL); + } p_rec = (tSDP_DISC_REC *) p_db->p_free_mem; p_db->p_free_mem += sizeof (tSDP_DISC_REC); @@ -832,14 +780,14 @@ tSDP_DISC_REC *add_record (tSDP_DISCOVERY_DB *p_db, BD_ADDR p_bda) memcpy (p_rec->remote_bd_addr, p_bda, BD_ADDR_LEN); /* Add the record to the end of chain */ - if (!p_db->p_first_rec) + if (!p_db->p_first_rec) { p_db->p_first_rec = p_rec; - else - { + } else { tSDP_DISC_REC *p_rec1 = p_db->p_first_rec; - while (p_rec1->p_next_rec) + while (p_rec1->p_next_rec) { p_rec1 = p_rec1->p_next_rec; + } p_rec1->p_next_rec = p_rec; } @@ -879,17 +827,19 @@ static UINT8 *add_attr (UINT8 *p, tSDP_DISCOVERY_DB *p_db, tSDP_DISC_REC *p_rec, attr_type = (type >> 3) & 0x0f; /* See if there is enough space in the database */ - if (attr_len > 4) + if (attr_len > 4) { total_len = attr_len - 4 + (UINT16)sizeof (tSDP_DISC_ATTR); - else + } else { total_len = sizeof (tSDP_DISC_ATTR); + } /* Ensure it is a multiple of 4 */ total_len = (total_len + 3) & ~3; /* See if there is enough space in the database */ - if (p_db->mem_free < total_len) + if (p_db->mem_free < total_len) { return (NULL); + } p_attr = (tSDP_DISC_ATTR *) p_db->p_free_mem; p_attr->attr_id = attr_id; @@ -897,16 +847,13 @@ static UINT8 *add_attr (UINT8 *p, tSDP_DISCOVERY_DB *p_db, tSDP_DISC_REC *p_rec, p_attr->p_next_attr = NULL; /* Store the attribute value */ - switch (attr_type) - { + switch (attr_type) { case UINT_DESC_TYPE: - if( (is_additional_list != 0) && (attr_len == 2) ) - { + if ( (is_additional_list != 0) && (attr_len == 2) ) { BE_STREAM_TO_UINT16 (id, p); - if(id != ATTR_ID_PROTOCOL_DESC_LIST) + if (id != ATTR_ID_PROTOCOL_DESC_LIST) { p -= 2; - else - { + } else { /* Reserve the memory for the attribute now, as we need to add sub-attributes */ p_db->p_free_mem += sizeof (tSDP_DISC_ATTR); p_db->mem_free -= sizeof (tSDP_DISC_ATTR); @@ -914,8 +861,7 @@ static UINT8 *add_attr (UINT8 *p, tSDP_DISCOVERY_DB *p_db, tSDP_DISC_REC *p_rec, total_len = 0; /* SDP_TRACE_DEBUG ("SDP - attr nest level:%d(list)", nest_level); */ - if (nest_level >= MAX_NEST_LEVELS) - { + if (nest_level >= MAX_NEST_LEVELS) { SDP_TRACE_ERROR ("SDP - attr nesting too deep\n"); return (p_end); } @@ -926,11 +872,10 @@ static UINT8 *add_attr (UINT8 *p, tSDP_DISCOVERY_DB *p_db, tSDP_DISC_REC *p_rec, break; } } - /* Case falls through */ + /* Case falls through */ case TWO_COMP_INT_DESC_TYPE: - switch (attr_len) - { + switch (attr_len) { case 1: p_attr->attr_value.v.u8 = *p++; break; @@ -947,15 +892,13 @@ static UINT8 *add_attr (UINT8 *p, tSDP_DISCOVERY_DB *p_db, tSDP_DISC_REC *p_rec, break; case UUID_DESC_TYPE: - switch (attr_len) - { + switch (attr_len) { case 2: BE_STREAM_TO_UINT16 (p_attr->attr_value.v.u16, p); break; case 4: BE_STREAM_TO_UINT32 (p_attr->attr_value.v.u32, p); - if (p_attr->attr_value.v.u32 < 0x10000) - { + if (p_attr->attr_value.v.u32 < 0x10000) { attr_len = 2; p_attr->attr_len_type = (UINT16)attr_len | (attr_type << 12); p_attr->attr_value.v.u16 = (UINT16) p_attr->attr_value.v.u32; @@ -964,30 +907,24 @@ static UINT8 *add_attr (UINT8 *p, tSDP_DISCOVERY_DB *p_db, tSDP_DISC_REC *p_rec, break; case 16: /* See if we can compress his UUID down to 16 or 32bit UUIDs */ - if (sdpu_is_base_uuid (p)) - { - if ((p[0] == 0) && (p[1] == 0)) - { + if (sdpu_is_base_uuid (p)) { + if ((p[0] == 0) && (p[1] == 0)) { p_attr->attr_len_type = (p_attr->attr_len_type & ~SDP_DISC_ATTR_LEN_MASK) | 2; p += 2; BE_STREAM_TO_UINT16 (p_attr->attr_value.v.u16, p); p += MAX_UUID_SIZE - 4; - } - else - { + } else { p_attr->attr_len_type = (p_attr->attr_len_type & ~SDP_DISC_ATTR_LEN_MASK) | 4; BE_STREAM_TO_UINT32 (p_attr->attr_value.v.u32, p); p += MAX_UUID_SIZE - 4; } - } - else - { - /* coverity[overrun-local] */ - /* - Event overrun-local: Overrun of static array "p_attr->attr_value.v.array" of size 4 at position 15 with index variable "ijk" - False-positive: SDP uses scratch buffer to hold the attribute value. - The actual size of tSDP_DISC_ATVAL does not matter. - If the array size in tSDP_DISC_ATVAL is increase, we would increase the system RAM usage unnecessarily + } else { + /* coverity[overrun-local] */ + /* + Event overrun-local: Overrun of static array "p_attr->attr_value.v.array" of size 4 at position 15 with index variable "ijk" + False-positive: SDP uses scratch buffer to hold the attribute value. + The actual size of tSDP_DISC_ATVAL does not matter. + If the array size in tSDP_DISC_ATVAL is increase, we would increase the system RAM usage unnecessarily */ BE_STREAM_TO_ARRAY (p, p_attr->attr_value.v.array, (INT32)attr_len); } @@ -1007,22 +944,22 @@ static UINT8 *add_attr (UINT8 *p, tSDP_DISCOVERY_DB *p_db, tSDP_DISC_REC *p_rec, total_len = 0; /* SDP_TRACE_DEBUG ("SDP - attr nest level:%d", nest_level); */ - if (nest_level >= MAX_NEST_LEVELS) - { + if (nest_level >= MAX_NEST_LEVELS) { SDP_TRACE_ERROR ("SDP - attr nesting too deep\n"); return (p_end); } - if(is_additional_list != 0 || attr_id == ATTR_ID_ADDITION_PROTO_DESC_LISTS) + if (is_additional_list != 0 || attr_id == ATTR_ID_ADDITION_PROTO_DESC_LISTS) { nest_level |= SDP_ADDITIONAL_LIST_MASK; + } /* SDP_TRACE_DEBUG ("SDP - attr nest level:0x%x(finish)", nest_level); */ - while (p < p_end) - { + while (p < p_end) { /* Now, add the list entry */ p = add_attr (p, p_db, p_rec, 0, p_attr, (UINT8)(nest_level + 1)); - if (!p) + if (!p) { return (NULL); + } } break; @@ -1032,8 +969,7 @@ static UINT8 *add_attr (UINT8 *p, tSDP_DISCOVERY_DB *p_db, tSDP_DISC_REC *p_rec, break; case BOOLEAN_DESC_TYPE: - switch (attr_len) - { + switch (attr_len) { case 1: p_attr->attr_value.v.u8 = *p++; break; @@ -1051,36 +987,31 @@ static UINT8 *add_attr (UINT8 *p, tSDP_DISCOVERY_DB *p_db, tSDP_DISC_REC *p_rec, p_db->mem_free -= total_len; /* Add the attribute to the end of the chain */ - if (!p_parent_attr) - { - if (!p_rec->p_first_attr) + if (!p_parent_attr) { + if (!p_rec->p_first_attr) { p_rec->p_first_attr = p_attr; - else - { + } else { tSDP_DISC_ATTR *p_attr1 = p_rec->p_first_attr; - while (p_attr1->p_next_attr) + while (p_attr1->p_next_attr) { p_attr1 = p_attr1->p_next_attr; + } p_attr1->p_next_attr = p_attr; } - } - else - { - if (!p_parent_attr->attr_value.v.p_sub_attr) - { + } else { + if (!p_parent_attr->attr_value.v.p_sub_attr) { p_parent_attr->attr_value.v.p_sub_attr = p_attr; /* SDP_TRACE_DEBUG ("parent:0x%x(id:%d), ch:0x%x(id:%d)", p_parent_attr, p_parent_attr->attr_id, p_attr, p_attr->attr_id); */ - } - else - { + } else { tSDP_DISC_ATTR *p_attr1 = p_parent_attr->attr_value.v.p_sub_attr; /* SDP_TRACE_DEBUG ("parent:0x%x(id:%d), ch1:0x%x(id:%d)", p_parent_attr, p_parent_attr->attr_id, p_attr1, p_attr1->attr_id); */ - while (p_attr1->p_next_attr) + while (p_attr1->p_next_attr) { p_attr1 = p_attr1->p_next_attr; + } p_attr1->p_next_attr = p_attr; /* SDP_TRACE_DEBUG ("new ch:0x%x(id:%d)", p_attr, p_attr->attr_id); */ diff --git a/components/bt/bluedroid/stack/sdp/sdp_main.c b/components/bt/bluedroid/stack/sdp/sdp_main.c old mode 100755 new mode 100644 index b500f106c7..3511aee987 --- a/components/bt/bluedroid/stack/sdp/sdp_main.c +++ b/components/bt/bluedroid/stack/sdp/sdp_main.c @@ -95,8 +95,7 @@ void sdp_init (void) #if SDP_SERVER_ENABLED == TRUE /* Register with Security Manager for the specific security level */ if (!BTM_SetSecurityLevel (FALSE, SDP_SERVICE_NAME, BTM_SEC_SERVICE_SDP_SERVER, - SDP_SECURITY_LEVEL, SDP_PSM, 0, 0)) - { + SDP_SECURITY_LEVEL, SDP_PSM, 0, 0)) { SDP_TRACE_ERROR ("Security Registration Server failed\n"); return; } @@ -105,8 +104,7 @@ void sdp_init (void) #if SDP_CLIENT_ENABLED == TRUE /* Register with Security Manager for the specific security level */ if (!BTM_SetSecurityLevel (TRUE, SDP_SERVICE_NAME, BTM_SEC_SERVICE_SDP_SERVER, - SDP_SECURITY_LEVEL, SDP_PSM, 0, 0)) - { + SDP_SECURITY_LEVEL, SDP_PSM, 0, 0)) { SDP_TRACE_ERROR ("Security Registration for Client failed\n"); return; } @@ -131,8 +129,7 @@ void sdp_init (void) sdp_cb.reg_info.pL2CA_TxComplete_Cb = NULL; /* Now, register with L2CAP */ - if (!L2CA_Register (SDP_PSM, &sdp_cb.reg_info)) - { + if (!L2CA_Register (SDP_PSM, &sdp_cb.reg_info)) { SDP_TRACE_ERROR ("SDP Registration failed\n"); } } @@ -149,8 +146,9 @@ void sdp_init (void) *******************************************************************************/ UINT16 sdp_set_max_attr_list_size (UINT16 max_size) { - if (max_size > (sdp_cb.l2cap_my_cfg.mtu - 16) ) + if (max_size > (sdp_cb.l2cap_my_cfg.mtu - 16) ) { max_size = sdp_cb.l2cap_my_cfg.mtu - 16; + } sdp_cb.max_attr_list_size = max_size; @@ -176,8 +174,9 @@ static void sdp_connect_ind (BD_ADDR bd_addr, UINT16 l2cap_cid, UINT16 psm, UIN tCONN_CB *p_ccb; /* Allocate a new CCB. Return if none available. */ - if ((p_ccb = sdpu_allocate_ccb()) == NULL) + if ((p_ccb = sdpu_allocate_ccb()) == NULL) { return; + } /* Transition to the next appropriate state, waiting for config setup. */ p_ccb->con_state = SDP_STATE_CFG_SETUP; @@ -191,16 +190,14 @@ static void sdp_connect_ind (BD_ADDR bd_addr, UINT16 l2cap_cid, UINT16 psm, UIN { tL2CAP_CFG_INFO cfg = sdp_cb.l2cap_my_cfg; - if (cfg.fcr_present) - { + if (cfg.fcr_present) { SDP_TRACE_DEBUG("sdp_connect_ind: mode %u, txwinsz %u, max_trans %u, rtrans_tout %u, mon_tout %u, mps %u\n", - cfg.fcr.mode, cfg.fcr.tx_win_sz, cfg.fcr.max_transmit, - cfg.fcr.rtrans_tout,cfg.fcr.mon_tout, cfg.fcr.mps); + cfg.fcr.mode, cfg.fcr.tx_win_sz, cfg.fcr.max_transmit, + cfg.fcr.rtrans_tout, cfg.fcr.mon_tout, cfg.fcr.mps); } if ((!L2CA_ConfigReq (l2cap_cid, &cfg)) && cfg.fcr_present - && cfg.fcr.mode != L2CAP_FCR_BASIC_MODE) - { + && cfg.fcr.mode != L2CAP_FCR_BASIC_MODE) { /* FCR not desired; try again in basic mode */ cfg.fcr.mode = L2CAP_FCR_BASIC_MODE; cfg.fcr_present = FALSE; @@ -233,30 +230,26 @@ static void sdp_connect_cfm (UINT16 l2cap_cid, UINT16 result) tL2CAP_CFG_INFO cfg; /* Find CCB based on CID */ - if ((p_ccb = sdpu_find_ccb_by_cid (l2cap_cid)) == NULL) - { + if ((p_ccb = sdpu_find_ccb_by_cid (l2cap_cid)) == NULL) { SDP_TRACE_WARNING ("SDP - Rcvd conn cnf for unknown CID 0x%x\n", l2cap_cid); return; } /* If the connection response contains success status, then */ /* Transition to the next state and startup the timer. */ - if ((result == L2CAP_CONN_OK) && (p_ccb->con_state == SDP_STATE_CONN_SETUP)) - { + if ((result == L2CAP_CONN_OK) && (p_ccb->con_state == SDP_STATE_CONN_SETUP)) { p_ccb->con_state = SDP_STATE_CFG_SETUP; cfg = sdp_cb.l2cap_my_cfg; - if (cfg.fcr_present) - { + if (cfg.fcr_present) { SDP_TRACE_DEBUG("sdp_connect_cfm: mode %u, txwinsz %u, max_trans %u, rtrans_tout %u, mon_tout %u, mps %u\n", - cfg.fcr.mode, cfg.fcr.tx_win_sz, cfg.fcr.max_transmit, - cfg.fcr.rtrans_tout,cfg.fcr.mon_tout, cfg.fcr.mps); + cfg.fcr.mode, cfg.fcr.tx_win_sz, cfg.fcr.max_transmit, + cfg.fcr.rtrans_tout, cfg.fcr.mon_tout, cfg.fcr.mps); } if ((!L2CA_ConfigReq (l2cap_cid, &cfg)) && cfg.fcr_present - && cfg.fcr.mode != L2CAP_FCR_BASIC_MODE) - { + && cfg.fcr.mode != L2CAP_FCR_BASIC_MODE) { /* FCR not desired; try again in basic mode */ cfg.fcr_present = FALSE; cfg.fcr.mode = L2CAP_FCR_BASIC_MODE; @@ -264,29 +257,28 @@ static void sdp_connect_cfm (UINT16 l2cap_cid, UINT16 result) } SDP_TRACE_EVENT ("SDP - got conn cnf, sent cfg req, CID: 0x%x\n", p_ccb->connection_id); - } - else - { + } else { SDP_TRACE_WARNING ("SDP - Rcvd conn cnf with error: 0x%x CID 0x%x\n", result, p_ccb->connection_id); /* Tell the user if he has a callback */ - if (p_ccb->p_cb || p_ccb->p_cb2) - { + if (p_ccb->p_cb || p_ccb->p_cb2) { UINT16 err = -1; if ((result == HCI_ERR_HOST_REJECT_SECURITY) - || (result == HCI_ERR_AUTH_FAILURE) - || (result == HCI_ERR_PAIRING_NOT_ALLOWED) - || (result == HCI_ERR_PAIRING_WITH_UNIT_KEY_NOT_SUPPORTED) - || (result == HCI_ERR_KEY_MISSING)) + || (result == HCI_ERR_AUTH_FAILURE) + || (result == HCI_ERR_PAIRING_NOT_ALLOWED) + || (result == HCI_ERR_PAIRING_WITH_UNIT_KEY_NOT_SUPPORTED) + || (result == HCI_ERR_KEY_MISSING)) { err = SDP_SECURITY_ERR; - else if (result == HCI_ERR_HOST_REJECT_DEVICE) + } else if (result == HCI_ERR_HOST_REJECT_DEVICE) { err = SDP_CONN_REJECTED; - else + } else { err = SDP_CONN_FAILED; - if(p_ccb->p_cb) + } + if (p_ccb->p_cb) { (*p_ccb->p_cb)(err); - else if(p_ccb->p_cb2) + } else if (p_ccb->p_cb2) { (*p_ccb->p_cb2)(err, p_ccb->user_data); + } } sdpu_release_ccb (p_ccb); @@ -310,24 +302,21 @@ static void sdp_config_ind (UINT16 l2cap_cid, tL2CAP_CFG_INFO *p_cfg) tCONN_CB *p_ccb; /* Find CCB based on CID */ - if ((p_ccb = sdpu_find_ccb_by_cid (l2cap_cid)) == NULL) - { + if ((p_ccb = sdpu_find_ccb_by_cid (l2cap_cid)) == NULL) { SDP_TRACE_WARNING ("SDP - Rcvd L2CAP cfg ind, unknown CID: 0x%x\n", l2cap_cid); return; } /* Remember the remote MTU size */ - if (!p_cfg->mtu_present) - { + if (!p_cfg->mtu_present) { /* use min(L2CAP_DEFAULT_MTU,SDP_MTU_SIZE) for GKI buffer size reasons */ - p_ccb->rem_mtu_size = (L2CAP_DEFAULT_MTU > SDP_MTU_SIZE)?SDP_MTU_SIZE:L2CAP_DEFAULT_MTU; - } - else - { - if (p_cfg->mtu > SDP_MTU_SIZE) + p_ccb->rem_mtu_size = (L2CAP_DEFAULT_MTU > SDP_MTU_SIZE) ? SDP_MTU_SIZE : L2CAP_DEFAULT_MTU; + } else { + if (p_cfg->mtu > SDP_MTU_SIZE) { p_ccb->rem_mtu_size = SDP_MTU_SIZE; - else + } else { p_ccb->rem_mtu_size = p_cfg->mtu; + } } /* For now, always accept configuration from the other side */ @@ -336,37 +325,32 @@ static void sdp_config_ind (UINT16 l2cap_cid, tL2CAP_CFG_INFO *p_cfg) p_cfg->result = L2CAP_CFG_OK; /* Check peer config request against our rfcomm configuration */ - if (p_cfg->fcr_present) - { + if (p_cfg->fcr_present) { /* Reject the window size if it is bigger than we want it to be */ - if (p_cfg->fcr.mode != L2CAP_FCR_BASIC_MODE) - { + if (p_cfg->fcr.mode != L2CAP_FCR_BASIC_MODE) { if (sdp_cb.l2cap_my_cfg.fcr.mode != L2CAP_FCR_BASIC_MODE - && p_cfg->fcr.tx_win_sz > sdp_cb.l2cap_my_cfg.fcr.tx_win_sz) - { + && p_cfg->fcr.tx_win_sz > sdp_cb.l2cap_my_cfg.fcr.tx_win_sz) { p_cfg->fcr.tx_win_sz = sdp_cb.l2cap_my_cfg.fcr.tx_win_sz; p_cfg->result = L2CAP_CFG_UNACCEPTABLE_PARAMS; SDP_TRACE_DEBUG("sdp_config_ind(CONFIG) -> Please try again with SMALLER TX WINDOW\n"); } /* Reject if locally we want basic and they don't */ - if (sdp_cb.l2cap_my_cfg.fcr.mode == L2CAP_FCR_BASIC_MODE) - { + if (sdp_cb.l2cap_my_cfg.fcr.mode == L2CAP_FCR_BASIC_MODE) { /* Ask for a new setup */ p_cfg->fcr.mode = L2CAP_FCR_BASIC_MODE; p_cfg->result = L2CAP_CFG_UNACCEPTABLE_PARAMS; SDP_TRACE_DEBUG("sdp_config_ind(CONFIG) -> Please try again with BASIC mode\n"); } /* Remain in configure state and give the peer our desired configuration */ - if (p_cfg->result != L2CAP_CFG_OK) - { + if (p_cfg->result != L2CAP_CFG_OK) { SDP_TRACE_WARNING ("SDP - Rcvd cfg ind, Unacceptable Parameters sent cfg cfm, CID: 0x%x\n", l2cap_cid); L2CA_ConfigRsp (l2cap_cid, p_cfg); return; } - } - else /* We agree with peer's request */ + } else { /* We agree with peer's request */ p_cfg->fcr_present = FALSE; + } } L2CA_ConfigRsp (l2cap_cid, p_cfg); @@ -375,15 +359,16 @@ static void sdp_config_ind (UINT16 l2cap_cid, tL2CAP_CFG_INFO *p_cfg) p_ccb->con_flags |= SDP_FLAGS_HIS_CFG_DONE; - if (p_ccb->con_flags & SDP_FLAGS_MY_CFG_DONE) - { + if (p_ccb->con_flags & SDP_FLAGS_MY_CFG_DONE) { p_ccb->con_state = SDP_STATE_CONNECTED; - if (p_ccb->con_flags & SDP_FLAGS_IS_ORIG) + if (p_ccb->con_flags & SDP_FLAGS_IS_ORIG) { sdp_disc_connected (p_ccb); - else + } else /* Start inactivity timer */ + { btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_SDP, SDP_INACT_TIMEOUT); + } } } @@ -406,33 +391,29 @@ static void sdp_config_cfm (UINT16 l2cap_cid, tL2CAP_CFG_INFO *p_cfg) SDP_TRACE_EVENT ("SDP - Rcvd cfg cfm, CID: 0x%x Result: %d\n", l2cap_cid, p_cfg->result); /* Find CCB based on CID */ - if ((p_ccb = sdpu_find_ccb_by_cid (l2cap_cid)) == NULL) - { + if ((p_ccb = sdpu_find_ccb_by_cid (l2cap_cid)) == NULL) { SDP_TRACE_WARNING ("SDP - Rcvd L2CAP cfg ind, unknown CID: 0x%x\n", l2cap_cid); return; } /* For now, always accept configuration from the other side */ - if (p_cfg->result == L2CAP_CFG_OK) - { + if (p_cfg->result == L2CAP_CFG_OK) { p_ccb->con_flags |= SDP_FLAGS_MY_CFG_DONE; - if (p_ccb->con_flags & SDP_FLAGS_HIS_CFG_DONE) - { + if (p_ccb->con_flags & SDP_FLAGS_HIS_CFG_DONE) { p_ccb->con_state = SDP_STATE_CONNECTED; - if (p_ccb->con_flags & SDP_FLAGS_IS_ORIG) + if (p_ccb->con_flags & SDP_FLAGS_IS_ORIG) { sdp_disc_connected (p_ccb); - else + } else /* Start inactivity timer */ + { btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_SDP, SDP_INACT_TIMEOUT); + } } - } - else - { + } else { /* If peer has rejected FCR and suggested basic then try basic */ - if (p_cfg->fcr_present) - { + if (p_cfg->fcr_present) { tL2CAP_CFG_INFO cfg = sdp_cb.l2cap_my_cfg; cfg.fcr_present = FALSE; L2CA_ConfigReq (l2cap_cid, &cfg); @@ -462,24 +443,24 @@ static void sdp_disconnect_ind (UINT16 l2cap_cid, BOOLEAN ack_needed) tCONN_CB *p_ccb; /* Find CCB based on CID */ - if ((p_ccb = sdpu_find_ccb_by_cid (l2cap_cid)) == NULL) - { + if ((p_ccb = sdpu_find_ccb_by_cid (l2cap_cid)) == NULL) { SDP_TRACE_WARNING ("SDP - Rcvd L2CAP disc, unknown CID: 0x%x\n", l2cap_cid); return; } - if (ack_needed) + if (ack_needed) { L2CA_DisconnectRsp (l2cap_cid); + } SDP_TRACE_EVENT ("SDP - Rcvd L2CAP disc, CID: 0x%x\n", l2cap_cid); #if SDP_CLIENT_ENABLED == TRUE /* Tell the user if he has a callback */ if (p_ccb->p_cb) (*p_ccb->p_cb) ((UINT16) ((p_ccb->con_state == SDP_STATE_CONNECTED) ? - SDP_SUCCESS : SDP_CONN_FAILED)); + SDP_SUCCESS : SDP_CONN_FAILED)); else if (p_ccb->p_cb2) (*p_ccb->p_cb2) ((UINT16) ((p_ccb->con_state == SDP_STATE_CONNECTED) ? - SDP_SUCCESS : SDP_CONN_FAILED), p_ccb->user_data); + SDP_SUCCESS : SDP_CONN_FAILED), p_ccb->user_data); #endif sdpu_release_ccb (p_ccb); @@ -505,23 +486,18 @@ static void sdp_data_ind (UINT16 l2cap_cid, BT_HDR *p_msg) tCONN_CB *p_ccb; /* Find CCB based on CID */ - if ((p_ccb = sdpu_find_ccb_by_cid (l2cap_cid)) != NULL) - { - if (p_ccb->con_state == SDP_STATE_CONNECTED) - { - if (p_ccb->con_flags & SDP_FLAGS_IS_ORIG) + if ((p_ccb = sdpu_find_ccb_by_cid (l2cap_cid)) != NULL) { + if (p_ccb->con_state == SDP_STATE_CONNECTED) { + if (p_ccb->con_flags & SDP_FLAGS_IS_ORIG) { sdp_disc_server_rsp (p_ccb, p_msg); - else + } else { sdp_server_handle_client_req (p_ccb, p_msg); - } - else - { + } + } else { SDP_TRACE_WARNING ("SDP - Ignored L2CAP data while in state: %d, CID: 0x%x\n", - p_ccb->con_state, l2cap_cid); + p_ccb->con_state, l2cap_cid); } - } - else - { + } else { SDP_TRACE_WARNING ("SDP - Rcvd L2CAP data, unknown CID: 0x%x\n", l2cap_cid); } @@ -540,14 +516,13 @@ static void sdp_data_ind (UINT16 l2cap_cid, BT_HDR *p_msg) ** Returns void ** *******************************************************************************/ -tCONN_CB* sdp_conn_originate (UINT8 *p_bd_addr) +tCONN_CB *sdp_conn_originate (UINT8 *p_bd_addr) { tCONN_CB *p_ccb; UINT16 cid; /* Allocate a new CCB. Return if none available. */ - if ((p_ccb = sdpu_allocate_ccb()) == NULL) - { + if ((p_ccb = sdpu_allocate_ccb()) == NULL) { SDP_TRACE_WARNING ("SDP - no spare CCB for orig\n"); return (NULL); } @@ -566,14 +541,11 @@ tCONN_CB* sdp_conn_originate (UINT8 *p_bd_addr) cid = L2CA_ConnectReq (SDP_PSM, p_bd_addr); /* Check if L2CAP started the connection process */ - if (cid != 0) - { + if (cid != 0) { p_ccb->connection_id = cid; return (p_ccb); - } - else - { + } else { SDP_TRACE_WARNING ("SDP - Originate failed\n"); sdpu_release_ccb (p_ccb); return (NULL); @@ -589,65 +561,66 @@ tCONN_CB* sdp_conn_originate (UINT8 *p_bd_addr) ** Returns void ** *******************************************************************************/ -void sdp_disconnect (tCONN_CB*p_ccb, UINT16 reason) +void sdp_disconnect (tCONN_CB *p_ccb, UINT16 reason) { #if (defined(SDP_BROWSE_PLUS) && SDP_BROWSE_PLUS == TRUE) /* If we are browsing for multiple UUIDs ... */ if ((p_ccb->con_state == SDP_STATE_CONNECTED) - && (p_ccb->con_flags & SDP_FLAGS_IS_ORIG) - && ((reason == SDP_SUCCESS) || (reason == SDP_NO_RECS_MATCH))) - { + && (p_ccb->con_flags & SDP_FLAGS_IS_ORIG) + && ((reason == SDP_SUCCESS) || (reason == SDP_NO_RECS_MATCH))) { /* If the browse found something, do no more searching */ - if ((p_ccb->cur_uuid_idx == 0) && (p_ccb->p_db->p_first_rec)) + if ((p_ccb->cur_uuid_idx == 0) && (p_ccb->p_db->p_first_rec)) { p_ccb->cur_uuid_idx = p_ccb->p_db->num_uuid_filters; + } - while (++p_ccb->cur_uuid_idx < p_ccb->p_db->num_uuid_filters) - { + while (++p_ccb->cur_uuid_idx < p_ccb->p_db->num_uuid_filters) { /* Check we have not already found the UUID (maybe through browse) */ if ((p_ccb->p_db->uuid_filters[p_ccb->cur_uuid_idx].len == 2) - && (SDP_FindServiceInDb (p_ccb->p_db, - p_ccb->p_db->uuid_filters[p_ccb->cur_uuid_idx].uu.uuid16, - NULL))) + && (SDP_FindServiceInDb (p_ccb->p_db, + p_ccb->p_db->uuid_filters[p_ccb->cur_uuid_idx].uu.uuid16, + NULL))) { continue; + } if ((p_ccb->p_db->uuid_filters[p_ccb->cur_uuid_idx].len > 2) - && (SDP_FindServiceUUIDInDb (p_ccb->p_db, - &p_ccb->p_db->uuid_filters[p_ccb->cur_uuid_idx], NULL))) + && (SDP_FindServiceUUIDInDb (p_ccb->p_db, + &p_ccb->p_db->uuid_filters[p_ccb->cur_uuid_idx], NULL))) { continue; + } p_ccb->cur_handle = 0; SDP_TRACE_EVENT ("SDP - looking for for more, CID: 0x%x\n", - p_ccb->connection_id); + p_ccb->connection_id); sdp_disc_connected (p_ccb); return; } } - if ((reason == SDP_NO_RECS_MATCH) && (p_ccb->p_db->p_first_rec)) + if ((reason == SDP_NO_RECS_MATCH) && (p_ccb->p_db->p_first_rec)) { reason = SDP_SUCCESS; + } #endif SDP_TRACE_EVENT ("SDP - disconnect CID: 0x%x\n", p_ccb->connection_id); /* Check if we have a connection ID */ - if (p_ccb->connection_id != 0) - { + if (p_ccb->connection_id != 0) { L2CA_DisconnectReq (p_ccb->connection_id); p_ccb->disconnect_reason = reason; } /* If at setup state, we may not get callback ind from L2CAP */ /* Call user callback immediately */ - if (p_ccb->con_state == SDP_STATE_CONN_SETUP) - { + if (p_ccb->con_state == SDP_STATE_CONN_SETUP) { /* Tell the user if he has a callback */ - if (p_ccb->p_cb) + if (p_ccb->p_cb) { (*p_ccb->p_cb) (reason); - else if (p_ccb->p_cb2) + } else if (p_ccb->p_cb2) { (*p_ccb->p_cb2) (reason, p_ccb->user_data); + } sdpu_release_ccb (p_ccb); } @@ -669,18 +642,18 @@ static void sdp_disconnect_cfm (UINT16 l2cap_cid, UINT16 result) UNUSED(result); /* Find CCB based on CID */ - if ((p_ccb = sdpu_find_ccb_by_cid (l2cap_cid)) == NULL) - { + if ((p_ccb = sdpu_find_ccb_by_cid (l2cap_cid)) == NULL) { SDP_TRACE_WARNING ("SDP - Rcvd L2CAP disc cfm, unknown CID: 0x%x\n", l2cap_cid); return; } SDP_TRACE_EVENT ("SDP - Rcvd L2CAP disc cfm, CID: 0x%x, rsn %d\n", l2cap_cid, p_ccb->disconnect_reason); /* Tell the user if he has a callback */ - if (p_ccb->p_cb) + if (p_ccb->p_cb) { (*p_ccb->p_cb) (p_ccb->disconnect_reason); - else if (p_ccb->p_cb2) + } else if (p_ccb->p_cb2) { (*p_ccb->p_cb2) (p_ccb->disconnect_reason, p_ccb->user_data); + } sdpu_release_ccb (p_ccb); @@ -698,18 +671,19 @@ static void sdp_disconnect_cfm (UINT16 l2cap_cid, UINT16 result) ** Returns void ** *******************************************************************************/ -void sdp_conn_timeout (tCONN_CB*p_ccb) +void sdp_conn_timeout (tCONN_CB *p_ccb) { SDP_TRACE_EVENT ("SDP - CCB timeout in state: %d CID: 0x%x\n", - p_ccb->con_state, p_ccb->connection_id); + p_ccb->con_state, p_ccb->connection_id); L2CA_DisconnectReq (p_ccb->connection_id); #if SDP_CLIENT_ENABLED == TRUE /* Tell the user if he has a callback */ - if (p_ccb->p_cb) + if (p_ccb->p_cb) { (*p_ccb->p_cb) (SDP_CONN_FAILED); - else if (p_ccb->p_cb2) + } else if (p_ccb->p_cb2) { (*p_ccb->p_cb2) (SDP_CONN_FAILED, p_ccb->user_data); + } #endif sdpu_release_ccb (p_ccb); } diff --git a/components/bt/bluedroid/stack/sdp/sdp_server.c b/components/bt/bluedroid/stack/sdp/sdp_server.c old mode 100755 new mode 100644 index 53cb525108..02a33793d6 --- a/components/bt/bluedroid/stack/sdp/sdp_server.c +++ b/components/bt/bluedroid/stack/sdp/sdp_server.c @@ -59,8 +59,8 @@ static void process_service_attr_req (tCONN_CB *p_ccb, UINT16 trans_num, UINT8 *p_req_end); static void process_service_search_attr_req (tCONN_CB *p_ccb, UINT16 trans_num, - UINT16 param_len, UINT8 *p_req, - UINT8 *p_req_end); + UINT16 param_len, UINT8 *p_req, + UINT8 *p_req_end); /********************************************************************************/ @@ -130,14 +130,12 @@ void sdp_server_handle_client_req (tCONN_CB *p_ccb, BT_HDR *p_msg) BE_STREAM_TO_UINT16 (trans_num, p_req); BE_STREAM_TO_UINT16 (param_len, p_req); - if ((p_req + param_len) != p_req_end) - { + if ((p_req + param_len) != p_req_end) { sdpu_build_n_send_error (p_ccb, trans_num, SDP_INVALID_PDU_SIZE, SDP_TEXT_BAD_HEADER); return; } - switch (pdu_id) - { + switch (pdu_id) { case SDP_PDU_SERVICE_SEARCH_REQ: process_service_search (p_ccb, trans_num, param_len, p_req, p_req_end); break; @@ -186,8 +184,7 @@ static void process_service_search (tCONN_CB *p_ccb, UINT16 trans_num, p_req = sdpu_extract_uid_seq (p_req, param_len, &uid_seq); - if ((!p_req) || (!uid_seq.num_uids)) - { + if ((!p_req) || (!uid_seq.num_uids)) { sdpu_build_n_send_error (p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX, SDP_TEXT_BAD_UUID_LIST); return; } @@ -195,50 +192,45 @@ static void process_service_search (tCONN_CB *p_ccb, UINT16 trans_num, /* Get the max replies we can send. Cap it at our max anyways. */ BE_STREAM_TO_UINT16 (max_replies, p_req); - if (max_replies > SDP_MAX_RECORDS) + if (max_replies > SDP_MAX_RECORDS) { max_replies = SDP_MAX_RECORDS; + } - if ((!p_req) || (p_req > p_req_end)) - { + if ((!p_req) || (p_req > p_req_end)) { sdpu_build_n_send_error (p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX, SDP_TEXT_BAD_MAX_RECORDS_LIST); return; } /* Get a list of handles that match the UUIDs given to us */ - for (num_rsp_handles = 0; num_rsp_handles < max_replies; ) - { + for (num_rsp_handles = 0; num_rsp_handles < max_replies; ) { p_rec = sdp_db_service_search (p_rec, &uid_seq); - if (p_rec) + if (p_rec) { rsp_handles[num_rsp_handles++] = p_rec->record_handle; - else + } else { break; + } } /* Check if this is a continuation request */ - if (*p_req) - { - if (*p_req++ != SDP_CONTINUATION_LEN || (p_req >= p_req_end)) - { + if (*p_req) { + if (*p_req++ != SDP_CONTINUATION_LEN || (p_req >= p_req_end)) { sdpu_build_n_send_error (p_ccb, trans_num, SDP_INVALID_CONT_STATE, SDP_TEXT_BAD_CONT_LEN); return; } BE_STREAM_TO_UINT16 (cont_offset, p_req); - if (cont_offset != p_ccb->cont_offset) - { + if (cont_offset != p_ccb->cont_offset) { sdpu_build_n_send_error (p_ccb, trans_num, SDP_INVALID_CONT_STATE, SDP_TEXT_BAD_CONT_INX); return; } rem_handles = num_rsp_handles - cont_offset; /* extract the remaining handles */ - } - else - { + } else { rem_handles = num_rsp_handles; cont_offset = 0; p_ccb->cont_offset = 0; @@ -247,17 +239,15 @@ static void process_service_search (tCONN_CB *p_ccb, UINT16 trans_num, /* Calculate how many handles will fit in one PDU */ cur_handles = (UINT16)((p_ccb->rem_mtu_size - SDP_MAX_SERVICE_RSPHDR_LEN) / 4); - if (rem_handles <= cur_handles) + if (rem_handles <= cur_handles) { cur_handles = rem_handles; - else /* Continuation is set */ - { + } else { /* Continuation is set */ p_ccb->cont_offset += cur_handles; is_cont = TRUE; } /* Get a buffer to use to build the response */ - if ((p_buf = (BT_HDR *)GKI_getpoolbuf (SDP_POOL_ID)) == NULL) - { + if ((p_buf = (BT_HDR *)GKI_getpoolbuf (SDP_POOL_ID)) == NULL) { SDP_TRACE_ERROR ("SDP - no buf for search rsp\n"); return; } @@ -276,19 +266,19 @@ static void process_service_search (tCONN_CB *p_ccb, UINT16 trans_num, UINT16_TO_BE_STREAM (p_rsp, num_rsp_handles); UINT16_TO_BE_STREAM (p_rsp, cur_handles); -/* SDP_TRACE_DEBUG("SDP Service Rsp: tothdl %d, curhdlr %d, start %d, end %d, cont %d", - num_rsp_handles, cur_handles, cont_offset, - cont_offset + cur_handles-1, is_cont); */ - for (xx = cont_offset; xx < cont_offset + cur_handles; xx++) + /* SDP_TRACE_DEBUG("SDP Service Rsp: tothdl %d, curhdlr %d, start %d, end %d, cont %d", + num_rsp_handles, cur_handles, cont_offset, + cont_offset + cur_handles-1, is_cont); */ + for (xx = cont_offset; xx < cont_offset + cur_handles; xx++) { UINT32_TO_BE_STREAM (p_rsp, rsp_handles[xx]); + } - if (is_cont) - { + if (is_cont) { UINT8_TO_BE_STREAM (p_rsp, SDP_CONTINUATION_LEN); UINT16_TO_BE_STREAM (p_rsp, p_ccb->cont_offset); - } - else + } else { UINT8_TO_BE_STREAM (p_rsp, 0); + } /* Go back and put the parameter length into the buffer */ rsp_param_len = p_rsp - p_rsp_param_len - 2; @@ -333,8 +323,7 @@ static void process_service_attr_req (tCONN_CB *p_ccb, UINT16 trans_num, /* Extract the record handle */ BE_STREAM_TO_UINT32 (rec_handle, p_req); - if (p_req > p_req_end) - { + if (p_req > p_req_end) { sdpu_build_n_send_error (p_ccb, trans_num, SDP_INVALID_SERV_REC_HDL, SDP_TEXT_BAD_HANDLE); return; } @@ -342,13 +331,13 @@ static void process_service_attr_req (tCONN_CB *p_ccb, UINT16 trans_num, /* Get the max list length we can send. Cap it at MTU size minus overhead */ BE_STREAM_TO_UINT16 (max_list_len, p_req); - if (max_list_len > (p_ccb->rem_mtu_size - SDP_MAX_ATTR_RSPHDR_LEN)) + if (max_list_len > (p_ccb->rem_mtu_size - SDP_MAX_ATTR_RSPHDR_LEN)) { max_list_len = p_ccb->rem_mtu_size - SDP_MAX_ATTR_RSPHDR_LEN; + } p_req = sdpu_extract_attr_seq (p_req, param_len, &attr_seq); - if ((!p_req) || (!attr_seq.num_attr) || (p_req > p_req_end)) - { + if ((!p_req) || (!attr_seq.num_attr) || (p_req > p_req_end)) { sdpu_build_n_send_error (p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX, SDP_TEXT_BAD_ATTR_LIST); return; } @@ -357,41 +346,36 @@ static void process_service_attr_req (tCONN_CB *p_ccb, UINT16 trans_num, /* Find a record with the record handle */ p_rec = sdp_db_find_record (rec_handle); - if (!p_rec) - { + if (!p_rec) { sdpu_build_n_send_error (p_ccb, trans_num, SDP_INVALID_SERV_REC_HDL, SDP_TEXT_BAD_HANDLE); return; } /* Check if this is a continuation request */ - if (*p_req) - { + if (*p_req) { /* Free and reallocate buffer */ - if (p_ccb->rsp_list) + if (p_ccb->rsp_list) { GKI_freebuf(p_ccb->rsp_list); + } p_ccb->rsp_list = (UINT8 *)GKI_getbuf(max_list_len); - if (p_ccb->rsp_list == NULL) - { + if (p_ccb->rsp_list == NULL) { SDP_TRACE_ERROR("%s No scratch buf for attr rsp\n", __func__); return; } - if (*p_req++ != SDP_CONTINUATION_LEN) - { + if (*p_req++ != SDP_CONTINUATION_LEN) { sdpu_build_n_send_error (p_ccb, trans_num, SDP_INVALID_CONT_STATE, SDP_TEXT_BAD_CONT_LEN); return; } BE_STREAM_TO_UINT16 (cont_offset, p_req); - if (cont_offset != p_ccb->cont_offset) - { + if (cont_offset != p_ccb->cont_offset) { sdpu_build_n_send_error (p_ccb, trans_num, SDP_INVALID_CONT_STATE, SDP_TEXT_BAD_CONT_INX); return; } - if (!p_ccb->rsp_list) - { + if (!p_ccb->rsp_list) { sdpu_build_n_send_error (p_ccb, trans_num, SDP_NO_RESOURCES, NULL); return; } @@ -400,21 +384,16 @@ static void process_service_attr_req (tCONN_CB *p_ccb, UINT16 trans_num, /* Initialise for continuation response */ p_rsp = &p_ccb->rsp_list[0]; attr_seq.attr_entry[p_ccb->cont_info.next_attr_index].start = p_ccb->cont_info.next_attr_start_id; - } - else - { + } else { /* Get a scratch buffer to store response */ - if (!p_ccb->rsp_list || (GKI_get_buf_size(p_ccb->rsp_list) < max_list_len)) - { + if (!p_ccb->rsp_list || (GKI_get_buf_size(p_ccb->rsp_list) < max_list_len)) { /* Free and reallocate if the earlier allocated buffer is small */ - if (p_ccb->rsp_list) - { + if (p_ccb->rsp_list) { GKI_freebuf (p_ccb->rsp_list); } p_ccb->rsp_list = (UINT8 *)GKI_getbuf (max_list_len); - if (p_ccb->rsp_list == NULL) - { + if (p_ccb->rsp_list == NULL) { SDP_TRACE_ERROR ("SDP - no scratch buf for search rsp\n"); return; } @@ -430,18 +409,15 @@ static void process_service_attr_req (tCONN_CB *p_ccb, UINT16 trans_num, } /* Search for attributes that match the list given to us */ - for (xx = p_ccb->cont_info.next_attr_index; xx < attr_seq.num_attr; xx++) - { + for (xx = p_ccb->cont_info.next_attr_index; xx < attr_seq.num_attr; xx++) { p_attr = sdp_db_find_attr_in_rec (p_rec, attr_seq.attr_entry[xx].start, attr_seq.attr_entry[xx].end); - if (p_attr) - { + if (p_attr) { /* Check if attribute fits. Assume 3-byte value type/length */ rem_len = max_list_len - (INT16) (p_rsp - &p_ccb->rsp_list[0]); /* just in case */ - if (rem_len <= 0) - { + if (rem_len <= 0) { p_ccb->cont_info.next_attr_index = xx; p_ccb->cont_info.next_attr_start_id = p_attr->id; break; @@ -449,21 +425,18 @@ static void process_service_attr_req (tCONN_CB *p_ccb, UINT16 trans_num, attr_len = sdpu_get_attrib_entry_len(p_attr); /* if there is a partial attribute pending to be sent */ - if (p_ccb->cont_info.attr_offset) - { + if (p_ccb->cont_info.attr_offset) { p_rsp = sdpu_build_partial_attrib_entry (p_rsp, p_attr, rem_len, - &p_ccb->cont_info.attr_offset); + &p_ccb->cont_info.attr_offset); /* If the partial attrib could not been fully added yet */ - if (p_ccb->cont_info.attr_offset != attr_len) + if (p_ccb->cont_info.attr_offset != attr_len) { break; - else /* If the partial attrib has been added in full by now */ - p_ccb->cont_info.attr_offset = 0; /* reset attr_offset */ - } - else if (rem_len < attr_len) /* Not enough space for attr... so add partially */ - { - if (attr_len >= SDP_MAX_ATTR_LEN) - { + } else { /* If the partial attrib has been added in full by now */ + p_ccb->cont_info.attr_offset = 0; /* reset attr_offset */ + } + } else if (rem_len < attr_len) { /* Not enough space for attr... so add partially */ + if (attr_len >= SDP_MAX_ATTR_LEN) { SDP_TRACE_ERROR("SDP attr too big: max_list_len=%d,attr_len=%d\n", max_list_len, attr_len); sdpu_build_n_send_error (p_ccb, trans_num, SDP_NO_RESOURCES, NULL); return; @@ -471,18 +444,17 @@ static void process_service_attr_req (tCONN_CB *p_ccb, UINT16 trans_num, /* add the partial attribute if possible */ p_rsp = sdpu_build_partial_attrib_entry (p_rsp, p_attr, (UINT16)rem_len, - &p_ccb->cont_info.attr_offset); + &p_ccb->cont_info.attr_offset); p_ccb->cont_info.next_attr_index = xx; p_ccb->cont_info.next_attr_start_id = p_attr->id; break; - } - else /* build the whole attribute */ + } else { /* build the whole attribute */ p_rsp = sdpu_build_attrib_entry (p_rsp, p_attr); + } /* If doing a range, stick with this one till no more attributes found */ - if (attr_seq.attr_entry[xx].start != attr_seq.attr_entry[xx].end) - { + if (attr_seq.attr_entry[xx].start != attr_seq.attr_entry[xx].end) { /* Update for next time through */ attr_seq.attr_entry[xx].start = p_attr->id + 1; @@ -492,24 +464,21 @@ static void process_service_attr_req (tCONN_CB *p_ccb, UINT16 trans_num, } /* If all the attributes have been accomodated in p_rsp, reset next_attr_index */ - if (xx == attr_seq.num_attr) + if (xx == attr_seq.num_attr) { p_ccb->cont_info.next_attr_index = 0; + } len_to_send = (UINT16) (p_rsp - &p_ccb->rsp_list[0]); cont_offset = 0; - if (!is_cont) - { + if (!is_cont) { p_ccb->list_len = sdpu_get_attrib_seq_len(p_rec, &attr_seq_sav) + 3; /* Put in the sequence header (2 or 3 bytes) */ - if (p_ccb->list_len > 255) - { + if (p_ccb->list_len > 255) { p_ccb->rsp_list[0] = (UINT8) ((DATA_ELE_SEQ_DESC_TYPE << 3) | SIZE_IN_NEXT_WORD); p_ccb->rsp_list[1] = (UINT8) ((p_ccb->list_len - 3) >> 8); p_ccb->rsp_list[2] = (UINT8) (p_ccb->list_len - 3); - } - else - { + } else { cont_offset = 1; p_ccb->rsp_list[1] = (UINT8) ((DATA_ELE_SEQ_DESC_TYPE << 3) | SIZE_IN_NEXT_BYTE); @@ -521,8 +490,7 @@ static void process_service_attr_req (tCONN_CB *p_ccb, UINT16 trans_num, } /* Get a buffer to use to build the response */ - if ((p_buf = (BT_HDR *)GKI_getpoolbuf (SDP_POOL_ID)) == NULL) - { + if ((p_buf = (BT_HDR *)GKI_getpoolbuf (SDP_POOL_ID)) == NULL) { SDP_TRACE_ERROR ("SDP - no buf for search rsp\n"); return; } @@ -545,15 +513,14 @@ static void process_service_attr_req (tCONN_CB *p_ccb, UINT16 trans_num, p_ccb->cont_offset += len_to_send; /* If anything left to send, continuation needed */ - if (p_ccb->cont_offset < p_ccb->list_len) - { + if (p_ccb->cont_offset < p_ccb->list_len) { is_cont = TRUE; UINT8_TO_BE_STREAM (p_rsp, SDP_CONTINUATION_LEN); UINT16_TO_BE_STREAM (p_rsp, p_ccb->cont_offset); - } - else + } else { UINT8_TO_BE_STREAM (p_rsp, 0); + } /* Go back and put the parameter length into the buffer */ rsp_param_len = p_rsp - p_rsp_param_len - 2; @@ -581,8 +548,8 @@ static void process_service_attr_req (tCONN_CB *p_ccb, UINT16 trans_num, ** *******************************************************************************/ static void process_service_search_attr_req (tCONN_CB *p_ccb, UINT16 trans_num, - UINT16 param_len, UINT8 *p_req, - UINT8 *p_req_end) + UINT16 param_len, UINT8 *p_req, + UINT8 *p_req_end) { UINT16 max_list_len; INT16 rem_len; @@ -602,8 +569,7 @@ static void process_service_search_attr_req (tCONN_CB *p_ccb, UINT16 trans_num, /* Extract the UUID sequence to search for */ p_req = sdpu_extract_uid_seq (p_req, param_len, &uid_seq); - if ((!p_req) || (!uid_seq.num_uids)) - { + if ((!p_req) || (!uid_seq.num_uids)) { sdpu_build_n_send_error (p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX, SDP_TEXT_BAD_UUID_LIST); return; } @@ -611,13 +577,13 @@ static void process_service_search_attr_req (tCONN_CB *p_ccb, UINT16 trans_num, /* Get the max list length we can send. Cap it at our max list length. */ BE_STREAM_TO_UINT16 (max_list_len, p_req); - if (max_list_len > (p_ccb->rem_mtu_size - SDP_MAX_SERVATTR_RSPHDR_LEN)) + if (max_list_len > (p_ccb->rem_mtu_size - SDP_MAX_SERVATTR_RSPHDR_LEN)) { max_list_len = p_ccb->rem_mtu_size - SDP_MAX_SERVATTR_RSPHDR_LEN; + } p_req = sdpu_extract_attr_seq (p_req, param_len, &attr_seq); - if ((!p_req) || (!attr_seq.num_attr)) - { + if ((!p_req) || (!attr_seq.num_attr)) { sdpu_build_n_send_error (p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX, SDP_TEXT_BAD_ATTR_LIST); return; } @@ -625,36 +591,30 @@ static void process_service_search_attr_req (tCONN_CB *p_ccb, UINT16 trans_num, memcpy(&attr_seq_sav, &attr_seq, sizeof(tSDP_ATTR_SEQ)) ; /* Check if this is a continuation request */ - if (*p_req) - { + if (*p_req) { /* Free and reallocate buffer */ - if (p_ccb->rsp_list) - { + if (p_ccb->rsp_list) { GKI_freebuf (p_ccb->rsp_list); } p_ccb->rsp_list = (UINT8 *)GKI_getbuf (max_list_len); - if (p_ccb->rsp_list == NULL) - { + if (p_ccb->rsp_list == NULL) { SDP_TRACE_ERROR ("SDP - no scratch buf for search rsp\n"); return; } - if (*p_req++ != SDP_CONTINUATION_LEN) - { + if (*p_req++ != SDP_CONTINUATION_LEN) { sdpu_build_n_send_error (p_ccb, trans_num, SDP_INVALID_CONT_STATE, SDP_TEXT_BAD_CONT_LEN); return; } BE_STREAM_TO_UINT16 (cont_offset, p_req); - if (cont_offset != p_ccb->cont_offset) - { + if (cont_offset != p_ccb->cont_offset) { sdpu_build_n_send_error (p_ccb, trans_num, SDP_INVALID_CONT_STATE, SDP_TEXT_BAD_CONT_INX); return; } - if (!p_ccb->rsp_list) - { + if (!p_ccb->rsp_list) { sdpu_build_n_send_error (p_ccb, trans_num, SDP_NO_RESOURCES, NULL); return; } @@ -663,21 +623,16 @@ static void process_service_search_attr_req (tCONN_CB *p_ccb, UINT16 trans_num, /* Initialise for continuation response */ p_rsp = &p_ccb->rsp_list[0]; attr_seq.attr_entry[p_ccb->cont_info.next_attr_index].start = p_ccb->cont_info.next_attr_start_id; - } - else - { + } else { /* Get a scratch buffer to store response */ - if (!p_ccb->rsp_list || (GKI_get_buf_size(p_ccb->rsp_list) < max_list_len)) - { + if (!p_ccb->rsp_list || (GKI_get_buf_size(p_ccb->rsp_list) < max_list_len)) { /* Free and reallocate if the earlier allocated buffer is small */ - if (p_ccb->rsp_list) - { + if (p_ccb->rsp_list) { GKI_freebuf (p_ccb->rsp_list); } p_ccb->rsp_list = (UINT8 *)GKI_getbuf (max_list_len); - if (p_ccb->rsp_list == NULL) - { + if (p_ccb->rsp_list == NULL) { SDP_TRACE_ERROR ("SDP - no scratch buf for search rsp\n"); return; } @@ -694,16 +649,13 @@ static void process_service_search_attr_req (tCONN_CB *p_ccb, UINT16 trans_num, } /* Get a list of handles that match the UUIDs given to us */ - for (p_rec = sdp_db_service_search (p_ccb->cont_info.prev_sdp_rec, &uid_seq); p_rec; p_rec = sdp_db_service_search (p_rec, &uid_seq)) - { + for (p_rec = sdp_db_service_search (p_ccb->cont_info.prev_sdp_rec, &uid_seq); p_rec; p_rec = sdp_db_service_search (p_rec, &uid_seq)) { /* Allow space for attribute sequence type and length */ p_seq_start = p_rsp; - if (p_ccb->cont_info.last_attr_seq_desc_sent == FALSE) - { + if (p_ccb->cont_info.last_attr_seq_desc_sent == FALSE) { /* See if there is enough room to include a new service in the current response */ rem_len = max_list_len - (INT16) (p_rsp - &p_ccb->rsp_list[0]); - if (rem_len < 3) - { + if (rem_len < 3) { /* Not enough room. Update continuation info for next response */ p_ccb->cont_info.next_attr_index = 0; p_ccb->cont_info.next_attr_start_id = attr_seq.attr_entry[0].start; @@ -713,18 +665,15 @@ static void process_service_search_attr_req (tCONN_CB *p_ccb, UINT16 trans_num, } /* Get a list of handles that match the UUIDs given to us */ - for (xx = p_ccb->cont_info.next_attr_index; xx < attr_seq.num_attr; xx++) - { + for (xx = p_ccb->cont_info.next_attr_index; xx < attr_seq.num_attr; xx++) { p_attr = sdp_db_find_attr_in_rec (p_rec, attr_seq.attr_entry[xx].start, attr_seq.attr_entry[xx].end); - if (p_attr) - { + if (p_attr) { /* Check if attribute fits. Assume 3-byte value type/length */ rem_len = max_list_len - (INT16) (p_rsp - &p_ccb->rsp_list[0]); /* just in case */ - if (rem_len <= 0) - { + if (rem_len <= 0) { p_ccb->cont_info.next_attr_index = xx; p_ccb->cont_info.next_attr_start_id = p_attr->id; maxxed_out = TRUE; @@ -733,24 +682,19 @@ static void process_service_search_attr_req (tCONN_CB *p_ccb, UINT16 trans_num, attr_len = sdpu_get_attrib_entry_len(p_attr); /* if there is a partial attribute pending to be sent */ - if (p_ccb->cont_info.attr_offset) - { + if (p_ccb->cont_info.attr_offset) { p_rsp = sdpu_build_partial_attrib_entry (p_rsp, p_attr, rem_len, - &p_ccb->cont_info.attr_offset); + &p_ccb->cont_info.attr_offset); /* If the partial attrib could not been fully added yet */ - if (p_ccb->cont_info.attr_offset != attr_len) - { + if (p_ccb->cont_info.attr_offset != attr_len) { maxxed_out = TRUE; break; + } else { /* If the partial attrib has been added in full by now */ + p_ccb->cont_info.attr_offset = 0; /* reset attr_offset */ } - else /* If the partial attrib has been added in full by now */ - p_ccb->cont_info.attr_offset = 0; /* reset attr_offset */ - } - else if (rem_len < attr_len) /* Not enough space for attr... so add partially */ - { - if (attr_len >= SDP_MAX_ATTR_LEN) - { + } else if (rem_len < attr_len) { /* Not enough space for attr... so add partially */ + if (attr_len >= SDP_MAX_ATTR_LEN) { SDP_TRACE_ERROR("SDP attr too big: max_list_len=%d,attr_len=%d\n", max_list_len, attr_len); sdpu_build_n_send_error (p_ccb, trans_num, SDP_NO_RESOURCES, NULL); return; @@ -758,19 +702,18 @@ static void process_service_search_attr_req (tCONN_CB *p_ccb, UINT16 trans_num, /* add the partial attribute if possible */ p_rsp = sdpu_build_partial_attrib_entry (p_rsp, p_attr, (UINT16)rem_len, - &p_ccb->cont_info.attr_offset); + &p_ccb->cont_info.attr_offset); p_ccb->cont_info.next_attr_index = xx; p_ccb->cont_info.next_attr_start_id = p_attr->id; maxxed_out = TRUE; break; - } - else /* build the whole attribute */ + } else { /* build the whole attribute */ p_rsp = sdpu_build_attrib_entry (p_rsp, p_attr); + } /* If doing a range, stick with this one till no more attributes found */ - if (attr_seq.attr_entry[xx].start != attr_seq.attr_entry[xx].end) - { + if (attr_seq.attr_entry[xx].start != attr_seq.attr_entry[xx].end) { /* Update for next time through */ attr_seq.attr_entry[xx].start = p_attr->id + 1; @@ -780,23 +723,23 @@ static void process_service_search_attr_req (tCONN_CB *p_ccb, UINT16 trans_num, } /* Go back and put the type and length into the buffer */ - if (p_ccb->cont_info.last_attr_seq_desc_sent == FALSE) - { + if (p_ccb->cont_info.last_attr_seq_desc_sent == FALSE) { seq_len = sdpu_get_attrib_seq_len(p_rec, &attr_seq_sav); - if (seq_len != 0) - { + if (seq_len != 0) { UINT8_TO_BE_STREAM (p_seq_start, (DATA_ELE_SEQ_DESC_TYPE << 3) | SIZE_IN_NEXT_WORD); UINT16_TO_BE_STREAM (p_seq_start, seq_len); - if (maxxed_out) + if (maxxed_out) { p_ccb->cont_info.last_attr_seq_desc_sent = TRUE; - } - else + } + } else { p_rsp = p_seq_start; + } } - if (maxxed_out) + if (maxxed_out) { break; + } /* Restore the attr_seq to look for in the next sdp record */ memcpy(&attr_seq, &attr_seq_sav, sizeof(tSDP_ATTR_SEQ)) ; @@ -828,24 +771,20 @@ static void process_service_search_attr_req (tCONN_CB *p_ccb, UINT16 trans_num, // // TODO(sharvil): rewrite SDP server. if (is_cont && len_to_send == 0) { - sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE, NULL); - return; + sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE, NULL); + return; } /* If first response, insert sequence header */ - if (!is_cont) - { + if (!is_cont) { /* Get the total list length for requested uid and attribute sequence */ p_ccb->list_len = sdpu_get_list_len(&uid_seq, &attr_seq_sav) + 3; /* Put in the sequence header (2 or 3 bytes) */ - if (p_ccb->list_len > 255) - { + if (p_ccb->list_len > 255) { p_ccb->rsp_list[0] = (UINT8) ((DATA_ELE_SEQ_DESC_TYPE << 3) | SIZE_IN_NEXT_WORD); p_ccb->rsp_list[1] = (UINT8) ((p_ccb->list_len - 3) >> 8); p_ccb->rsp_list[2] = (UINT8) (p_ccb->list_len - 3); - } - else - { + } else { cont_offset = 1; p_ccb->rsp_list[1] = (UINT8) ((DATA_ELE_SEQ_DESC_TYPE << 3) | SIZE_IN_NEXT_BYTE); @@ -857,8 +796,7 @@ static void process_service_search_attr_req (tCONN_CB *p_ccb, UINT16 trans_num, } /* Get a buffer to use to build the response */ - if ((p_buf = (BT_HDR *)GKI_getpoolbuf (SDP_POOL_ID)) == NULL) - { + if ((p_buf = (BT_HDR *)GKI_getpoolbuf (SDP_POOL_ID)) == NULL) { SDP_TRACE_ERROR ("SDP - no buf for search rsp\n"); return; } @@ -883,15 +821,14 @@ static void process_service_search_attr_req (tCONN_CB *p_ccb, UINT16 trans_num, p_ccb->cont_offset += len_to_send; /* If anything left to send, continuation needed */ - if (p_ccb->cont_offset < p_ccb->list_len) - { + if (p_ccb->cont_offset < p_ccb->list_len) { is_cont = TRUE; UINT8_TO_BE_STREAM (p_rsp, SDP_CONTINUATION_LEN); UINT16_TO_BE_STREAM (p_rsp, p_ccb->cont_offset); - } - else + } else { UINT8_TO_BE_STREAM (p_rsp, 0); + } /* Go back and put the parameter length into the buffer */ rsp_param_len = p_rsp - p_rsp_param_len - 2; diff --git a/components/bt/bluedroid/stack/sdp/sdp_utils.c b/components/bt/bluedroid/stack/sdp/sdp_utils.c old mode 100755 new mode 100644 index 90bf58e005..38bac33f61 --- a/components/bt/bluedroid/stack/sdp/sdp_utils.c +++ b/components/bt/bluedroid/stack/sdp/sdp_utils.c @@ -43,7 +43,8 @@ static const UINT8 sdp_base_uuid[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, - 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB}; + 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB + }; /******************************************************************************* ** @@ -61,10 +62,10 @@ tCONN_CB *sdpu_find_ccb_by_cid (UINT16 cid) tCONN_CB *p_ccb; /* Look through each connection control block */ - for (xx = 0, p_ccb = sdp_cb.ccb; xx < SDP_MAX_CONNECTIONS; xx++, p_ccb++) - { - if ((p_ccb->con_state != SDP_STATE_IDLE) && (p_ccb->connection_id == cid)) + for (xx = 0, p_ccb = sdp_cb.ccb; xx < SDP_MAX_CONNECTIONS; xx++, p_ccb++) { + if ((p_ccb->con_state != SDP_STATE_IDLE) && (p_ccb->connection_id == cid)) { return (p_ccb); + } } /* If here, not found */ @@ -88,13 +89,12 @@ tCONN_CB *sdpu_find_ccb_by_db (tSDP_DISCOVERY_DB *p_db) UINT16 xx; tCONN_CB *p_ccb; - if (p_db) - { + if (p_db) { /* Look through each connection control block */ - for (xx = 0, p_ccb = sdp_cb.ccb; xx < SDP_MAX_CONNECTIONS; xx++, p_ccb++) - { - if ((p_ccb->con_state != SDP_STATE_IDLE) && (p_ccb->p_db == p_db)) + for (xx = 0, p_ccb = sdp_cb.ccb; xx < SDP_MAX_CONNECTIONS; xx++, p_ccb++) { + if ((p_ccb->con_state != SDP_STATE_IDLE) && (p_ccb->p_db == p_db)) { return (p_ccb); + } } } #endif @@ -118,10 +118,8 @@ tCONN_CB *sdpu_allocate_ccb (void) tCONN_CB *p_ccb; /* Look through each connection control block for a free one */ - for (xx = 0, p_ccb = sdp_cb.ccb; xx < SDP_MAX_CONNECTIONS; xx++, p_ccb++) - { - if (p_ccb->con_state == SDP_STATE_IDLE) - { + for (xx = 0, p_ccb = sdp_cb.ccb; xx < SDP_MAX_CONNECTIONS; xx++, p_ccb++) { + if (p_ccb->con_state == SDP_STATE_IDLE) { memset (p_ccb, 0, sizeof (tCONN_CB)); p_ccb->timer_entry.param = (UINT32) p_ccb; @@ -156,9 +154,8 @@ void sdpu_release_ccb (tCONN_CB *p_ccb) #endif /* Free the response buffer */ - if (p_ccb->rsp_list) - { - SDP_TRACE_DEBUG("releasing SDP rsp_list\n"); + if (p_ccb->rsp_list) { + SDP_TRACE_DEBUG("releasing SDP rsp_list\n"); GKI_freebuf(p_ccb->rsp_list); p_ccb->rsp_list = NULL; @@ -183,34 +180,28 @@ UINT8 *sdpu_build_attrib_seq (UINT8 *p_out, UINT16 *p_attr, UINT16 num_attrs) /* First thing is the data element header. See if the length fits 1 byte */ /* If no attributes, assume a 4-byte wildcard */ - if (!p_attr) + if (!p_attr) { xx = 5; - else + } else { xx = num_attrs * 3; + } - if (xx > 255) - { + if (xx > 255) { UINT8_TO_BE_STREAM (p_out, (DATA_ELE_SEQ_DESC_TYPE << 3) | SIZE_IN_NEXT_WORD); UINT16_TO_BE_STREAM (p_out, xx); - } - else - { + } else { UINT8_TO_BE_STREAM (p_out, (DATA_ELE_SEQ_DESC_TYPE << 3) | SIZE_IN_NEXT_BYTE); UINT8_TO_BE_STREAM (p_out, xx); } /* If there are no attributes specified, assume caller wants wildcard */ - if (!p_attr) - { + if (!p_attr) { UINT8_TO_BE_STREAM (p_out, (UINT_DESC_TYPE << 3) | SIZE_FOUR_BYTES); UINT16_TO_BE_STREAM (p_out, 0); UINT16_TO_BE_STREAM (p_out, 0xFFFF); - } - else - { + } else { /* Loop through and put in all the attributes(s) */ - for (xx = 0; xx < num_attrs; xx++, p_attr++) - { + for (xx = 0; xx < num_attrs; xx++, p_attr++) { UINT8_TO_BE_STREAM (p_out, (UINT_DESC_TYPE << 3) | SIZE_TWO_BYTES); UINT16_TO_BE_STREAM (p_out, *p_attr); } @@ -239,34 +230,29 @@ UINT8 *sdpu_build_attrib_entry (UINT8 *p_out, tSDP_ATTRIBUTE *p_attr) /* the attribute is in the db record. * assuming the attribute len is less than SDP_MAX_ATTR_LEN */ - switch(p_attr->type) - { + switch (p_attr->type) { case TEXT_STR_DESC_TYPE: /* 4 */ case DATA_ELE_SEQ_DESC_TYPE:/* 6 */ case DATA_ELE_ALT_DESC_TYPE:/* 7 */ case URL_DESC_TYPE: /* 8 */ #if (SDP_MAX_ATTR_LEN > 0xFFFF) - if(p_attr->len > 0xFFFF) - { + if (p_attr->len > 0xFFFF) { UINT8_TO_BE_STREAM (p_out, (p_attr->type << 3) | SIZE_IN_NEXT_LONG); UINT32_TO_BE_STREAM (p_out, p_attr->len); - } - else + } else #endif /* 0xFFFF - 0xFF */ #if (SDP_MAX_ATTR_LEN > 0xFF) - if(p_attr->len > 0xFF) - { - UINT8_TO_BE_STREAM (p_out, (p_attr->type << 3) | SIZE_IN_NEXT_WORD); - UINT16_TO_BE_STREAM (p_out, p_attr->len); - } - else + if (p_attr->len > 0xFF) { + UINT8_TO_BE_STREAM (p_out, (p_attr->type << 3) | SIZE_IN_NEXT_WORD); + UINT16_TO_BE_STREAM (p_out, p_attr->len); + } else #endif /* 0xFF and less*/ - { - UINT8_TO_BE_STREAM (p_out, (p_attr->type << 3) | SIZE_IN_NEXT_BYTE); - UINT8_TO_BE_STREAM (p_out, p_attr->len); - } + { + UINT8_TO_BE_STREAM (p_out, (p_attr->type << 3) | SIZE_IN_NEXT_BYTE); + UINT8_TO_BE_STREAM (p_out, p_attr->len); + } if (p_attr->value_ptr != NULL) { ARRAY_TO_BE_STREAM (p_out, p_attr->value_ptr, (int)p_attr->len); @@ -276,8 +262,7 @@ UINT8 *sdpu_build_attrib_entry (UINT8 *p_out, tSDP_ATTRIBUTE *p_attr) } /* Now, store the attribute value */ - switch (p_attr->len) - { + switch (p_attr->len) { case 1: UINT8_TO_BE_STREAM (p_out, (p_attr->type << 3) | SIZE_ONE_BYTE); break; @@ -324,11 +309,10 @@ void sdpu_build_n_send_error (tCONN_CB *p_ccb, UINT16 trans_num, UINT16 error_co SDP_TRACE_WARNING ("SDP - sdpu_build_n_send_error code: 0x%x CID: 0x%x\n", - error_code, p_ccb->connection_id); + error_code, p_ccb->connection_id); /* Get a buffer to use to build and send the packet to L2CAP */ - if ((p_buf = (BT_HDR *)GKI_getpoolbuf (SDP_POOL_ID)) == NULL) - { + if ((p_buf = (BT_HDR *)GKI_getpoolbuf (SDP_POOL_ID)) == NULL) { SDP_TRACE_ERROR ("SDP - no buf for err msg\n"); return; } @@ -345,8 +329,9 @@ void sdpu_build_n_send_error (tCONN_CB *p_ccb, UINT16 trans_num, UINT16 error_co UINT16_TO_BE_STREAM (p_rsp, error_code); /* Unplugfest example traces do not have any error text */ - if (p_error_text) + if (p_error_text) { ARRAY_TO_BE_STREAM (p_rsp, p_error_text, (int) strlen (p_error_text)); + } /* Go back and put the parameter length into the buffer */ rsp_param_len = p_rsp - p_rsp_param_len - 2; @@ -387,11 +372,11 @@ UINT8 *sdpu_extract_uid_seq (UINT8 *p, UINT16 param_len, tSDP_UUID_SEQ *p_seq) type = descr >> 3; size = descr & 7; - if (type != DATA_ELE_SEQ_DESC_TYPE) + if (type != DATA_ELE_SEQ_DESC_TYPE) { return (NULL); + } - switch (size) - { + switch (size) { case SIZE_TWO_BYTES: seq_len = 2; break; @@ -414,23 +399,23 @@ UINT8 *sdpu_extract_uid_seq (UINT8 *p, UINT16 param_len, tSDP_UUID_SEQ *p_seq) return (NULL); } - if (seq_len >= param_len) + if (seq_len >= param_len) { return (NULL); + } p_seq_end = p + seq_len; /* Loop through, extracting the UIDs */ - for ( ; p < p_seq_end ; ) - { + for ( ; p < p_seq_end ; ) { BE_STREAM_TO_UINT8 (descr, p); type = descr >> 3; size = descr & 7; - if (type != UUID_DESC_TYPE) + if (type != UUID_DESC_TYPE) { return (NULL); + } - switch (size) - { + switch (size) { case SIZE_TWO_BYTES: uuid_len = 2; break; @@ -454,22 +439,23 @@ UINT8 *sdpu_extract_uid_seq (UINT8 *p, UINT16 param_len, tSDP_UUID_SEQ *p_seq) } /* If UUID length is valid, copy it across */ - if ((uuid_len == 2) || (uuid_len == 4) || (uuid_len == 16)) - { + if ((uuid_len == 2) || (uuid_len == 4) || (uuid_len == 16)) { p_seq->uuid_entry[p_seq->num_uids].len = (UINT16) uuid_len; BE_STREAM_TO_ARRAY (p, p_seq->uuid_entry[p_seq->num_uids].value, (int)uuid_len); p_seq->num_uids++; - } - else + } else { return (NULL); + } /* We can only do so many */ - if (p_seq->num_uids >= MAX_UUIDS_PER_SEQ) + if (p_seq->num_uids >= MAX_UUIDS_PER_SEQ) { return (NULL); + } } - if (p != p_seq_end) + if (p != p_seq_end) { return (NULL); + } return (p); } @@ -500,11 +486,11 @@ UINT8 *sdpu_extract_attr_seq (UINT8 *p, UINT16 param_len, tSDP_ATTR_SEQ *p_seq) type = descr >> 3; size = descr & 7; - if (type != DATA_ELE_SEQ_DESC_TYPE) + if (type != DATA_ELE_SEQ_DESC_TYPE) { return (p); + } - switch (size) - { + switch (size) { case SIZE_IN_NEXT_BYTE: BE_STREAM_TO_UINT8 (list_len, p); break; @@ -521,23 +507,23 @@ UINT8 *sdpu_extract_attr_seq (UINT8 *p, UINT16 param_len, tSDP_ATTR_SEQ *p_seq) return (p); } - if (list_len > param_len) + if (list_len > param_len) { return (p); + } p_end_list = p + list_len; /* Loop through, extracting the attribute IDs */ - for ( ; p < p_end_list ; ) - { + for ( ; p < p_end_list ; ) { BE_STREAM_TO_UINT8 (descr, p); type = descr >> 3; size = descr & 7; - if (type != UINT_DESC_TYPE) + if (type != UINT_DESC_TYPE) { return (p); + } - switch (size) - { + switch (size) { case SIZE_TWO_BYTES: attr_len = 2; break; @@ -559,22 +545,20 @@ UINT8 *sdpu_extract_attr_seq (UINT8 *p, UINT16 param_len, tSDP_ATTR_SEQ *p_seq) } /* Attribute length must be 2-bytes or 4-bytes for a paired entry. */ - if (attr_len == 2) - { + if (attr_len == 2) { BE_STREAM_TO_UINT16 (p_seq->attr_entry[p_seq->num_attr].start, p); p_seq->attr_entry[p_seq->num_attr].end = p_seq->attr_entry[p_seq->num_attr].start; - } - else if (attr_len == 4) - { + } else if (attr_len == 4) { BE_STREAM_TO_UINT16 (p_seq->attr_entry[p_seq->num_attr].start, p); BE_STREAM_TO_UINT16 (p_seq->attr_entry[p_seq->num_attr].end, p); - } - else + } else { return (NULL); + } /* We can only do so many */ - if (++p_seq->num_attr >= MAX_ATTR_PER_SEQ) + if (++p_seq->num_attr >= MAX_ATTR_PER_SEQ) { return (NULL); + } } return (p); @@ -596,8 +580,7 @@ UINT8 *sdpu_get_len_from_type (UINT8 *p, UINT8 type, UINT32 *p_len) UINT16 u16; UINT32 u32; - switch (type & 7) - { + switch (type & 7) { case SIZE_ONE_BYTE: *p_len = 1; break; @@ -646,8 +629,9 @@ BOOLEAN sdpu_is_base_uuid (UINT8 *p_uuid) UINT16 xx; for (xx = 4; xx < MAX_UUID_SIZE; xx++) - if (p_uuid[xx] != sdp_base_uuid[xx]) + if (p_uuid[xx] != sdp_base_uuid[xx]) { return (FALSE); + } /* If here, matched */ return (TRUE); @@ -671,65 +655,57 @@ BOOLEAN sdpu_compare_uuid_arrays (UINT8 *p_uuid1, UINT32 len1, UINT8 *p_uuid2, U UINT8 nu1[MAX_UUID_SIZE]; UINT8 nu2[MAX_UUID_SIZE]; - if( ((len1 != 2) && (len1 != 4) && (len1 != 16)) || - ((len2 != 2) && (len2 != 4) && (len2 != 16)) ) - { + if ( ((len1 != 2) && (len1 != 4) && (len1 != 16)) || + ((len2 != 2) && (len2 != 4) && (len2 != 16)) ) { SDP_TRACE_ERROR("%s: invalid length\n", __func__); return FALSE; } /* If lengths match, do a straight compare */ - if (len1 == len2) - { - if (len1 == 2) + if (len1 == len2) { + if (len1 == 2) { return ((p_uuid1[0] == p_uuid2[0]) && (p_uuid1[1] == p_uuid2[1])); + } if (len1 == 4) return ( (p_uuid1[0] == p_uuid2[0]) && (p_uuid1[1] == p_uuid2[1]) - && (p_uuid1[2] == p_uuid2[2]) && (p_uuid1[3] == p_uuid2[3]) ); - else + && (p_uuid1[2] == p_uuid2[2]) && (p_uuid1[3] == p_uuid2[3]) ); + else { return (memcmp (p_uuid1, p_uuid2, (size_t)len1) == 0); - } - else if (len1 > len2) - { - /* If the len1 was 4-byte, (so len2 is 2-byte), compare on the fly */ - if (len1 == 4) - { - return ( (p_uuid1[0] == 0) && (p_uuid1[1] == 0) - && (p_uuid1[2] == p_uuid2[0]) && (p_uuid1[3] == p_uuid2[1]) ); } - else - { + } else if (len1 > len2) { + /* If the len1 was 4-byte, (so len2 is 2-byte), compare on the fly */ + if (len1 == 4) { + return ( (p_uuid1[0] == 0) && (p_uuid1[1] == 0) + && (p_uuid1[2] == p_uuid2[0]) && (p_uuid1[3] == p_uuid2[1]) ); + } else { /* Normalize UUIDs to 16-byte form, then compare. Len1 must be 16 */ memcpy (nu1, p_uuid1, MAX_UUID_SIZE); memcpy (nu2, sdp_base_uuid, MAX_UUID_SIZE); - if (len2 == 4) + if (len2 == 4) { memcpy (nu2, p_uuid2, len2); - else if (len2 == 2) + } else if (len2 == 2) { memcpy (nu2 + 2, p_uuid2, len2); + } return (memcmp (nu1, nu2, MAX_UUID_SIZE) == 0); } - } - else - { + } else { /* len2 is greater than len1 */ /* If the len2 was 4-byte, (so len1 is 2-byte), compare on the fly */ - if (len2 == 4) - { + if (len2 == 4) { return ( (p_uuid2[0] == 0) && (p_uuid2[1] == 0) - && (p_uuid2[2] == p_uuid1[0]) && (p_uuid2[3] == p_uuid1[1]) ); - } - else - { + && (p_uuid2[2] == p_uuid1[0]) && (p_uuid2[3] == p_uuid1[1]) ); + } else { /* Normalize UUIDs to 16-byte form, then compare. Len1 must be 16 */ memcpy (nu2, p_uuid2, MAX_UUID_SIZE); memcpy (nu1, sdp_base_uuid, MAX_UUID_SIZE); - if (len1 == 4) + if (len1 == 4) { memcpy (nu1, p_uuid1, (size_t)len1); - else if (len1 == 2) + } else if (len1 == 2) { memcpy (nu1 + 2, p_uuid1, (size_t)len1); + } return (memcmp (nu1, nu2, MAX_UUID_SIZE) == 0); } @@ -752,14 +728,14 @@ BOOLEAN sdpu_compare_uuid_arrays (UINT8 *p_uuid1, UINT32 len1, UINT8 *p_uuid2, U BOOLEAN sdpu_compare_bt_uuids (tBT_UUID *p_uuid1, tBT_UUID *p_uuid2) { /* Lengths must match for BT UUIDs to match */ - if (p_uuid1->len == p_uuid2->len) - { - if (p_uuid1->len == 2) + if (p_uuid1->len == p_uuid2->len) { + if (p_uuid1->len == 2) { return (p_uuid1->uu.uuid16 == p_uuid2->uu.uuid16); - else if (p_uuid1->len == 4) + } else if (p_uuid1->len == 4) { return (p_uuid1->uu.uuid32 == p_uuid2->uu.uuid32); - else if (!memcmp (p_uuid1->uu.uuid128, p_uuid2->uu.uuid128, 16)) + } else if (!memcmp (p_uuid1->uu.uuid128, p_uuid2->uu.uuid128, 16)) { return (TRUE); + } } return (FALSE); @@ -787,13 +763,15 @@ BOOLEAN sdpu_compare_uuid_with_attr (tBT_UUID *p_btuuid, tSDP_DISC_ATTR *p_attr) UINT16 attr_len = SDP_DISC_ATTR_LEN (p_attr->attr_len_type); /* Since both UUIDs are compressed, lengths must match */ - if (p_btuuid->len != attr_len) + if (p_btuuid->len != attr_len) { return (FALSE); + } - if (p_btuuid->len == 2) + if (p_btuuid->len == 2) { return (BOOLEAN)(p_btuuid->uu.uuid16 == p_attr->attr_value.v.u16); - else if (p_btuuid->len == 4) + } else if (p_btuuid->len == 4) { return (BOOLEAN)(p_btuuid->uu.uuid32 == p_attr->attr_value.v.u32); + } /* coverity[overrun-buffer-arg] */ /* Event overrun-buffer-arg: Overrun of static array "&p_attr->attr_value.v.array" of size 4 bytes by passing it to a function which indexes it with argument "16U" at byte position 15 @@ -802,8 +780,9 @@ BOOLEAN sdpu_compare_uuid_with_attr (tBT_UUID *p_btuuid, tSDP_DISC_ATTR *p_attr) The actual size of tSDP_DISC_ATVAL does not matter. If the array size in tSDP_DISC_ATVAL is increase, we would increase the system RAM usage unnecessarily */ - else if (!memcmp (p_btuuid->uu.uuid128,(void*) p_attr->attr_value.v.array, MAX_UUID_SIZE)) + else if (!memcmp (p_btuuid->uu.uuid128, (void *) p_attr->attr_value.v.array, MAX_UUID_SIZE)) { return (TRUE); + } return (FALSE); } @@ -824,29 +803,24 @@ void sdpu_sort_attr_list( UINT16 num_attr, tSDP_DISCOVERY_DB *p_db ) UINT16 x; /* Done if no attributes to sort */ - if (num_attr <= 1) - { + if (num_attr <= 1) { return; - } - else if (num_attr > SDP_MAX_ATTR_FILTERS) - { + } else if (num_attr > SDP_MAX_ATTR_FILTERS) { num_attr = SDP_MAX_ATTR_FILTERS; } num_attr--; /* for the for-loop */ - for( i = 0; i < num_attr; ) - { - if( p_db->attr_filters[i] > p_db->attr_filters[i+1] ) - { + for ( i = 0; i < num_attr; ) { + if ( p_db->attr_filters[i] > p_db->attr_filters[i + 1] ) { /* swap the attribute IDs and start from the beginning */ x = p_db->attr_filters[i]; - p_db->attr_filters[i] = p_db->attr_filters[i+1]; - p_db->attr_filters[i+1] = x; + p_db->attr_filters[i] = p_db->attr_filters[i + 1]; + p_db->attr_filters[i + 1] = x; i = 0; - } - else + } else { i++; + } } } @@ -867,16 +841,16 @@ UINT16 sdpu_get_list_len(tSDP_UUID_SEQ *uid_seq, tSDP_ATTR_SEQ *attr_seq) UINT16 len = 0; UINT16 len1; - for (p_rec = sdp_db_service_search (NULL, uid_seq); p_rec; p_rec = sdp_db_service_search (p_rec, uid_seq)) - { + for (p_rec = sdp_db_service_search (NULL, uid_seq); p_rec; p_rec = sdp_db_service_search (p_rec, uid_seq)) { len += 3; len1 = sdpu_get_attrib_seq_len(p_rec, attr_seq ); - if (len1 != 0) + if (len1 != 0) { len += len1; - else + } else { len -= 3; + } } return len; } @@ -897,35 +871,31 @@ UINT16 sdpu_get_attrib_seq_len(tSDP_RECORD *p_rec, tSDP_ATTR_SEQ *attr_seq) UINT16 len1 = 0; UINT16 xx; BOOLEAN is_range = FALSE; - UINT16 start_id=0, end_id=0; + UINT16 start_id = 0, end_id = 0; - for (xx = 0; xx < attr_seq->num_attr; xx++) - { - if (is_range == FALSE) - { + for (xx = 0; xx < attr_seq->num_attr; xx++) { + if (is_range == FALSE) { start_id = attr_seq->attr_entry[xx].start; end_id = attr_seq->attr_entry[xx].end; } p_attr = sdp_db_find_attr_in_rec (p_rec, start_id, end_id); - if (p_attr) - { + if (p_attr) { len1 += sdpu_get_attrib_entry_len (p_attr); /* If doing a range, stick with this one till no more attributes found */ - if (start_id != end_id) - { + if (start_id != end_id) { /* Update for next time through */ start_id = p_attr->id + 1; xx--; is_range = TRUE; - } - else + } else { is_range = FALSE; - } - else + } + } else { is_range = FALSE; + } } return len1; } @@ -945,38 +915,32 @@ UINT16 sdpu_get_attrib_entry_len(tSDP_ATTRIBUTE *p_attr) /* the attribute is in the db record. * assuming the attribute len is less than SDP_MAX_ATTR_LEN */ - switch(p_attr->type) - { + switch (p_attr->type) { case TEXT_STR_DESC_TYPE: /* 4 */ case DATA_ELE_SEQ_DESC_TYPE:/* 6 */ case DATA_ELE_ALT_DESC_TYPE:/* 7 */ case URL_DESC_TYPE: /* 8 */ #if (SDP_MAX_ATTR_LEN > 0xFFFF) - if(p_attr->len > 0xFFFF) - { + if (p_attr->len > 0xFFFF) { len += 5; - } - else + } else #endif/* 0xFFFF - 0xFF */ #if (SDP_MAX_ATTR_LEN > 0xFF) - if(p_attr->len > 0xFF) - { - len += 3; - } - else + if (p_attr->len > 0xFF) { + len += 3; + } else #endif /* 0xFF and less*/ - { - len += 2; - } + { + len += 2; + } len += p_attr->len; return len; - } + } /* Now, the attribute value */ - switch (p_attr->len) - { + switch (p_attr->len) { case 1: case 2: case 4: @@ -1017,8 +981,7 @@ UINT8 *sdpu_build_partial_attrib_entry (UINT8 *p_out, tSDP_ATTRIBUTE *p_attr, UI size_t len_to_copy; UINT16 attr_len; - if ((p_attr_buff = (UINT8 *) GKI_getbuf(sizeof(UINT8) * SDP_MAX_ATTR_LEN )) == NULL) - { + if ((p_attr_buff = (UINT8 *) GKI_getbuf(sizeof(UINT8) * SDP_MAX_ATTR_LEN )) == NULL) { SDP_TRACE_ERROR("sdpu_build_partial_attrib_entry cannot get a buffer!\n"); return NULL; } @@ -1027,7 +990,7 @@ UINT8 *sdpu_build_partial_attrib_entry (UINT8 *p_out, tSDP_ATTRIBUTE *p_attr, UI sdpu_build_attrib_entry(p_tmp_attr, p_attr); attr_len = sdpu_get_attrib_entry_len(p_attr); - len_to_copy = ((attr_len - *offset) < len) ? (attr_len - *offset): len; + len_to_copy = ((attr_len - *offset) < len) ? (attr_len - *offset) : len; memcpy(p_out, &p_attr_buff[*offset], len_to_copy); @@ -1051,12 +1014,12 @@ UINT8 *sdpu_build_partial_attrib_entry (UINT8 *p_out, tSDP_ATTRIBUTE *p_attr, UI ** *******************************************************************************/ -void sdpu_uuid16_to_uuid128(UINT16 uuid16, UINT8* p_uuid128) +void sdpu_uuid16_to_uuid128(UINT16 uuid16, UINT8 *p_uuid128) { UINT16 uuid16_bo; memset(p_uuid128, 0, 16); memcpy(p_uuid128, sdp_base_uuid, MAX_UUID_SIZE); uuid16_bo = ntohs(uuid16); - memcpy(p_uuid128+ 2, &uuid16_bo, sizeof(uint16_t)); + memcpy(p_uuid128 + 2, &uuid16_bo, sizeof(uint16_t)); } diff --git a/components/bt/bluedroid/stack/smp/aes.c b/components/bt/bluedroid/stack/smp/aes.c old mode 100755 new mode 100644 index 38c336b7b6..77811873d4 --- a/components/bt/bluedroid/stack/smp/aes.c +++ b/components/bt/bluedroid/stack/smp/aes.c @@ -68,7 +68,7 @@ #include "aes.h" #if defined( HAVE_UINT_32T ) - typedef UINT32 uint_32t; +typedef UINT32 uint_32t; #endif /* functions for finite field multiplication in the AES Galois field */ @@ -222,7 +222,8 @@ static const uint_8t gfmul_e[256] = mm_data(fe); /* values of all top bits within a byte */ static uint_8t hibit(const uint_8t x) -{ uint_8t r = (uint_8t)((x >> 1) | (x >> 2)); +{ + uint_8t r = (uint_8t)((x >> 1) | (x >> 2)); r |= (r >> 2); r |= (r >> 4); @@ -232,34 +233,35 @@ static uint_8t hibit(const uint_8t x) /* return the inverse of the finite field element x */ static uint_8t gf_inv(const uint_8t x) -{ uint_8t p1 = x, p2 = BPOLY, n1 = hibit(x), n2 = 0x80, v1 = 1, v2 = 0; +{ + uint_8t p1 = x, p2 = BPOLY, n1 = hibit(x), n2 = 0x80, v1 = 1, v2 = 0; - if(x < 2) + if (x < 2) { return x; + } - for( ; ; ) - { - if(n1) - while(n2 >= n1) /* divide polynomial p2 by p1 */ - { + for ( ; ; ) { + if (n1) + while (n2 >= n1) { /* divide polynomial p2 by p1 */ n2 /= n1; /* shift smaller polynomial left */ p2 ^= (p1 * n2) & 0xff; /* and remove from larger one */ v2 ^= (v1 * n2); /* shift accumulated value and */ n2 = hibit(p2); /* add into result */ } - else + else { return v1; + } - if(n2) /* repeat with values swapped */ - while(n1 >= n2) - { + if (n2) /* repeat with values swapped */ + while (n1 >= n2) { n1 /= n2; p1 ^= p2 * n1; v1 ^= v2 * n1; n1 = hibit(p1); } - else + else { return v2; + } } } @@ -272,7 +274,7 @@ uint_8t fwd_affine(const uint_8t x) return 0x63 ^ ((w ^ (w >> 8)) & 0xff); #else return 0x63 ^ x ^ (x << 1) ^ (x << 2) ^ (x << 3) ^ (x << 4) - ^ (x >> 7) ^ (x >> 6) ^ (x >> 5) ^ (x >> 4); + ^ (x >> 7) ^ (x >> 6) ^ (x >> 5) ^ (x >> 4); #endif } @@ -284,7 +286,7 @@ uint_8t inv_affine(const uint_8t x) return 0x05 ^ ((w ^ (w >> 8)) & 0xff); #else return 0x05 ^ (x << 1) ^ (x << 3) ^ (x << 6) - ^ (x >> 7) ^ (x >> 5) ^ (x >> 2); + ^ (x >> 7) ^ (x >> 5) ^ (x >> 2); #endif } @@ -311,88 +313,89 @@ uint_8t inv_affine(const uint_8t x) static void copy_block( void *d, const void *s ) { #if defined( HAVE_UINT_32T ) - ((uint_32t*)d)[ 0] = ((uint_32t*)s)[ 0]; - ((uint_32t*)d)[ 1] = ((uint_32t*)s)[ 1]; - ((uint_32t*)d)[ 2] = ((uint_32t*)s)[ 2]; - ((uint_32t*)d)[ 3] = ((uint_32t*)s)[ 3]; + ((uint_32t *)d)[ 0] = ((uint_32t *)s)[ 0]; + ((uint_32t *)d)[ 1] = ((uint_32t *)s)[ 1]; + ((uint_32t *)d)[ 2] = ((uint_32t *)s)[ 2]; + ((uint_32t *)d)[ 3] = ((uint_32t *)s)[ 3]; #else - ((uint_8t*)d)[ 0] = ((uint_8t*)s)[ 0]; - ((uint_8t*)d)[ 1] = ((uint_8t*)s)[ 1]; - ((uint_8t*)d)[ 2] = ((uint_8t*)s)[ 2]; - ((uint_8t*)d)[ 3] = ((uint_8t*)s)[ 3]; - ((uint_8t*)d)[ 4] = ((uint_8t*)s)[ 4]; - ((uint_8t*)d)[ 5] = ((uint_8t*)s)[ 5]; - ((uint_8t*)d)[ 6] = ((uint_8t*)s)[ 6]; - ((uint_8t*)d)[ 7] = ((uint_8t*)s)[ 7]; - ((uint_8t*)d)[ 8] = ((uint_8t*)s)[ 8]; - ((uint_8t*)d)[ 9] = ((uint_8t*)s)[ 9]; - ((uint_8t*)d)[10] = ((uint_8t*)s)[10]; - ((uint_8t*)d)[11] = ((uint_8t*)s)[11]; - ((uint_8t*)d)[12] = ((uint_8t*)s)[12]; - ((uint_8t*)d)[13] = ((uint_8t*)s)[13]; - ((uint_8t*)d)[14] = ((uint_8t*)s)[14]; - ((uint_8t*)d)[15] = ((uint_8t*)s)[15]; + ((uint_8t *)d)[ 0] = ((uint_8t *)s)[ 0]; + ((uint_8t *)d)[ 1] = ((uint_8t *)s)[ 1]; + ((uint_8t *)d)[ 2] = ((uint_8t *)s)[ 2]; + ((uint_8t *)d)[ 3] = ((uint_8t *)s)[ 3]; + ((uint_8t *)d)[ 4] = ((uint_8t *)s)[ 4]; + ((uint_8t *)d)[ 5] = ((uint_8t *)s)[ 5]; + ((uint_8t *)d)[ 6] = ((uint_8t *)s)[ 6]; + ((uint_8t *)d)[ 7] = ((uint_8t *)s)[ 7]; + ((uint_8t *)d)[ 8] = ((uint_8t *)s)[ 8]; + ((uint_8t *)d)[ 9] = ((uint_8t *)s)[ 9]; + ((uint_8t *)d)[10] = ((uint_8t *)s)[10]; + ((uint_8t *)d)[11] = ((uint_8t *)s)[11]; + ((uint_8t *)d)[12] = ((uint_8t *)s)[12]; + ((uint_8t *)d)[13] = ((uint_8t *)s)[13]; + ((uint_8t *)d)[14] = ((uint_8t *)s)[14]; + ((uint_8t *)d)[15] = ((uint_8t *)s)[15]; #endif } -static void copy_block_nn( void * d, const void *s, uint_8t nn ) +static void copy_block_nn( void *d, const void *s, uint_8t nn ) { - while( nn-- ) - *((uint_8t*)d)++ = *((uint_8t*)s)++; + while ( nn-- ) { + *((uint_8t *)d)++ = *((uint_8t *)s)++; + } } #endif static void xor_block( void *d, const void *s ) { #if defined( HAVE_UINT_32T ) - ((uint_32t*)d)[ 0] ^= ((uint_32t*)s)[ 0]; - ((uint_32t*)d)[ 1] ^= ((uint_32t*)s)[ 1]; - ((uint_32t*)d)[ 2] ^= ((uint_32t*)s)[ 2]; - ((uint_32t*)d)[ 3] ^= ((uint_32t*)s)[ 3]; + ((uint_32t *)d)[ 0] ^= ((uint_32t *)s)[ 0]; + ((uint_32t *)d)[ 1] ^= ((uint_32t *)s)[ 1]; + ((uint_32t *)d)[ 2] ^= ((uint_32t *)s)[ 2]; + ((uint_32t *)d)[ 3] ^= ((uint_32t *)s)[ 3]; #else - ((uint_8t*)d)[ 0] ^= ((uint_8t*)s)[ 0]; - ((uint_8t*)d)[ 1] ^= ((uint_8t*)s)[ 1]; - ((uint_8t*)d)[ 2] ^= ((uint_8t*)s)[ 2]; - ((uint_8t*)d)[ 3] ^= ((uint_8t*)s)[ 3]; - ((uint_8t*)d)[ 4] ^= ((uint_8t*)s)[ 4]; - ((uint_8t*)d)[ 5] ^= ((uint_8t*)s)[ 5]; - ((uint_8t*)d)[ 6] ^= ((uint_8t*)s)[ 6]; - ((uint_8t*)d)[ 7] ^= ((uint_8t*)s)[ 7]; - ((uint_8t*)d)[ 8] ^= ((uint_8t*)s)[ 8]; - ((uint_8t*)d)[ 9] ^= ((uint_8t*)s)[ 9]; - ((uint_8t*)d)[10] ^= ((uint_8t*)s)[10]; - ((uint_8t*)d)[11] ^= ((uint_8t*)s)[11]; - ((uint_8t*)d)[12] ^= ((uint_8t*)s)[12]; - ((uint_8t*)d)[13] ^= ((uint_8t*)s)[13]; - ((uint_8t*)d)[14] ^= ((uint_8t*)s)[14]; - ((uint_8t*)d)[15] ^= ((uint_8t*)s)[15]; + ((uint_8t *)d)[ 0] ^= ((uint_8t *)s)[ 0]; + ((uint_8t *)d)[ 1] ^= ((uint_8t *)s)[ 1]; + ((uint_8t *)d)[ 2] ^= ((uint_8t *)s)[ 2]; + ((uint_8t *)d)[ 3] ^= ((uint_8t *)s)[ 3]; + ((uint_8t *)d)[ 4] ^= ((uint_8t *)s)[ 4]; + ((uint_8t *)d)[ 5] ^= ((uint_8t *)s)[ 5]; + ((uint_8t *)d)[ 6] ^= ((uint_8t *)s)[ 6]; + ((uint_8t *)d)[ 7] ^= ((uint_8t *)s)[ 7]; + ((uint_8t *)d)[ 8] ^= ((uint_8t *)s)[ 8]; + ((uint_8t *)d)[ 9] ^= ((uint_8t *)s)[ 9]; + ((uint_8t *)d)[10] ^= ((uint_8t *)s)[10]; + ((uint_8t *)d)[11] ^= ((uint_8t *)s)[11]; + ((uint_8t *)d)[12] ^= ((uint_8t *)s)[12]; + ((uint_8t *)d)[13] ^= ((uint_8t *)s)[13]; + ((uint_8t *)d)[14] ^= ((uint_8t *)s)[14]; + ((uint_8t *)d)[15] ^= ((uint_8t *)s)[15]; #endif } static void copy_and_key( void *d, const void *s, const void *k ) { #if defined( HAVE_UINT_32T ) - ((uint_32t*)d)[ 0] = ((uint_32t*)s)[ 0] ^ ((uint_32t*)k)[ 0]; - ((uint_32t*)d)[ 1] = ((uint_32t*)s)[ 1] ^ ((uint_32t*)k)[ 1]; - ((uint_32t*)d)[ 2] = ((uint_32t*)s)[ 2] ^ ((uint_32t*)k)[ 2]; - ((uint_32t*)d)[ 3] = ((uint_32t*)s)[ 3] ^ ((uint_32t*)k)[ 3]; + ((uint_32t *)d)[ 0] = ((uint_32t *)s)[ 0] ^ ((uint_32t *)k)[ 0]; + ((uint_32t *)d)[ 1] = ((uint_32t *)s)[ 1] ^ ((uint_32t *)k)[ 1]; + ((uint_32t *)d)[ 2] = ((uint_32t *)s)[ 2] ^ ((uint_32t *)k)[ 2]; + ((uint_32t *)d)[ 3] = ((uint_32t *)s)[ 3] ^ ((uint_32t *)k)[ 3]; #elif 1 - ((uint_8t*)d)[ 0] = ((uint_8t*)s)[ 0] ^ ((uint_8t*)k)[ 0]; - ((uint_8t*)d)[ 1] = ((uint_8t*)s)[ 1] ^ ((uint_8t*)k)[ 1]; - ((uint_8t*)d)[ 2] = ((uint_8t*)s)[ 2] ^ ((uint_8t*)k)[ 2]; - ((uint_8t*)d)[ 3] = ((uint_8t*)s)[ 3] ^ ((uint_8t*)k)[ 3]; - ((uint_8t*)d)[ 4] = ((uint_8t*)s)[ 4] ^ ((uint_8t*)k)[ 4]; - ((uint_8t*)d)[ 5] = ((uint_8t*)s)[ 5] ^ ((uint_8t*)k)[ 5]; - ((uint_8t*)d)[ 6] = ((uint_8t*)s)[ 6] ^ ((uint_8t*)k)[ 6]; - ((uint_8t*)d)[ 7] = ((uint_8t*)s)[ 7] ^ ((uint_8t*)k)[ 7]; - ((uint_8t*)d)[ 8] = ((uint_8t*)s)[ 8] ^ ((uint_8t*)k)[ 8]; - ((uint_8t*)d)[ 9] = ((uint_8t*)s)[ 9] ^ ((uint_8t*)k)[ 9]; - ((uint_8t*)d)[10] = ((uint_8t*)s)[10] ^ ((uint_8t*)k)[10]; - ((uint_8t*)d)[11] = ((uint_8t*)s)[11] ^ ((uint_8t*)k)[11]; - ((uint_8t*)d)[12] = ((uint_8t*)s)[12] ^ ((uint_8t*)k)[12]; - ((uint_8t*)d)[13] = ((uint_8t*)s)[13] ^ ((uint_8t*)k)[13]; - ((uint_8t*)d)[14] = ((uint_8t*)s)[14] ^ ((uint_8t*)k)[14]; - ((uint_8t*)d)[15] = ((uint_8t*)s)[15] ^ ((uint_8t*)k)[15]; + ((uint_8t *)d)[ 0] = ((uint_8t *)s)[ 0] ^ ((uint_8t *)k)[ 0]; + ((uint_8t *)d)[ 1] = ((uint_8t *)s)[ 1] ^ ((uint_8t *)k)[ 1]; + ((uint_8t *)d)[ 2] = ((uint_8t *)s)[ 2] ^ ((uint_8t *)k)[ 2]; + ((uint_8t *)d)[ 3] = ((uint_8t *)s)[ 3] ^ ((uint_8t *)k)[ 3]; + ((uint_8t *)d)[ 4] = ((uint_8t *)s)[ 4] ^ ((uint_8t *)k)[ 4]; + ((uint_8t *)d)[ 5] = ((uint_8t *)s)[ 5] ^ ((uint_8t *)k)[ 5]; + ((uint_8t *)d)[ 6] = ((uint_8t *)s)[ 6] ^ ((uint_8t *)k)[ 6]; + ((uint_8t *)d)[ 7] = ((uint_8t *)s)[ 7] ^ ((uint_8t *)k)[ 7]; + ((uint_8t *)d)[ 8] = ((uint_8t *)s)[ 8] ^ ((uint_8t *)k)[ 8]; + ((uint_8t *)d)[ 9] = ((uint_8t *)s)[ 9] ^ ((uint_8t *)k)[ 9]; + ((uint_8t *)d)[10] = ((uint_8t *)s)[10] ^ ((uint_8t *)k)[10]; + ((uint_8t *)d)[11] = ((uint_8t *)s)[11] ^ ((uint_8t *)k)[11]; + ((uint_8t *)d)[12] = ((uint_8t *)s)[12] ^ ((uint_8t *)k)[12]; + ((uint_8t *)d)[13] = ((uint_8t *)s)[13] ^ ((uint_8t *)k)[13]; + ((uint_8t *)d)[14] = ((uint_8t *)s)[14] ^ ((uint_8t *)k)[14]; + ((uint_8t *)d)[15] = ((uint_8t *)s)[15] ^ ((uint_8t *)k)[15]; #else block_copy(d, s); xor_block(d, k); @@ -405,7 +408,8 @@ static void add_round_key( uint_8t d[N_BLOCK], const uint_8t k[N_BLOCK] ) } static void shift_sub_rows( uint_8t st[N_BLOCK] ) -{ uint_8t tt; +{ + uint_8t tt; st[ 0] = s_box(st[ 0]); st[ 4] = s_box(st[ 4]); st[ 8] = s_box(st[ 8]); st[12] = s_box(st[12]); @@ -421,7 +425,8 @@ static void shift_sub_rows( uint_8t st[N_BLOCK] ) } static void inv_shift_sub_rows( uint_8t st[N_BLOCK] ) -{ uint_8t tt; +{ + uint_8t tt; st[ 0] = is_box(st[ 0]); st[ 4] = is_box(st[ 4]); st[ 8] = is_box(st[ 8]); st[12] = is_box(st[12]); @@ -437,12 +442,13 @@ static void inv_shift_sub_rows( uint_8t st[N_BLOCK] ) } #if defined( VERSION_1 ) - static void mix_sub_columns( uint_8t dt[N_BLOCK] ) - { uint_8t st[N_BLOCK]; +static void mix_sub_columns( uint_8t dt[N_BLOCK] ) +{ + uint_8t st[N_BLOCK]; block_copy(st, dt); #else - static void mix_sub_columns( uint_8t dt[N_BLOCK], uint_8t st[N_BLOCK] ) - { +static void mix_sub_columns( uint_8t dt[N_BLOCK], uint_8t st[N_BLOCK] ) +{ #endif dt[ 0] = gfm2_sb(st[0]) ^ gfm3_sb(st[5]) ^ s_box(st[10]) ^ s_box(st[15]); dt[ 1] = s_box(st[0]) ^ gfm2_sb(st[5]) ^ gfm3_sb(st[10]) ^ s_box(st[15]); @@ -463,15 +469,16 @@ static void inv_shift_sub_rows( uint_8t st[N_BLOCK] ) dt[13] = s_box(st[12]) ^ gfm2_sb(st[1]) ^ gfm3_sb(st[6]) ^ s_box(st[11]); dt[14] = s_box(st[12]) ^ s_box(st[1]) ^ gfm2_sb(st[6]) ^ gfm3_sb(st[11]); dt[15] = gfm3_sb(st[12]) ^ s_box(st[1]) ^ s_box(st[6]) ^ gfm2_sb(st[11]); - } +} #if defined( VERSION_1 ) - static void inv_mix_sub_columns( uint_8t dt[N_BLOCK] ) - { uint_8t st[N_BLOCK]; +static void inv_mix_sub_columns( uint_8t dt[N_BLOCK] ) +{ + uint_8t st[N_BLOCK]; block_copy(st, dt); #else - static void inv_mix_sub_columns( uint_8t dt[N_BLOCK], uint_8t st[N_BLOCK] ) - { +static void inv_mix_sub_columns( uint_8t dt[N_BLOCK], uint_8t st[N_BLOCK] ) +{ #endif dt[ 0] = is_box(gfm_e(st[ 0]) ^ gfm_b(st[ 1]) ^ gfm_d(st[ 2]) ^ gfm_9(st[ 3])); dt[ 5] = is_box(gfm_9(st[ 0]) ^ gfm_e(st[ 1]) ^ gfm_b(st[ 2]) ^ gfm_d(st[ 3])); @@ -492,7 +499,7 @@ static void inv_shift_sub_rows( uint_8t st[N_BLOCK] ) dt[ 1] = is_box(gfm_9(st[12]) ^ gfm_e(st[13]) ^ gfm_b(st[14]) ^ gfm_d(st[15])); dt[ 6] = is_box(gfm_d(st[12]) ^ gfm_9(st[13]) ^ gfm_e(st[14]) ^ gfm_b(st[15])); dt[11] = is_box(gfm_b(st[12]) ^ gfm_d(st[13]) ^ gfm_9(st[14]) ^ gfm_e(st[15])); - } +} #if defined( AES_ENC_PREKEYED ) || defined( AES_DEC_PREKEYED ) @@ -507,8 +514,7 @@ return_type aes_set_key( const unsigned char key[], length_type keylen, aes_cont { uint_8t cc, rc, hi; - switch( keylen ) - { + switch ( keylen ) { case 16: case 128: /* length in bits (128 = 8*16) */ keylen = 16; @@ -518,34 +524,31 @@ return_type aes_set_key( const unsigned char key[], length_type keylen, aes_cont keylen = 24; break; case 32: -/* case 256: length in bits (256 = 8*32) */ + /* case 256: length in bits (256 = 8*32) */ keylen = 32; break; default: ctx->rnd = 0; - return (return_type)-1; + return (return_type) - 1; } block_copy_nn(ctx->ksch, key, keylen); hi = (keylen + 28) << 2; ctx->rnd = (hi >> 4) - 1; - for( cc = keylen, rc = 1; cc < hi; cc += 4 ) - { uint_8t tt, t0, t1, t2, t3; + for ( cc = keylen, rc = 1; cc < hi; cc += 4 ) { + uint_8t tt, t0, t1, t2, t3; t0 = ctx->ksch[cc - 4]; t1 = ctx->ksch[cc - 3]; t2 = ctx->ksch[cc - 2]; t3 = ctx->ksch[cc - 1]; - if( cc % keylen == 0 ) - { + if ( cc % keylen == 0 ) { tt = t0; t0 = s_box(t1) ^ rc; t1 = s_box(t2); t2 = s_box(t3); t3 = s_box(tt); rc = f2(rc); - } - else if( keylen > 24 && cc % keylen == 16 ) - { + } else if ( keylen > 24 && cc % keylen == 16 ) { t0 = s_box(t0); t1 = s_box(t1); t2 = s_box(t2); @@ -569,42 +572,42 @@ return_type aes_set_key( const unsigned char key[], length_type keylen, aes_cont /* @breif change the name by snake for avoid the conflict with libcrypto */ return_type bluedroid_aes_encrypt( const unsigned char in[N_BLOCK], unsigned char out[N_BLOCK], const aes_context ctx[1] ) { - if( ctx->rnd ) - { + if ( ctx->rnd ) { uint_8t s1[N_BLOCK], r; copy_and_key( s1, in, ctx->ksch ); - for( r = 1 ; r < ctx->rnd ; ++r ) + for ( r = 1 ; r < ctx->rnd ; ++r ) #if defined( VERSION_1 ) { mix_sub_columns( s1 ); add_round_key( s1, ctx->ksch + r * N_BLOCK); } #else - { uint_8t s2[N_BLOCK]; + { + uint_8t s2[N_BLOCK]; mix_sub_columns( s2, s1 ); copy_and_key( s1, s2, ctx->ksch + r * N_BLOCK); } #endif shift_sub_rows( s1 ); copy_and_key( out, s1, ctx->ksch + r * N_BLOCK ); + } else { + return (return_type) - 1; } - else - return (return_type)-1; return 0; } /* CBC encrypt a number of blocks (input and return an IV) */ return_type aes_cbc_encrypt( const unsigned char *in, unsigned char *out, - int n_block, unsigned char iv[N_BLOCK], const aes_context ctx[1] ) + int n_block, unsigned char iv[N_BLOCK], const aes_context ctx[1] ) { - while(n_block--) - { + while (n_block--) { xor_block(iv, in); - if(bluedroid_aes_encrypt(iv, iv, ctx) != EXIT_SUCCESS) - return EXIT_FAILURE; + if (bluedroid_aes_encrypt(iv, iv, ctx) != EXIT_SUCCESS) { + return EXIT_FAILURE; + } memcpy(out, iv, N_BLOCK); in += N_BLOCK; out += N_BLOCK; @@ -620,42 +623,43 @@ return_type aes_cbc_encrypt( const unsigned char *in, unsigned char *out, return_type bluedroid_aes_decrypt( const unsigned char in[N_BLOCK], unsigned char out[N_BLOCK], const aes_context ctx[1] ) { - if( ctx->rnd ) - { + if ( ctx->rnd ) { uint_8t s1[N_BLOCK], r; copy_and_key( s1, in, ctx->ksch + ctx->rnd * N_BLOCK ); inv_shift_sub_rows( s1 ); - for( r = ctx->rnd ; --r ; ) + for ( r = ctx->rnd ; --r ; ) #if defined( VERSION_1 ) { add_round_key( s1, ctx->ksch + r * N_BLOCK ); inv_mix_sub_columns( s1 ); } #else - { uint_8t s2[N_BLOCK]; + { + uint_8t s2[N_BLOCK]; copy_and_key( s2, s1, ctx->ksch + r * N_BLOCK ); inv_mix_sub_columns( s1, s2 ); } #endif copy_and_key( out, s1, ctx->ksch ); + } else { + return (return_type) - 1; } - else - return (return_type)-1; return 0; } /* CBC decrypt a number of blocks (input and return an IV) */ return_type aes_cbc_decrypt( const unsigned char *in, unsigned char *out, - int n_block, unsigned char iv[N_BLOCK], const aes_context ctx[1] ) + int n_block, unsigned char iv[N_BLOCK], const aes_context ctx[1] ) { - while(n_block--) - { uint_8t tmp[N_BLOCK]; + while (n_block--) { + uint_8t tmp[N_BLOCK]; memcpy(tmp, in, N_BLOCK); - if(bluedroid_aes_decrypt(in, out, ctx) != EXIT_SUCCESS) - return EXIT_FAILURE; + if (bluedroid_aes_decrypt(in, out, ctx) != EXIT_SUCCESS) { + return EXIT_FAILURE; + } xor_block(out, iv); memcpy(iv, tmp, N_BLOCK); in += N_BLOCK; @@ -671,7 +675,8 @@ return_type aes_cbc_decrypt( const unsigned char *in, unsigned char *out, /* The 'on the fly' encryption key update for for 128 bit keys */ static void update_encrypt_key_128( uint_8t k[N_BLOCK], uint_8t *rc ) -{ uint_8t cc; +{ + uint_8t cc; k[0] ^= s_box(k[13]) ^ *rc; k[1] ^= s_box(k[14]); @@ -679,8 +684,7 @@ static void update_encrypt_key_128( uint_8t k[N_BLOCK], uint_8t *rc ) k[3] ^= s_box(k[12]); *rc = f2( *rc ); - for(cc = 4; cc < 16; cc += 4 ) - { + for (cc = 4; cc < 16; cc += 4 ) { k[cc + 0] ^= k[cc - 4]; k[cc + 1] ^= k[cc - 3]; k[cc + 2] ^= k[cc - 2]; @@ -691,14 +695,16 @@ static void update_encrypt_key_128( uint_8t k[N_BLOCK], uint_8t *rc ) /* Encrypt a single block of 16 bytes with 'on the fly' 128 bit keying */ void bluedroid_aes_encrypt_128( const unsigned char in[N_BLOCK], unsigned char out[N_BLOCK], - const unsigned char key[N_BLOCK], unsigned char o_key[N_BLOCK] ) -{ uint_8t s1[N_BLOCK], r, rc = 1; + const unsigned char key[N_BLOCK], unsigned char o_key[N_BLOCK] ) +{ + uint_8t s1[N_BLOCK], r, rc = 1; - if(o_key != key) + if (o_key != key) { block_copy( o_key, key ); + } copy_and_key( s1, in, o_key ); - for( r = 1 ; r < 10 ; ++r ) + for ( r = 1 ; r < 10 ; ++r ) #if defined( VERSION_1 ) { mix_sub_columns( s1 ); @@ -706,7 +712,8 @@ void bluedroid_aes_encrypt_128( const unsigned char in[N_BLOCK], unsigned char o add_round_key( s1, o_key ); } #else - { uint_8t s2[N_BLOCK]; + { + uint_8t s2[N_BLOCK]; mix_sub_columns( s2, s1 ); update_encrypt_key_128( o_key, &rc ); copy_and_key( s1, s2, o_key ); @@ -725,10 +732,10 @@ void bluedroid_aes_encrypt_128( const unsigned char in[N_BLOCK], unsigned char o /* The 'on the fly' decryption key update for for 128 bit keys */ static void update_decrypt_key_128( uint_8t k[N_BLOCK], uint_8t *rc ) -{ uint_8t cc; +{ + uint_8t cc; - for( cc = 12; cc > 0; cc -= 4 ) - { + for ( cc = 12; cc > 0; cc -= 4 ) { k[cc + 0] ^= k[cc - 4]; k[cc + 1] ^= k[cc - 3]; k[cc + 2] ^= k[cc - 2]; @@ -744,16 +751,17 @@ static void update_decrypt_key_128( uint_8t k[N_BLOCK], uint_8t *rc ) /* Decrypt a single block of 16 bytes with 'on the fly' 128 bit keying */ void bluedroid_aes_decrypt_128( const unsigned char in[N_BLOCK], unsigned char out[N_BLOCK], - const unsigned char key[N_BLOCK], unsigned char o_key[N_BLOCK] ) + const unsigned char key[N_BLOCK], unsigned char o_key[N_BLOCK] ) { uint_8t s1[N_BLOCK], r, rc = 0x6c; - if(o_key != key) + if (o_key != key) { block_copy( o_key, key ); + } copy_and_key( s1, in, o_key ); inv_shift_sub_rows( s1 ); - for( r = 10 ; --r ; ) + for ( r = 10 ; --r ; ) #if defined( VERSION_1 ) { update_decrypt_key_128( o_key, &rc ); @@ -761,7 +769,8 @@ void bluedroid_aes_decrypt_128( const unsigned char in[N_BLOCK], unsigned char o inv_mix_sub_columns( s1 ); } #else - { uint_8t s2[N_BLOCK]; + { + uint_8t s2[N_BLOCK]; update_decrypt_key_128( o_key, &rc ); copy_and_key( s2, s1, o_key ); inv_mix_sub_columns( s1, s2 ); @@ -778,7 +787,8 @@ void bluedroid_aes_decrypt_128( const unsigned char in[N_BLOCK], unsigned char o /* The 'on the fly' encryption key update for for 256 bit keys */ static void update_encrypt_key_256( uint_8t k[2 * N_BLOCK], uint_8t *rc ) -{ uint_8t cc; +{ + uint_8t cc; k[0] ^= s_box(k[29]) ^ *rc; k[1] ^= s_box(k[30]); @@ -786,8 +796,7 @@ static void update_encrypt_key_256( uint_8t k[2 * N_BLOCK], uint_8t *rc ) k[3] ^= s_box(k[28]); *rc = f2( *rc ); - for(cc = 4; cc < 16; cc += 4) - { + for (cc = 4; cc < 16; cc += 4) { k[cc + 0] ^= k[cc - 4]; k[cc + 1] ^= k[cc - 3]; k[cc + 2] ^= k[cc - 2]; @@ -799,8 +808,7 @@ static void update_encrypt_key_256( uint_8t k[2 * N_BLOCK], uint_8t *rc ) k[18] ^= s_box(k[14]); k[19] ^= s_box(k[15]); - for( cc = 20; cc < 32; cc += 4 ) - { + for ( cc = 20; cc < 32; cc += 4 ) { k[cc + 0] ^= k[cc - 4]; k[cc + 1] ^= k[cc - 3]; k[cc + 2] ^= k[cc - 2]; @@ -811,35 +819,33 @@ static void update_encrypt_key_256( uint_8t k[2 * N_BLOCK], uint_8t *rc ) /* Encrypt a single block of 16 bytes with 'on the fly' 256 bit keying */ void bluedroid_aes_encrypt_256( const unsigned char in[N_BLOCK], unsigned char out[N_BLOCK], - const unsigned char key[2 * N_BLOCK], unsigned char o_key[2 * N_BLOCK] ) + const unsigned char key[2 * N_BLOCK], unsigned char o_key[2 * N_BLOCK] ) { uint_8t s1[N_BLOCK], r, rc = 1; - if(o_key != key) - { + if (o_key != key) { block_copy( o_key, key ); block_copy( o_key + 16, key + 16 ); } copy_and_key( s1, in, o_key ); - for( r = 1 ; r < 14 ; ++r ) + for ( r = 1 ; r < 14 ; ++r ) #if defined( VERSION_1 ) { mix_sub_columns(s1); - if( r & 1 ) + if ( r & 1 ) { add_round_key( s1, o_key + 16 ); - else - { + } else { update_encrypt_key_256( o_key, &rc ); add_round_key( s1, o_key ); } } #else - { uint_8t s2[N_BLOCK]; + { + uint_8t s2[N_BLOCK]; mix_sub_columns( s2, s1 ); - if( r & 1 ) + if ( r & 1 ) { copy_and_key( s1, s2, o_key + 16 ); - else - { + } else { update_encrypt_key_256( o_key, &rc ); copy_and_key( s1, s2, o_key ); } @@ -858,10 +864,10 @@ void bluedroid_aes_encrypt_256( const unsigned char in[N_BLOCK], unsigned char o /* The 'on the fly' encryption key update for for 256 bit keys */ static void update_decrypt_key_256( uint_8t k[2 * N_BLOCK], uint_8t *rc ) -{ uint_8t cc; +{ + uint_8t cc; - for(cc = 28; cc > 16; cc -= 4) - { + for (cc = 28; cc > 16; cc -= 4) { k[cc + 0] ^= k[cc - 4]; k[cc + 1] ^= k[cc - 3]; k[cc + 2] ^= k[cc - 2]; @@ -873,8 +879,7 @@ static void update_decrypt_key_256( uint_8t k[2 * N_BLOCK], uint_8t *rc ) k[18] ^= s_box(k[14]); k[19] ^= s_box(k[15]); - for(cc = 12; cc > 0; cc -= 4) - { + for (cc = 12; cc > 0; cc -= 4) { k[cc + 0] ^= k[cc - 4]; k[cc + 1] ^= k[cc - 3]; k[cc + 2] ^= k[cc - 2]; @@ -892,12 +897,11 @@ static void update_decrypt_key_256( uint_8t k[2 * N_BLOCK], uint_8t *rc ) 256 bit keying */ void bluedroid_aes_decrypt_256( const unsigned char in[N_BLOCK], unsigned char out[N_BLOCK], - const unsigned char key[2 * N_BLOCK], unsigned char o_key[2 * N_BLOCK] ) + const unsigned char key[2 * N_BLOCK], unsigned char o_key[2 * N_BLOCK] ) { uint_8t s1[N_BLOCK], r, rc = 0x80; - if(o_key != key) - { + if (o_key != key) { block_copy( o_key, key ); block_copy( o_key + 16, key + 16 ); } @@ -905,27 +909,26 @@ void bluedroid_aes_decrypt_256( const unsigned char in[N_BLOCK], unsigned char o copy_and_key( s1, in, o_key ); inv_shift_sub_rows( s1 ); - for( r = 14 ; --r ; ) + for ( r = 14 ; --r ; ) #if defined( VERSION_1 ) { - if( ( r & 1 ) ) - { + if ( ( r & 1 ) ) { update_decrypt_key_256( o_key, &rc ); add_round_key( s1, o_key + 16 ); - } - else + } else { add_round_key( s1, o_key ); + } inv_mix_sub_columns( s1 ); } #else - { uint_8t s2[N_BLOCK]; - if( ( r & 1 ) ) - { + { + uint_8t s2[N_BLOCK]; + if ( ( r & 1 ) ) { update_decrypt_key_256( o_key, &rc ); copy_and_key( s2, s1, o_key + 16 ); - } - else + } else { copy_and_key( s2, s1, o_key ); + } inv_mix_sub_columns( s1, s2 ); } #endif diff --git a/components/bt/bluedroid/stack/smp/include/aes.h b/components/bt/bluedroid/stack/smp/include/aes.h old mode 100755 new mode 100644 index add242e0a5..48495bb174 --- a/components/bt/bluedroid/stack/smp/include/aes.h +++ b/components/bt/bluedroid/stack/smp/include/aes.h @@ -65,8 +65,8 @@ typedef uint_8t return_type; typedef uint_8t length_type; -typedef struct -{ uint_8t ksch[(N_MAX_ROUNDS + 1) * N_BLOCK]; +typedef struct { + uint_8t ksch[(N_MAX_ROUNDS + 1) * N_BLOCK]; uint_8t rnd; } aes_context; @@ -88,27 +88,27 @@ return_type aes_set_key( const unsigned char key[], #if defined( AES_ENC_PREKEYED ) return_type bluedroid_aes_encrypt( const unsigned char in[N_BLOCK], - unsigned char out[N_BLOCK], - const aes_context ctx[1] ); + unsigned char out[N_BLOCK], + const aes_context ctx[1] ); return_type aes_cbc_encrypt( const unsigned char *in, - unsigned char *out, - int n_block, - unsigned char iv[N_BLOCK], - const aes_context ctx[1] ); + unsigned char *out, + int n_block, + unsigned char iv[N_BLOCK], + const aes_context ctx[1] ); #endif #if defined( AES_DEC_PREKEYED ) return_type bluedroid_aes_decrypt( const unsigned char in[N_BLOCK], - unsigned char out[N_BLOCK], - const aes_context ctx[1] ); + unsigned char out[N_BLOCK], + const aes_context ctx[1] ); return_type aes_cbc_decrypt( const unsigned char *in, - unsigned char *out, - int n_block, - unsigned char iv[N_BLOCK], - const aes_context ctx[1] ); + unsigned char *out, + int n_block, + unsigned char iv[N_BLOCK], + const aes_context ctx[1] ); #endif /* The following calls are for 'on the fly' keying. In this case the @@ -133,30 +133,30 @@ return_type aes_cbc_decrypt( const unsigned char *in, #if defined( AES_ENC_128_OTFK ) void bluedroid_aes_encrypt_128( const unsigned char in[N_BLOCK], - unsigned char out[N_BLOCK], - const unsigned char key[N_BLOCK], - uint_8t o_key[N_BLOCK] ); + unsigned char out[N_BLOCK], + const unsigned char key[N_BLOCK], + uint_8t o_key[N_BLOCK] ); #endif #if defined( AES_DEC_128_OTFK ) void bluedroid_aes_decrypt_128( const unsigned char in[N_BLOCK], - unsigned char out[N_BLOCK], - const unsigned char key[N_BLOCK], - unsigned char o_key[N_BLOCK] ); + unsigned char out[N_BLOCK], + const unsigned char key[N_BLOCK], + unsigned char o_key[N_BLOCK] ); #endif #if defined( AES_ENC_256_OTFK ) void bluedroid_aes_encrypt_256( const unsigned char in[N_BLOCK], - unsigned char out[N_BLOCK], - const unsigned char key[2 * N_BLOCK], - unsigned char o_key[2 * N_BLOCK] ); + unsigned char out[N_BLOCK], + const unsigned char key[2 * N_BLOCK], + unsigned char o_key[2 * N_BLOCK] ); #endif #if defined( AES_DEC_256_OTFK ) void bluedroid_aes_decrypt_256( const unsigned char in[N_BLOCK], - unsigned char out[N_BLOCK], - const unsigned char key[2 * N_BLOCK], - unsigned char o_key[2 * N_BLOCK] ); + unsigned char out[N_BLOCK], + const unsigned char key[2 * N_BLOCK], + unsigned char o_key[2 * N_BLOCK] ); #endif #endif diff --git a/components/bt/bluedroid/stack/smp/include/p_256_ecc_pp.h b/components/bt/bluedroid/stack/smp/include/p_256_ecc_pp.h old mode 100755 new mode 100644 index fd3dc64fe3..029a79ff16 --- a/components/bt/bluedroid/stack/smp/include/p_256_ecc_pp.h +++ b/components/bt/bluedroid/stack/smp/include/p_256_ecc_pp.h @@ -16,11 +16,11 @@ * ******************************************************************************/ - /****************************************************************************** - * - * This file contains simple pairing algorithms using Elliptic Curve Cryptography for private public key - * - ******************************************************************************/ +/****************************************************************************** + * + * This file contains simple pairing algorithms using Elliptic Curve Cryptography for private public key + * + ******************************************************************************/ #pragma once diff --git a/components/bt/bluedroid/stack/smp/include/p_256_multprecision.h b/components/bt/bluedroid/stack/smp/include/p_256_multprecision.h old mode 100755 new mode 100644 index 0d1a964c38..ac32320aad --- a/components/bt/bluedroid/stack/smp/include/p_256_multprecision.h +++ b/components/bt/bluedroid/stack/smp/include/p_256_multprecision.h @@ -16,11 +16,11 @@ * ******************************************************************************/ - /****************************************************************************** - * - * This file contains simple pairing algorithms - * - ******************************************************************************/ +/****************************************************************************** + * + * This file contains simple pairing algorithms + * + ******************************************************************************/ #pragma once #include "bt_types.h" @@ -48,13 +48,13 @@ DWORD multiprecision_add(DWORD *c, DWORD *a, DWORD *b, uint32_t keyLength); // c void multiprecision_add_mod(DWORD *c, DWORD *a, DWORD *b, uint32_t keyLength); DWORD multiprecision_sub(DWORD *c, DWORD *a, DWORD *b, uint32_t keyLength); // c=a-b void multiprecision_sub_mod(DWORD *c, DWORD *a, DWORD *b, uint32_t keyLength); -void multiprecision_rshift(DWORD * c, DWORD * a, uint32_t keyLength); // c=a>>1, return carrier -void multiprecision_lshift_mod(DWORD * c, DWORD * a, uint32_t keyLength); // c=a<>1, return carrier +void multiprecision_lshift_mod(DWORD *c, DWORD *a, uint32_t keyLength); // c=a<rand */ +/*and saved in p_cb->rand */ #define SMP_SC_PHASE1_CMPLT_EVT (SMP_SELF_DEF_EVT + 16) /* time to start SC phase2 */ #define SMP_SC_CALC_NC_EVT (SMP_SELF_DEF_EVT + 17) /* request to calculate number */ - /* for user check. Used only in the */ - /* numeric compare protocol */ +/* for user check. Used only in the */ +/* numeric compare protocol */ /* Request to display the number for user check to the user.*/ /* Used only in the numeric compare protocol */ #define SMP_SC_DSPL_NC_EVT (SMP_SELF_DEF_EVT + 18) #define SMP_SC_NC_OK_EVT (SMP_SELF_DEF_EVT + 19) /* user confirms 'OK' numeric */ - /*comparison request */ +/*comparison request */ /* both local and peer DHKey Checks are already present - it is used on slave to prevent race condition */ #define SMP_SC_2_DHCK_CHKS_PRES_EVT (SMP_SELF_DEF_EVT + 20) @@ -122,7 +122,7 @@ typedef UINT8 tSMP_ASSO_MODEL; #define SMP_KEYPRESS_NOTIFICATION_EVENT (SMP_SELF_DEF_EVT + 22) #define SMP_SC_OOB_DATA_EVT (SMP_SELF_DEF_EVT + 23) /* SC OOB data from some */ - /* repository is provided */ +/* repository is provided */ #define SMP_CR_LOC_SC_OOB_DATA_EVT (SMP_SELF_DEF_EVT + 24) #define SMP_MAX_EVT SMP_CR_LOC_SC_OOB_DATA_EVT @@ -133,8 +133,7 @@ typedef UINT8 tSMP_EVENT; #define SMP_SEC_KEY_MASK 0x00ff /* SMP pairing state */ -enum -{ +enum { SMP_STATE_IDLE, SMP_STATE_WAIT_APP_RSP, SMP_STATE_SEC_REQ_PENDING, @@ -187,8 +186,7 @@ typedef UINT8 tSMP_STATE; typedef UINT8 tSMP_BR_EVENT; /* SMP over BR/EDR pairing states */ -enum -{ +enum { SMP_BR_STATE_IDLE = SMP_STATE_IDLE, SMP_BR_STATE_WAIT_APP_RSP, SMP_BR_STATE_PAIR_REQ_RSP, @@ -198,8 +196,7 @@ enum typedef UINT8 tSMP_BR_STATE; /* random and encrption activity state */ -enum -{ +enum { SMP_GEN_COMPARE = 1, SMP_GEN_CONFIRM, @@ -217,8 +214,7 @@ enum SMP_GEN_NONCE_8_15 }; -enum -{ +enum { SMP_KEY_TYPE_TK, SMP_KEY_TYPE_CFM, SMP_KEY_TYPE_CMP, @@ -226,20 +222,18 @@ enum SMP_KEY_TYPE_STK, SMP_KEY_TYPE_LTK }; -typedef struct -{ +typedef struct { UINT8 key_type; - UINT8* p_data; -}tSMP_KEY; + UINT8 *p_data; +} tSMP_KEY; -typedef union -{ +typedef union { UINT8 *p_data; /* UINT8 type data pointer */ tSMP_KEY key; UINT16 reason; UINT32 passkey; tSMP_OOB_DATA_TYPE req_oob_type; -}tSMP_INT_DATA; +} tSMP_INT_DATA; /* internal status mask */ #define SMP_PAIR_FLAGS_WE_STARTED_DD (1) @@ -258,15 +252,13 @@ typedef union #define SMP_ENCRYT_DATA_SIZE 16 #define SMP_ECNCRPYT_STATUS HCI_SUCCESS -typedef struct -{ +typedef struct { BD_ADDR bd_addr; - BT_HDR* p_copy; + BT_HDR *p_copy; } tSMP_REQ_Q_ENTRY; /* SMP control block */ -typedef struct -{ +typedef struct { tSMP_CALLBACK *p_callback; TIMER_LIST_ENT rsp_timer_ent; UINT8 trace_level; @@ -308,7 +300,7 @@ typedef struct tSMP_AUTH_REQ peer_auth_req; tSMP_AUTH_REQ loc_auth_req; BOOLEAN secure_connections_only_mode_required;/* TRUE if locally SM is required to operate */ - /* either in Secure Connections mode or not at all */ + /* either in Secure Connections mode or not at all */ tSMP_ASSO_MODEL selected_association_model; BOOLEAN le_secure_connections_mode_is_used; BOOLEAN le_sc_kp_notif_is_used; @@ -339,7 +331,7 @@ typedef struct UINT8 rcvd_cmd_len; UINT16 total_tx_unacked; BOOLEAN wait_for_authorization_complete; -}tSMP_CB; +} tSMP_CB; /* Server Action functions are of this type */ typedef void (*tSMP_ACT)(tSMP_CB *p_cb, tSMP_INT_DATA *p_data); @@ -374,19 +366,19 @@ extern void smp_set_passk_entry_fail(BOOLEAN enable); extern void smp_set_oob_fail(BOOLEAN enable); extern void smp_set_peer_sc_notif(BOOLEAN enable); extern void smp_aes_cmac_rfc4493_chk (UINT8 *key, UINT8 *msg, UINT8 msg_len, - UINT8 mac_len, UINT8 *mac); + UINT8 mac_len, UINT8 *mac); extern void smp_f4_calc_chk (UINT8 *U, UINT8 *V, UINT8 *X, UINT8 *Z, UINT8 *mac); extern void smp_g2_calc_chk (UINT8 *U, UINT8 *V, UINT8 *X, UINT8 *Y); extern void smp_h6_calc_chk (UINT8 *key, UINT8 *key_id, UINT8 *mac); extern void smp_f5_key_calc_chk (UINT8 *w, UINT8 *mac); extern void smp_f5_mackey_or_ltk_calc_chk(UINT8 *t, UINT8 *counter, - UINT8 *key_id, UINT8 *n1, - UINT8 *n2, UINT8 *a1, UINT8 *a2, - UINT8 *length, UINT8 *mac); + UINT8 *key_id, UINT8 *n1, + UINT8 *n2, UINT8 *a1, UINT8 *a2, + UINT8 *length, UINT8 *mac); extern void smp_f5_calc_chk (UINT8 *w, UINT8 *n1, UINT8 *n2, UINT8 *a1, UINT8 *a2, - UINT8 *mac_key, UINT8 *ltk); + UINT8 *mac_key, UINT8 *ltk); extern void smp_f6_calc_chk (UINT8 *w, UINT8 *n1, UINT8 *n2, UINT8 *r, - UINT8 *iocap, UINT8 *a1, UINT8 *a2, UINT8 *mac); + UINT8 *iocap, UINT8 *a1, UINT8 *a2, UINT8 *mac); /* smp_main */ extern void smp_sm_event(tSMP_CB *p_cb, tSMP_EVENT event, void *p_data); extern tSMP_STATE smp_get_state(void); @@ -478,7 +470,7 @@ extern void smp_cb_cleanup(tSMP_CB *p_cb); extern void smp_reset_control_value(tSMP_CB *p_cb); extern void smp_proc_pairing_cmpl(tSMP_CB *p_cb); extern void smp_convert_string_to_tk(BT_OCTET16 tk, UINT32 passkey); -extern void smp_mask_enc_key(UINT8 loc_enc_size, UINT8 * p_data); +extern void smp_mask_enc_key(UINT8 loc_enc_size, UINT8 *p_data); extern void smp_rsp_timeout(TIMER_LIST_ENT *p_tle); extern void smp_xor_128(BT_OCTET16 a, BT_OCTET16 b); extern BOOLEAN smp_encrypt_data (UINT8 *key, UINT8 key_len, @@ -520,22 +512,22 @@ extern BOOLEAN smp_calculate_long_term_key_from_link_key(tSMP_CB *p_cb); extern void smp_calculate_f4(UINT8 *u, UINT8 *v, UINT8 *x, UINT8 z, UINT8 *c); extern UINT32 smp_calculate_g2(UINT8 *u, UINT8 *v, UINT8 *x, UINT8 *y); extern BOOLEAN smp_calculate_f5(UINT8 *w, UINT8 *n1, UINT8 *n2, UINT8 *a1, UINT8 *a2, - UINT8 *mac_key, UINT8 *ltk); + UINT8 *mac_key, UINT8 *ltk); extern BOOLEAN smp_calculate_f5_mackey_or_long_term_key(UINT8 *t, UINT8 *counter, - UINT8 *key_id, UINT8 *n1, UINT8 *n2, UINT8 *a1, - UINT8 *a2, UINT8 *length, UINT8 *mac); + UINT8 *key_id, UINT8 *n1, UINT8 *n2, UINT8 *a1, + UINT8 *a2, UINT8 *length, UINT8 *mac); extern BOOLEAN smp_calculate_f5_key(UINT8 *w, UINT8 *t); extern BOOLEAN smp_calculate_f6(UINT8 *w, UINT8 *n1, UINT8 *n2, UINT8 *r, UINT8 *iocap, - UINT8 *a1, UINT8 *a2, UINT8 *f3); + UINT8 *a1, UINT8 *a2, UINT8 *f3); extern BOOLEAN smp_calculate_h6(UINT8 *w, UINT8 *keyid, UINT8 *h2); #if SMP_DEBUG == TRUE extern void smp_debug_print_nbyte_little_endian (UINT8 *p, const UINT8 *key_name, - UINT8 len); + UINT8 len); #endif /* smp_cmac.c */ extern BOOLEAN aes_cipher_msg_auth_code(BT_OCTET16 key, UINT8 *input, UINT16 length, - UINT16 tlen, UINT8 *p_signature); + UINT16 tlen, UINT8 *p_signature); extern void print128(BT_OCTET16 x, const UINT8 *key_name); #endif diff --git a/components/bt/bluedroid/stack/smp/p_256_curvepara.c b/components/bt/bluedroid/stack/smp/p_256_curvepara.c old mode 100755 new mode 100644 index 131e769359..1761d58483 --- a/components/bt/bluedroid/stack/smp/p_256_curvepara.c +++ b/components/bt/bluedroid/stack/smp/p_256_curvepara.c @@ -16,11 +16,11 @@ * ******************************************************************************/ - /****************************************************************************** - * - * This file contains simple pairing algorithms - * - ******************************************************************************/ +/****************************************************************************** + * + * This file contains simple pairing algorithms + * + ******************************************************************************/ #include #include "p_256_ecc_pp.h" @@ -29,8 +29,7 @@ void p_256_init_curve(UINT32 keyLength) { elliptic_curve_t *ec; - if(keyLength == KEY_LENGTH_DWORDS_P256) - { + if (keyLength == KEY_LENGTH_DWORDS_P256) { ec = &curve_p256; ec->p[7] = 0xFFFFFFFF; diff --git a/components/bt/bluedroid/stack/smp/p_256_ecc_pp.c b/components/bt/bluedroid/stack/smp/p_256_ecc_pp.c old mode 100755 new mode 100644 index d203adc86f..991b6fd757 --- a/components/bt/bluedroid/stack/smp/p_256_ecc_pp.c +++ b/components/bt/bluedroid/stack/smp/p_256_ecc_pp.c @@ -16,11 +16,11 @@ * ******************************************************************************/ - /****************************************************************************** - * - * This file contains simple pairing algorithms using Elliptic Curve Cryptography for private public key - * - ******************************************************************************/ +/****************************************************************************** + * + * This file contains simple pairing algorithms using Elliptic Curve Cryptography for private public key + * + ******************************************************************************/ //#include //#include #include @@ -53,14 +53,13 @@ static void ECC_Double(Point *q, Point *p, uint32_t keyLength) DWORD *z1; DWORD *z3; - if (multiprecision_iszero(p->z, keyLength)) - { + if (multiprecision_iszero(p->z, keyLength)) { multiprecision_init(q->z, keyLength); return; // return infinity } - x1=p->x; y1=p->y; z1=p->z; - x3=q->x; y3=q->y; z3=q->z; + x1 = p->x; y1 = p->y; z1 = p->z; + x3 = q->x; y3 = q->y; z3 = q->z; multiprecision_mersenns_squa_mod(t1, z1, keyLength); // t1=z1^2 multiprecision_sub_mod(t2, x1, t1, keyLength); // t2=x1-t1 @@ -102,20 +101,18 @@ static void ECC_Add(Point *r, Point *p, Point *q, uint32_t keyLength) DWORD *z2; DWORD *z3; - x1=p->x; y1=p->y; z1=p->z; - x2=q->x; y2=q->y; z2=q->z; - x3=r->x; y3=r->y; z3=r->z; + x1 = p->x; y1 = p->y; z1 = p->z; + x2 = q->x; y2 = q->y; z2 = q->z; + x3 = r->x; y3 = r->y; z3 = r->z; // if Q=infinity, return p - if (multiprecision_iszero(z2, keyLength)) - { + if (multiprecision_iszero(z2, keyLength)) { p_256_copy_point(r, p); return; } // if P=infinity, return q - if (multiprecision_iszero(z1, keyLength)) - { + if (multiprecision_iszero(z1, keyLength)) { p_256_copy_point(r, q); return; } @@ -128,15 +125,11 @@ static void ECC_Add(Point *r, Point *p, Point *q, uint32_t keyLength) multiprecision_sub_mod(t1, t1, x1, keyLength); // t1=t1-x1 multiprecision_sub_mod(t2, t2, y1, keyLength); // t2=t2-y1 - if (multiprecision_iszero(t1, keyLength)) - { - if (multiprecision_iszero(t2, keyLength)) - { + if (multiprecision_iszero(t1, keyLength)) { + if (multiprecision_iszero(t2, keyLength)) { ECC_Double(r, q, keyLength) ; return; - } - else - { + } else { multiprecision_init(z3, keyLength); return; // return infinity } @@ -160,59 +153,51 @@ static void ECC_Add(Point *r, Point *p, Point *q, uint32_t keyLength) static void ECC_NAF(uint8_t *naf, uint32_t *NumNAF, DWORD *k, uint32_t keyLength) { uint32_t sign; - int i=0; + int i = 0; int j; uint32_t var; - while ((var = multiprecision_most_signbits(k, keyLength))>=1) - { - if (k[0] & 0x01) // k is odd - { + while ((var = multiprecision_most_signbits(k, keyLength)) >= 1) { + if (k[0] & 0x01) { // k is odd sign = (k[0] & 0x03); // 1 or 3 // k = k-naf[i] - if (sign == 1) + if (sign == 1) { k[0] = k[0] & 0xFFFFFFFE; - else - { + } else { k[0] = k[0] + 1; - if (k[0] == 0) //overflow - { + if (k[0] == 0) { //overflow j = 1; - do - { + do { k[j]++; - } while (k[j++]==0); //overflow + } while (k[j++] == 0); //overflow } } - } - else + } else { sign = 0; + } multiprecision_rshift(k, k, keyLength); naf[i / 4] |= (sign) << ((i % 4) * 2); i++; } - *NumNAF=i; + *NumNAF = i; } // Binary Non-Adjacent Form for point multiplication void ECC_PointMult_Bin_NAF(Point *q, Point *p, DWORD *n, uint32_t keyLength) { uint32_t sign; - UINT8 naf[256 / 4 +1]; + UINT8 naf[256 / 4 + 1]; uint32_t NumNaf; Point minus_p; Point r; DWORD *modp; - if (keyLength == KEY_LENGTH_DWORDS_P256) - { + if (keyLength == KEY_LENGTH_DWORDS_P256) { modp = curve_p256.p; - } - else - { + } else { modp = curve.p; } @@ -228,25 +213,21 @@ void ECC_PointMult_Bin_NAF(Point *q, Point *p, DWORD *n, uint32_t keyLength) multiprecision_sub(minus_p.y, modp, p->y, keyLength); multiprecision_init(minus_p.z, keyLength); - minus_p.z[0]=1; + minus_p.z[0] = 1; // NAF memset(naf, 0, sizeof(naf)); ECC_NAF(naf, &NumNaf, n, keyLength); - for (int i = NumNaf - 1; i >= 0; i--) - { + for (int i = NumNaf - 1; i >= 0; i--) { p_256_copy_point(&r, q); ECC_Double(q, &r, keyLength); sign = (naf[i / 4] >> ((i % 4) * 2)) & 0x03; - if (sign == 1) - { + if (sign == 1) { p_256_copy_point(&r, q); ECC_Add(q, &r, p, keyLength); - } - else if (sign == 3) - { + } else if (sign == 3) { p_256_copy_point(&r, q); ECC_Add(q, &r, &minus_p, keyLength); } diff --git a/components/bt/bluedroid/stack/smp/p_256_multprecision.c b/components/bt/bluedroid/stack/smp/p_256_multprecision.c old mode 100755 new mode 100644 index f939809572..2c11474d46 --- a/components/bt/bluedroid/stack/smp/p_256_multprecision.c +++ b/components/bt/bluedroid/stack/smp/p_256_multprecision.c @@ -16,11 +16,11 @@ * ******************************************************************************/ - /****************************************************************************** - * - * This file contains simple pairing algorithms - * - ******************************************************************************/ +/****************************************************************************** + * + * This file contains simple pairing algorithms + * + ******************************************************************************/ #include #include "bt_target.h" @@ -29,24 +29,27 @@ void multiprecision_init(DWORD *c, uint32_t keyLength) { - for (uint32_t i = 0; i < keyLength; i++) + for (uint32_t i = 0; i < keyLength; i++) { c[i] = 0; + } } void multiprecision_copy(DWORD *c, DWORD *a, uint32_t keyLength) { - for (uint32_t i = 0; i < keyLength; i++) + for (uint32_t i = 0; i < keyLength; i++) { c[i] = a[i]; + } } int multiprecision_compare(DWORD *a, DWORD *b, uint32_t keyLength) { - for (int i = keyLength - 1; i >= 0; i--) - { - if (a[i] > b[i]) + for (int i = keyLength - 1; i >= 0; i--) { + if (a[i] > b[i]) { return 1; - if (a[i] < b[i]) + } + if (a[i] < b[i]) { return -1; + } } return 0; } @@ -54,8 +57,9 @@ int multiprecision_compare(DWORD *a, DWORD *b, uint32_t keyLength) int multiprecision_iszero(DWORD *a, uint32_t keyLength) { for (uint32_t i = 0; i < keyLength; i++) - if (a[i]) + if (a[i]) { return 0; + } return 1; } @@ -64,8 +68,9 @@ UINT32 multiprecision_dword_bits(DWORD a) { uint32_t i; for (i = 0; i < DWORD_BITS; i++, a >>= 1) - if (a == 0) + if (a == 0) { break; + } return i; } @@ -74,8 +79,9 @@ UINT32 multiprecision_most_signdwords(DWORD *a, uint32_t keyLength) { int i; for (i = keyLength - 1; i >= 0; i--) - if (a[i]) - break; + if (a[i]) { + break; + } return (i + 1); } @@ -84,11 +90,12 @@ UINT32 multiprecision_most_signbits(DWORD *a, uint32_t keyLength) int aMostSignDWORDs; aMostSignDWORDs = multiprecision_most_signdwords(a, keyLength); - if (aMostSignDWORDs == 0) + if (aMostSignDWORDs == 0) { return 0; + } - return (((aMostSignDWORDs-1) << DWORD_BITS_SHIFT) + - multiprecision_dword_bits(a[aMostSignDWORDs-1]) ); + return (((aMostSignDWORDs - 1) << DWORD_BITS_SHIFT) + + multiprecision_dword_bits(a[aMostSignDWORDs - 1]) ); } DWORD multiprecision_add(DWORD *c, DWORD *a, DWORD *b, uint32_t keyLength) @@ -96,14 +103,13 @@ DWORD multiprecision_add(DWORD *c, DWORD *a, DWORD *b, uint32_t keyLength) DWORD carrier; DWORD temp; - carrier=0; - for (uint32_t i = 0; i < keyLength; i++) - { + carrier = 0; + for (uint32_t i = 0; i < keyLength; i++) { temp = a[i] + carrier; carrier = (temp < carrier); temp += b[i]; carrier |= (temp < b[i]); - c[i]=temp; + c[i] = temp; } return carrier; @@ -115,9 +121,8 @@ DWORD multiprecision_sub(DWORD *c, DWORD *a, DWORD *b, uint32_t keyLength) DWORD borrow; DWORD temp; - borrow=0; - for (uint32_t i=0; i < keyLength; i++) - { + borrow = 0; + for (uint32_t i = 0; i < keyLength; i++) { temp = a[i] - borrow; borrow = (temp > a[i]); c[i] = temp - b[i]; @@ -128,35 +133,29 @@ DWORD multiprecision_sub(DWORD *c, DWORD *a, DWORD *b, uint32_t keyLength) } // c = a << 1 -void multiprecision_lshift_mod(DWORD * c, DWORD * a, uint32_t keyLength) +void multiprecision_lshift_mod(DWORD *c, DWORD *a, uint32_t keyLength) { DWORD carrier; DWORD *modp; - if (keyLength == KEY_LENGTH_DWORDS_P192) - { + if (keyLength == KEY_LENGTH_DWORDS_P192) { modp = curve.p; - } - else if (keyLength == KEY_LENGTH_DWORDS_P256) - { + } else if (keyLength == KEY_LENGTH_DWORDS_P256) { modp = curve_p256.p; - } - else + } else { return; + } carrier = multiprecision_lshift(c, a, keyLength); - if (carrier) - { + if (carrier) { multiprecision_sub(c, c, modp, keyLength); - } - else if (multiprecision_compare(c, modp, keyLength)>=0) - { + } else if (multiprecision_compare(c, modp, keyLength) >= 0) { multiprecision_sub(c, c, modp, keyLength); } } // c=a>>1 -void multiprecision_rshift(DWORD * c, DWORD * a, uint32_t keyLength) +void multiprecision_rshift(DWORD *c, DWORD *a, uint32_t keyLength) { int j; DWORD b = 1; @@ -165,8 +164,7 @@ void multiprecision_rshift(DWORD * c, DWORD * a, uint32_t keyLength) DWORD carrier = 0; DWORD temp; - for (int i = keyLength-1; i >= 0; i--) - { + for (int i = keyLength - 1; i >= 0; i--) { temp = a[i]; // in case of c==a c[i] = (temp >> b) | carrier; carrier = temp << j; @@ -176,15 +174,12 @@ void multiprecision_rshift(DWORD * c, DWORD * a, uint32_t keyLength) // Curve specific optimization when p is a pseudo-Mersenns prime, p=2^(KEY_LENGTH_BITS)-omega void multiprecision_mersenns_mult_mod(DWORD *c, DWORD *a, DWORD *b, uint32_t keyLength) { - DWORD cc[2*KEY_LENGTH_DWORDS_P256]; + DWORD cc[2 * KEY_LENGTH_DWORDS_P256]; multiprecision_mult(cc, a, b, keyLength); - if (keyLength == 6) - { + if (keyLength == 6) { multiprecision_fast_mod(c, cc); - } - else if (keyLength == 8) - { + } else if (keyLength == 8) { multiprecision_fast_mod_P256(c, cc); } } @@ -201,24 +196,18 @@ void multiprecision_add_mod(DWORD *c, DWORD *a, DWORD *b, uint32_t keyLength) DWORD carrier; DWORD *modp; - if (keyLength == KEY_LENGTH_DWORDS_P192) - { + if (keyLength == KEY_LENGTH_DWORDS_P192) { modp = curve.p; - } - else if (keyLength == KEY_LENGTH_DWORDS_P256) - { + } else if (keyLength == KEY_LENGTH_DWORDS_P256) { modp = curve_p256.p; - } - else + } else { return; + } carrier = multiprecision_add(c, a, b, keyLength); - if (carrier) - { + if (carrier) { multiprecision_sub(c, c, modp, keyLength); - } - else if (multiprecision_compare(c, modp, keyLength) >= 0) - { + } else if (multiprecision_compare(c, modp, keyLength) >= 0) { multiprecision_sub(c, c, modp, keyLength); } } @@ -229,24 +218,22 @@ void multiprecision_sub_mod(DWORD *c, DWORD *a, DWORD *b, uint32_t keyLength) DWORD borrow; DWORD *modp; - if (keyLength == KEY_LENGTH_DWORDS_P192) - { + if (keyLength == KEY_LENGTH_DWORDS_P192) { modp = curve.p; - } - else if(keyLength == KEY_LENGTH_DWORDS_P256) - { + } else if (keyLength == KEY_LENGTH_DWORDS_P256) { modp = curve_p256.p; - } - else + } else { return; + } borrow = multiprecision_sub(c, a, b, keyLength); - if(borrow) + if (borrow) { multiprecision_add(c, c, modp, keyLength); + } } // c=a<> j; @@ -276,11 +262,9 @@ void multiprecision_mult(DWORD *c, DWORD *a, DWORD *b, uint32_t keyLength) multiprecision_init(c, keyLength); //assume little endian right now - for (uint32_t i = 0; i < keyLength; i++) - { + for (uint32_t i = 0; i < keyLength; i++) { U = 0; - for (uint32_t j = 0; j < keyLength; j++) - { + for (uint32_t j = 0; j < keyLength; j++) { uint64_t result; result = ((UINT64)a[i]) * ((uint64_t) b[j]); W = result >> 32; @@ -288,11 +272,11 @@ void multiprecision_mult(DWORD *c, DWORD *a, DWORD *b, uint32_t keyLength) V = V + U; U = (V < U); U += W; - V = V + c[i+j]; - U += (V < c[i+j]); - c[i+j] = V; + V = V + c[i + j]; + U += (V < c[i + j]); + c[i + j] = V; } - c[i+keyLength] = U; + c[i + keyLength] = U; } } @@ -303,7 +287,7 @@ void multiprecision_fast_mod(DWORD *c, DWORD *a) DWORD *modp = curve.p; c[0] = a[0] + a[6]; - U=c[0] < a[0]; + U = c[0] < a[0]; c[0] += a[10]; U += c[0] < a[10]; @@ -312,7 +296,7 @@ void multiprecision_fast_mod(DWORD *c, DWORD *a) c[1] += a[7]; U += c[1] < a[7]; c[1] += a[11]; - U += c[1]< a[11]; + U += c[1] < a[11]; c[2] = a[2] + U; U = c[2] < a[2]; @@ -323,7 +307,7 @@ void multiprecision_fast_mod(DWORD *c, DWORD *a) c[2] += a[10]; U += c[2] < a[10]; - c[3] = a[3]+U; + c[3] = a[3] + U; U = c[3] < a[3]; c[3] += a[7]; U += c[3] < a[7]; @@ -332,14 +316,14 @@ void multiprecision_fast_mod(DWORD *c, DWORD *a) c[3] += a[11]; U += c[3] < a[11]; - c[4] = a[4]+U; + c[4] = a[4] + U; U = c[4] < a[4]; c[4] += a[8]; U += c[4] < a[8]; c[4] += a[10]; U += c[4] < a[10]; - c[5] = a[5]+U; + c[5] = a[5] + U; U = c[5] < a[5]; c[5] += a[9]; U += c[5] < a[9]; @@ -361,12 +345,9 @@ void multiprecision_fast_mod(DWORD *c, DWORD *a) c[5] += V; V = c[5] < V; - if (V) - { + if (V) { multiprecision_sub(c, c, modp, KEY_LENGTH_DWORDS_P192); - } - else if(multiprecision_compare(c, modp, KEY_LENGTH_DWORDS_P192) >= 0) - { + } else if (multiprecision_compare(c, modp, KEY_LENGTH_DWORDS_P192) >= 0) { multiprecision_sub(c, c, modp, KEY_LENGTH_DWORDS_P192); } } @@ -442,15 +423,12 @@ void multiprecision_fast_mod_P256(DWORD *c, DWORD *a) U -= UA; c[0] -= A; - if (U & 0x80000000) - { + if (U & 0x80000000) { DWORD UU; UU = 0 - U; U = (a[1] < UU); c[1] = a[1] - UU; - } - else - { + } else { c[1] = a[1] + U; U = (c[1] < a[1]); } @@ -462,15 +440,12 @@ void multiprecision_fast_mod_P256(DWORD *c, DWORD *a) U -= UB; c[1] -= B; - if (U & 0x80000000) - { + if (U & 0x80000000) { DWORD UU; UU = 0 - U; U = (a[2] < UU); c[2] = a[2] - UU; - } - else - { + } else { c[2] = a[2] + U; U = (c[2] < a[2]); } @@ -482,15 +457,12 @@ void multiprecision_fast_mod_P256(DWORD *c, DWORD *a) U -= UC; c[2] -= C; - if (U & 0x80000000) - { + if (U & 0x80000000) { DWORD UU; UU = 0 - U; U = (a[3] < UU); c[3] = a[3] - UU; - } - else - { + } else { c[3] = a[3] + U; U = (c[3] < a[3]); } @@ -510,15 +482,12 @@ void multiprecision_fast_mod_P256(DWORD *c, DWORD *a) U -= UE; c[3] -= E; - if (U & 0x80000000) - { + if (U & 0x80000000) { DWORD UU; UU = 0 - U; U = (a[4] < UU); c[4] = a[4] - UU; - } - else - { + } else { c[4] = a[4] + U; U = (c[4] < a[4]); } @@ -536,15 +505,12 @@ void multiprecision_fast_mod_P256(DWORD *c, DWORD *a) U -= UF; c[4] -= F; - if (U & 0x80000000) - { + if (U & 0x80000000) { DWORD UU; UU = 0 - U; U = (a[5] < UU); c[5] = a[5] - UU; - } - else - { + } else { c[5] = a[5] + U; U = (c[5] < a[5]); } @@ -560,15 +526,12 @@ void multiprecision_fast_mod_P256(DWORD *c, DWORD *a) U -= UG; c[5] -= G; - if (U & 0x80000000) - { + if (U & 0x80000000) { DWORD UU; UU = 0 - U; U = (a[6] < UU); c[6] = a[6] - UU; - } - else - { + } else { c[6] = a[6] + U; U = (c[6] < a[6]); } @@ -586,15 +549,12 @@ void multiprecision_fast_mod_P256(DWORD *c, DWORD *a) U -= UE; c[6] -= E; - if (U & 0x80000000) - { + if (U & 0x80000000) { DWORD UU; UU = 0 - U; U = (a[7] < UU); c[7] = a[7] - UU; - } - else - { + } else { c[7] = a[7] + U; U = (c[7] < a[7]); } @@ -611,41 +571,34 @@ void multiprecision_fast_mod_P256(DWORD *c, DWORD *a) U -= UD; c[7] -= D; - if (U & 0x80000000) - { - while (U) - { + if (U & 0x80000000) { + while (U) { multiprecision_add(c, c, modp, KEY_LENGTH_DWORDS_P256); U++; } - } - else if (U) - { - while (U) - { + } else if (U) { + while (U) { multiprecision_sub(c, c, modp, KEY_LENGTH_DWORDS_P256); U--; } } - if (multiprecision_compare(c, modp, KEY_LENGTH_DWORDS_P256)>=0) + if (multiprecision_compare(c, modp, KEY_LENGTH_DWORDS_P256) >= 0) { multiprecision_sub(c, c, modp, KEY_LENGTH_DWORDS_P256); + } } void multiprecision_inv_mod(DWORD *aminus, DWORD *u, uint32_t keyLength) { DWORD v[KEY_LENGTH_DWORDS_P256]; - DWORD A[KEY_LENGTH_DWORDS_P256+1]; - DWORD C[KEY_LENGTH_DWORDS_P256+1]; + DWORD A[KEY_LENGTH_DWORDS_P256 + 1]; + DWORD C[KEY_LENGTH_DWORDS_P256 + 1]; DWORD *modp; - if(keyLength == KEY_LENGTH_DWORDS_P256) - { + if (keyLength == KEY_LENGTH_DWORDS_P256) { modp = curve_p256.p; - } - else - { + } else { modp = curve.p; } @@ -654,51 +607,42 @@ void multiprecision_inv_mod(DWORD *aminus, DWORD *u, uint32_t keyLength) multiprecision_init(C, keyLength); A[0] = 1; - while (!multiprecision_iszero(u, keyLength)) - { - while (!(u[0] & 0x01)) // u is even - { + while (!multiprecision_iszero(u, keyLength)) { + while (!(u[0] & 0x01)) { // u is even multiprecision_rshift(u, u, keyLength); - if(!(A[0] & 0x01)) // A is even + if (!(A[0] & 0x01)) { // A is even multiprecision_rshift(A, A, keyLength); - else - { - A[keyLength]=multiprecision_add(A, A, modp, keyLength); // A =A+p + } else { + A[keyLength] = multiprecision_add(A, A, modp, keyLength); // A =A+p multiprecision_rshift(A, A, keyLength); - A[keyLength-1] |= (A[keyLength]<<31); + A[keyLength - 1] |= (A[keyLength] << 31); } } - while (!(v[0] & 0x01)) // v is even - { + while (!(v[0] & 0x01)) { // v is even multiprecision_rshift(v, v, keyLength); - if (!(C[0] & 0x01)) // C is even - { + if (!(C[0] & 0x01)) { // C is even multiprecision_rshift(C, C, keyLength); - } - else - { + } else { C[keyLength] = multiprecision_add(C, C, modp, keyLength); // C =C+p multiprecision_rshift(C, C, keyLength); - C[keyLength-1] |= (C[keyLength] << 31); + C[keyLength - 1] |= (C[keyLength] << 31); } } - if (multiprecision_compare(u, v, keyLength) >= 0) - { + if (multiprecision_compare(u, v, keyLength) >= 0) { multiprecision_sub(u, u, v, keyLength); multiprecision_sub_mod(A, A, C, keyLength); - } - else - { + } else { multiprecision_sub(v, v, u, keyLength); multiprecision_sub_mod(C, C, A, keyLength); } } - if (multiprecision_compare(C, modp, keyLength) >= 0) + if (multiprecision_compare(C, modp, keyLength) >= 0) { multiprecision_sub(aminus, C, modp, keyLength); - else + } else { multiprecision_copy(aminus, C, keyLength); + } } diff --git a/components/bt/bluedroid/stack/smp/smp_act.c b/components/bt/bluedroid/stack/smp/smp_act.c old mode 100755 new mode 100644 index f7b7ce24c1..a3f0f9f0b1 --- a/components/bt/bluedroid/stack/smp/smp_act.c +++ b/components/bt/bluedroid/stack/smp/smp_act.c @@ -25,26 +25,26 @@ //#include "utils/include/bt_utils.h" #if SMP_INCLUDED == TRUE -const UINT8 smp_association_table[2][SMP_IO_CAP_MAX][SMP_IO_CAP_MAX] = -{ +const UINT8 smp_association_table[2][SMP_IO_CAP_MAX][SMP_IO_CAP_MAX] = { /* initiator */ - {{SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_PASSKEY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_PASSKEY}, /* Display Only */ + { {SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_PASSKEY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_PASSKEY}, /* Display Only */ {SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_PASSKEY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_PASSKEY}, /* SMP_CAP_IO = 1 */ {SMP_MODEL_KEY_NOTIF, SMP_MODEL_KEY_NOTIF, SMP_MODEL_PASSKEY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_KEY_NOTIF}, /* keyboard only */ {SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY},/* No Input No Output */ - {SMP_MODEL_KEY_NOTIF, SMP_MODEL_KEY_NOTIF, SMP_MODEL_PASSKEY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_KEY_NOTIF}}, /* keyboard display */ + {SMP_MODEL_KEY_NOTIF, SMP_MODEL_KEY_NOTIF, SMP_MODEL_PASSKEY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_KEY_NOTIF} + }, /* keyboard display */ /* responder */ - {{SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_KEY_NOTIF, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_KEY_NOTIF}, /* Display Only */ + { {SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_KEY_NOTIF, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_KEY_NOTIF}, /* Display Only */ {SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_KEY_NOTIF, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_KEY_NOTIF}, /* SMP_CAP_IO = 1 */ {SMP_MODEL_PASSKEY, SMP_MODEL_PASSKEY, SMP_MODEL_PASSKEY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_PASSKEY}, /* keyboard only */ {SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY},/* No Input No Output */ - {SMP_MODEL_PASSKEY, SMP_MODEL_PASSKEY, SMP_MODEL_KEY_NOTIF, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_PASSKEY}} /* keyboard display */ + {SMP_MODEL_PASSKEY, SMP_MODEL_PASSKEY, SMP_MODEL_KEY_NOTIF, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_PASSKEY} + } /* keyboard display */ /* display only */ /*SMP_CAP_IO = 1 */ /* keyboard only */ /* No InputOutput */ /* keyboard display */ }; #define SMP_KEY_DIST_TYPE_MAX 4 -const tSMP_ACT smp_distribute_act [] = -{ +const tSMP_ACT smp_distribute_act [] = { smp_generate_ltk, smp_send_id_info, smp_generate_csrk, @@ -54,8 +54,7 @@ const tSMP_ACT smp_distribute_act [] = static bool lmp_version_below(BD_ADDR bda, uint8_t version) { tACL_CONN *acl = btm_bda_to_acl(bda, BT_TRANSPORT_LE); - if (acl == NULL || acl->lmp_version == 0) - { + if (acl == NULL || acl->lmp_version == 0) { SMP_TRACE_WARNING("%s cannot retrieve LMP version...", __func__); return false; } @@ -70,35 +69,31 @@ static bool lmp_version_below(BD_ADDR bda, uint8_t version) static void smp_update_key_mask (tSMP_CB *p_cb, UINT8 key_type, BOOLEAN recv) { SMP_TRACE_DEBUG("%s before update role=%d recv=%d local_i_key = %02x, local_r_key = %02x\n", - __func__, p_cb->role, recv, p_cb->local_i_key, p_cb->local_r_key); + __func__, p_cb->role, recv, p_cb->local_i_key, p_cb->local_r_key); if (((p_cb->le_secure_connections_mode_is_used) || - (p_cb->smp_over_br)) && - ((key_type == SMP_SEC_KEY_TYPE_ENC) || (key_type == SMP_SEC_KEY_TYPE_LK))) - { + (p_cb->smp_over_br)) && + ((key_type == SMP_SEC_KEY_TYPE_ENC) || (key_type == SMP_SEC_KEY_TYPE_LK))) { /* in LE SC mode LTK, CSRK and BR/EDR LK are derived locally instead of ** being exchanged with the peer */ p_cb->local_i_key &= ~key_type; p_cb->local_r_key &= ~key_type; - } - else - if (p_cb->role == HCI_ROLE_SLAVE) - { - if (recv) + } else if (p_cb->role == HCI_ROLE_SLAVE) { + if (recv) { p_cb->local_i_key &= ~key_type; - else + } else { p_cb->local_r_key &= ~key_type; - } - else - { - if (recv) + } + } else { + if (recv) { p_cb->local_r_key &= ~key_type; - else + } else { p_cb->local_i_key &= ~key_type; + } } SMP_TRACE_DEBUG("updated local_i_key = %02x, local_r_key = %02x\n", p_cb->local_i_key, - p_cb->local_r_key); + p_cb->local_r_key); } /******************************************************************************* @@ -110,116 +105,108 @@ void smp_send_app_cback(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) tSMP_EVT_DATA cb_data; tSMP_STATUS callback_rc; SMP_TRACE_DEBUG("%s p_cb->cb_evt=%d\n", __func__, p_cb->cb_evt); - if (p_cb->p_callback && p_cb->cb_evt != 0) - { - switch (p_cb->cb_evt) - { - case SMP_IO_CAP_REQ_EVT: - cb_data.io_req.auth_req = p_cb->peer_auth_req; - cb_data.io_req.oob_data = SMP_OOB_NONE; - cb_data.io_req.io_cap = SMP_DEFAULT_IO_CAPS; - cb_data.io_req.max_key_size = SMP_MAX_ENC_KEY_SIZE; - cb_data.io_req.init_keys = p_cb->local_i_key ; - cb_data.io_req.resp_keys = p_cb->local_r_key ; - SMP_TRACE_WARNING ( "io_cap = %d",cb_data.io_req.io_cap); - break; + if (p_cb->p_callback && p_cb->cb_evt != 0) { + switch (p_cb->cb_evt) { + case SMP_IO_CAP_REQ_EVT: + cb_data.io_req.auth_req = p_cb->peer_auth_req; + cb_data.io_req.oob_data = SMP_OOB_NONE; + cb_data.io_req.io_cap = SMP_DEFAULT_IO_CAPS; + cb_data.io_req.max_key_size = SMP_MAX_ENC_KEY_SIZE; + cb_data.io_req.init_keys = p_cb->local_i_key ; + cb_data.io_req.resp_keys = p_cb->local_r_key ; + SMP_TRACE_WARNING ( "io_cap = %d", cb_data.io_req.io_cap); + break; - case SMP_NC_REQ_EVT: - cb_data.passkey = p_data->passkey; - break; - case SMP_SC_OOB_REQ_EVT: - cb_data.req_oob_type = p_data->req_oob_type; - break; - case SMP_SC_LOC_OOB_DATA_UP_EVT: - cb_data.loc_oob_data = p_cb->sc_oob_data.loc_oob_data; - break; + case SMP_NC_REQ_EVT: + cb_data.passkey = p_data->passkey; + break; + case SMP_SC_OOB_REQ_EVT: + cb_data.req_oob_type = p_data->req_oob_type; + break; + case SMP_SC_LOC_OOB_DATA_UP_EVT: + cb_data.loc_oob_data = p_cb->sc_oob_data.loc_oob_data; + break; - case SMP_BR_KEYS_REQ_EVT: - cb_data.io_req.auth_req = 0; - cb_data.io_req.oob_data = SMP_OOB_NONE; - cb_data.io_req.io_cap = 0; - cb_data.io_req.max_key_size = SMP_MAX_ENC_KEY_SIZE; - cb_data.io_req.init_keys = SMP_BR_SEC_DEFAULT_KEY; - cb_data.io_req.resp_keys = SMP_BR_SEC_DEFAULT_KEY; - break; + case SMP_BR_KEYS_REQ_EVT: + cb_data.io_req.auth_req = 0; + cb_data.io_req.oob_data = SMP_OOB_NONE; + cb_data.io_req.io_cap = 0; + cb_data.io_req.max_key_size = SMP_MAX_ENC_KEY_SIZE; + cb_data.io_req.init_keys = SMP_BR_SEC_DEFAULT_KEY; + cb_data.io_req.resp_keys = SMP_BR_SEC_DEFAULT_KEY; + break; - default: - break; + default: + break; } callback_rc = (*p_cb->p_callback)(p_cb->cb_evt, p_cb->pairing_bda, &cb_data); - SMP_TRACE_DEBUG("callback_rc=%d p_cb->cb_evt=%d\n",callback_rc, p_cb->cb_evt ); + SMP_TRACE_DEBUG("callback_rc=%d p_cb->cb_evt=%d\n", callback_rc, p_cb->cb_evt ); - if (callback_rc == SMP_SUCCESS) - { - switch (p_cb->cb_evt) - { - case SMP_IO_CAP_REQ_EVT: - p_cb->loc_auth_req = cb_data.io_req.auth_req; - p_cb->local_io_capability = cb_data.io_req.io_cap; - p_cb->loc_oob_flag = cb_data.io_req.oob_data; - p_cb->loc_enc_size = cb_data.io_req.max_key_size; - p_cb->local_i_key = cb_data.io_req.init_keys; - p_cb->local_r_key = cb_data.io_req.resp_keys; + if (callback_rc == SMP_SUCCESS) { + switch (p_cb->cb_evt) { + case SMP_IO_CAP_REQ_EVT: + p_cb->loc_auth_req = cb_data.io_req.auth_req; + p_cb->local_io_capability = cb_data.io_req.io_cap; + p_cb->loc_oob_flag = cb_data.io_req.oob_data; + p_cb->loc_enc_size = cb_data.io_req.max_key_size; + p_cb->local_i_key = cb_data.io_req.init_keys; + p_cb->local_r_key = cb_data.io_req.resp_keys; - if (!(p_cb->loc_auth_req & SMP_AUTH_BOND)) - { - SMP_TRACE_WARNING ("Non bonding: No keys will be exchanged"); - p_cb->local_i_key = 0; - p_cb->local_r_key = 0; - } + if (!(p_cb->loc_auth_req & SMP_AUTH_BOND)) { + SMP_TRACE_WARNING ("Non bonding: No keys will be exchanged"); + p_cb->local_i_key = 0; + p_cb->local_r_key = 0; + } - SMP_TRACE_WARNING ( "rcvd auth_req: 0x%02x, io_cap: %d \ + SMP_TRACE_WARNING ( "rcvd auth_req: 0x%02x, io_cap: %d \ loc_oob_flag: %d loc_enc_size: %d," - "local_i_key: 0x%02x, local_r_key: 0x%02x\n", - p_cb->loc_auth_req, p_cb->local_io_capability, p_cb->loc_oob_flag, - p_cb->loc_enc_size, p_cb->local_i_key, p_cb->local_r_key); + "local_i_key: 0x%02x, local_r_key: 0x%02x\n", + p_cb->loc_auth_req, p_cb->local_io_capability, p_cb->loc_oob_flag, + p_cb->loc_enc_size, p_cb->local_i_key, p_cb->local_r_key); - p_cb->secure_connections_only_mode_required = - (btm_cb.security_mode == BTM_SEC_MODE_SC) ? TRUE : FALSE; + p_cb->secure_connections_only_mode_required = + (btm_cb.security_mode == BTM_SEC_MODE_SC) ? TRUE : FALSE; - if (p_cb->secure_connections_only_mode_required) - { - p_cb->loc_auth_req |= SMP_SC_SUPPORT_BIT; - } + if (p_cb->secure_connections_only_mode_required) { + p_cb->loc_auth_req |= SMP_SC_SUPPORT_BIT; + } - if (!(p_cb->loc_auth_req & SMP_SC_SUPPORT_BIT) + if (!(p_cb->loc_auth_req & SMP_SC_SUPPORT_BIT) || lmp_version_below(p_cb->pairing_bda, HCI_PROTO_VERSION_4_2) || interop_match(INTEROP_DISABLE_LE_SECURE_CONNECTIONS, - (const bt_bdaddr_t *)&p_cb->pairing_bda)) - { - p_cb->loc_auth_req &= ~SMP_KP_SUPPORT_BIT; - p_cb->local_i_key &= ~SMP_SEC_KEY_TYPE_LK; - p_cb->local_r_key &= ~SMP_SEC_KEY_TYPE_LK; - } - - SMP_TRACE_WARNING("set auth_req: 0x%02x, local_i_key: 0x%02x, local_r_key: 0x%02x\n", - p_cb->loc_auth_req, p_cb->local_i_key, p_cb->local_r_key); - - smp_sm_event(p_cb, SMP_IO_RSP_EVT, NULL); - break; - - case SMP_BR_KEYS_REQ_EVT: - p_cb->loc_enc_size = cb_data.io_req.max_key_size; - p_cb->local_i_key = cb_data.io_req.init_keys; - p_cb->local_r_key = cb_data.io_req.resp_keys; - + (const bt_bdaddr_t *)&p_cb->pairing_bda)) { + p_cb->loc_auth_req &= ~SMP_KP_SUPPORT_BIT; p_cb->local_i_key &= ~SMP_SEC_KEY_TYPE_LK; p_cb->local_r_key &= ~SMP_SEC_KEY_TYPE_LK; + } - SMP_TRACE_WARNING ( "for SMP over BR max_key_size: 0x%02x,\ + SMP_TRACE_WARNING("set auth_req: 0x%02x, local_i_key: 0x%02x, local_r_key: 0x%02x\n", + p_cb->loc_auth_req, p_cb->local_i_key, p_cb->local_r_key); + + smp_sm_event(p_cb, SMP_IO_RSP_EVT, NULL); + break; + + case SMP_BR_KEYS_REQ_EVT: + p_cb->loc_enc_size = cb_data.io_req.max_key_size; + p_cb->local_i_key = cb_data.io_req.init_keys; + p_cb->local_r_key = cb_data.io_req.resp_keys; + + p_cb->local_i_key &= ~SMP_SEC_KEY_TYPE_LK; + p_cb->local_r_key &= ~SMP_SEC_KEY_TYPE_LK; + + SMP_TRACE_WARNING ( "for SMP over BR max_key_size: 0x%02x,\ local_i_key: 0x%02x, local_r_key: 0x%02x\n", - p_cb->loc_enc_size, p_cb->local_i_key, p_cb->local_r_key); + p_cb->loc_enc_size, p_cb->local_i_key, p_cb->local_r_key); - smp_br_state_machine_event(p_cb, SMP_BR_KEYS_RSP_EVT, NULL); - break; + smp_br_state_machine_event(p_cb, SMP_BR_KEYS_RSP_EVT, NULL); + break; } } } - if (!p_cb->cb_evt && p_cb->discard_sec_req) - { + if (!p_cb->cb_evt && p_cb->discard_sec_req) { p_cb->discard_sec_req = FALSE; smp_sm_event(p_cb, SMP_DISCARD_SEC_REQ_EVT, NULL); } @@ -238,8 +225,7 @@ void smp_send_pair_fail(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) SMP_TRACE_DEBUG("%s status=%d failure=%d ", __func__, p_cb->status, p_cb->failure); - if (p_cb->status <= SMP_MAX_FAIL_RSN_PER_SPEC && p_cb->status != SMP_SUCCESS) - { + if (p_cb->status <= SMP_MAX_FAIL_RSN_PER_SPEC && p_cb->status != SMP_SUCCESS) { smp_send_cmd(SMP_OPCODE_PAIRING_FAILED, p_cb); p_cb->wait_for_authorization_complete = TRUE; } @@ -255,8 +241,9 @@ void smp_send_pair_req(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) SMP_TRACE_DEBUG("%s\n", __func__); /* erase all keys when master sends pairing req*/ - if (p_dev_rec) + if (p_dev_rec) { btm_sec_clear_ble_keys(p_dev_rec); + } /* do not manipulate the key, let app decide, leave out to BTM to mandate key distribution for bonding case */ smp_send_cmd(SMP_OPCODE_PAIRING_REQ, p_cb); @@ -273,12 +260,12 @@ void smp_send_pair_rsp(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) p_cb->local_i_key &= p_cb->peer_i_key; p_cb->local_r_key &= p_cb->peer_r_key; - if (smp_send_cmd (SMP_OPCODE_PAIRING_RSP, p_cb)) - { - if (p_cb->selected_association_model == SMP_MODEL_SEC_CONN_OOB) + if (smp_send_cmd (SMP_OPCODE_PAIRING_RSP, p_cb)) { + if (p_cb->selected_association_model == SMP_MODEL_SEC_CONN_OOB) { smp_use_oob_private_key(p_cb, NULL); - else + } else { smp_decide_association_model(p_cb, NULL); + } } } @@ -412,8 +399,7 @@ void smp_send_csrk_info(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) SMP_TRACE_DEBUG("%s\n", __func__); smp_update_key_mask (p_cb, SMP_SEC_KEY_TYPE_CSRK, FALSE); - if (smp_send_cmd(SMP_OPCODE_SIGN_INFO, p_cb)) - { + if (smp_send_cmd(SMP_OPCODE_SIGN_INFO, p_cb)) { key.div = p_cb->div; key.sec_level = p_cb->sec_level; key.counter = 0; /* initialize the local counter */ @@ -453,40 +439,36 @@ void smp_proc_sec_req(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) SMP_TRACE_DEBUG("%s sec_req_act=0x%x", __func__, sec_req_act); - switch (sec_req_act) - { - case BTM_BLE_SEC_REQ_ACT_ENCRYPT: - SMP_TRACE_DEBUG("%s BTM_BLE_SEC_REQ_ACT_ENCRYPT", __func__); - smp_sm_event(p_cb, SMP_ENC_REQ_EVT, NULL); - break; + switch (sec_req_act) { + case BTM_BLE_SEC_REQ_ACT_ENCRYPT: + SMP_TRACE_DEBUG("%s BTM_BLE_SEC_REQ_ACT_ENCRYPT", __func__); + smp_sm_event(p_cb, SMP_ENC_REQ_EVT, NULL); + break; - case BTM_BLE_SEC_REQ_ACT_PAIR: - p_cb->secure_connections_only_mode_required = - (btm_cb.security_mode == BTM_SEC_MODE_SC) ? TRUE : FALSE; + case BTM_BLE_SEC_REQ_ACT_PAIR: + p_cb->secure_connections_only_mode_required = + (btm_cb.security_mode == BTM_SEC_MODE_SC) ? TRUE : FALSE; - /* respond to non SC pairing request as failure in SC only mode */ - if (p_cb->secure_connections_only_mode_required && - (auth_req & SMP_SC_SUPPORT_BIT) == 0) - { - reason = SMP_PAIR_AUTH_FAIL; - smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason); - } - else - { - /* initialize local i/r key to be default keys */ - p_cb->peer_auth_req = auth_req; - p_cb->local_r_key = p_cb->local_i_key = SMP_SEC_DEFAULT_KEY ; - p_cb->cb_evt = SMP_SEC_REQUEST_EVT; - } - break; + /* respond to non SC pairing request as failure in SC only mode */ + if (p_cb->secure_connections_only_mode_required && + (auth_req & SMP_SC_SUPPORT_BIT) == 0) { + reason = SMP_PAIR_AUTH_FAIL; + smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason); + } else { + /* initialize local i/r key to be default keys */ + p_cb->peer_auth_req = auth_req; + p_cb->local_r_key = p_cb->local_i_key = SMP_SEC_DEFAULT_KEY ; + p_cb->cb_evt = SMP_SEC_REQUEST_EVT; + } + break; - case BTM_BLE_SEC_REQ_ACT_DISCARD: - p_cb->discard_sec_req = TRUE; - break; + case BTM_BLE_SEC_REQ_ACT_DISCARD: + p_cb->discard_sec_req = TRUE; + break; - default: - /* do nothing */ - break; + default: + /* do nothing */ + break; } } @@ -496,14 +478,11 @@ void smp_proc_sec_req(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) *******************************************************************************/ void smp_proc_sec_grant(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) { - UINT8 res= *(UINT8 *)p_data; + UINT8 res = *(UINT8 *)p_data; SMP_TRACE_DEBUG("%s", __func__); - if (res != SMP_SUCCESS) - { + if (res != SMP_SUCCESS) { smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, p_data); - } - else /*otherwise, start pairing */ - { + } else { /*otherwise, start pairing */ /* send IO request callback */ p_cb->cb_evt = SMP_IO_CAP_REQ_EVT; } @@ -531,8 +510,9 @@ void smp_proc_pair_cmd(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) SMP_TRACE_DEBUG("%s\n", __func__); /* erase all keys if it is slave proc pairing req*/ - if (p_dev_rec && (p_cb->role == HCI_ROLE_SLAVE)) + if (p_dev_rec && (p_cb->role == HCI_ROLE_SLAVE)) { btm_sec_clear_ble_keys(p_dev_rec); + } p_cb->flags |= SMP_PAIR_FLAG_ENC_AFTER_PAIR; @@ -543,59 +523,49 @@ void smp_proc_pair_cmd(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) STREAM_TO_UINT8(p_cb->peer_i_key, p); STREAM_TO_UINT8(p_cb->peer_r_key, p); - if (smp_command_has_invalid_parameters(p_cb)) - { + if (smp_command_has_invalid_parameters(p_cb)) { reason = SMP_INVALID_PARAMETERS; smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason); return; } - if (p_cb->role == HCI_ROLE_SLAVE) - { - if (!(p_cb->flags & SMP_PAIR_FLAGS_WE_STARTED_DD)) - { + if (p_cb->role == HCI_ROLE_SLAVE) { + if (!(p_cb->flags & SMP_PAIR_FLAGS_WE_STARTED_DD)) { /* peer (master) started pairing sending Pairing Request */ p_cb->local_i_key = p_cb->peer_i_key; p_cb->local_r_key = p_cb->peer_r_key; p_cb->cb_evt = SMP_SEC_REQUEST_EVT; - } - else /* update local i/r key according to pairing request */ - { + } else { /* update local i/r key according to pairing request */ /* pairing started with this side (slave) sending Security Request */ p_cb->local_i_key &= p_cb->peer_i_key; p_cb->local_r_key &= p_cb->peer_r_key; p_cb->selected_association_model = smp_select_association_model(p_cb); if (p_cb->secure_connections_only_mode_required && - (!(p_cb->le_secure_connections_mode_is_used) || - (p_cb->selected_association_model == SMP_MODEL_SEC_CONN_JUSTWORKS))) - { + (!(p_cb->le_secure_connections_mode_is_used) || + (p_cb->selected_association_model == SMP_MODEL_SEC_CONN_JUSTWORKS))) { SMP_TRACE_ERROR("%s pairing failed - slave requires secure connection only mode", - __func__); + __func__); reason = SMP_PAIR_AUTH_FAIL; smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason); return; } - if (p_cb->selected_association_model == SMP_MODEL_SEC_CONN_OOB) - { - if (smp_request_oob_data(p_cb)) return; - } - else - { + if (p_cb->selected_association_model == SMP_MODEL_SEC_CONN_OOB) { + if (smp_request_oob_data(p_cb)) { + return; + } + } else { smp_send_pair_rsp(p_cb, NULL); } } - } - else /* Master receives pairing response */ - { + } else { /* Master receives pairing response */ p_cb->selected_association_model = smp_select_association_model(p_cb); if (p_cb->secure_connections_only_mode_required && - (!(p_cb->le_secure_connections_mode_is_used) || - (p_cb->selected_association_model == SMP_MODEL_SEC_CONN_JUSTWORKS))) - { + (!(p_cb->le_secure_connections_mode_is_used) || + (p_cb->selected_association_model == SMP_MODEL_SEC_CONN_JUSTWORKS))) { SMP_TRACE_ERROR ("Master requires secure connection only mode \ but it can't be provided -> Master fails pairing"); reason = SMP_PAIR_AUTH_FAIL; @@ -603,12 +573,11 @@ void smp_proc_pair_cmd(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) return; } - if (p_cb->selected_association_model == SMP_MODEL_SEC_CONN_OOB) - { - if (smp_request_oob_data(p_cb)) return; - } - else - { + if (p_cb->selected_association_model == SMP_MODEL_SEC_CONN_OOB) { + if (smp_request_oob_data(p_cb)) { + return; + } + } else { smp_decide_association_model(p_cb, NULL); } } @@ -625,14 +594,12 @@ void smp_proc_confirm(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) SMP_TRACE_DEBUG("%s\n", __func__); - if (smp_command_has_invalid_parameters(p_cb)) - { + if (smp_command_has_invalid_parameters(p_cb)) { smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason); return; } - if (p != NULL) - { + if (p != NULL) { /* save the SConfirm for comparison later */ STREAM_TO_ARRAY(p_cb->rconfirm, p, BT_OCTET16_LEN); } @@ -651,8 +618,7 @@ void smp_proc_init(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) SMP_TRACE_DEBUG("%s", __func__); - if (smp_command_has_invalid_parameters(p_cb)) - { + if (smp_command_has_invalid_parameters(p_cb)) { smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason); return; } @@ -672,8 +638,7 @@ void smp_proc_rand(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) SMP_TRACE_DEBUG("%s\n", __func__); - if (smp_command_has_invalid_parameters(p_cb)) - { + if (smp_command_has_invalid_parameters(p_cb)) { smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason); return; } @@ -697,8 +662,7 @@ void smp_process_pairing_public_key(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) SMP_TRACE_DEBUG("%s", __func__); - if (smp_command_has_invalid_parameters(p_cb)) - { + if (smp_command_has_invalid_parameters(p_cb)) { smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason); return; } @@ -721,16 +685,14 @@ void smp_process_pairing_commitment(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) SMP_TRACE_DEBUG("%s", __func__); - if (smp_command_has_invalid_parameters(p_cb)) - { + if (smp_command_has_invalid_parameters(p_cb)) { smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason); return; } p_cb->flags |= SMP_PAIR_FLAG_HAVE_PEER_COMM; - if (p != NULL) - { + if (p != NULL) { STREAM_TO_ARRAY(p_cb->remote_commitment, p, BT_OCTET16_LEN); } } @@ -746,14 +708,12 @@ void smp_process_dhkey_check(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) SMP_TRACE_DEBUG("%s", __func__); - if (smp_command_has_invalid_parameters(p_cb)) - { + if (smp_command_has_invalid_parameters(p_cb)) { smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason); return; } - if (p != NULL) - { + if (p != NULL) { STREAM_TO_ARRAY(p_cb->remote_dhkey_check, p, BT_OCTET16_LEN); } @@ -772,18 +732,14 @@ void smp_process_keypress_notification(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) SMP_TRACE_DEBUG("%s", __func__); p_cb->status = *(UINT8 *)p_data; - if (smp_command_has_invalid_parameters(p_cb)) - { + if (smp_command_has_invalid_parameters(p_cb)) { smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason); return; } - if (p != NULL) - { + if (p != NULL) { STREAM_TO_UINT8(p_cb->peer_keypress_notification, p); - } - else - { + } else { p_cb->peer_keypress_notification = BTM_SP_KEY_OUT_OF_RANGE; } p_cb->cb_evt = SMP_PEER_KEYPR_NOT_EVT; @@ -802,16 +758,16 @@ void smp_br_process_pairing_command(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) SMP_TRACE_DEBUG("%s", __func__); /* rejecting BR pairing request over non-SC BR link */ - if (!p_dev_rec->new_encryption_key_is_p256 && p_cb->role == HCI_ROLE_SLAVE) - { + if (!p_dev_rec->new_encryption_key_is_p256 && p_cb->role == HCI_ROLE_SLAVE) { reason = SMP_XTRANS_DERIVE_NOT_ALLOW; smp_br_state_machine_event(p_cb, SMP_BR_AUTH_CMPL_EVT, &reason); return; } /* erase all keys if it is slave proc pairing req*/ - if (p_dev_rec && (p_cb->role == HCI_ROLE_SLAVE)) + if (p_dev_rec && (p_cb->role == HCI_ROLE_SLAVE)) { btm_sec_clear_ble_keys(p_dev_rec); + } p_cb->flags |= SMP_PAIR_FLAG_ENC_AFTER_PAIR; @@ -822,8 +778,7 @@ void smp_br_process_pairing_command(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) STREAM_TO_UINT8(p_cb->peer_i_key, p); STREAM_TO_UINT8(p_cb->peer_r_key, p); - if (smp_command_has_invalid_parameters(p_cb)) - { + if (smp_command_has_invalid_parameters(p_cb)) { reason = SMP_INVALID_PARAMETERS; smp_br_state_machine_event(p_cb, SMP_BR_AUTH_CMPL_EVT, &reason); return; @@ -834,16 +789,13 @@ void smp_br_process_pairing_command(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) p_cb->local_i_key = p_cb->peer_i_key; p_cb->local_r_key = p_cb->peer_r_key; - if (p_cb->role == HCI_ROLE_SLAVE) - { + if (p_cb->role == HCI_ROLE_SLAVE) { p_dev_rec->new_encryption_key_is_p256 = FALSE; /* shortcut to skip Security Grant step */ p_cb->cb_evt = SMP_BR_KEYS_REQ_EVT; - } - else /* Master receives pairing response */ - { + } else { /* Master receives pairing response */ SMP_TRACE_DEBUG("%s master rcvs valid PAIRING RESPONSE." - " Supposed to move to key distribution phase. ", __func__); + " Supposed to move to key distribution phase. ", __func__); } /* auth_req received via BR/EDR SM channel is set to 0, @@ -858,14 +810,11 @@ void smp_br_process_pairing_command(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) *******************************************************************************/ void smp_br_process_security_grant(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) { - UINT8 res= *(UINT8 *)p_data; + UINT8 res = *(UINT8 *)p_data; SMP_TRACE_DEBUG("%s", __func__); - if (res != SMP_SUCCESS) - { + if (res != SMP_SUCCESS) { smp_br_state_machine_event(p_cb, SMP_BR_AUTH_CMPL_EVT, p_data); - } - else /*otherwise, start pairing */ - { + } else { /*otherwise, start pairing */ /* send IO request callback */ p_cb->cb_evt = SMP_BR_KEYS_REQ_EVT; } @@ -881,8 +830,8 @@ void smp_br_check_authorization_request(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) UINT8 reason = SMP_SUCCESS; SMP_TRACE_DEBUG("%s rcvs i_keys=0x%x r_keys=0x%x " - "(i-initiator r-responder)", __FUNCTION__, p_cb->local_i_key, - p_cb->local_r_key); + "(i-initiator r-responder)", __FUNCTION__, p_cb->local_i_key, + p_cb->local_r_key); /* In LE SC mode LK field is ignored when BR/EDR transport is used */ p_cb->local_i_key &= ~SMP_SEC_KEY_TYPE_LK; @@ -890,27 +839,24 @@ void smp_br_check_authorization_request(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) /* In LE SC mode only IRK, IAI, CSRK are exchanged with the peer. ** Set local_r_key on master to expect only these keys. */ - if (p_cb->role == HCI_ROLE_MASTER) - { + if (p_cb->role == HCI_ROLE_MASTER) { p_cb->local_r_key &= (SMP_SEC_KEY_TYPE_ID | SMP_SEC_KEY_TYPE_CSRK); } SMP_TRACE_DEBUG("%s rcvs upgrades: i_keys=0x%x r_keys=0x%x " - "(i-initiator r-responder)", __FUNCTION__, p_cb->local_i_key, - p_cb->local_r_key); + "(i-initiator r-responder)", __FUNCTION__, p_cb->local_i_key, + p_cb->local_r_key); if (/*((p_cb->peer_auth_req & SMP_AUTH_BOND) || (p_cb->loc_auth_req & SMP_AUTH_BOND)) &&*/ - (p_cb->local_i_key || p_cb->local_r_key)) - { + (p_cb->local_i_key || p_cb->local_r_key)) { smp_br_state_machine_event(p_cb, SMP_BR_BOND_REQ_EVT, NULL); /* if no peer key is expected, start master key distribution */ - if (p_cb->role == HCI_ROLE_MASTER && p_cb->local_r_key == 0) + if (p_cb->role == HCI_ROLE_MASTER && p_cb->local_r_key == 0) { smp_key_distribution_by_transport(p_cb, NULL); - } - else - { + } + } else { smp_br_state_machine_event(p_cb, SMP_BR_AUTH_CMPL_EVT, &reason); } } @@ -924,23 +870,21 @@ void smp_br_select_next_key(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) { UINT8 reason = SMP_SUCCESS; SMP_TRACE_DEBUG("%s role=%d (0-master) r_keys=0x%x i_keys=0x%x", - __func__, p_cb->role, p_cb->local_r_key, p_cb->local_i_key); + __func__, p_cb->role, p_cb->local_r_key, p_cb->local_i_key); - if (p_cb->role == HCI_ROLE_SLAVE|| - (!p_cb->local_r_key && p_cb->role == HCI_ROLE_MASTER)) - { + if (p_cb->role == HCI_ROLE_SLAVE || + (!p_cb->local_r_key && p_cb->role == HCI_ROLE_MASTER)) { smp_key_pick_key(p_cb, p_data); } - if (!p_cb->local_i_key && !p_cb->local_r_key) - { + if (!p_cb->local_i_key && !p_cb->local_r_key) { /* state check to prevent re-entrance */ - if (smp_get_br_state() == SMP_BR_STATE_BOND_PENDING) - { - if (p_cb->total_tx_unacked == 0) + if (smp_get_br_state() == SMP_BR_STATE_BOND_PENDING) { + if (p_cb->total_tx_unacked == 0) { smp_br_state_machine_event(p_cb, SMP_BR_AUTH_CMPL_EVT, &reason); - else + } else { p_cb->wait_for_authorization_complete = TRUE; + } } } } @@ -968,7 +912,7 @@ void smp_proc_master_id(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) tBTM_LE_PENC_KEYS le_key; SMP_TRACE_DEBUG("%s\np_cb->peer_auth_req = %d,p_cb->loc_auth_req= %d\n", __func__, - p_cb->peer_auth_req,p_cb->loc_auth_req); + p_cb->peer_auth_req, p_cb->loc_auth_req); smp_update_key_mask (p_cb, SMP_SEC_KEY_TYPE_ENC, TRUE); STREAM_TO_UINT16(le_key.ediv, p); @@ -1060,16 +1004,15 @@ void smp_proc_compare(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) UINT8 reason; SMP_TRACE_DEBUG("%s\n", __func__); - if (!memcmp(p_cb->rconfirm, p_data->key.p_data, BT_OCTET16_LEN)) - { + if (!memcmp(p_cb->rconfirm, p_data->key.p_data, BT_OCTET16_LEN)) { /* compare the max encryption key size, and save the smaller one for the link */ - if ( p_cb->peer_enc_size < p_cb->loc_enc_size) + if ( p_cb->peer_enc_size < p_cb->loc_enc_size) { p_cb->loc_enc_size = p_cb->peer_enc_size; + } - if (p_cb->role == HCI_ROLE_SLAVE) + if (p_cb->role == HCI_ROLE_SLAVE) { smp_sm_event(p_cb, SMP_RAND_EVT, NULL); - else - { + } else { /* master device always use received i/r key as keys to distribute */ p_cb->local_i_key = p_cb->peer_i_key; p_cb->local_r_key = p_cb->peer_r_key; @@ -1077,9 +1020,7 @@ void smp_proc_compare(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) smp_sm_event(p_cb, SMP_ENC_REQ_EVT, NULL); } - } - else - { + } else { reason = p_cb->failure = SMP_CONFIRM_VALUE_ERR; smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason); } @@ -1094,16 +1035,14 @@ void smp_proc_sl_key(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) UINT8 key_type = p_data->key.key_type; SMP_TRACE_DEBUG("%s\n", __func__); - if (key_type == SMP_KEY_TYPE_TK) - { + if (key_type == SMP_KEY_TYPE_TK) { smp_generate_srand_mrand_confirm(p_cb, NULL); - } - else if (key_type == SMP_KEY_TYPE_CFM) - { + } else if (key_type == SMP_KEY_TYPE_CFM) { smp_set_state(SMP_STATE_WAIT_CONFIRM); - if (p_cb->flags & SMP_PAIR_FLAGS_CMD_CONFIRM) + if (p_cb->flags & SMP_PAIR_FLAGS_CMD_CONFIRM) { smp_sm_event(p_cb, SMP_CONFIRM_EVT, NULL); + } } } @@ -1117,13 +1056,15 @@ void smp_start_enc(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) UINT8 reason = SMP_ENC_FAIL; SMP_TRACE_DEBUG("%s\n", __func__); - if (p_data != NULL) + if (p_data != NULL) { cmd = btm_ble_start_encrypt(p_cb->pairing_bda, TRUE, p_data->key.p_data); - else + } else { cmd = btm_ble_start_encrypt(p_cb->pairing_bda, FALSE, NULL); + } - if (cmd != BTM_CMD_STARTED && cmd != BTM_BUSY) + if (cmd != BTM_CMD_STARTED && cmd != BTM_BUSY) { smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason); + } } /******************************************************************************* @@ -1133,8 +1074,9 @@ void smp_start_enc(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) void smp_proc_discard(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) { SMP_TRACE_DEBUG("%s\n", __func__); - if (!(p_cb->flags & SMP_PAIR_FLAGS_WE_STARTED_DD)) + if (!(p_cb->flags & SMP_PAIR_FLAGS_WE_STARTED_DD)) { smp_reset_control_value(p_cb); + } } /******************************************************************************* @@ -1160,20 +1102,17 @@ void smp_check_auth_req(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) UINT8 reason = enc_enable ? SMP_SUCCESS : SMP_ENC_FAIL; SMP_TRACE_DEBUG("%s rcvs enc_enable=%d i_keys=0x%x r_keys=0x%x " - "(i-initiator r-responder)\n", - __func__, enc_enable, p_cb->local_i_key, p_cb->local_r_key); - if (enc_enable == 1) - { - if (p_cb->le_secure_connections_mode_is_used) - { + "(i-initiator r-responder)\n", + __func__, enc_enable, p_cb->local_i_key, p_cb->local_r_key); + if (enc_enable == 1) { + if (p_cb->le_secure_connections_mode_is_used) { /* In LE SC mode LTK is used instead of STK and has to be always saved */ p_cb->local_i_key |= SMP_SEC_KEY_TYPE_ENC; p_cb->local_r_key |= SMP_SEC_KEY_TYPE_ENC; - /* In LE SC mode LK is derived from LTK only if both sides request it */ - if (!(p_cb->local_i_key & SMP_SEC_KEY_TYPE_LK) || - !(p_cb->local_r_key & SMP_SEC_KEY_TYPE_LK)) - { + /* In LE SC mode LK is derived from LTK only if both sides request it */ + if (!(p_cb->local_i_key & SMP_SEC_KEY_TYPE_LK) || + !(p_cb->local_r_key & SMP_SEC_KEY_TYPE_LK)) { p_cb->local_i_key &= ~SMP_SEC_KEY_TYPE_LK; p_cb->local_r_key &= ~SMP_SEC_KEY_TYPE_LK; } @@ -1181,39 +1120,33 @@ void smp_check_auth_req(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) /* In LE SC mode only IRK, IAI, CSRK are exchanged with the peer. ** Set local_r_key on master to expect only these keys. */ - if (p_cb->role == HCI_ROLE_MASTER) - { + if (p_cb->role == HCI_ROLE_MASTER) { p_cb->local_r_key &= (SMP_SEC_KEY_TYPE_ID | SMP_SEC_KEY_TYPE_CSRK); } - } - else - { + } else { /* in legacy mode derivation of BR/EDR LK is not supported */ p_cb->local_i_key &= ~SMP_SEC_KEY_TYPE_LK; p_cb->local_r_key &= ~SMP_SEC_KEY_TYPE_LK; } SMP_TRACE_DEBUG("%s rcvs upgrades: i_keys=0x%x r_keys=0x%x " - "(i-initiator r-responder)\n", - __func__, p_cb->local_i_key, p_cb->local_r_key); + "(i-initiator r-responder)\n", + __func__, p_cb->local_i_key, p_cb->local_r_key); if (/*((p_cb->peer_auth_req & SMP_AUTH_BOND) || (p_cb->loc_auth_req & SMP_AUTH_BOND)) &&*/ - (p_cb->local_i_key || p_cb->local_r_key)) - { + (p_cb->local_i_key || p_cb->local_r_key)) { smp_sm_event(p_cb, SMP_BOND_REQ_EVT, NULL); + } else { + smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason); } - else - smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason); - } - else if (enc_enable == 0) - { + } else if (enc_enable == 0) { /* if failed for encryption after pairing, send callback */ - if (p_cb->flags & SMP_PAIR_FLAG_ENC_AFTER_PAIR) + if (p_cb->flags & SMP_PAIR_FLAG_ENC_AFTER_PAIR) { smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason); + } /* if enc failed for old security information */ /* if master device, clean up and abck to idle; slave device do nothing */ - else if (p_cb->role == HCI_ROLE_MASTER) - { + else if (p_cb->role == HCI_ROLE_MASTER) { smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason); } } @@ -1229,12 +1162,10 @@ void smp_key_pick_key(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) UINT8 i = 0; SMP_TRACE_DEBUG("%s key_to_dist=0x%x\n", __func__, key_to_dist); - while (i < SMP_KEY_DIST_TYPE_MAX) - { + while (i < SMP_KEY_DIST_TYPE_MAX) { SMP_TRACE_DEBUG("key to send = %02x, i = %d\n", key_to_dist, i); - if (key_to_dist & (1 << i)) - { + if (key_to_dist & (1 << i)) { SMP_TRACE_DEBUG("smp_distribute_act[%d]\n", i); (* smp_distribute_act[i])(p_cb, p_data); break; @@ -1250,29 +1181,26 @@ void smp_key_distribution(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) { UINT8 reason = SMP_SUCCESS; SMP_TRACE_DEBUG("\n%s role=%d (0-master) r_keys=0x%x i_keys=0x%x\n", - __func__, p_cb->role, p_cb->local_r_key, p_cb->local_i_key); + __func__, p_cb->role, p_cb->local_r_key, p_cb->local_i_key); if (p_cb->role == HCI_ROLE_SLAVE || - (!p_cb->local_r_key && p_cb->role == HCI_ROLE_MASTER)) - { + (!p_cb->local_r_key && p_cb->role == HCI_ROLE_MASTER)) { smp_key_pick_key(p_cb, p_data); } - if (!p_cb->local_i_key && !p_cb->local_r_key) - { + if (!p_cb->local_i_key && !p_cb->local_r_key) { /* state check to prevent re-entrant */ - if (smp_get_state() == SMP_STATE_BOND_PENDING) - { - if (p_cb->derive_lk) - { + if (smp_get_state() == SMP_STATE_BOND_PENDING) { + if (p_cb->derive_lk) { smp_derive_link_key_from_long_term_key(p_cb, NULL); p_cb->derive_lk = FALSE; } - if (p_cb->total_tx_unacked == 0) + if (p_cb->total_tx_unacked == 0) { smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason); - else + } else { p_cb->wait_for_authorization_complete = TRUE; + } } } } @@ -1292,82 +1220,79 @@ void smp_decide_association_model(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) SMP_TRACE_DEBUG("%s Association Model = %d\n", __func__, p_cb->selected_association_model); - switch (p_cb->selected_association_model) - { - case SMP_MODEL_ENCRYPTION_ONLY: /* TK = 0, go calculate Confirm */ - if (p_cb->role == HCI_ROLE_MASTER && + switch (p_cb->selected_association_model) { + case SMP_MODEL_ENCRYPTION_ONLY: /* TK = 0, go calculate Confirm */ + if (p_cb->role == HCI_ROLE_MASTER && ((p_cb->peer_auth_req & SMP_AUTH_YN_BIT) != 0) && - ((p_cb->loc_auth_req & SMP_AUTH_YN_BIT) == 0)) - { - SMP_TRACE_ERROR ("IO capability does not meet authentication requirement\n"); - failure = SMP_PAIR_AUTH_FAIL; - p = (tSMP_INT_DATA *)&failure; - int_evt = SMP_AUTH_CMPL_EVT; - } - else - { - p_cb->sec_level = SMP_SEC_UNAUTHENTICATE; - SMP_TRACE_EVENT ("p_cb->sec_level =%d (SMP_SEC_UNAUTHENTICATE) \n", p_cb->sec_level ); - - key.key_type = SMP_KEY_TYPE_TK; - key.p_data = p_cb->tk; - p = (tSMP_INT_DATA *)&key; - - memset(p_cb->tk, 0, BT_OCTET16_LEN); - /* TK, ready */ - int_evt = SMP_KEY_READY_EVT; - } - break; - - case SMP_MODEL_PASSKEY: - p_cb->sec_level = SMP_SEC_AUTHENTICATED; - SMP_TRACE_EVENT ("p_cb->sec_level =%d (SMP_SEC_AUTHENTICATED) \n", p_cb->sec_level ); - - p_cb->cb_evt = SMP_PASSKEY_REQ_EVT; - int_evt = SMP_TK_REQ_EVT; - break; - - case SMP_MODEL_OOB: - SMP_TRACE_ERROR ("Association Model = SMP_MODEL_OOB\n"); - p_cb->sec_level = SMP_SEC_AUTHENTICATED; - SMP_TRACE_EVENT ("p_cb->sec_level =%d (SMP_SEC_AUTHENTICATED) \n", p_cb->sec_level ); - - p_cb->cb_evt = SMP_OOB_REQ_EVT; - int_evt = SMP_TK_REQ_EVT; - break; - - case SMP_MODEL_KEY_NOTIF: - p_cb->sec_level = SMP_SEC_AUTHENTICATED; - SMP_TRACE_DEBUG("Need to generate Passkey\n"); - - /* generate passkey and notify application */ - smp_generate_passkey(p_cb, NULL); - break; - - case SMP_MODEL_SEC_CONN_JUSTWORKS: - case SMP_MODEL_SEC_CONN_NUM_COMP: - case SMP_MODEL_SEC_CONN_PASSKEY_ENT: - case SMP_MODEL_SEC_CONN_PASSKEY_DISP: - case SMP_MODEL_SEC_CONN_OOB: - int_evt = SMP_PUBL_KEY_EXCH_REQ_EVT; - break; - - case SMP_MODEL_OUT_OF_RANGE: - SMP_TRACE_ERROR("Association Model = SMP_MODEL_OUT_OF_RANGE (failed)\n"); + ((p_cb->loc_auth_req & SMP_AUTH_YN_BIT) == 0)) { + SMP_TRACE_ERROR ("IO capability does not meet authentication requirement\n"); + failure = SMP_PAIR_AUTH_FAIL; p = (tSMP_INT_DATA *)&failure; int_evt = SMP_AUTH_CMPL_EVT; - break; + } else { + p_cb->sec_level = SMP_SEC_UNAUTHENTICATE; + SMP_TRACE_EVENT ("p_cb->sec_level =%d (SMP_SEC_UNAUTHENTICATE) \n", p_cb->sec_level ); - default: - SMP_TRACE_ERROR("Association Model = %d (SOMETHING IS WRONG WITH THE CODE)\n", - p_cb->selected_association_model); - p = (tSMP_INT_DATA *)&failure; - int_evt = SMP_AUTH_CMPL_EVT; + key.key_type = SMP_KEY_TYPE_TK; + key.p_data = p_cb->tk; + p = (tSMP_INT_DATA *)&key; + + memset(p_cb->tk, 0, BT_OCTET16_LEN); + /* TK, ready */ + int_evt = SMP_KEY_READY_EVT; + } + break; + + case SMP_MODEL_PASSKEY: + p_cb->sec_level = SMP_SEC_AUTHENTICATED; + SMP_TRACE_EVENT ("p_cb->sec_level =%d (SMP_SEC_AUTHENTICATED) \n", p_cb->sec_level ); + + p_cb->cb_evt = SMP_PASSKEY_REQ_EVT; + int_evt = SMP_TK_REQ_EVT; + break; + + case SMP_MODEL_OOB: + SMP_TRACE_ERROR ("Association Model = SMP_MODEL_OOB\n"); + p_cb->sec_level = SMP_SEC_AUTHENTICATED; + SMP_TRACE_EVENT ("p_cb->sec_level =%d (SMP_SEC_AUTHENTICATED) \n", p_cb->sec_level ); + + p_cb->cb_evt = SMP_OOB_REQ_EVT; + int_evt = SMP_TK_REQ_EVT; + break; + + case SMP_MODEL_KEY_NOTIF: + p_cb->sec_level = SMP_SEC_AUTHENTICATED; + SMP_TRACE_DEBUG("Need to generate Passkey\n"); + + /* generate passkey and notify application */ + smp_generate_passkey(p_cb, NULL); + break; + + case SMP_MODEL_SEC_CONN_JUSTWORKS: + case SMP_MODEL_SEC_CONN_NUM_COMP: + case SMP_MODEL_SEC_CONN_PASSKEY_ENT: + case SMP_MODEL_SEC_CONN_PASSKEY_DISP: + case SMP_MODEL_SEC_CONN_OOB: + int_evt = SMP_PUBL_KEY_EXCH_REQ_EVT; + break; + + case SMP_MODEL_OUT_OF_RANGE: + SMP_TRACE_ERROR("Association Model = SMP_MODEL_OUT_OF_RANGE (failed)\n"); + p = (tSMP_INT_DATA *)&failure; + int_evt = SMP_AUTH_CMPL_EVT; + break; + + default: + SMP_TRACE_ERROR("Association Model = %d (SOMETHING IS WRONG WITH THE CODE)\n", + p_cb->selected_association_model); + p = (tSMP_INT_DATA *)&failure; + int_evt = SMP_AUTH_CMPL_EVT; } SMP_TRACE_EVENT ("sec_level=%d \n", p_cb->sec_level ); - if (int_evt) + if (int_evt) { smp_sm_event(p_cb, int_evt, p); + } } /******************************************************************************* @@ -1379,30 +1304,27 @@ void smp_process_io_response(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) uint8_t reason = SMP_PAIR_AUTH_FAIL; SMP_TRACE_DEBUG("%s\n", __func__); - if (p_cb->flags & SMP_PAIR_FLAGS_WE_STARTED_DD) - { + if (p_cb->flags & SMP_PAIR_FLAGS_WE_STARTED_DD) { /* pairing started by local (slave) Security Request */ smp_set_state(SMP_STATE_SEC_REQ_PENDING); smp_send_cmd(SMP_OPCODE_SEC_REQ, p_cb); - } - else /* plan to send pairing respond */ - { + } else { /* plan to send pairing respond */ /* pairing started by peer (master) Pairing Request */ p_cb->selected_association_model = smp_select_association_model(p_cb); if (p_cb->secure_connections_only_mode_required && - (!(p_cb->le_secure_connections_mode_is_used) || - (p_cb->selected_association_model == SMP_MODEL_SEC_CONN_JUSTWORKS))) - { + (!(p_cb->le_secure_connections_mode_is_used) || + (p_cb->selected_association_model == SMP_MODEL_SEC_CONN_JUSTWORKS))) { SMP_TRACE_ERROR ("Slave requires secure connection only mode \ but it can't be provided -> Slave fails pairing\n"); smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason); return; } - if (p_cb->selected_association_model == SMP_MODEL_SEC_CONN_OOB) - { - if (smp_request_oob_data(p_cb)) return; + if (p_cb->selected_association_model == SMP_MODEL_SEC_CONN_OOB) { + if (smp_request_oob_data(p_cb)) { + return; + } } smp_send_pair_rsp(p_cb, NULL); } @@ -1439,8 +1361,7 @@ void smp_br_send_pair_response(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) *******************************************************************************/ void smp_pairing_cmpl(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) { - if (p_cb->total_tx_unacked == 0) - { + if (p_cb->total_tx_unacked == 0) { /* update connection parameter to remote preferred */ L2CA_EnableUpdateBleConnParams(p_cb->pairing_bda, TRUE); /* process the pairing complete */ @@ -1467,8 +1388,7 @@ void smp_pair_terminate(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) *******************************************************************************/ void smp_idle_terminate(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) { - if (p_cb->flags & SMP_PAIR_FLAGS_WE_STARTED_DD) - { + if (p_cb->flags & SMP_PAIR_FLAGS_WE_STARTED_DD) { SMP_TRACE_DEBUG("Pairing terminated at IDLE state.\n"); p_cb->status = SMP_FAIL; smp_proc_pairing_cmpl(p_cb); @@ -1496,14 +1416,15 @@ void smp_fast_conn_param(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) *******************************************************************************/ void smp_both_have_public_keys(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) { - SMP_TRACE_DEBUG("%s\n",__func__); + SMP_TRACE_DEBUG("%s\n", __func__); /* invokes DHKey computation */ smp_compute_dhkey(p_cb); /* on slave side invokes sending local public key to the peer */ - if (p_cb->role == HCI_ROLE_SLAVE) + if (p_cb->role == HCI_ROLE_SLAVE) { smp_send_pair_public_key(p_cb, NULL); + } smp_sm_event(p_cb, SMP_SC_DHKEY_CMPLT_EVT, NULL); } @@ -1518,42 +1439,38 @@ void smp_start_secure_connection_phase1(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) { SMP_TRACE_DEBUG("%s\n", __func__); - if (p_cb->selected_association_model == SMP_MODEL_SEC_CONN_JUSTWORKS) - { + if (p_cb->selected_association_model == SMP_MODEL_SEC_CONN_JUSTWORKS) { p_cb->sec_level = SMP_SEC_UNAUTHENTICATE; SMP_TRACE_EVENT ("p_cb->sec_level =%d (SMP_SEC_UNAUTHENTICATE)\n ", p_cb->sec_level ); - } - else - { + } else { p_cb->sec_level = SMP_SEC_AUTHENTICATED; SMP_TRACE_EVENT ("p_cb->sec_level =%d (SMP_SEC_AUTHENTICATED)\n ", p_cb->sec_level ); } - switch(p_cb->selected_association_model) - { - case SMP_MODEL_SEC_CONN_JUSTWORKS: - case SMP_MODEL_SEC_CONN_NUM_COMP: - memset(p_cb->local_random, 0, BT_OCTET16_LEN); - smp_start_nonce_generation(p_cb); - break; - case SMP_MODEL_SEC_CONN_PASSKEY_ENT: - /* user has to provide passkey */ - p_cb->cb_evt = SMP_PASSKEY_REQ_EVT; - smp_sm_event(p_cb, SMP_TK_REQ_EVT, NULL); - break; - case SMP_MODEL_SEC_CONN_PASSKEY_DISP: - /* passkey has to be provided to user */ - SMP_TRACE_DEBUG("Need to generate SC Passkey\n"); - smp_generate_passkey(p_cb, NULL); - break; - case SMP_MODEL_SEC_CONN_OOB: - /* use the available OOB information */ - smp_process_secure_connection_oob_data(p_cb, NULL); - break; - default: - SMP_TRACE_ERROR ("Association Model = %d is not used in LE SC\n", - p_cb->selected_association_model); - break; + switch (p_cb->selected_association_model) { + case SMP_MODEL_SEC_CONN_JUSTWORKS: + case SMP_MODEL_SEC_CONN_NUM_COMP: + memset(p_cb->local_random, 0, BT_OCTET16_LEN); + smp_start_nonce_generation(p_cb); + break; + case SMP_MODEL_SEC_CONN_PASSKEY_ENT: + /* user has to provide passkey */ + p_cb->cb_evt = SMP_PASSKEY_REQ_EVT; + smp_sm_event(p_cb, SMP_TK_REQ_EVT, NULL); + break; + case SMP_MODEL_SEC_CONN_PASSKEY_DISP: + /* passkey has to be provided to user */ + SMP_TRACE_DEBUG("Need to generate SC Passkey\n"); + smp_generate_passkey(p_cb, NULL); + break; + case SMP_MODEL_SEC_CONN_OOB: + /* use the available OOB information */ + smp_process_secure_connection_oob_data(p_cb, NULL); + break; + default: + SMP_TRACE_ERROR ("Association Model = %d is not used in LE SC\n", + p_cb->selected_association_model); + break; } } @@ -1567,62 +1484,52 @@ void smp_process_local_nonce(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) { SMP_TRACE_DEBUG("%s\n", __func__); - switch(p_cb->selected_association_model) - { - case SMP_MODEL_SEC_CONN_JUSTWORKS: - case SMP_MODEL_SEC_CONN_NUM_COMP: - if (p_cb->role == HCI_ROLE_SLAVE) - { - /* slave calculates and sends local commitment */ - smp_calculate_local_commitment(p_cb); - smp_send_commitment(p_cb, NULL); - /* slave has to wait for peer nonce */ + switch (p_cb->selected_association_model) { + case SMP_MODEL_SEC_CONN_JUSTWORKS: + case SMP_MODEL_SEC_CONN_NUM_COMP: + if (p_cb->role == HCI_ROLE_SLAVE) { + /* slave calculates and sends local commitment */ + smp_calculate_local_commitment(p_cb); + smp_send_commitment(p_cb, NULL); + /* slave has to wait for peer nonce */ + smp_set_state(SMP_STATE_WAIT_NONCE); + } else { /* i.e. master */ + if (p_cb->flags & SMP_PAIR_FLAG_HAVE_PEER_COMM) { + /* slave commitment is already received, send local nonce, wait for remote nonce*/ + SMP_TRACE_DEBUG("master in assoc mode = %d \ + already rcvd slave commitment - race condition\n", + p_cb->selected_association_model); + p_cb->flags &= ~SMP_PAIR_FLAG_HAVE_PEER_COMM; + smp_send_rand(p_cb, NULL); smp_set_state(SMP_STATE_WAIT_NONCE); } - else /* i.e. master */ - { - if (p_cb->flags & SMP_PAIR_FLAG_HAVE_PEER_COMM) - { - /* slave commitment is already received, send local nonce, wait for remote nonce*/ - SMP_TRACE_DEBUG("master in assoc mode = %d \ - already rcvd slave commitment - race condition\n", - p_cb->selected_association_model); - p_cb->flags &= ~SMP_PAIR_FLAG_HAVE_PEER_COMM; - smp_send_rand(p_cb, NULL); - smp_set_state(SMP_STATE_WAIT_NONCE); - } - } - break; - case SMP_MODEL_SEC_CONN_PASSKEY_ENT: - case SMP_MODEL_SEC_CONN_PASSKEY_DISP: - smp_calculate_local_commitment(p_cb); + } + break; + case SMP_MODEL_SEC_CONN_PASSKEY_ENT: + case SMP_MODEL_SEC_CONN_PASSKEY_DISP: + smp_calculate_local_commitment(p_cb); - if (p_cb->role == HCI_ROLE_MASTER) - { + if (p_cb->role == HCI_ROLE_MASTER) { + smp_send_commitment(p_cb, NULL); + } else { /* slave */ + if (p_cb->flags & SMP_PAIR_FLAG_HAVE_PEER_COMM) { + /* master commitment is already received */ smp_send_commitment(p_cb, NULL); + smp_set_state(SMP_STATE_WAIT_NONCE); } - else /* slave */ - { - if (p_cb->flags & SMP_PAIR_FLAG_HAVE_PEER_COMM) - { - /* master commitment is already received */ - smp_send_commitment(p_cb, NULL); - smp_set_state(SMP_STATE_WAIT_NONCE); - } - } - break; - case SMP_MODEL_SEC_CONN_OOB: - if (p_cb->role == HCI_ROLE_MASTER) - { - smp_send_rand(p_cb, NULL); - } + } + break; + case SMP_MODEL_SEC_CONN_OOB: + if (p_cb->role == HCI_ROLE_MASTER) { + smp_send_rand(p_cb, NULL); + } - smp_set_state(SMP_STATE_WAIT_NONCE); - break; - default: - SMP_TRACE_ERROR ("Association Model = %d is not used in LE SC\n", - p_cb->selected_association_model); - break; + smp_set_state(SMP_STATE_WAIT_NONCE); + break; + default: + SMP_TRACE_ERROR ("Association Model = %d is not used in LE SC\n", + p_cb->selected_association_model); + break; } } @@ -1639,76 +1546,64 @@ void smp_process_peer_nonce(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) SMP_TRACE_DEBUG("%s start \n", __func__); - switch(p_cb->selected_association_model) - { - case SMP_MODEL_SEC_CONN_JUSTWORKS: - case SMP_MODEL_SEC_CONN_NUM_COMP: - /* in these models only master receives commitment */ - if (p_cb->role == HCI_ROLE_MASTER) - { - if (!smp_check_commitment(p_cb)) - { - reason = p_cb->failure = SMP_CONFIRM_VALUE_ERR; - smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason); - break; - } - } - else - { - /* slave sends local nonce */ - smp_send_rand(p_cb, NULL); - } - - if(p_cb->selected_association_model == SMP_MODEL_SEC_CONN_JUSTWORKS) - { - /* go directly to phase 2 */ - smp_sm_event(p_cb, SMP_SC_PHASE1_CMPLT_EVT, NULL); - } - else /* numeric comparison */ - { - smp_set_state(SMP_STATE_WAIT_NONCE); - smp_sm_event(p_cb, SMP_SC_CALC_NC_EVT, NULL); - } - break; - case SMP_MODEL_SEC_CONN_PASSKEY_ENT: - case SMP_MODEL_SEC_CONN_PASSKEY_DISP: - if (!smp_check_commitment(p_cb)) - { + switch (p_cb->selected_association_model) { + case SMP_MODEL_SEC_CONN_JUSTWORKS: + case SMP_MODEL_SEC_CONN_NUM_COMP: + /* in these models only master receives commitment */ + if (p_cb->role == HCI_ROLE_MASTER) { + if (!smp_check_commitment(p_cb)) { reason = p_cb->failure = SMP_CONFIRM_VALUE_ERR; smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason); break; } + } else { + /* slave sends local nonce */ + smp_send_rand(p_cb, NULL); + } - if (p_cb->role == HCI_ROLE_SLAVE) - { - smp_send_rand(p_cb, NULL); - } - - if (++p_cb->round < 20) - { - smp_set_state(SMP_STATE_SEC_CONN_PHS1_START); - p_cb->flags &= ~SMP_PAIR_FLAG_HAVE_PEER_COMM; - smp_start_nonce_generation(p_cb); - break; - } - + if (p_cb->selected_association_model == SMP_MODEL_SEC_CONN_JUSTWORKS) { + /* go directly to phase 2 */ smp_sm_event(p_cb, SMP_SC_PHASE1_CMPLT_EVT, NULL); + } else { /* numeric comparison */ + smp_set_state(SMP_STATE_WAIT_NONCE); + smp_sm_event(p_cb, SMP_SC_CALC_NC_EVT, NULL); + } + break; + case SMP_MODEL_SEC_CONN_PASSKEY_ENT: + case SMP_MODEL_SEC_CONN_PASSKEY_DISP: + if (!smp_check_commitment(p_cb)) { + reason = p_cb->failure = SMP_CONFIRM_VALUE_ERR; + smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason); break; - case SMP_MODEL_SEC_CONN_OOB: - if (p_cb->role == HCI_ROLE_SLAVE) - { - smp_send_rand(p_cb, NULL); - } + } - smp_sm_event(p_cb, SMP_SC_PHASE1_CMPLT_EVT, NULL); - break; - default: - SMP_TRACE_ERROR ("Association Model = %d is not used in LE SC\n", - p_cb->selected_association_model); + if (p_cb->role == HCI_ROLE_SLAVE) { + smp_send_rand(p_cb, NULL); + } + + if (++p_cb->round < 20) { + smp_set_state(SMP_STATE_SEC_CONN_PHS1_START); + p_cb->flags &= ~SMP_PAIR_FLAG_HAVE_PEER_COMM; + smp_start_nonce_generation(p_cb); break; + } + + smp_sm_event(p_cb, SMP_SC_PHASE1_CMPLT_EVT, NULL); + break; + case SMP_MODEL_SEC_CONN_OOB: + if (p_cb->role == HCI_ROLE_SLAVE) { + smp_send_rand(p_cb, NULL); + } + + smp_sm_event(p_cb, SMP_SC_PHASE1_CMPLT_EVT, NULL); + break; + default: + SMP_TRACE_ERROR ("Association Model = %d is not used in LE SC\n", + p_cb->selected_association_model); + break; } - SMP_TRACE_DEBUG("%s end\n ",__FUNCTION__); + SMP_TRACE_DEBUG("%s end\n ", __FUNCTION__); } /******************************************************************************* @@ -1722,8 +1617,7 @@ void smp_match_dhkey_checks(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) SMP_TRACE_DEBUG("%s\n", __func__); - if (memcmp(p_data->key.p_data, p_cb->remote_dhkey_check, BT_OCTET16_LEN)) - { + if (memcmp(p_data->key.p_data, p_cb->remote_dhkey_check, BT_OCTET16_LEN)) { SMP_TRACE_WARNING ("dhkey chcks do no match\n"); p_cb->failure = reason; smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason); @@ -1733,15 +1627,13 @@ void smp_match_dhkey_checks(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) SMP_TRACE_EVENT ("dhkey chcks match\n"); /* compare the max encryption key size, and save the smaller one for the link */ - if (p_cb->peer_enc_size < p_cb->loc_enc_size) + if (p_cb->peer_enc_size < p_cb->loc_enc_size) { p_cb->loc_enc_size = p_cb->peer_enc_size; - - if (p_cb->role == HCI_ROLE_SLAVE) - { - smp_sm_event(p_cb, SMP_PAIR_DHKEY_CHCK_EVT, NULL); } - else - { + + if (p_cb->role == HCI_ROLE_SLAVE) { + smp_sm_event(p_cb, SMP_PAIR_DHKEY_CHCK_EVT, NULL); + } else { /* master device always use received i/r key as keys to distribute */ p_cb->local_i_key = p_cb->peer_i_key; p_cb->local_r_key = p_cb->peer_r_key; @@ -1758,7 +1650,7 @@ void smp_match_dhkey_checks(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) *******************************************************************************/ void smp_move_to_secure_connections_phase2(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) { - SMP_TRACE_DEBUG("%s\n",__func__); + SMP_TRACE_DEBUG("%s\n", __func__); smp_sm_event(p_cb, SMP_SC_PHASE1_CMPLT_EVT, NULL); } @@ -1771,10 +1663,11 @@ void smp_move_to_secure_connections_phase2(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) *******************************************************************************/ void smp_phase_2_dhkey_checks_are_present(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) { - SMP_TRACE_DEBUG("%s\n",__func__); + SMP_TRACE_DEBUG("%s\n", __func__); - if (p_cb->flags & SMP_PAIR_FLAG_HAVE_PEER_DHK_CHK) + if (p_cb->flags & SMP_PAIR_FLAG_HAVE_PEER_DHK_CHK) { smp_sm_event(p_cb, SMP_SC_2_DHCK_CHKS_PRES_EVT, NULL); + } } /******************************************************************************* @@ -1787,14 +1680,12 @@ void smp_phase_2_dhkey_checks_are_present(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) *******************************************************************************/ void smp_wait_for_both_public_keys(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) { - SMP_TRACE_DEBUG("%s\n",__func__); + SMP_TRACE_DEBUG("%s\n", __func__); if ((p_cb->flags & SMP_PAIR_FLAG_HAVE_PEER_PUBL_KEY) && - (p_cb->flags & SMP_PAIR_FLAG_HAVE_LOCAL_PUBL_KEY)) - { + (p_cb->flags & SMP_PAIR_FLAG_HAVE_LOCAL_PUBL_KEY)) { if ((p_cb->role == HCI_ROLE_SLAVE) && - ((p_cb->req_oob_type == SMP_OOB_LOCAL) || (p_cb->req_oob_type == SMP_OOB_BOTH))) - { + ((p_cb->req_oob_type == SMP_OOB_LOCAL) || (p_cb->req_oob_type == SMP_OOB_BOTH))) { smp_set_state(SMP_STATE_PUBLIC_KEY_EXCH); } smp_sm_event(p_cb, SMP_BOTH_PUBL_KEYS_RCVD_EVT, NULL); @@ -1829,24 +1720,18 @@ void smp_process_secure_connection_oob_data(tSMP_CB *p_cb, tSMP_INT_DATA *p_data SMP_TRACE_DEBUG("%s\n", __func__); tSMP_SC_OOB_DATA *p_sc_oob_data = &p_cb->sc_oob_data; - if (p_sc_oob_data->loc_oob_data.present) - { + if (p_sc_oob_data->loc_oob_data.present) { memcpy(p_cb->local_random, p_sc_oob_data->loc_oob_data.randomizer, sizeof(p_cb->local_random)); - } - else - { + } else { SMP_TRACE_EVENT ("local OOB randomizer is absent\n"); memset(p_cb->local_random, 0, sizeof (p_cb->local_random)); } - if (!p_sc_oob_data->peer_oob_data.present) - { + if (!p_sc_oob_data->peer_oob_data.present) { SMP_TRACE_EVENT ("peer OOB data is absent\n"); memset(p_cb->peer_random, 0, sizeof (p_cb->peer_random)); - } - else - { + } else { memcpy(p_cb->peer_random, p_sc_oob_data->peer_oob_data.randomizer, sizeof(p_cb->peer_random)); memcpy(p_cb->remote_commitment, p_sc_oob_data->peer_oob_data.commitment, @@ -1854,15 +1739,13 @@ void smp_process_secure_connection_oob_data(tSMP_CB *p_cb, tSMP_INT_DATA *p_data UINT8 reason = SMP_CONFIRM_VALUE_ERR; /* check commitment */ - if (!smp_check_commitment(p_cb)) - { + if (!smp_check_commitment(p_cb)) { p_cb->failure = reason; smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason); return; } - if (p_cb->peer_oob_flag != SMP_OOB_PRESENT) - { + if (p_cb->peer_oob_flag != SMP_OOB_PRESENT) { /* the peer doesn't have local randomiser */ SMP_TRACE_EVENT ("peer didn't receive local OOB data, set local randomizer to 0\n"); memset(p_cb->local_random, 0, sizeof (p_cb->local_random)); @@ -1909,23 +1792,23 @@ void smp_set_local_oob_random_commitment(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) #if SMP_DEBUG == TRUE UINT8 *p_print = NULL; SMP_TRACE_DEBUG("local SC OOB data set:\n"); - p_print = (UINT8*) &p_cb->sc_oob_data.loc_oob_data.addr_sent_to; + p_print = (UINT8 *) &p_cb->sc_oob_data.loc_oob_data.addr_sent_to; smp_debug_print_nbyte_little_endian (p_print, (const UINT8 *)"addr_sent_to", sizeof(tBLE_BD_ADDR)); - p_print = (UINT8*) &p_cb->sc_oob_data.loc_oob_data.private_key_used; + p_print = (UINT8 *) &p_cb->sc_oob_data.loc_oob_data.private_key_used; smp_debug_print_nbyte_little_endian (p_print, (const UINT8 *)"private_key_used", BT_OCTET32_LEN); - p_print = (UINT8*) &p_cb->sc_oob_data.loc_oob_data.publ_key_used.x; + p_print = (UINT8 *) &p_cb->sc_oob_data.loc_oob_data.publ_key_used.x; smp_debug_print_nbyte_little_endian (p_print, (const UINT8 *)"publ_key_used.x", BT_OCTET32_LEN); - p_print = (UINT8*) &p_cb->sc_oob_data.loc_oob_data.publ_key_used.y; + p_print = (UINT8 *) &p_cb->sc_oob_data.loc_oob_data.publ_key_used.y; smp_debug_print_nbyte_little_endian (p_print, (const UINT8 *)"publ_key_used.y", BT_OCTET32_LEN); - p_print = (UINT8*) &p_cb->sc_oob_data.loc_oob_data.randomizer; + p_print = (UINT8 *) &p_cb->sc_oob_data.loc_oob_data.randomizer; smp_debug_print_nbyte_little_endian (p_print, (const UINT8 *)"randomizer", BT_OCTET16_LEN); - p_print = (UINT8*) &p_cb->sc_oob_data.loc_oob_data.commitment; - smp_debug_print_nbyte_little_endian (p_print,(const UINT8 *) "commitment", + p_print = (UINT8 *) &p_cb->sc_oob_data.loc_oob_data.commitment; + smp_debug_print_nbyte_little_endian (p_print, (const UINT8 *) "commitment", BT_OCTET16_LEN); SMP_TRACE_DEBUG(""); #endif @@ -1955,12 +1838,10 @@ void smp_link_encrypted(BD_ADDR bda, UINT8 encr_enable) SMP_TRACE_DEBUG("%s encr_enable=%d\n", __func__, encr_enable); - if (memcmp(&smp_cb.pairing_bda[0], bda, BD_ADDR_LEN) == 0) - { + if (memcmp(&smp_cb.pairing_bda[0], bda, BD_ADDR_LEN) == 0) { /* encryption completed with STK, remmeber the key size now, could be overwite * when key exchange happens */ - if (p_cb->loc_enc_size != 0 && encr_enable) - { + if (p_cb->loc_enc_size != 0 && encr_enable) { /* update the link encryption key size if a SMP pairing just performed */ btm_ble_update_sec_key_size(bda, p_cb->loc_enc_size); } @@ -1984,22 +1865,19 @@ BOOLEAN smp_proc_ltk_request(BD_ADDR bda) SMP_TRACE_DEBUG("%s state = %d\n", __func__, smp_cb.state); BOOLEAN match = FALSE; - if (!memcmp(bda, smp_cb.pairing_bda, BD_ADDR_LEN)) - { + if (!memcmp(bda, smp_cb.pairing_bda, BD_ADDR_LEN)) { match = TRUE; } else { BD_ADDR dummy_bda = {0}; tBTM_SEC_DEV_REC *p_dev_rec = btm_find_dev(bda); if (p_dev_rec != NULL && - 0 == memcmp(p_dev_rec->ble.pseudo_addr, smp_cb.pairing_bda, BD_ADDR_LEN) && - 0 != memcmp(p_dev_rec->ble.pseudo_addr, dummy_bda, BD_ADDR_LEN)) - { + 0 == memcmp(p_dev_rec->ble.pseudo_addr, smp_cb.pairing_bda, BD_ADDR_LEN) && + 0 != memcmp(p_dev_rec->ble.pseudo_addr, dummy_bda, BD_ADDR_LEN)) { match = TRUE; } } - if (match && smp_cb.state == SMP_STATE_ENCRYPTION_PENDING) - { + if (match && smp_cb.state == SMP_STATE_ENCRYPTION_PENDING) { smp_sm_event(&smp_cb, SMP_ENC_REQ_EVT, NULL); return TRUE; } @@ -2062,8 +1940,7 @@ void smp_derive_link_key_from_long_term_key(tSMP_CB *p_cb, tSMP_INT_DATA *p_data tSMP_STATUS status = SMP_PAIR_FAIL_UNKNOWN; SMP_TRACE_DEBUG("%s\n", __func__); - if (!smp_calculate_link_key_from_long_term_key(p_cb)) - { + if (!smp_calculate_link_key_from_long_term_key(p_cb)) { SMP_TRACE_ERROR("%s failed\n", __FUNCTION__); smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &status); return; @@ -2086,9 +1963,8 @@ void smp_br_process_link_key(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) tSMP_STATUS status = SMP_PAIR_FAIL_UNKNOWN; SMP_TRACE_DEBUG("%s\n", __func__); - if (!smp_calculate_long_term_key_from_link_key(p_cb)) - { - SMP_TRACE_ERROR ("%s failed\n",__FUNCTION__); + if (!smp_calculate_long_term_key_from_link_key(p_cb)) { + SMP_TRACE_ERROR ("%s failed\n", __FUNCTION__); smp_sm_event(p_cb, SMP_BR_AUTH_CMPL_EVT, &status); return; } @@ -2107,12 +1983,9 @@ void smp_br_process_link_key(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) void smp_key_distribution_by_transport(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) { SMP_TRACE_DEBUG("%s\n", __func__); - if (p_cb->smp_over_br) - { + if (p_cb->smp_over_br) { smp_br_select_next_key(p_cb, NULL); - } - else - { + } else { smp_key_distribution(p_cb, NULL); } } @@ -2126,8 +1999,7 @@ void smp_br_pairing_complete(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) { SMP_TRACE_DEBUG("%s\n", __func__); - if (p_cb->total_tx_unacked == 0) - { + if (p_cb->total_tx_unacked == 0) { /* process the pairing complete */ smp_proc_pairing_cmpl(p_cb); } diff --git a/components/bt/bluedroid/stack/smp/smp_api.c b/components/bt/bluedroid/stack/smp/smp_api.c old mode 100755 new mode 100644 index c4b1e2be8c..316f2ba2da --- a/components/bt/bluedroid/stack/smp/smp_api.c +++ b/components/bt/bluedroid/stack/smp/smp_api.c @@ -27,15 +27,15 @@ #include "bt_target.h" //#include "bt_utils.h" #if SMP_INCLUDED == TRUE - #include "smp_int.h" - #include "smp_api.h" - #include "l2cdefs.h" - #include "l2c_int.h" - #include "btm_int.h" - #include "hcimsgs.h" +#include "smp_int.h" +#include "smp_api.h" +#include "l2cdefs.h" +#include "l2c_int.h" +#include "btm_int.h" +#include "hcimsgs.h" - #include "btu.h" - #include "p_256_ecc_pp.h" +#include "btu.h" +#include "p_256_ecc_pp.h" /******************************************************************************* ** @@ -85,10 +85,11 @@ void SMP_Init(void) *******************************************************************************/ extern UINT8 SMP_SetTraceLevel (UINT8 new_level) { - if (new_level != 0xFF) + if (new_level != 0xFF) { smp_cb.trace_level = new_level; + } - return(smp_cb.trace_level); + return (smp_cb.trace_level); } @@ -105,13 +106,12 @@ BOOLEAN SMP_Register (tSMP_CALLBACK *p_cback) { SMP_TRACE_EVENT ("SMP_Register state=%d", smp_cb.state); - if (smp_cb.p_callback != NULL) - { + if (smp_cb.p_callback != NULL) { SMP_TRACE_ERROR ("SMP_Register: duplicate registration, overwrite it"); } smp_cb.p_callback = p_cback; - return(TRUE); + return (TRUE); } @@ -133,21 +133,17 @@ tSMP_STATUS SMP_Pair (BD_ADDR bd_addr) UINT8 status = SMP_PAIR_INTERNAL_ERR; SMP_TRACE_EVENT ("%s state=%d br_state=%d flag=0x%x \n", - __FUNCTION__, p_cb->state, p_cb->br_state, p_cb->flags); + __FUNCTION__, p_cb->state, p_cb->br_state, p_cb->flags); if (p_cb->state != SMP_STATE_IDLE || p_cb->flags & SMP_PAIR_FLAGS_WE_STARTED_DD || - p_cb->smp_over_br) - { + p_cb->smp_over_br) { /* pending security on going, reject this one */ return SMP_BUSY; - } - else - { + } else { p_cb->flags = SMP_PAIR_FLAGS_WE_STARTED_DD; memcpy (p_cb->pairing_bda, bd_addr, BD_ADDR_LEN); - if (!L2CA_ConnectFixedChnl (L2CAP_SMP_CID, bd_addr)) - { + if (!L2CA_ConnectFixedChnl (L2CAP_SMP_CID, bd_addr)) { SMP_TRACE_ERROR("%s: L2C connect fixed channel failed.\n", __FUNCTION__); smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &status); return status; @@ -175,12 +171,11 @@ tSMP_STATUS SMP_BR_PairWith (BD_ADDR bd_addr) UINT8 status = SMP_PAIR_INTERNAL_ERR; SMP_TRACE_EVENT ("%s state=%d br_state=%d flag=0x%x ", - __func__, p_cb->state, p_cb->br_state, p_cb->flags); + __func__, p_cb->state, p_cb->br_state, p_cb->flags); if (p_cb->state != SMP_STATE_IDLE || - p_cb->smp_over_br || - p_cb->flags & SMP_PAIR_FLAGS_WE_STARTED_DD) - { + p_cb->smp_over_br || + p_cb->flags & SMP_PAIR_FLAGS_WE_STARTED_DD) { /* pending security on going, reject this one */ return SMP_BUSY; } @@ -191,9 +186,8 @@ tSMP_STATUS SMP_BR_PairWith (BD_ADDR bd_addr) memcpy (p_cb->pairing_bda, bd_addr, BD_ADDR_LEN); - if (!L2CA_ConnectFixedChnl (L2CAP_SMP_BR_CID, bd_addr)) - { - SMP_TRACE_ERROR("%s: L2C connect fixed channel failed.",__FUNCTION__); + if (!L2CA_ConnectFixedChnl (L2CAP_SMP_BR_CID, bd_addr)) { + SMP_TRACE_ERROR("%s: L2C connect fixed channel failed.", __FUNCTION__); smp_br_state_machine_event(p_cb, SMP_BR_AUTH_CMPL_EVT, &status); return status; } @@ -220,8 +214,7 @@ BOOLEAN SMP_PairCancel (BD_ADDR bd_addr) BTM_TRACE_EVENT ("SMP_CancelPair state=%d flag=0x%x ", p_cb->state, p_cb->flags); if ( (p_cb->state != SMP_STATE_IDLE) && - (!memcmp (p_cb->pairing_bda, bd_addr, BD_ADDR_LEN)) ) - { + (!memcmp (p_cb->pairing_bda, bd_addr, BD_ADDR_LEN)) ) { p_cb->is_pair_cancel = TRUE; SMP_TRACE_DEBUG("Cancel Pairing: set fail reason Unknown"); smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &err_code); @@ -247,12 +240,10 @@ void SMP_SecurityGrant(BD_ADDR bd_addr, UINT8 res) { SMP_TRACE_EVENT ("SMP_SecurityGrant "); - if (smp_cb.smp_over_br) - { + if (smp_cb.smp_over_br) { if (smp_cb.br_state != SMP_BR_STATE_WAIT_APP_RSP || - smp_cb.cb_evt != SMP_SEC_REQUEST_EVT || - memcmp (smp_cb.pairing_bda, bd_addr, BD_ADDR_LEN)) - { + smp_cb.cb_evt != SMP_SEC_REQUEST_EVT || + memcmp (smp_cb.pairing_bda, bd_addr, BD_ADDR_LEN)) { return; } @@ -264,9 +255,10 @@ void SMP_SecurityGrant(BD_ADDR bd_addr, UINT8 res) } if (smp_cb.state != SMP_STATE_WAIT_APP_RSP || - smp_cb.cb_evt != SMP_SEC_REQUEST_EVT || - memcmp (smp_cb.pairing_bda, bd_addr, BD_ADDR_LEN)) + smp_cb.cb_evt != SMP_SEC_REQUEST_EVT || + memcmp (smp_cb.pairing_bda, bd_addr, BD_ADDR_LEN)) { return; + } /* clear the SMP_SEC_REQUEST_EVT event after get grant */ /* avoid generate duplicate pair request */ smp_cb.cb_evt = 0; @@ -292,40 +284,32 @@ void SMP_PasskeyReply (BD_ADDR bd_addr, UINT8 res, UINT32 passkey) UINT8 failure = SMP_PASSKEY_ENTRY_FAIL; SMP_TRACE_EVENT ("SMP_PasskeyReply: Key: %d Result:%d", - passkey, res); + passkey, res); /* If timeout already expired or has been canceled, ignore the reply */ - if (p_cb->cb_evt != SMP_PASSKEY_REQ_EVT) - { + if (p_cb->cb_evt != SMP_PASSKEY_REQ_EVT) { SMP_TRACE_WARNING ("SMP_PasskeyReply() - Wrong State: %d", p_cb->state); return; } - if (memcmp (bd_addr, p_cb->pairing_bda, BD_ADDR_LEN) != 0) - { + if (memcmp (bd_addr, p_cb->pairing_bda, BD_ADDR_LEN) != 0) { SMP_TRACE_ERROR ("SMP_PasskeyReply() - Wrong BD Addr"); return; } - if (btm_find_dev (bd_addr) == NULL) - { + if (btm_find_dev (bd_addr) == NULL) { SMP_TRACE_ERROR ("SMP_PasskeyReply() - no dev CB"); return; } - if (passkey > BTM_MAX_PASSKEY_VAL || res != SMP_SUCCESS) - { + if (passkey > BTM_MAX_PASSKEY_VAL || res != SMP_SUCCESS) { SMP_TRACE_WARNING ("SMP_PasskeyReply() - Wrong key len: %d or passkey entry fail", passkey); /* send pairing failure */ smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &failure); - } - else if (p_cb->selected_association_model == SMP_MODEL_SEC_CONN_PASSKEY_ENT) - { + } else if (p_cb->selected_association_model == SMP_MODEL_SEC_CONN_PASSKEY_ENT) { smp_sm_event(&smp_cb, SMP_SC_KEY_READY_EVT, &passkey); - } - else - { + } else { smp_convert_string_to_tk(p_cb->tk, passkey); } @@ -352,32 +336,26 @@ void SMP_ConfirmReply (BD_ADDR bd_addr, UINT8 res) SMP_TRACE_EVENT ("%s: Result:%d", __FUNCTION__, res); /* If timeout already expired or has been canceled, ignore the reply */ - if (p_cb->cb_evt != SMP_NC_REQ_EVT) - { - SMP_TRACE_WARNING ("%s() - Wrong State: %d", __FUNCTION__,p_cb->state); + if (p_cb->cb_evt != SMP_NC_REQ_EVT) { + SMP_TRACE_WARNING ("%s() - Wrong State: %d", __FUNCTION__, p_cb->state); return; } - if (memcmp (bd_addr, p_cb->pairing_bda, BD_ADDR_LEN) != 0) - { - SMP_TRACE_ERROR ("%s() - Wrong BD Addr",__FUNCTION__); + if (memcmp (bd_addr, p_cb->pairing_bda, BD_ADDR_LEN) != 0) { + SMP_TRACE_ERROR ("%s() - Wrong BD Addr", __FUNCTION__); return; } - if (btm_find_dev (bd_addr) == NULL) - { - SMP_TRACE_ERROR ("%s() - no dev CB",__FUNCTION__); + if (btm_find_dev (bd_addr) == NULL) { + SMP_TRACE_ERROR ("%s() - no dev CB", __FUNCTION__); return; } - if (res != SMP_SUCCESS) - { - SMP_TRACE_WARNING ("%s() - Numeric Comparison fails",__FUNCTION__); + if (res != SMP_SUCCESS) { + SMP_TRACE_WARNING ("%s() - Numeric Comparison fails", __FUNCTION__); /* send pairing failure */ smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &failure); - } - else - { + } else { smp_sm_event(p_cb, SMP_SC_NC_OK_EVT, NULL); } } @@ -403,17 +381,16 @@ void SMP_OobDataReply(BD_ADDR bd_addr, tSMP_STATUS res, UINT8 len, UINT8 *p_data SMP_TRACE_EVENT ("%s State: %d res:%d", __FUNCTION__, smp_cb.state, res); /* If timeout already expired or has been canceled, ignore the reply */ - if (p_cb->state != SMP_STATE_WAIT_APP_RSP || p_cb->cb_evt != SMP_OOB_REQ_EVT) + if (p_cb->state != SMP_STATE_WAIT_APP_RSP || p_cb->cb_evt != SMP_OOB_REQ_EVT) { return; - - if (res != SMP_SUCCESS || len == 0 || !p_data) - { - smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &failure); } - else - { - if (len > BT_OCTET16_LEN) + + if (res != SMP_SUCCESS || len == 0 || !p_data) { + smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &failure); + } else { + if (len > BT_OCTET16_LEN) { len = BT_OCTET16_LEN; + } memcpy(p_cb->tk, p_data, len); @@ -440,44 +417,45 @@ void SMP_SecureConnectionOobDataReply(UINT8 *p_data) UINT8 failure = SMP_OOB_FAIL; tSMP_SC_OOB_DATA *p_oob = (tSMP_SC_OOB_DATA *) p_data; - if (!p_oob) - { - SMP_TRACE_ERROR("%s received no data",__FUNCTION__); + if (!p_oob) { + SMP_TRACE_ERROR("%s received no data", __FUNCTION__); smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &failure); return; } SMP_TRACE_EVENT ("%s req_oob_type: %d, loc_oob_data.present: %d, " - "peer_oob_data.present: %d", - __FUNCTION__, p_cb->req_oob_type, p_oob->loc_oob_data.present, - p_oob->peer_oob_data.present); + "peer_oob_data.present: %d", + __FUNCTION__, p_cb->req_oob_type, p_oob->loc_oob_data.present, + p_oob->peer_oob_data.present); - if (p_cb->state != SMP_STATE_WAIT_APP_RSP || p_cb->cb_evt != SMP_SC_OOB_REQ_EVT) + if (p_cb->state != SMP_STATE_WAIT_APP_RSP || p_cb->cb_evt != SMP_SC_OOB_REQ_EVT) { return; - - BOOLEAN data_missing = FALSE; - switch (p_cb->req_oob_type) - { - case SMP_OOB_PEER: - if (!p_oob->peer_oob_data.present) - data_missing = TRUE; - break; - case SMP_OOB_LOCAL: - if (!p_oob->loc_oob_data.present) - data_missing = TRUE; - break; - case SMP_OOB_BOTH: - if (!p_oob->loc_oob_data.present || !p_oob->peer_oob_data.present) - data_missing = TRUE; - break; - default: - SMP_TRACE_EVENT ("Unexpected OOB data type requested. Fail OOB"); - data_missing = TRUE; - break; } - if (data_missing) - { + BOOLEAN data_missing = FALSE; + switch (p_cb->req_oob_type) { + case SMP_OOB_PEER: + if (!p_oob->peer_oob_data.present) { + data_missing = TRUE; + } + break; + case SMP_OOB_LOCAL: + if (!p_oob->loc_oob_data.present) { + data_missing = TRUE; + } + break; + case SMP_OOB_BOTH: + if (!p_oob->loc_oob_data.present || !p_oob->peer_oob_data.present) { + data_missing = TRUE; + } + break; + default: + SMP_TRACE_EVENT ("Unexpected OOB data type requested. Fail OOB"); + data_missing = TRUE; + break; + } + + if (data_missing) { smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &failure); return; } @@ -508,7 +486,7 @@ BOOLEAN SMP_Encrypt (UINT8 *key, UINT8 key_len, tSMP_ENC *p_out) { - BOOLEAN status=FALSE; + BOOLEAN status = FALSE; status = smp_encrypt_data(key, key_len, plain_text, pt_len, p_out); return status; } @@ -527,31 +505,27 @@ void SMP_KeypressNotification (BD_ADDR bd_addr, UINT8 value) { tSMP_CB *p_cb = &smp_cb; - SMP_TRACE_EVENT ("%s: Value: %d", __FUNCTION__,value); + SMP_TRACE_EVENT ("%s: Value: %d", __FUNCTION__, value); - if (memcmp (bd_addr, p_cb->pairing_bda, BD_ADDR_LEN) != 0) - { - SMP_TRACE_ERROR ("%s() - Wrong BD Addr",__FUNCTION__); + if (memcmp (bd_addr, p_cb->pairing_bda, BD_ADDR_LEN) != 0) { + SMP_TRACE_ERROR ("%s() - Wrong BD Addr", __FUNCTION__); return; } - if (btm_find_dev (bd_addr) == NULL) - { - SMP_TRACE_ERROR ("%s() - no dev CB",__FUNCTION__); + if (btm_find_dev (bd_addr) == NULL) { + SMP_TRACE_ERROR ("%s() - no dev CB", __FUNCTION__); return; } /* Keypress Notification is used by a device with KeyboardOnly IO capabilities */ /* during the passkey entry protocol */ - if (p_cb->local_io_capability != SMP_IO_CAP_IN) - { + if (p_cb->local_io_capability != SMP_IO_CAP_IN) { SMP_TRACE_ERROR ("%s() - wrong local IO capabilities %d", - __FUNCTION__, p_cb->local_io_capability); + __FUNCTION__, p_cb->local_io_capability); return; } - if (p_cb->selected_association_model != SMP_MODEL_SEC_CONN_PASSKEY_ENT) - { + if (p_cb->selected_association_model != SMP_MODEL_SEC_CONN_PASSKEY_ENT) { SMP_TRACE_ERROR ("%s() - wrong protocol %d", __FUNCTION__, p_cb->selected_association_model); return; @@ -576,25 +550,23 @@ BOOLEAN SMP_CreateLocalSecureConnectionsOobData (tBLE_BD_ADDR *addr_to_send_to) tSMP_CB *p_cb = &smp_cb; UINT8 *bd_addr; - if (addr_to_send_to == NULL) - { - SMP_TRACE_ERROR ("%s addr_to_send_to is not provided",__FUNCTION__); + if (addr_to_send_to == NULL) { + SMP_TRACE_ERROR ("%s addr_to_send_to is not provided", __FUNCTION__); return FALSE; } bd_addr = addr_to_send_to->bda; SMP_TRACE_EVENT ("%s addr type: %u, BDA: %08x%04x, state: %u, br_state: %u", - __FUNCTION__, addr_to_send_to->type, - (bd_addr[0]<<24)+(bd_addr[1]<<16)+(bd_addr[2]<<8) + bd_addr[3], - (bd_addr[4]<<8)+bd_addr[5], - p_cb->state, - p_cb->br_state); + __FUNCTION__, addr_to_send_to->type, + (bd_addr[0] << 24) + (bd_addr[1] << 16) + (bd_addr[2] << 8) + bd_addr[3], + (bd_addr[4] << 8) + bd_addr[5], + p_cb->state, + p_cb->br_state); - if ((p_cb->state != SMP_STATE_IDLE) || (p_cb->smp_over_br)) - { + if ((p_cb->state != SMP_STATE_IDLE) || (p_cb->smp_over_br)) { SMP_TRACE_WARNING ("%s creation of local OOB data set "\ - "starts only in IDLE state",__FUNCTION__); + "starts only in IDLE state", __FUNCTION__); return FALSE; } diff --git a/components/bt/bluedroid/stack/smp/smp_br_main.c b/components/bt/bluedroid/stack/smp/smp_br_main.c old mode 100755 new mode 100644 index 11039ec206..1ccbc09712 --- a/components/bt/bluedroid/stack/smp/smp_br_main.c +++ b/components/bt/bluedroid/stack/smp/smp_br_main.c @@ -23,8 +23,7 @@ #if BLE_INCLUDED == TRUE -const char *const smp_br_state_name [SMP_BR_STATE_MAX+1] = -{ +const char *const smp_br_state_name [SMP_BR_STATE_MAX + 1] = { "SMP_BR_STATE_IDLE", "SMP_BR_STATE_WAIT_APP_RSP", "SMP_BR_STATE_PAIR_REQ_RSP", @@ -32,8 +31,7 @@ const char *const smp_br_state_name [SMP_BR_STATE_MAX+1] = "SMP_BR_STATE_OUT_OF_RANGE" }; -const char *const smp_br_event_name [SMP_BR_MAX_EVT] = -{ +const char *const smp_br_event_name [SMP_BR_MAX_EVT] = { "BR_PAIRING_REQ_EVT", "BR_PAIRING_RSP_EVT", "BR_CONFIRM_EVT", @@ -71,8 +69,7 @@ const char *smp_get_br_state_name(tSMP_BR_STATE state); #define SMP_BR_SM_NUM_COLS 3 typedef const UINT8 (*tSMP_BR_SM_TBL)[SMP_BR_SM_NUM_COLS]; -enum -{ +enum { SMP_SEND_PAIR_REQ, SMP_BR_SEND_PAIR_RSP, SMP_SEND_PAIR_FAIL, @@ -93,8 +90,7 @@ enum SMP_BR_SM_NO_ACTION }; -static const tSMP_ACT smp_br_sm_action[] = -{ +static const tSMP_ACT smp_br_sm_action[] = { smp_send_pair_req, smp_br_send_pair_response, smp_send_pair_fail, @@ -114,129 +110,118 @@ static const tSMP_ACT smp_br_sm_action[] = smp_idle_terminate }; -static const UINT8 smp_br_all_table[][SMP_BR_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* BR_PAIRING_FAILED */ {SMP_PROC_PAIR_FAIL, SMP_BR_PAIRING_COMPLETE, SMP_BR_STATE_IDLE}, -/* BR_AUTH_CMPL */ {SMP_SEND_PAIR_FAIL, SMP_BR_PAIRING_COMPLETE, SMP_BR_STATE_IDLE}, -/* BR_L2CAP_DISCONN */ {SMP_PAIR_TERMINATE, SMP_BR_SM_NO_ACTION, SMP_BR_STATE_IDLE} +static const UINT8 smp_br_all_table[][SMP_BR_SM_NUM_COLS] = { + /* Event Action Next State */ + /* BR_PAIRING_FAILED */ {SMP_PROC_PAIR_FAIL, SMP_BR_PAIRING_COMPLETE, SMP_BR_STATE_IDLE}, + /* BR_AUTH_CMPL */ {SMP_SEND_PAIR_FAIL, SMP_BR_PAIRING_COMPLETE, SMP_BR_STATE_IDLE}, + /* BR_L2CAP_DISCONN */ {SMP_PAIR_TERMINATE, SMP_BR_SM_NO_ACTION, SMP_BR_STATE_IDLE} }; /************ SMP Master FSM State/Event Indirection Table **************/ -static const UINT8 smp_br_master_entry_map[][SMP_BR_STATE_MAX] = -{ -/* br_state name: Idle WaitApp Pair Bond - Rsp ReqRsp Pend */ -/* BR_PAIRING_REQ */ { 0, 0, 0, 0 }, -/* BR_PAIRING_RSP */ { 0, 0, 1, 0 }, -/* BR_CONFIRM */ { 0, 0, 0, 0 }, -/* BR_RAND */ { 0, 0, 0, 0 }, -/* BR_PAIRING_FAILED */ { 0, 0x81, 0x81, 0 }, -/* BR_ENCRPTION_INFO */ { 0, 0, 0, 0 }, -/* BR_MASTER_ID */ { 0, 0, 0, 0 }, -/* BR_ID_INFO */ { 0, 0, 0, 1 }, -/* BR_ID_ADDR */ { 0, 0, 0, 2 }, -/* BR_SIGN_INFO */ { 0, 0, 0, 3 }, -/* BR_SECURITY_REQ */ { 0, 0, 0, 0 }, -/* BR_PAIR_PUBLIC_KEY_EVT */ { 0, 0, 0, 0 }, -/* BR_PAIR_DHKEY_CHCK_EVT */ { 0, 0, 0, 0 }, -/* BR_PAIR_KEYPR_NOTIF_EVT */ { 0, 0, 0, 0 }, -/* BR_KEY_READY */ { 0, 0, 0, 0 }, -/* BR_ENCRYPTED */ { 0, 0, 0, 0 }, -/* BR_L2CAP_CONN */ { 1, 0, 0, 0 }, -/* BR_L2CAP_DISCONN */ { 2, 0x83, 0x83, 0x83 }, -/* BR_KEYS_RSP */ { 0, 1, 0, 0 }, -/* BR_API_SEC_GRANT */ { 0, 0, 0, 0 }, -/* BR_TK_REQ */ { 0, 0, 0, 0 }, -/* BR_AUTH_CMPL */ { 0, 0x82, 0x82, 0x82 }, -/* BR_ENC_REQ */ { 0, 0, 0, 0 }, -/* BR_BOND_REQ */ { 0, 0, 2, 0 }, -/* BR_DISCARD_SEC_REQ */ { 0, 0, 0, 0 } +static const UINT8 smp_br_master_entry_map[][SMP_BR_STATE_MAX] = { + /* br_state name: Idle WaitApp Pair Bond + Rsp ReqRsp Pend */ + /* BR_PAIRING_REQ */ { 0, 0, 0, 0 }, + /* BR_PAIRING_RSP */ { 0, 0, 1, 0 }, + /* BR_CONFIRM */ { 0, 0, 0, 0 }, + /* BR_RAND */ { 0, 0, 0, 0 }, + /* BR_PAIRING_FAILED */ { 0, 0x81, 0x81, 0 }, + /* BR_ENCRPTION_INFO */ { 0, 0, 0, 0 }, + /* BR_MASTER_ID */ { 0, 0, 0, 0 }, + /* BR_ID_INFO */ { 0, 0, 0, 1 }, + /* BR_ID_ADDR */ { 0, 0, 0, 2 }, + /* BR_SIGN_INFO */ { 0, 0, 0, 3 }, + /* BR_SECURITY_REQ */ { 0, 0, 0, 0 }, + /* BR_PAIR_PUBLIC_KEY_EVT */ { 0, 0, 0, 0 }, + /* BR_PAIR_DHKEY_CHCK_EVT */ { 0, 0, 0, 0 }, + /* BR_PAIR_KEYPR_NOTIF_EVT */ { 0, 0, 0, 0 }, + /* BR_KEY_READY */ { 0, 0, 0, 0 }, + /* BR_ENCRYPTED */ { 0, 0, 0, 0 }, + /* BR_L2CAP_CONN */ { 1, 0, 0, 0 }, + /* BR_L2CAP_DISCONN */ { 2, 0x83, 0x83, 0x83 }, + /* BR_KEYS_RSP */ { 0, 1, 0, 0 }, + /* BR_API_SEC_GRANT */ { 0, 0, 0, 0 }, + /* BR_TK_REQ */ { 0, 0, 0, 0 }, + /* BR_AUTH_CMPL */ { 0, 0x82, 0x82, 0x82 }, + /* BR_ENC_REQ */ { 0, 0, 0, 0 }, + /* BR_BOND_REQ */ { 0, 0, 2, 0 }, + /* BR_DISCARD_SEC_REQ */ { 0, 0, 0, 0 } }; -static const UINT8 smp_br_master_idle_table[][SMP_BR_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* BR_L2CAP_CONN */ {SMP_SEND_APP_CBACK, SMP_BR_SM_NO_ACTION, SMP_BR_STATE_WAIT_APP_RSP}, -/* BR_L2CAP_DISCONN */ {SMP_IDLE_TERMINATE, SMP_BR_SM_NO_ACTION, SMP_BR_STATE_IDLE} +static const UINT8 smp_br_master_idle_table[][SMP_BR_SM_NUM_COLS] = { + /* Event Action Next State */ + /* BR_L2CAP_CONN */ {SMP_SEND_APP_CBACK, SMP_BR_SM_NO_ACTION, SMP_BR_STATE_WAIT_APP_RSP}, + /* BR_L2CAP_DISCONN */ {SMP_IDLE_TERMINATE, SMP_BR_SM_NO_ACTION, SMP_BR_STATE_IDLE} }; -static const UINT8 smp_br_master_wait_appln_response_table[][SMP_BR_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* BR_KEYS_RSP */{SMP_SEND_PAIR_REQ, SMP_BR_SM_NO_ACTION, SMP_BR_STATE_PAIR_REQ_RSP} +static const UINT8 smp_br_master_wait_appln_response_table[][SMP_BR_SM_NUM_COLS] = { + /* Event Action Next State */ + /* BR_KEYS_RSP */{SMP_SEND_PAIR_REQ, SMP_BR_SM_NO_ACTION, SMP_BR_STATE_PAIR_REQ_RSP} }; -static const UINT8 smp_br_master_pair_request_response_table [][SMP_BR_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* BR_PAIRING_RSP */ {SMP_BR_PROC_PAIR_CMD, SMP_BR_CHECK_AUTH_REQ, SMP_BR_STATE_PAIR_REQ_RSP}, -/* BR_BOND_REQ */ {SMP_BR_SM_NO_ACTION, SMP_BR_SM_NO_ACTION, SMP_BR_STATE_BOND_PENDING} +static const UINT8 smp_br_master_pair_request_response_table [][SMP_BR_SM_NUM_COLS] = { + /* Event Action Next State */ + /* BR_PAIRING_RSP */ {SMP_BR_PROC_PAIR_CMD, SMP_BR_CHECK_AUTH_REQ, SMP_BR_STATE_PAIR_REQ_RSP}, + /* BR_BOND_REQ */ {SMP_BR_SM_NO_ACTION, SMP_BR_SM_NO_ACTION, SMP_BR_STATE_BOND_PENDING} }; -static const UINT8 smp_br_master_bond_pending_table[][SMP_BR_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* BR_ID_INFO */{SMP_PROC_ID_INFO, SMP_BR_SM_NO_ACTION, SMP_BR_STATE_BOND_PENDING}, -/* BR_ID_ADDR */{SMP_PROC_ID_ADDR, SMP_BR_SM_NO_ACTION, SMP_BR_STATE_BOND_PENDING}, -/* BR_SIGN_INFO */{SMP_PROC_SRK_INFO, SMP_BR_SM_NO_ACTION, SMP_BR_STATE_BOND_PENDING} +static const UINT8 smp_br_master_bond_pending_table[][SMP_BR_SM_NUM_COLS] = { + /* Event Action Next State */ + /* BR_ID_INFO */{SMP_PROC_ID_INFO, SMP_BR_SM_NO_ACTION, SMP_BR_STATE_BOND_PENDING}, + /* BR_ID_ADDR */{SMP_PROC_ID_ADDR, SMP_BR_SM_NO_ACTION, SMP_BR_STATE_BOND_PENDING}, + /* BR_SIGN_INFO */{SMP_PROC_SRK_INFO, SMP_BR_SM_NO_ACTION, SMP_BR_STATE_BOND_PENDING} }; -static const UINT8 smp_br_slave_entry_map[][SMP_BR_STATE_MAX] = -{ -/* br_state name: Idle WaitApp Pair Bond - Rsp ReqRsp Pend */ -/* BR_PAIRING_REQ */ { 1, 0, 0, 0 }, -/* BR_PAIRING_RSP */ { 0, 0, 0, 0 }, -/* BR_CONFIRM */ { 0, 0, 0, 0 }, -/* BR_RAND */ { 0, 0, 0, 0 }, -/* BR_PAIRING_FAILED */ { 0, 0x81, 0x81, 0x81 }, -/* BR_ENCRPTION_INFO */ { 0, 0, 0, 0 }, -/* BR_MASTER_ID */ { 0, 0, 0, 0 }, -/* BR_ID_INFO */ { 0, 0, 0, 1 }, -/* BR_ID_ADDR */ { 0, 0, 0, 2 }, -/* BR_SIGN_INFO */ { 0, 0, 0, 3 }, -/* BR_SECURITY_REQ */ { 0, 0, 0, 0 }, -/* BR_PAIR_PUBLIC_KEY_EVT */ { 0, 0, 0, 0 }, -/* BR_PAIR_DHKEY_CHCK_EVT */ { 0, 0, 0, 0 }, -/* BR_PAIR_KEYPR_NOTIF_EVT */ { 0, 0, 0, 0 }, -/* BR_KEY_READY */ { 0, 0, 0, 0 }, -/* BR_ENCRYPTED */ { 0, 0, 0, 0 }, -/* BR_L2CAP_CONN */ { 0, 0, 0, 0 }, -/* BR_L2CAP_DISCONN */ { 0, 0x83, 0x83, 0x83 }, -/* BR_KEYS_RSP */ { 0, 2, 0, 0 }, -/* BR_API_SEC_GRANT */ { 0, 1, 0, 0 }, -/* BR_TK_REQ */ { 0, 0, 0, 0 }, -/* BR_AUTH_CMPL */ { 0, 0x82, 0x82, 0x82 }, -/* BR_ENC_REQ */ { 0, 0, 0, 0 }, -/* BR_BOND_REQ */ { 0, 3, 0, 0 }, -/* BR_DISCARD_SEC_REQ */ { 0, 0, 0, 0 } +static const UINT8 smp_br_slave_entry_map[][SMP_BR_STATE_MAX] = { + /* br_state name: Idle WaitApp Pair Bond + Rsp ReqRsp Pend */ + /* BR_PAIRING_REQ */ { 1, 0, 0, 0 }, + /* BR_PAIRING_RSP */ { 0, 0, 0, 0 }, + /* BR_CONFIRM */ { 0, 0, 0, 0 }, + /* BR_RAND */ { 0, 0, 0, 0 }, + /* BR_PAIRING_FAILED */ { 0, 0x81, 0x81, 0x81 }, + /* BR_ENCRPTION_INFO */ { 0, 0, 0, 0 }, + /* BR_MASTER_ID */ { 0, 0, 0, 0 }, + /* BR_ID_INFO */ { 0, 0, 0, 1 }, + /* BR_ID_ADDR */ { 0, 0, 0, 2 }, + /* BR_SIGN_INFO */ { 0, 0, 0, 3 }, + /* BR_SECURITY_REQ */ { 0, 0, 0, 0 }, + /* BR_PAIR_PUBLIC_KEY_EVT */ { 0, 0, 0, 0 }, + /* BR_PAIR_DHKEY_CHCK_EVT */ { 0, 0, 0, 0 }, + /* BR_PAIR_KEYPR_NOTIF_EVT */ { 0, 0, 0, 0 }, + /* BR_KEY_READY */ { 0, 0, 0, 0 }, + /* BR_ENCRYPTED */ { 0, 0, 0, 0 }, + /* BR_L2CAP_CONN */ { 0, 0, 0, 0 }, + /* BR_L2CAP_DISCONN */ { 0, 0x83, 0x83, 0x83 }, + /* BR_KEYS_RSP */ { 0, 2, 0, 0 }, + /* BR_API_SEC_GRANT */ { 0, 1, 0, 0 }, + /* BR_TK_REQ */ { 0, 0, 0, 0 }, + /* BR_AUTH_CMPL */ { 0, 0x82, 0x82, 0x82 }, + /* BR_ENC_REQ */ { 0, 0, 0, 0 }, + /* BR_BOND_REQ */ { 0, 3, 0, 0 }, + /* BR_DISCARD_SEC_REQ */ { 0, 0, 0, 0 } }; -static const UINT8 smp_br_slave_idle_table[][SMP_BR_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* BR_PAIRING_REQ */ {SMP_BR_PROC_PAIR_CMD, SMP_SEND_APP_CBACK, SMP_BR_STATE_WAIT_APP_RSP} +static const UINT8 smp_br_slave_idle_table[][SMP_BR_SM_NUM_COLS] = { + /* Event Action Next State */ + /* BR_PAIRING_REQ */ {SMP_BR_PROC_PAIR_CMD, SMP_SEND_APP_CBACK, SMP_BR_STATE_WAIT_APP_RSP} }; -static const UINT8 smp_br_slave_wait_appln_response_table [][SMP_BR_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* BR_API_SEC_GRANT */ {SMP_BR_PROC_SEC_GRANT, SMP_SEND_APP_CBACK, SMP_BR_STATE_WAIT_APP_RSP}, -/* BR_KEYS_RSP */{SMP_BR_PROC_SL_KEYS_RSP, SMP_BR_CHECK_AUTH_REQ,SMP_BR_STATE_WAIT_APP_RSP}, -/* BR_BOND_REQ */ {SMP_BR_KEY_DISTRIBUTION, SMP_BR_SM_NO_ACTION, SMP_BR_STATE_BOND_PENDING} +static const UINT8 smp_br_slave_wait_appln_response_table [][SMP_BR_SM_NUM_COLS] = { + /* Event Action Next State */ + /* BR_API_SEC_GRANT */ {SMP_BR_PROC_SEC_GRANT, SMP_SEND_APP_CBACK, SMP_BR_STATE_WAIT_APP_RSP}, + /* BR_KEYS_RSP */{SMP_BR_PROC_SL_KEYS_RSP, SMP_BR_CHECK_AUTH_REQ, SMP_BR_STATE_WAIT_APP_RSP}, + /* BR_BOND_REQ */ {SMP_BR_KEY_DISTRIBUTION, SMP_BR_SM_NO_ACTION, SMP_BR_STATE_BOND_PENDING} }; -static const UINT8 smp_br_slave_bond_pending_table[][SMP_BR_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* BR_ID_INFO */ {SMP_PROC_ID_INFO, SMP_BR_SM_NO_ACTION, SMP_BR_STATE_BOND_PENDING}, -/* BR_ID_ADDR */ {SMP_PROC_ID_ADDR, SMP_BR_SM_NO_ACTION, SMP_BR_STATE_BOND_PENDING}, -/* BR_SIGN_INFO */ {SMP_PROC_SRK_INFO, SMP_BR_SM_NO_ACTION, SMP_BR_STATE_BOND_PENDING} +static const UINT8 smp_br_slave_bond_pending_table[][SMP_BR_SM_NUM_COLS] = { + /* Event Action Next State */ + /* BR_ID_INFO */ {SMP_PROC_ID_INFO, SMP_BR_SM_NO_ACTION, SMP_BR_STATE_BOND_PENDING}, + /* BR_ID_ADDR */ {SMP_PROC_ID_ADDR, SMP_BR_SM_NO_ACTION, SMP_BR_STATE_BOND_PENDING}, + /* BR_SIGN_INFO */ {SMP_PROC_SRK_INFO, SMP_BR_SM_NO_ACTION, SMP_BR_STATE_BOND_PENDING} }; -static const tSMP_BR_SM_TBL smp_br_state_table[][2] = -{ +static const tSMP_BR_SM_TBL smp_br_state_table[][2] = { /* SMP_BR_STATE_IDLE */ {smp_br_master_idle_table, smp_br_slave_idle_table}, @@ -252,8 +237,7 @@ static const tSMP_BR_SM_TBL smp_br_state_table[][2] = typedef const UINT8 (*tSMP_BR_ENTRY_TBL)[SMP_BR_STATE_MAX]; -static const tSMP_BR_ENTRY_TBL smp_br_entry_table[] = -{ +static const tSMP_BR_ENTRY_TBL smp_br_entry_table[] = { smp_br_master_entry_map, smp_br_slave_entry_map }; @@ -266,16 +250,13 @@ static const tSMP_BR_ENTRY_TBL smp_br_entry_table[] = *******************************************************************************/ void smp_set_br_state(tSMP_BR_STATE br_state) { - if (br_state < SMP_BR_STATE_MAX) - { + if (br_state < SMP_BR_STATE_MAX) { SMP_TRACE_DEBUG( "BR_State change: %s(%d) ==> %s(%d)", - smp_get_br_state_name(smp_cb.br_state), smp_cb.br_state, - smp_get_br_state_name(br_state), br_state ); + smp_get_br_state_name(smp_cb.br_state), smp_cb.br_state, + smp_get_br_state_name(br_state), br_state ); smp_cb.br_state = br_state; - } - else - { - SMP_TRACE_DEBUG("%s invalid br_state =%d", __FUNCTION__,br_state ); + } else { + SMP_TRACE_DEBUG("%s invalid br_state =%d", __FUNCTION__, br_state ); } } @@ -296,8 +277,9 @@ const char *smp_get_br_state_name(tSMP_BR_STATE br_state) { const char *p_str = smp_br_state_name[SMP_BR_STATE_MAX]; - if (br_state < SMP_BR_STATE_MAX) + if (br_state < SMP_BR_STATE_MAX) { p_str = smp_br_state_name[br_state]; + } return p_str; } @@ -305,13 +287,12 @@ const char *smp_get_br_state_name(tSMP_BR_STATE br_state) ** Function smp_get_br_event_name ** Returns The smp_br event name. *******************************************************************************/ -const char * smp_get_br_event_name(tSMP_BR_EVENT event) +const char *smp_get_br_event_name(tSMP_BR_EVENT event) { - const char * p_str = smp_br_event_name[SMP_BR_MAX_EVT - 1]; + const char *p_str = smp_br_event_name[SMP_BR_MAX_EVT - 1]; - if (event < SMP_BR_MAX_EVT) - { - p_str = smp_br_event_name[event- 1]; + if (event < SMP_BR_MAX_EVT) { + p_str = smp_br_event_name[event - 1]; } return p_str; } @@ -338,39 +319,32 @@ void smp_br_state_machine_event(tSMP_CB *p_cb, tSMP_BR_EVENT event, void *p_data tSMP_BR_ENTRY_TBL entry_table = smp_br_entry_table[p_cb->role]; SMP_TRACE_EVENT("main %s", __func__); - if (curr_state >= SMP_BR_STATE_MAX) - { + if (curr_state >= SMP_BR_STATE_MAX) { SMP_TRACE_DEBUG( "Invalid br_state: %d", curr_state) ; return; } SMP_TRACE_DEBUG( "SMP Role: %s State: [%s (%d)], Event: [%s (%d)]", - (p_cb->role == HCI_ROLE_SLAVE) ? "Slave" : "Master", - smp_get_br_state_name( p_cb->br_state), - p_cb->br_state, smp_get_br_event_name(event), event) ; + (p_cb->role == HCI_ROLE_SLAVE) ? "Slave" : "Master", + smp_get_br_state_name( p_cb->br_state), + p_cb->br_state, smp_get_br_event_name(event), event) ; /* look up the state table for the current state */ /* lookup entry / w event & curr_state */ /* If entry is ignore, return. * Otherwise, get state table (according to curr_state or all_state) */ if ((event <= SMP_BR_MAX_EVT) && ( (entry = entry_table[event - 1][curr_state]) - != SMP_BR_SM_IGNORE )) - { - if (entry & SMP_BR_ALL_TABLE_MASK) - { + != SMP_BR_SM_IGNORE )) { + if (entry & SMP_BR_ALL_TABLE_MASK) { entry &= ~SMP_BR_ALL_TABLE_MASK; state_table = smp_br_all_table; - } - else - { + } else { state_table = smp_br_state_table[curr_state][p_cb->role]; } - } - else - { + } else { SMP_TRACE_DEBUG( "Ignore event [%s (%d)] in state [%s (%d)]", - smp_get_br_event_name(event), event, - smp_get_br_state_name(curr_state), curr_state); + smp_get_br_event_name(event), event, + smp_get_br_state_name(curr_state), curr_state); return; } @@ -382,14 +356,10 @@ void smp_br_state_machine_event(tSMP_CB *p_cb, tSMP_BR_EVENT event, void *p_data * The action function may set the Param for cback. * Depending on param, call cback or free buffer. */ /* execute action functions */ - for (UINT8 i = 0; i < SMP_BR_NUM_ACTIONS; i++) - { - if ((action = state_table[entry - 1][i]) != SMP_BR_SM_NO_ACTION) - { + for (UINT8 i = 0; i < SMP_BR_NUM_ACTIONS; i++) { + if ((action = state_table[entry - 1][i]) != SMP_BR_SM_NO_ACTION) { (*smp_br_sm_action[action])(p_cb, (tSMP_INT_DATA *)p_data); - } - else - { + } else { break; } } diff --git a/components/bt/bluedroid/stack/smp/smp_cmac.c b/components/bt/bluedroid/stack/smp/smp_cmac.c old mode 100755 new mode 100644 index eb7571afde..21939435dd --- a/components/bt/bluedroid/stack/smp/smp_cmac.c +++ b/components/bt/bluedroid/stack/smp/smp_cmac.c @@ -26,18 +26,17 @@ #if SMP_INCLUDED == TRUE // #include - #include +#include - #include "btm_ble_api.h" - #include "smp_int.h" - #include "hcimsgs.h" +#include "btm_ble_api.h" +#include "smp_int.h" +#include "hcimsgs.h" -typedef struct -{ +typedef struct { UINT8 *text; UINT16 len; UINT16 round; -}tCMAC_CB; +} tCMAC_CB; tCMAC_CB cmac_cb; @@ -55,11 +54,10 @@ void print128(BT_OCTET16 x, const UINT8 *key_name) SMP_TRACE_WARNING("%s(MSB ~ LSB) = ", key_name); - for (i = 0; i < 4; i ++) - { + for (i = 0; i < 4; i ++) { SMP_TRACE_WARNING("%02x %02x %02x %02x", - p[BT_OCTET16_LEN - i*4 -1], p[BT_OCTET16_LEN - i*4 -2], - p[BT_OCTET16_LEN - i*4 -3], p[BT_OCTET16_LEN - i*4 -4]); + p[BT_OCTET16_LEN - i * 4 - 1], p[BT_OCTET16_LEN - i * 4 - 2], + p[BT_OCTET16_LEN - i * 4 - 3], p[BT_OCTET16_LEN - i * 4 - 4]); } #endif } @@ -80,8 +78,9 @@ static void padding ( BT_OCTET16 dest, UINT8 length ) { UINT8 i, *p = dest; /* original last block */ - for ( i = length ; i < BT_OCTET16_LEN; i++ ) + for ( i = length ; i < BT_OCTET16_LEN; i++ ) { p[BT_OCTET16_LEN - i - 1] = ( i == length ) ? 0x80 : 0; + } } /******************************************************************************* ** @@ -97,9 +96,8 @@ static void leftshift_onebit(UINT8 *input, UINT8 *output) UINT8 i, overflow = 0 , next_overflow = 0; SMP_TRACE_EVENT ("leftshift_onebit "); /* input[0] is LSB */ - for ( i = 0; i < BT_OCTET16_LEN ; i ++ ) - { - next_overflow = (input[i] & 0x80) ? 1:0; + for ( i = 0; i < BT_OCTET16_LEN ; i ++ ) { + next_overflow = (input[i] & 0x80) ? 1 : 0; output[i] = (input[i] << 1) | overflow; overflow = next_overflow; } @@ -116,8 +114,7 @@ static void leftshift_onebit(UINT8 *input, UINT8 *output) *******************************************************************************/ static void cmac_aes_cleanup(void) { - if (cmac_cb.text != NULL) - { + if (cmac_cb.text != NULL) { GKI_freebuf(cmac_cb.text); } memset(&cmac_cb, 0, sizeof(tCMAC_CB)); @@ -141,12 +138,10 @@ static BOOLEAN cmac_aes_k_calculate(BT_OCTET16 key, UINT8 *p_signature, UINT16 t SMP_TRACE_EVENT ("cmac_aes_k_calculate "); - while (i <= cmac_cb.round) - { + while (i <= cmac_cb.round) { smp_xor_128(&cmac_cb.text[(cmac_cb.round - i)*BT_OCTET16_LEN], x); /* Mi' := Mi (+) X */ - if (!SMP_Encrypt(key, BT_OCTET16_LEN, &cmac_cb.text[(cmac_cb.round - i)*BT_OCTET16_LEN], BT_OCTET16_LEN, &output)) - { + if (!SMP_Encrypt(key, BT_OCTET16_LEN, &cmac_cb.text[(cmac_cb.round - i)*BT_OCTET16_LEN], BT_OCTET16_LEN, &output)) { err = 1; break; } @@ -155,22 +150,21 @@ static BOOLEAN cmac_aes_k_calculate(BT_OCTET16 key, UINT8 *p_signature, UINT16 t i ++; } - if (!err) - { + if (!err) { p_mac = output.param_buf + (BT_OCTET16_LEN - tlen); memcpy(p_signature, p_mac, tlen); SMP_TRACE_DEBUG("tlen = %d p_mac = %d", tlen, p_mac); SMP_TRACE_DEBUG("p_mac[0] = 0x%02x p_mac[1] = 0x%02x p_mac[2] = 0x%02x p_mac[3] = 0x%02x", - *p_mac, *(p_mac + 1), *(p_mac + 2), *(p_mac + 3)); + *p_mac, *(p_mac + 1), *(p_mac + 2), *(p_mac + 3)); SMP_TRACE_DEBUG("p_mac[4] = 0x%02x p_mac[5] = 0x%02x p_mac[6] = 0x%02x p_mac[7] = 0x%02x", - *(p_mac + 4), *(p_mac + 5), *(p_mac + 6), *(p_mac + 7)); + *(p_mac + 4), *(p_mac + 5), *(p_mac + 6), *(p_mac + 7)); return TRUE; - } - else + } else { return FALSE; + } } /******************************************************************************* ** @@ -193,12 +187,10 @@ static void cmac_prepare_last_block (BT_OCTET16 k1, BT_OCTET16 k2) SMP_TRACE_WARNING("flag = %d round = %d", flag, cmac_cb.round); - if ( flag ) - { /* last block is complete block */ + if ( flag ) { + /* last block is complete block */ smp_xor_128(&cmac_cb.text[0], k1); - } - else /* padding then xor with k2 */ - { + } else { /* padding then xor with k2 */ padding(&cmac_cb.text[0], (UINT8)(cmac_cb.len % 16)); smp_xor_128(&cmac_cb.text[0], k2); @@ -221,25 +213,19 @@ static void cmac_subkey_cont(tSMP_ENC *p) print128(pp, (const UINT8 *)"K1 before shift"); /* If MSB(L) = 0, then K1 = L << 1 */ - if ( (pp[BT_OCTET16_LEN - 1] & 0x80) != 0 ) - { + if ( (pp[BT_OCTET16_LEN - 1] & 0x80) != 0 ) { /* Else K1 = ( L << 1 ) (+) Rb */ leftshift_onebit(pp, k1); smp_xor_128(k1, const_Rb); - } - else - { + } else { leftshift_onebit(pp, k1); } - if ( (k1[BT_OCTET16_LEN - 1] & 0x80) != 0 ) - { + if ( (k1[BT_OCTET16_LEN - 1] & 0x80) != 0 ) { /* K2 = (K1 << 1) (+) Rb */ leftshift_onebit(k1, k2); smp_xor_128(k2, const_Rb); - } - else - { + } else { /* If MSB(K1) = 0, then K2 = K1 << 1 */ leftshift_onebit(k1, k2); } @@ -267,12 +253,11 @@ static BOOLEAN cmac_generate_subkey(BT_OCTET16 key) tSMP_ENC output; SMP_TRACE_EVENT (" cmac_generate_subkey"); - if (SMP_Encrypt(key, BT_OCTET16_LEN, z, BT_OCTET16_LEN, &output)) - { + if (SMP_Encrypt(key, BT_OCTET16_LEN, z, BT_OCTET16_LEN, &output)) { cmac_subkey_cont(&output);; - } - else + } else { ret = FALSE; + } return ret; } @@ -300,37 +285,34 @@ BOOLEAN aes_cipher_msg_auth_code(BT_OCTET16 key, UINT8 *input, UINT16 length, SMP_TRACE_EVENT ("%s", __func__); - if (n == 0) n = 1; + if (n == 0) { + n = 1; + } len = n * BT_OCTET16_LEN; SMP_TRACE_WARNING("AES128_CMAC started, allocate buffer size = %d", len); /* allocate a memory space of multiple of 16 bytes to hold text */ - if ((cmac_cb.text = (UINT8 *)GKI_getbuf(len)) != NULL) - { + if ((cmac_cb.text = (UINT8 *)GKI_getbuf(len)) != NULL) { cmac_cb.round = n; memset(cmac_cb.text, 0, len); diff = len - length; - if (input != NULL && length > 0) - { + if (input != NULL && length > 0) { memcpy(&cmac_cb.text[diff] , input, (int)length); cmac_cb.len = length; - } - else + } else { cmac_cb.len = 0; + } /* prepare calculation for subkey s and last block of data */ - if (cmac_generate_subkey(key)) - { + if (cmac_generate_subkey(key)) { /* start calculation */ ret = cmac_aes_k_calculate(key, p_signature, tlen); } /* clean up */ cmac_aes_cleanup(); - } - else - { + } else { ret = FALSE; SMP_TRACE_ERROR("No resources"); } @@ -338,7 +320,7 @@ BOOLEAN aes_cipher_msg_auth_code(BT_OCTET16 key, UINT8 *input, UINT16 length, return ret; } - #if 0 /* testing code, sample data from spec */ +#if 0 /* testing code, sample data from spec */ void test_cmac_cback(UINT8 *p_mac, UINT16 tlen) { SMP_TRACE_EVENT ("test_cmac_cback "); @@ -363,16 +345,15 @@ void test_cmac(void) 0x3c, 0x4f, 0xcf, 0x09, 0x88, 0x15, 0xf7, 0xab, 0xa6, 0xd2, 0xae, 0x28, 0x16, 0x15, 0x7e, 0x2b }; - UINT8 i =0, tmp; + UINT8 i = 0, tmp; UINT16 len; len = 64; - for (i = 0; i < len/2; i ++) - { + for (i = 0; i < len / 2; i ++) { tmp = M[i]; - M[i] = M[len -1 - i]; - M[len -1 - i] = tmp; + M[i] = M[len - 1 - i]; + M[len - 1 - i] = tmp; } @@ -383,6 +364,6 @@ void test_cmac(void) aes_cipher_msg_auth_code(key, M, len, 128, test_cmac_cback, 0); } - #endif +#endif #endif diff --git a/components/bt/bluedroid/stack/smp/smp_keys.c b/components/bt/bluedroid/stack/smp/smp_keys.c old mode 100755 new mode 100644 index 5f93950d9a..c61e673ef5 --- a/components/bt/bluedroid/stack/smp/smp_keys.c +++ b/components/bt/bluedroid/stack/smp/smp_keys.c @@ -25,7 +25,7 @@ #if SMP_INCLUDED == TRUE #if SMP_DEBUG == TRUE - #include +#include #endif #include //#include "bt_utils.h" @@ -39,7 +39,7 @@ #include "controller.h" #ifndef SMP_MAX_ENC_REPEAT - #define SMP_MAX_ENC_REPEAT 3 +#define SMP_MAX_ENC_REPEAT 3 #endif static void smp_rand_back(tBTM_RAND_ENC *p); @@ -58,8 +58,7 @@ static void smp_process_private_key(tSMP_CB *p_cb); static void smp_finish_nonce_generation(tSMP_CB *p_cb); static void smp_process_new_nonce(tSMP_CB *p_cb); -static const tSMP_ACT smp_encrypt_action[] = -{ +static const tSMP_ACT smp_encrypt_action[] = { smp_generate_compare, /* SMP_GEN_COMPARE */ smp_generate_confirm, /* SMP_GEN_CONFIRM*/ smp_generate_stk, /* SMP_GEN_STK*/ @@ -84,13 +83,11 @@ void smp_debug_print_nbyte_little_endian(UINT8 *p, const UINT8 *key_name, UINT8 SMP_TRACE_WARNING("%s(LSB ~ MSB):\n", key_name); memset(p_buf, 0, sizeof(p_buf)); - row_count = len % col_count ? len / col_count + 1: len / col_count; + row_count = len % col_count ? len / col_count + 1 : len / col_count; ind = 0; - for (int row = 0; row < row_count; row++) - { - for (int column = 0, x = 0; (ind < len) && (column < col_count); column++, ind++) - { + for (int row = 0; row < row_count; row++) { + for (int column = 0, x = 0; (ind < len) && (column < col_count); column++, ind++) { x += sprintf((char *)&p_buf[x], "%02x ", p[ind]); } SMP_TRACE_WARNING(" [%03d]: %s", row * col_count, p_buf); @@ -105,18 +102,16 @@ void smp_debug_print_nbyte_big_endian (UINT8 *p, const UINT8 *key_name, UINT8 le SMP_TRACE_WARNING("%s(MSB ~ LSB):", key_name); memset(p_buf, 0, sizeof(p_buf)); - nrows = len % ncols ? len / ncols + 1: len / ncols; + nrows = len % ncols ? len / ncols + 1 : len / ncols; int ind = 0; int ncols = 32; /* num entries in one line */ int nrows; /* num lines */ int x; - for (int row = 0; row < nrows; row++) - { - for (int col = 0, x = 0; (ind < len) && (col < ncols); col++, ind++) - { - x += sprintf ((char *)&p_buf[len-x-1], "%02x ", p[ind]); + for (int row = 0; row < nrows; row++) { + for (int col = 0, x = 0; (ind < len) && (col < ncols); col++, ind++) { + x += sprintf ((char *)&p_buf[len - x - 1], "%02x ", p[ind]); } SMP_TRACE_WARNING("[%03d]: %s", row * ncols, p_buf); } @@ -146,20 +141,19 @@ BOOLEAN smp_encrypt_data (UINT8 *key, UINT8 key_len, UINT8 *p_rev_output = NULL; /* encrypted output in big endilan format */ SMP_TRACE_DEBUG ("%s\n", __func__); - if ( (p_out == NULL ) || (key_len != SMP_ENCRYT_KEY_SIZE) ) - { + if ( (p_out == NULL ) || (key_len != SMP_ENCRYT_KEY_SIZE) ) { SMP_TRACE_ERROR ("%s failed\n", __func__); return FALSE; } - if ((p_start = (UINT8 *)GKI_getbuf((SMP_ENCRYT_DATA_SIZE*4))) == NULL) - { + if ((p_start = (UINT8 *)GKI_getbuf((SMP_ENCRYT_DATA_SIZE * 4))) == NULL) { SMP_TRACE_ERROR ("%s failed unable to allocate buffer\n", __func__); return FALSE; } - if (pt_len > SMP_ENCRYT_DATA_SIZE) + if (pt_len > SMP_ENCRYT_DATA_SIZE) { pt_len = SMP_ENCRYT_DATA_SIZE; + } memset(p_start, 0, SMP_ENCRYT_DATA_SIZE * 4); p = p_start; @@ -209,8 +203,9 @@ void smp_generate_passkey(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) p_cb->rand_enc_proc_state = SMP_GEN_TK; /* generate MRand or SRand */ - if (!btsnd_hcic_ble_rand((void *)smp_rand_back)) + if (!btsnd_hcic_ble_rand((void *)smp_rand_back)) { smp_rand_back(NULL); + } } /******************************************************************************* @@ -234,8 +229,9 @@ void smp_proc_passkey(tSMP_CB *p_cb , tBTM_RAND_ENC *p) passkey &= ~SMP_PASSKEY_MASK; /* truncate by maximum value */ - while (passkey > BTM_MAX_PASSKEY_VAL) + while (passkey > BTM_MAX_PASSKEY_VAL) { passkey >>= 1; + } /* save the TK */ memset(p_cb->tk, 0, BT_OCTET16_LEN); @@ -244,17 +240,13 @@ void smp_proc_passkey(tSMP_CB *p_cb , tBTM_RAND_ENC *p) key.key_type = SMP_KEY_TYPE_TK; key.p_data = p_cb->tk; - if (p_cb->p_callback) - { + if (p_cb->p_callback) { (*p_cb->p_callback)(SMP_PASSKEY_NOTIF_EVT, p_cb->pairing_bda, (tSMP_EVT_DATA *)&passkey); } - if (p_cb->selected_association_model == SMP_MODEL_SEC_CONN_PASSKEY_DISP) - { + if (p_cb->selected_association_model == SMP_MODEL_SEC_CONN_PASSKEY_DISP) { smp_sm_event(&smp_cb, SMP_KEY_READY_EVT, &passkey); - } - else - { + } else { smp_sm_event(p_cb, SMP_KEY_READY_EVT, (tSMP_INT_DATA *)&key); } } @@ -279,16 +271,13 @@ void smp_generate_stk(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) SMP_TRACE_DEBUG ("%s\n", __func__); - if (p_cb->le_secure_connections_mode_is_used) - { + if (p_cb->le_secure_connections_mode_is_used) { SMP_TRACE_WARNING ("FOR LE SC LTK IS USED INSTEAD OF STK"); output.param_len = SMP_ENCRYT_KEY_SIZE; output.status = HCI_SUCCESS; output.opcode = HCI_BLE_ENCRYPT; memcpy(output.param_buf, p_cb->ltk, SMP_ENCRYT_DATA_SIZE); - } - else if (!smp_calculate_legacy_short_term_key(p_cb, &output)) - { + } else if (!smp_calculate_legacy_short_term_key(p_cb, &output)) { SMP_TRACE_ERROR("%s failed", __func__); smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &status); return; @@ -315,8 +304,9 @@ void smp_generate_srand_mrand_confirm(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) SMP_TRACE_DEBUG ("%s\n", __func__); p_cb->rand_enc_proc_state = SMP_GEN_SRAND_MRAND; /* generate MRand or SRand */ - if (!btsnd_hcic_ble_rand((void *)smp_rand_back)) + if (!btsnd_hcic_ble_rand((void *)smp_rand_back)) { smp_rand_back(NULL); + } } /******************************************************************************* @@ -336,8 +326,9 @@ void smp_generate_rand_cont(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) SMP_TRACE_DEBUG ("%s\n", __func__); p_cb->rand_enc_proc_state = SMP_GEN_SRAND_MRAND_CONT; /* generate 64 MSB of MRand or SRand */ - if (!btsnd_hcic_ble_rand((void *)smp_rand_back)) + if (!btsnd_hcic_ble_rand((void *)smp_rand_back)) { smp_rand_back(NULL); + } } /******************************************************************************* @@ -361,30 +352,25 @@ void smp_generate_ltk(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) BOOLEAN div_status; SMP_TRACE_DEBUG ("%s\n", __FUNCTION__); - if (smp_get_br_state() == SMP_BR_STATE_BOND_PENDING) - { + if (smp_get_br_state() == SMP_BR_STATE_BOND_PENDING) { smp_br_process_link_key(p_cb, NULL); return; - } - else if (p_cb->le_secure_connections_mode_is_used) - { + } else if (p_cb->le_secure_connections_mode_is_used) { smp_process_secure_connection_long_term_key(); return; } div_status = btm_get_local_div(p_cb->pairing_bda, &p_cb->div); - if (div_status) - { + if (div_status) { smp_generate_ltk_cont(p_cb, NULL); - } - else - { + } else { SMP_TRACE_DEBUG ("Generate DIV for LTK\n"); p_cb->rand_enc_proc_state = SMP_GEN_DIV_LTK; /* generate MRand or SRand */ - if (!btsnd_hcic_ble_rand((void *)smp_rand_back)) + if (!btsnd_hcic_ble_rand((void *)smp_rand_back)) { smp_rand_back(NULL); + } } } @@ -404,8 +390,8 @@ void smp_compute_csrk(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) BT_OCTET16 er; UINT8 buffer[4]; /* for (r || DIV) r=1*/ - UINT16 r=1; - UINT8 *p=buffer; + UINT16 r = 1; + UINT8 *p = buffer; tSMP_ENC output; tSMP_STATUS status = SMP_PAIR_FAIL_UNKNOWN; @@ -415,20 +401,14 @@ void smp_compute_csrk(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) UINT16_TO_STREAM(p, p_cb->div); UINT16_TO_STREAM(p, r); - if (!SMP_Encrypt(er, BT_OCTET16_LEN, buffer, 4, &output)) - { + if (!SMP_Encrypt(er, BT_OCTET16_LEN, buffer, 4, &output)) { SMP_TRACE_ERROR("smp_generate_csrk failed\n"); - if (p_cb->smp_over_br) - { + if (p_cb->smp_over_br) { smp_br_state_machine_event(p_cb, SMP_BR_AUTH_CMPL_EVT, &status); - } - else - { + } else { smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &status); } - } - else - { + } else { memcpy((void *)p_cb->csrk, output.param_buf, BT_OCTET16_LEN); smp_send_csrk_info(p_cb, NULL); } @@ -454,16 +434,14 @@ void smp_generate_csrk(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) SMP_TRACE_DEBUG ("smp_generate_csrk"); div_status = btm_get_local_div(p_cb->pairing_bda, &p_cb->div); - if (div_status) - { + if (div_status) { smp_compute_csrk(p_cb, NULL); - } - else - { + } else { SMP_TRACE_DEBUG ("Generate DIV for CSRK"); p_cb->rand_enc_proc_state = SMP_GEN_DIV_CSRK; - if (!btsnd_hcic_ble_rand((void *)smp_rand_back)) + if (!btsnd_hcic_ble_rand((void *)smp_rand_back)) { smp_rand_back(NULL); + } } } @@ -525,16 +503,14 @@ void smp_gen_p1_4_confirm( tSMP_CB *p_cb, BT_OCTET16 p1) SMP_TRACE_DEBUG ("smp_gen_p1_4_confirm\n"); - if (!BTM_ReadRemoteConnectionAddr(p_cb->pairing_bda, remote_bda, &addr_type)) - { + if (!BTM_ReadRemoteConnectionAddr(p_cb->pairing_bda, remote_bda, &addr_type)) { SMP_TRACE_ERROR("can not generate confirm for unknown device\n"); return; } BTM_ReadConnectionAddr( p_cb->pairing_bda, p_cb->local_bda, &p_cb->addr_type); - if (p_cb->role == HCI_ROLE_MASTER) - { + if (p_cb->role == HCI_ROLE_MASTER) { /* LSB : rat': initiator's(local) address type */ UINT8_TO_STREAM(p, p_cb->addr_type); /* LSB : iat': responder's address type */ @@ -543,9 +519,7 @@ void smp_gen_p1_4_confirm( tSMP_CB *p_cb, BT_OCTET16 p1) smp_concatenate_local(p_cb, &p, SMP_OPCODE_PAIRING_REQ); /* concatinate pres */ smp_concatenate_peer(p_cb, &p, SMP_OPCODE_PAIRING_RSP); - } - else - { + } else { /* LSB : iat': initiator's address type */ UINT8_TO_STREAM(p, addr_type); /* LSB : rat': responder's(local) address type */ @@ -576,9 +550,8 @@ void smp_gen_p2_4_confirm( tSMP_CB *p_cb, BT_OCTET16 p2) UINT8 *p = (UINT8 *)p2; BD_ADDR remote_bda; tBLE_ADDR_TYPE addr_type = 0; - SMP_TRACE_DEBUG ("smp_gen_p2_4_confirm\n"); - if (!BTM_ReadRemoteConnectionAddr(p_cb->pairing_bda, remote_bda, &addr_type)) - { + SMP_TRACE_DEBUG ("smp_gen_p2_4_confirm\n"); + if (!BTM_ReadRemoteConnectionAddr(p_cb->pairing_bda, remote_bda, &addr_type)) { SMP_TRACE_ERROR("can not generate confirm p2 for unknown device\n"); return; } @@ -587,15 +560,12 @@ void smp_gen_p2_4_confirm( tSMP_CB *p_cb, BT_OCTET16 p2) memset(p, 0, sizeof(BT_OCTET16)); - if (p_cb->role == HCI_ROLE_MASTER) - { + if (p_cb->role == HCI_ROLE_MASTER) { /* LSB ra */ BDADDR_TO_STREAM(p, remote_bda); /* ia */ BDADDR_TO_STREAM(p, p_cb->local_bda); - } - else - { + } else { /* LSB ra */ BDADDR_TO_STREAM(p, p_cb->local_bda); /* ia */ @@ -634,13 +604,10 @@ void smp_calculate_comfirm (tSMP_CB *p_cb, BT_OCTET16 rand, BD_ADDR bda) smp_debug_print_nbyte_little_endian ((UINT8 *)p1, (const UINT8 *)"P1' = r XOR p1", 16); /* calculate e(k, r XOR p1), where k = TK */ - if (!SMP_Encrypt(p_cb->tk, BT_OCTET16_LEN, p1, BT_OCTET16_LEN, &output)) - { + if (!SMP_Encrypt(p_cb->tk, BT_OCTET16_LEN, p1, BT_OCTET16_LEN, &output)) { SMP_TRACE_ERROR("smp_generate_csrk failed"); smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &status); - } - else - { + } else { smp_calculate_comfirm_cont(p_cb, &output); } } @@ -674,23 +641,19 @@ static void smp_calculate_comfirm_cont(tSMP_CB *p_cb, tSMP_ENC *p) smp_debug_print_nbyte_little_endian ((UINT8 *)p2, (const UINT8 *)"p2' = C1 xor p2", 16); /* calculate: Confirm = E(k, p1' XOR p2) */ - if (!SMP_Encrypt(p_cb->tk, BT_OCTET16_LEN, p2, BT_OCTET16_LEN, &output)) - { + if (!SMP_Encrypt(p_cb->tk, BT_OCTET16_LEN, p2, BT_OCTET16_LEN, &output)) { SMP_TRACE_ERROR("smp_calculate_comfirm_cont failed\n"); smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &status); - } - else - { - SMP_TRACE_DEBUG("p_cb->rand_enc_proc_state=%d\n",p_cb->rand_enc_proc_state); - switch (p_cb->rand_enc_proc_state) - { - case SMP_GEN_CONFIRM: - smp_process_confirm(p_cb, &output); - break; + } else { + SMP_TRACE_DEBUG("p_cb->rand_enc_proc_state=%d\n", p_cb->rand_enc_proc_state); + switch (p_cb->rand_enc_proc_state) { + case SMP_GEN_CONFIRM: + smp_process_confirm(p_cb, &output); + break; - case SMP_GEN_COMPARE: - smp_process_compare(p_cb, &output); - break; + case SMP_GEN_COMPARE: + smp_process_compare(p_cb, &output); + break; } } } @@ -760,7 +723,7 @@ static void smp_process_confirm(tSMP_CB *p_cb, tSMP_ENC *p) key.key_type = SMP_KEY_TYPE_CFM; key.p_data = p->param_buf; - + smp_sm_event(p_cb, SMP_KEY_READY_EVT, &key); } @@ -786,7 +749,7 @@ static void smp_process_compare(tSMP_CB *p_cb, tSMP_ENC *p) #endif key.key_type = SMP_KEY_TYPE_CMP; key.p_data = p->param_buf; - //smp_set_state(SMP_STATE_CONFIRM); + //smp_set_state(SMP_STATE_CONFIRM); smp_sm_event(p_cb, SMP_KEY_READY_EVT, &key); } @@ -838,13 +801,10 @@ static void smp_generate_ltk_cont(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) /* LTK = d1(ER, DIV, 0)= e(ER, DIV)*/ if (!SMP_Encrypt(er, BT_OCTET16_LEN, (UINT8 *)&p_cb->div, - sizeof(UINT16), &output)) - { + sizeof(UINT16), &output)) { SMP_TRACE_ERROR("%s failed\n", __func__); smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &status); - } - else - { + } else { /* mask the LTK */ smp_mask_enc_key(p_cb->loc_enc_size, output.param_buf); memcpy((void *)p_cb->ltk, output.param_buf, BT_OCTET16_LEN); @@ -874,13 +834,10 @@ static void smp_generate_y(tSMP_CB *p_cb, tSMP_INT_DATA *p) BTM_GetDeviceDHK(dhk); if (!SMP_Encrypt(dhk, BT_OCTET16_LEN, p_cb->enc_rand, - BT_OCTET8_LEN, &output)) - { + BT_OCTET8_LEN, &output)) { SMP_TRACE_ERROR("smp_generate_y failed"); smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &status); - } - else - { + } else { smp_process_ediv(p_cb, &output); } } @@ -903,8 +860,9 @@ static void smp_generate_rand_vector (tSMP_CB *p_cb, tSMP_INT_DATA *p) /* generate random vector */ SMP_TRACE_DEBUG ("smp_generate_rand_vector\n"); p_cb->rand_enc_proc_state = SMP_GEN_RAND_V; - if (!btsnd_hcic_ble_rand((void *)smp_rand_back)) + if (!btsnd_hcic_ble_rand((void *)smp_rand_back)) { smp_rand_back(NULL); + } } /******************************************************************************* @@ -919,7 +877,7 @@ static void smp_generate_rand_vector (tSMP_CB *p_cb, tSMP_INT_DATA *p) static void smp_process_ediv(tSMP_CB *p_cb, tSMP_ENC *p) { tSMP_KEY key; - UINT8 *pp= p->param_buf; + UINT8 *pp = p->param_buf; UINT16 y; SMP_TRACE_DEBUG ("smp_process_ediv "); @@ -951,13 +909,10 @@ BOOLEAN smp_calculate_legacy_short_term_key(tSMP_CB *p_cb, tSMP_ENC *output) SMP_TRACE_DEBUG ("%s\n", __func__); memset(p, 0, BT_OCTET16_LEN); - if (p_cb->role == HCI_ROLE_MASTER) - { + if (p_cb->role == HCI_ROLE_MASTER) { memcpy(p, p_cb->rand, BT_OCTET8_LEN); memcpy(&p[BT_OCTET8_LEN], p_cb->rrand, BT_OCTET8_LEN); - } - else - { + } else { memcpy(p, p_cb->rrand, BT_OCTET8_LEN); memcpy(&p[BT_OCTET8_LEN], p_cb->rand, BT_OCTET8_LEN); } @@ -965,8 +920,7 @@ BOOLEAN smp_calculate_legacy_short_term_key(tSMP_CB *p_cb, tSMP_ENC *output) BOOLEAN encrypted; /* generate STK = Etk(rand|rrand)*/ encrypted = SMP_Encrypt( p_cb->tk, BT_OCTET16_LEN, ptext, BT_OCTET16_LEN, output); - if (!encrypted) - { + if (!encrypted) { SMP_TRACE_ERROR("%s failed\n", __func__); } return encrypted; @@ -986,10 +940,11 @@ BOOLEAN smp_calculate_legacy_short_term_key(tSMP_CB *p_cb, tSMP_ENC *output) *******************************************************************************/ void smp_create_private_key(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) { - SMP_TRACE_DEBUG ("%s",__FUNCTION__); + SMP_TRACE_DEBUG ("%s", __FUNCTION__); p_cb->rand_enc_proc_state = SMP_GENERATE_PRIVATE_KEY_0_7; - if (!btsnd_hcic_ble_rand((void *)smp_rand_back)) + if (!btsnd_hcic_ble_rand((void *)smp_rand_back)) { smp_rand_back(NULL); + } } /******************************************************************************* @@ -1011,21 +966,20 @@ void smp_create_private_key(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) void smp_use_oob_private_key(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) { SMP_TRACE_DEBUG ("%s req_oob_type: %d, role: %d\n", - __func__, p_cb->req_oob_type, p_cb->role); + __func__, p_cb->req_oob_type, p_cb->role); - switch (p_cb->req_oob_type) - { - case SMP_OOB_BOTH: - case SMP_OOB_LOCAL: - SMP_TRACE_DEBUG("%s restore secret key\n", __func__); - memcpy(p_cb->private_key, p_cb->sc_oob_data.loc_oob_data.private_key_used, BT_OCTET32_LEN); - smp_process_private_key(p_cb); - break; - default: - SMP_TRACE_DEBUG("%s create secret key anew\n", __func__); - smp_set_state(SMP_STATE_PAIR_REQ_RSP); - smp_decide_association_model(p_cb, NULL); - break; + switch (p_cb->req_oob_type) { + case SMP_OOB_BOTH: + case SMP_OOB_LOCAL: + SMP_TRACE_DEBUG("%s restore secret key\n", __func__); + memcpy(p_cb->private_key, p_cb->sc_oob_data.loc_oob_data.private_key_used, BT_OCTET32_LEN); + smp_process_private_key(p_cb); + break; + default: + SMP_TRACE_DEBUG("%s create secret key anew\n", __func__); + smp_set_state(SMP_STATE_PAIR_REQ_RSP); + smp_decide_association_model(p_cb, NULL); + break; } } @@ -1043,36 +997,38 @@ void smp_continue_private_key_creation (tSMP_CB *p_cb, tBTM_RAND_ENC *p) UINT8 state = p_cb->rand_enc_proc_state & ~0x80; SMP_TRACE_DEBUG ("%s state=0x%x\n", __func__, state); - switch (state) - { - case SMP_GENERATE_PRIVATE_KEY_0_7: - memcpy((void *)p_cb->private_key, p->param_buf, p->param_len); - p_cb->rand_enc_proc_state = SMP_GENERATE_PRIVATE_KEY_8_15; - if (!btsnd_hcic_ble_rand((void *)smp_rand_back)) - smp_rand_back(NULL); - break; + switch (state) { + case SMP_GENERATE_PRIVATE_KEY_0_7: + memcpy((void *)p_cb->private_key, p->param_buf, p->param_len); + p_cb->rand_enc_proc_state = SMP_GENERATE_PRIVATE_KEY_8_15; + if (!btsnd_hcic_ble_rand((void *)smp_rand_back)) { + smp_rand_back(NULL); + } + break; - case SMP_GENERATE_PRIVATE_KEY_8_15: - memcpy((void *)&p_cb->private_key[8], p->param_buf, p->param_len); - p_cb->rand_enc_proc_state = SMP_GENERATE_PRIVATE_KEY_16_23; - if (!btsnd_hcic_ble_rand((void *)smp_rand_back)) - smp_rand_back(NULL); - break; + case SMP_GENERATE_PRIVATE_KEY_8_15: + memcpy((void *)&p_cb->private_key[8], p->param_buf, p->param_len); + p_cb->rand_enc_proc_state = SMP_GENERATE_PRIVATE_KEY_16_23; + if (!btsnd_hcic_ble_rand((void *)smp_rand_back)) { + smp_rand_back(NULL); + } + break; - case SMP_GENERATE_PRIVATE_KEY_16_23: - memcpy((void *)&p_cb->private_key[16], p->param_buf, p->param_len); - p_cb->rand_enc_proc_state = SMP_GENERATE_PRIVATE_KEY_24_31; - if (!btsnd_hcic_ble_rand((void *)smp_rand_back)) - smp_rand_back(NULL); - break; + case SMP_GENERATE_PRIVATE_KEY_16_23: + memcpy((void *)&p_cb->private_key[16], p->param_buf, p->param_len); + p_cb->rand_enc_proc_state = SMP_GENERATE_PRIVATE_KEY_24_31; + if (!btsnd_hcic_ble_rand((void *)smp_rand_back)) { + smp_rand_back(NULL); + } + break; - case SMP_GENERATE_PRIVATE_KEY_24_31: - memcpy((void *)&p_cb->private_key[24], p->param_buf, p->param_len); - smp_process_private_key (p_cb); - break; + case SMP_GENERATE_PRIVATE_KEY_24_31: + memcpy((void *)&p_cb->private_key[24], p->param_buf, p->param_len); + smp_process_private_key (p_cb); + break; - default: - break; + default: + break; } return; @@ -1097,7 +1053,7 @@ void smp_process_private_key(tSMP_CB *p_cb) SMP_TRACE_DEBUG ("%s", __FUNCTION__); memcpy(private_key, p_cb->private_key, BT_OCTET32_LEN); - ECC_PointMult(&public_key, &(curve_p256.G), (DWORD*) private_key, KEY_LENGTH_DWORDS_P256); + ECC_PointMult(&public_key, &(curve_p256.G), (DWORD *) private_key, KEY_LENGTH_DWORDS_P256); memcpy(p_cb->loc_publ_key.x, public_key.x, BT_OCTET32_LEN); memcpy(p_cb->loc_publ_key.y, public_key.y, BT_OCTET32_LEN); @@ -1134,7 +1090,7 @@ void smp_compute_dhkey (tSMP_CB *p_cb) memcpy(peer_publ_key.x, p_cb->peer_publ_key.x, BT_OCTET32_LEN); memcpy(peer_publ_key.y, p_cb->peer_publ_key.y, BT_OCTET32_LEN); - ECC_PointMult(&new_publ_key, &peer_publ_key, (DWORD*) private_key, KEY_LENGTH_DWORDS_P256); + ECC_PointMult(&new_publ_key, &peer_publ_key, (DWORD *) private_key, KEY_LENGTH_DWORDS_P256); memcpy(p_cb->dhkey, new_publ_key.x, BT_OCTET32_LEN); @@ -1166,31 +1122,30 @@ void smp_calculate_local_commitment(tSMP_CB *p_cb) SMP_TRACE_DEBUG("%s\n", __FUNCTION__); - switch (p_cb->selected_association_model) - { - case SMP_MODEL_SEC_CONN_JUSTWORKS: - case SMP_MODEL_SEC_CONN_NUM_COMP: - if (p_cb->role == HCI_ROLE_MASTER) - SMP_TRACE_WARNING ("local commitment calc on master is not expected \ + switch (p_cb->selected_association_model) { + case SMP_MODEL_SEC_CONN_JUSTWORKS: + case SMP_MODEL_SEC_CONN_NUM_COMP: + if (p_cb->role == HCI_ROLE_MASTER) + SMP_TRACE_WARNING ("local commitment calc on master is not expected \ for Just Works/Numeric Comparison models\n"); - smp_calculate_f4(p_cb->loc_publ_key.x, p_cb->peer_publ_key.x, p_cb->rand, 0, - p_cb->commitment); - break; - case SMP_MODEL_SEC_CONN_PASSKEY_ENT: - case SMP_MODEL_SEC_CONN_PASSKEY_DISP: - random_input = smp_calculate_random_input(p_cb->local_random, p_cb->round); - smp_calculate_f4(p_cb->loc_publ_key.x, p_cb->peer_publ_key.x, p_cb->rand, - random_input, p_cb->commitment); - break; - case SMP_MODEL_SEC_CONN_OOB: - SMP_TRACE_WARNING ("local commitment calc is expected for OOB model BEFORE pairing\n"); - smp_calculate_f4(p_cb->loc_publ_key.x, p_cb->loc_publ_key.x, p_cb->local_random, 0, - p_cb->commitment); - break; - default: - SMP_TRACE_ERROR("Association Model = %d is not used in LE SC\n", - p_cb->selected_association_model); - return; + smp_calculate_f4(p_cb->loc_publ_key.x, p_cb->peer_publ_key.x, p_cb->rand, 0, + p_cb->commitment); + break; + case SMP_MODEL_SEC_CONN_PASSKEY_ENT: + case SMP_MODEL_SEC_CONN_PASSKEY_DISP: + random_input = smp_calculate_random_input(p_cb->local_random, p_cb->round); + smp_calculate_f4(p_cb->loc_publ_key.x, p_cb->peer_publ_key.x, p_cb->rand, + random_input, p_cb->commitment); + break; + case SMP_MODEL_SEC_CONN_OOB: + SMP_TRACE_WARNING ("local commitment calc is expected for OOB model BEFORE pairing\n"); + smp_calculate_f4(p_cb->loc_publ_key.x, p_cb->loc_publ_key.x, p_cb->local_random, 0, + p_cb->commitment); + break; + default: + SMP_TRACE_ERROR("Association Model = %d is not used in LE SC\n", + p_cb->selected_association_model); + return; } SMP_TRACE_EVENT ("local commitment calculation is completed"); @@ -1212,30 +1167,29 @@ void smp_calculate_peer_commitment(tSMP_CB *p_cb, BT_OCTET16 output_buf) SMP_TRACE_DEBUG ("%s", __FUNCTION__); - switch (p_cb->selected_association_model) - { - case SMP_MODEL_SEC_CONN_JUSTWORKS: - case SMP_MODEL_SEC_CONN_NUM_COMP: - if (p_cb->role == HCI_ROLE_SLAVE) - SMP_TRACE_WARNING ("peer commitment calc on slave is not expected \ + switch (p_cb->selected_association_model) { + case SMP_MODEL_SEC_CONN_JUSTWORKS: + case SMP_MODEL_SEC_CONN_NUM_COMP: + if (p_cb->role == HCI_ROLE_SLAVE) + SMP_TRACE_WARNING ("peer commitment calc on slave is not expected \ for Just Works/Numeric Comparison models\n"); - smp_calculate_f4(p_cb->peer_publ_key.x, p_cb->loc_publ_key.x, p_cb->rrand, 0, - output_buf); - break; - case SMP_MODEL_SEC_CONN_PASSKEY_ENT: - case SMP_MODEL_SEC_CONN_PASSKEY_DISP: - ri = smp_calculate_random_input(p_cb->peer_random, p_cb->round); - smp_calculate_f4(p_cb->peer_publ_key.x, p_cb->loc_publ_key.x, p_cb->rrand, ri, - output_buf); - break; - case SMP_MODEL_SEC_CONN_OOB: - smp_calculate_f4(p_cb->peer_publ_key.x, p_cb->peer_publ_key.x, p_cb->peer_random, 0, - output_buf); - break; - default: - SMP_TRACE_ERROR("Association Model = %d is not used in LE SC\n", - p_cb->selected_association_model); - return; + smp_calculate_f4(p_cb->peer_publ_key.x, p_cb->loc_publ_key.x, p_cb->rrand, 0, + output_buf); + break; + case SMP_MODEL_SEC_CONN_PASSKEY_ENT: + case SMP_MODEL_SEC_CONN_PASSKEY_DISP: + ri = smp_calculate_random_input(p_cb->peer_random, p_cb->round); + smp_calculate_f4(p_cb->peer_publ_key.x, p_cb->loc_publ_key.x, p_cb->rrand, ri, + output_buf); + break; + case SMP_MODEL_SEC_CONN_OOB: + smp_calculate_f4(p_cb->peer_publ_key.x, p_cb->peer_publ_key.x, p_cb->peer_random, 0, + output_buf); + break; + default: + SMP_TRACE_ERROR("Association Model = %d is not used in LE SC\n", + p_cb->selected_association_model); + return; } SMP_TRACE_EVENT ("peer commitment calculation is completed\n"); @@ -1322,25 +1276,21 @@ void smp_calculate_f4(UINT8 *u, UINT8 *v, UINT8 *x, UINT8 z, UINT8 *c) ** *******************************************************************************/ void smp_calculate_numeric_comparison_display_number(tSMP_CB *p_cb, - tSMP_INT_DATA *p_data) + tSMP_INT_DATA *p_data) { SMP_TRACE_DEBUG ("%s", __func__); - if (p_cb->role == HCI_ROLE_MASTER) - { + if (p_cb->role == HCI_ROLE_MASTER) { p_cb->number_to_display = smp_calculate_g2(p_cb->loc_publ_key.x, p_cb->peer_publ_key.x, p_cb->rand, p_cb->rrand); - } - else - { + } else { p_cb->number_to_display = smp_calculate_g2(p_cb->peer_publ_key.x, p_cb->loc_publ_key.x, p_cb->rrand, p_cb->rand); } - if (p_cb->number_to_display >= (BTM_MAX_PASSKEY_VAL + 1)) - { + if (p_cb->number_to_display >= (BTM_MAX_PASSKEY_VAL + 1)) { UINT8 reason; reason = p_cb->failure = SMP_PAIR_FAIL_UNKNOWN; smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason); @@ -1413,9 +1363,8 @@ UINT32 smp_calculate_g2(UINT8 *u, UINT8 *v, UINT8 *x, UINT8 *y) smp_debug_print_nbyte_little_endian (p_prnt, (const UINT8 *)"K", BT_OCTET16_LEN); #endif - if(!aes_cipher_msg_auth_code(key, msg, msg_len, BT_OCTET16_LEN, cmac)) - { - SMP_TRACE_ERROR("%s failed",__FUNCTION__); + if (!aes_cipher_msg_auth_code(key, msg, msg_len, BT_OCTET16_LEN, cmac)) { + SMP_TRACE_ERROR("%s failed", __FUNCTION__); return (BTM_MAX_PASSKEY_VAL + 1); } @@ -1432,8 +1381,9 @@ UINT32 smp_calculate_g2(UINT8 *u, UINT8 *v, UINT8 *x, UINT8 *y) smp_debug_print_nbyte_little_endian (p_prnt, (const UINT8 *)"cmac mod 2**32", 4); #endif - while (vres > BTM_MAX_PASSKEY_VAL) + while (vres > BTM_MAX_PASSKEY_VAL) { vres -= (BTM_MAX_PASSKEY_VAL + 1); + } #if SMP_DEBUG == TRUE p_prnt = (UINT8 *) &vres; smp_debug_print_nbyte_little_endian (p_prnt, (const UINT8 *)"cmac mod 2**32 mod 10**6", 4); @@ -1502,7 +1452,7 @@ BOOLEAN smp_calculate_f5(UINT8 *w, UINT8 *n1, UINT8 *n2, UINT8 *a1, UINT8 *a2, UINT8 *mac_key, UINT8 *ltk) { BT_OCTET16 t; /* AES-CMAC output in smp_calculate_f5_key(...), key in */ - /* smp_calculate_f5_mackey_or_long_term_key(...) */ + /* smp_calculate_f5_mackey_or_long_term_key(...) */ #if SMP_DEBUG == TRUE UINT8 *p_prnt = NULL; #endif @@ -1534,12 +1484,11 @@ BOOLEAN smp_calculate_f5(UINT8 *w, UINT8 *n1, UINT8 *n2, UINT8 *a1, UINT8 *a2, p_prnt = a1; smp_debug_print_nbyte_little_endian (p_prnt, (const UINT8 *)"A1", 7); p_prnt = a2; - smp_debug_print_nbyte_little_endian (p_prnt,(const UINT8 *) "A2", 7); + smp_debug_print_nbyte_little_endian (p_prnt, (const UINT8 *) "A2", 7); #endif - if (!smp_calculate_f5_key(w, t)) - { - SMP_TRACE_ERROR("%s failed to calc T",__FUNCTION__); + if (!smp_calculate_f5_key(w, t)) { + SMP_TRACE_ERROR("%s failed to calc T", __FUNCTION__); return FALSE; } #if SMP_DEBUG == TRUE @@ -1548,8 +1497,7 @@ BOOLEAN smp_calculate_f5(UINT8 *w, UINT8 *n1, UINT8 *n2, UINT8 *a1, UINT8 *a2, #endif if (!smp_calculate_f5_mackey_or_long_term_key(t, counter_mac_key, key_id, n1, n2, a1, a2, - length, mac_key)) - { + length, mac_key)) { SMP_TRACE_ERROR("%s failed to calc MacKey", __FUNCTION__); return FALSE; } @@ -1559,9 +1507,8 @@ BOOLEAN smp_calculate_f5(UINT8 *w, UINT8 *n1, UINT8 *n2, UINT8 *a1, UINT8 *a2, #endif if (!smp_calculate_f5_mackey_or_long_term_key(t, counter_ltk, key_id, n1, n2, a1, a2, - length, ltk)) - { - SMP_TRACE_ERROR("%s failed to calc LTK",__FUNCTION__); + length, ltk)) { + SMP_TRACE_ERROR("%s failed to calc LTK", __FUNCTION__); return FALSE; } #if SMP_DEBUG == TRUE @@ -1605,15 +1552,15 @@ BOOLEAN smp_calculate_f5(UINT8 *w, UINT8 *n1, UINT8 *n2, UINT8 *a1, UINT8 *a2, ** *******************************************************************************/ BOOLEAN smp_calculate_f5_mackey_or_long_term_key(UINT8 *t, UINT8 *counter, - UINT8 *key_id, UINT8 *n1, UINT8 *n2, UINT8 *a1, UINT8 *a2, - UINT8 *length, UINT8 *mac) + UINT8 *key_id, UINT8 *n1, UINT8 *n2, UINT8 *a1, UINT8 *a2, + UINT8 *length, UINT8 *mac) { UINT8 *p = NULL; UINT8 cmac[BT_OCTET16_LEN]; UINT8 key[BT_OCTET16_LEN]; UINT8 msg_len = 1 /* Counter size */ + 4 /* keyID size */ + - BT_OCTET16_LEN /* N1 size */ + BT_OCTET16_LEN /* N2 size */ + - 7 /* A1 size*/ + 7 /* A2 size*/ + 2 /* Length size */; + BT_OCTET16_LEN /* N1 size */ + BT_OCTET16_LEN /* N2 size */ + + 7 /* A1 size*/ + 7 /* A2 size*/ + 2 /* Length size */; UINT8 msg[1 + 4 + BT_OCTET16_LEN + BT_OCTET16_LEN + 7 + 7 + 2]; BOOLEAN ret = TRUE; #if SMP_DEBUG == TRUE @@ -1659,8 +1606,7 @@ BOOLEAN smp_calculate_f5_mackey_or_long_term_key(UINT8 *t, UINT8 *counter, smp_debug_print_nbyte_little_endian (p_prnt, (const UINT8 *)"M", msg_len); #endif - if (!aes_cipher_msg_auth_code(key, msg, msg_len, BT_OCTET16_LEN, cmac)) - { + if (!aes_cipher_msg_auth_code(key, msg, msg_len, BT_OCTET16_LEN, cmac)) { SMP_TRACE_ERROR("%s failed", __FUNCTION__); ret = FALSE; } @@ -1733,8 +1679,7 @@ BOOLEAN smp_calculate_f5_key(UINT8 *w, UINT8 *t) BT_OCTET16 cmac; BOOLEAN ret = TRUE; - if (!aes_cipher_msg_auth_code(key, msg, BT_OCTET32_LEN, BT_OCTET16_LEN, cmac)) - { + if (!aes_cipher_msg_auth_code(key, msg, BT_OCTET32_LEN, BT_OCTET16_LEN, cmac)) { SMP_TRACE_ERROR("%s failed", __FUNCTION__); ret = FALSE; } @@ -1806,8 +1751,7 @@ void smp_calculate_peer_dhkey_check(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) ret = smp_calculate_f6(p_cb->mac_key, p_cb->rrand, p_cb->rand, p_cb->local_random, iocap, b, a, param_buf); - if (ret) - { + if (ret) { SMP_TRACE_EVENT ("peer DHKey check calculation is completed"); #if (SMP_DEBUG == TRUE) smp_debug_print_nbyte_little_endian (param_buf, (const UINT8 *)"peer DHKey check", @@ -1816,9 +1760,7 @@ void smp_calculate_peer_dhkey_check(tSMP_CB *p_cb, tSMP_INT_DATA *p_data) key.key_type = SMP_KEY_TYPE_PEER_DHK_CHCK; key.p_data = param_buf; smp_sm_event(p_cb, SMP_SC_KEY_READY_EVT, &key); - } - else - { + } else { SMP_TRACE_EVENT ("peer DHKey check calculation failed"); smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &status); } @@ -1900,8 +1842,7 @@ BOOLEAN smp_calculate_f6(UINT8 *w, UINT8 *n1, UINT8 *n2, UINT8 *r, UINT8 *iocap, #endif BOOLEAN ret = TRUE; - if(!aes_cipher_msg_auth_code(key, msg, msg_len, BT_OCTET16_LEN, cmac)) - { + if (!aes_cipher_msg_auth_code(key, msg, msg_len, BT_OCTET16_LEN, cmac)) { SMP_TRACE_ERROR("%s failed", __FUNCTION__); ret = FALSE; } @@ -1934,24 +1875,18 @@ BOOLEAN smp_calculate_link_key_from_long_term_key(tSMP_CB *p_cb) SMP_TRACE_DEBUG ("%s", __func__); - if (p_cb->id_addr_rcvd && p_cb->id_addr_type == BLE_ADDR_PUBLIC) - { + if (p_cb->id_addr_rcvd && p_cb->id_addr_type == BLE_ADDR_PUBLIC) { SMP_TRACE_DEBUG ("Use rcvd identity address as BD_ADDR of LK rcvd identity address"); memcpy(bda_for_lk, p_cb->id_addr, BD_ADDR_LEN); - } - else if ((BTM_ReadRemoteConnectionAddr(p_cb->pairing_bda, bda_for_lk, &conn_addr_type)) && - conn_addr_type == BLE_ADDR_PUBLIC) - { + } else if ((BTM_ReadRemoteConnectionAddr(p_cb->pairing_bda, bda_for_lk, &conn_addr_type)) && + conn_addr_type == BLE_ADDR_PUBLIC) { SMP_TRACE_DEBUG ("Use rcvd connection address as BD_ADDR of LK"); - } - else - { + } else { SMP_TRACE_WARNING ("Don't have peer public address to associate with LK"); return FALSE; } - if ((p_dev_rec = btm_find_dev (p_cb->pairing_bda)) == NULL) - { + if ((p_dev_rec = btm_find_dev (p_cb->pairing_bda)) == NULL) { SMP_TRACE_ERROR("%s failed to find Security Record", __func__); return FALSE; } @@ -1959,47 +1894,38 @@ BOOLEAN smp_calculate_link_key_from_long_term_key(tSMP_CB *p_cb) BT_OCTET16 intermediate_link_key; BOOLEAN ret = TRUE; - ret = smp_calculate_h6(p_cb->ltk, (UINT8 *)"1pmt" /* reversed "tmp1" */,intermediate_link_key); - if (!ret) - { + ret = smp_calculate_h6(p_cb->ltk, (UINT8 *)"1pmt" /* reversed "tmp1" */, intermediate_link_key); + if (!ret) { SMP_TRACE_ERROR("%s failed to derive intermediate_link_key", __func__); return ret; } BT_OCTET16 link_key; ret = smp_calculate_h6(intermediate_link_key, (UINT8 *) "rbel" /* reversed "lebr" */, link_key); - if (!ret) - { + if (!ret) { SMP_TRACE_ERROR("%s failed", __func__); - } - else - { + } else { UINT8 link_key_type; - if (btm_cb.security_mode == BTM_SEC_MODE_SC) - { + if (btm_cb.security_mode == BTM_SEC_MODE_SC) { /* Secure Connections Only Mode */ link_key_type = BTM_LKEY_TYPE_AUTH_COMB_P_256; - } - else if (controller_get_interface()->supports_secure_connections()) - { + } else if (controller_get_interface()->supports_secure_connections()) { /* both transports are SC capable */ - if (p_cb->sec_level == SMP_SEC_AUTHENTICATED) + if (p_cb->sec_level == SMP_SEC_AUTHENTICATED) { link_key_type = BTM_LKEY_TYPE_AUTH_COMB_P_256; - else + } else { link_key_type = BTM_LKEY_TYPE_UNAUTH_COMB_P_256; - } - else if (btm_cb.security_mode == BTM_SEC_MODE_SP) - { + } + } else if (btm_cb.security_mode == BTM_SEC_MODE_SP) { /* BR/EDR transport is SSP capable */ - if (p_cb->sec_level == SMP_SEC_AUTHENTICATED) + if (p_cb->sec_level == SMP_SEC_AUTHENTICATED) { link_key_type = BTM_LKEY_TYPE_AUTH_COMB; - else + } else { link_key_type = BTM_LKEY_TYPE_UNAUTH_COMB; - } - else - { + } + } else { SMP_TRACE_ERROR ("%s failed to update link_key. Sec Mode = %d, sm4 = 0x%02x", - __func__, btm_cb.security_mode, p_dev_rec->sm4); + __func__, btm_cb.security_mode, p_dev_rec->sm4); return FALSE; } @@ -2036,25 +1962,22 @@ BOOLEAN smp_calculate_long_term_key_from_link_key(tSMP_CB *p_cb) SMP_TRACE_DEBUG ("%s", __FUNCTION__); - if ((p_dev_rec = btm_find_dev (p_cb->pairing_bda)) == NULL) - { - SMP_TRACE_ERROR("%s failed to find Security Record",__FUNCTION__); + if ((p_dev_rec = btm_find_dev (p_cb->pairing_bda)) == NULL) { + SMP_TRACE_ERROR("%s failed to find Security Record", __FUNCTION__); return FALSE; } UINT8 br_link_key_type; if ((br_link_key_type = BTM_SecGetDeviceLinkKeyType (p_cb->pairing_bda)) - == BTM_LKEY_TYPE_IGNORE) - { - SMP_TRACE_ERROR("%s failed to retrieve BR link type",__FUNCTION__); + == BTM_LKEY_TYPE_IGNORE) { + SMP_TRACE_ERROR("%s failed to retrieve BR link type", __FUNCTION__); return FALSE; } if ((br_link_key_type != BTM_LKEY_TYPE_AUTH_COMB_P_256) && - (br_link_key_type != BTM_LKEY_TYPE_UNAUTH_COMB_P_256)) - { + (br_link_key_type != BTM_LKEY_TYPE_UNAUTH_COMB_P_256)) { SMP_TRACE_ERROR("%s LE SC LTK can't be derived from LK %d", - __FUNCTION__, br_link_key_type); + __FUNCTION__, br_link_key_type); return FALSE; } @@ -2069,9 +1992,8 @@ BOOLEAN smp_calculate_long_term_key_from_link_key(tSMP_CB *p_cb) ret = smp_calculate_h6(rev_link_key, (UINT8 *) "2pmt" /* reversed "tmp2" */, intermediate_long_term_key); - if (!ret) - { - SMP_TRACE_ERROR("%s failed to derive intermediate_long_term_key",__FUNCTION__); + if (!ret) { + SMP_TRACE_ERROR("%s failed to derive intermediate_long_term_key", __FUNCTION__); return ret; } @@ -2079,15 +2001,12 @@ BOOLEAN smp_calculate_long_term_key_from_link_key(tSMP_CB *p_cb) ret = smp_calculate_h6(intermediate_long_term_key, (UINT8 *) "elrb" /* reversed "brle" */, p_cb->ltk); - if (!ret) - { - SMP_TRACE_ERROR("%s failed",__FUNCTION__); - } - else - { + if (!ret) { + SMP_TRACE_ERROR("%s failed", __FUNCTION__); + } else { p_cb->sec_level = (br_link_key_type == BTM_LKEY_TYPE_AUTH_COMB_P_256) - ? SMP_SEC_AUTHENTICATED : SMP_SEC_UNAUTHENTICATE; - SMP_TRACE_EVENT ("%s is completed",__FUNCTION__); + ? SMP_SEC_AUTHENTICATED : SMP_SEC_UNAUTHENTICATE; + SMP_TRACE_EVENT ("%s is completed", __FUNCTION__); } return ret; @@ -2117,7 +2036,7 @@ BOOLEAN smp_calculate_h6(UINT8 *w, UINT8 *keyid, UINT8 *c) UINT8 *p_print = NULL; #endif - SMP_TRACE_DEBUG ("%s",__FUNCTION__); + SMP_TRACE_DEBUG ("%s", __FUNCTION__); #if SMP_DEBUG == TRUE p_print = w; smp_debug_print_nbyte_little_endian (p_print, (const UINT8 *)"W", BT_OCTET16_LEN); @@ -2144,14 +2063,13 @@ BOOLEAN smp_calculate_h6(UINT8 *w, UINT8 *keyid, UINT8 *c) #if SMP_DEBUG == TRUE p_print = msg; - smp_debug_print_nbyte_little_endian (p_print,(const UINT8 *) "M", msg_len); + smp_debug_print_nbyte_little_endian (p_print, (const UINT8 *) "M", msg_len); #endif BOOLEAN ret = TRUE; UINT8 cmac[BT_OCTET16_LEN]; - if (!aes_cipher_msg_auth_code(key, msg, msg_len, BT_OCTET16_LEN, cmac)) - { - SMP_TRACE_ERROR("%s failed",__FUNCTION__); + if (!aes_cipher_msg_auth_code(key, msg, msg_len, BT_OCTET16_LEN, cmac)) { + SMP_TRACE_ERROR("%s failed", __FUNCTION__); ret = FALSE; } @@ -2178,8 +2096,9 @@ void smp_start_nonce_generation(tSMP_CB *p_cb) { SMP_TRACE_DEBUG("%s", __FUNCTION__); p_cb->rand_enc_proc_state = SMP_GEN_NONCE_0_7; - if (!btsnd_hcic_ble_rand((void *)smp_rand_back)) + if (!btsnd_hcic_ble_rand((void *)smp_rand_back)) { smp_rand_back(NULL); + } } /******************************************************************************* @@ -2195,8 +2114,9 @@ void smp_finish_nonce_generation(tSMP_CB *p_cb) { SMP_TRACE_DEBUG("%s", __FUNCTION__); p_cb->rand_enc_proc_state = SMP_GEN_NONCE_8_15; - if (!btsnd_hcic_ble_rand((void *)smp_rand_back)) + if (!btsnd_hcic_ble_rand((void *)smp_rand_back)) { smp_rand_back(NULL); + } } /******************************************************************************* @@ -2232,55 +2152,53 @@ static void smp_rand_back(tBTM_RAND_ENC *p) UINT8 state = p_cb->rand_enc_proc_state & ~0x80; SMP_TRACE_DEBUG ("%s state=0x%x", __FUNCTION__, state); - if (p && p->status == HCI_SUCCESS) - { - switch (state) - { - case SMP_GEN_SRAND_MRAND: - memcpy((void *)p_cb->rand, p->param_buf, p->param_len); - smp_generate_rand_cont(p_cb, NULL); - break; + if (p && p->status == HCI_SUCCESS) { + switch (state) { + case SMP_GEN_SRAND_MRAND: + memcpy((void *)p_cb->rand, p->param_buf, p->param_len); + smp_generate_rand_cont(p_cb, NULL); + break; - case SMP_GEN_SRAND_MRAND_CONT: - memcpy((void *)&p_cb->rand[8], p->param_buf, p->param_len); - smp_generate_confirm(p_cb, NULL); - break; + case SMP_GEN_SRAND_MRAND_CONT: + memcpy((void *)&p_cb->rand[8], p->param_buf, p->param_len); + smp_generate_confirm(p_cb, NULL); + break; - case SMP_GEN_DIV_LTK: - STREAM_TO_UINT16(p_cb->div, pp); - smp_generate_ltk_cont(p_cb, NULL); - break; + case SMP_GEN_DIV_LTK: + STREAM_TO_UINT16(p_cb->div, pp); + smp_generate_ltk_cont(p_cb, NULL); + break; - case SMP_GEN_DIV_CSRK: - STREAM_TO_UINT16(p_cb->div, pp); - smp_compute_csrk(p_cb, NULL); - break; + case SMP_GEN_DIV_CSRK: + STREAM_TO_UINT16(p_cb->div, pp); + smp_compute_csrk(p_cb, NULL); + break; - case SMP_GEN_TK: - smp_proc_passkey(p_cb, p); - break; + case SMP_GEN_TK: + smp_proc_passkey(p_cb, p); + break; - case SMP_GEN_RAND_V: - memcpy(p_cb->enc_rand, p->param_buf, BT_OCTET8_LEN); - smp_generate_y(p_cb, NULL); - break; + case SMP_GEN_RAND_V: + memcpy(p_cb->enc_rand, p->param_buf, BT_OCTET8_LEN); + smp_generate_y(p_cb, NULL); + break; - case SMP_GENERATE_PRIVATE_KEY_0_7: - case SMP_GENERATE_PRIVATE_KEY_8_15: - case SMP_GENERATE_PRIVATE_KEY_16_23: - case SMP_GENERATE_PRIVATE_KEY_24_31: - smp_continue_private_key_creation(p_cb, p); - break; + case SMP_GENERATE_PRIVATE_KEY_0_7: + case SMP_GENERATE_PRIVATE_KEY_8_15: + case SMP_GENERATE_PRIVATE_KEY_16_23: + case SMP_GENERATE_PRIVATE_KEY_24_31: + smp_continue_private_key_creation(p_cb, p); + break; - case SMP_GEN_NONCE_0_7: - memcpy((void *)p_cb->rand, p->param_buf, p->param_len); - smp_finish_nonce_generation(p_cb); - break; + case SMP_GEN_NONCE_0_7: + memcpy((void *)p_cb->rand, p->param_buf, p->param_len); + smp_finish_nonce_generation(p_cb); + break; - case SMP_GEN_NONCE_8_15: - memcpy((void *)&p_cb->rand[8], p->param_buf, p->param_len); - smp_process_new_nonce(p_cb); - break; + case SMP_GEN_NONCE_8_15: + memcpy((void *)&p_cb->rand[8], p->param_buf, p->param_len); + smp_process_new_nonce(p_cb); + break; } return; diff --git a/components/bt/bluedroid/stack/smp/smp_l2c.c b/components/bt/bluedroid/stack/smp/smp_l2c.c old mode 100755 new mode 100644 index 1ec1ac50ac..6eb5a38c5e --- a/components/bt/bluedroid/stack/smp/smp_l2c.c +++ b/components/bt/bluedroid/stack/smp/smp_l2c.c @@ -36,7 +36,7 @@ static void smp_tx_complete_callback(UINT16 cid, UINT16 num_pkt); static void smp_connect_callback(UINT16 channel, BD_ADDR bd_addr, BOOLEAN connected, UINT16 reason, - tBT_TRANSPORT transport); + tBT_TRANSPORT transport); static void smp_data_received(UINT16 channel, BD_ADDR bd_addr, BT_HDR *p_buf); static void smp_br_connect_callback(UINT16 channel, BD_ADDR bd_addr, BOOLEAN connected, UINT16 reason, @@ -95,21 +95,19 @@ static void smp_connect_callback (UINT16 channel, BD_ADDR bd_addr, BOOLEAN conne SMP_TRACE_EVENT ("SMDBG l2c %s\n", __FUNCTION__); - if (transport == BT_TRANSPORT_BR_EDR || memcmp(bd_addr, dummy_bda, BD_ADDR_LEN) == 0) + if (transport == BT_TRANSPORT_BR_EDR || memcmp(bd_addr, dummy_bda, BD_ADDR_LEN) == 0) { return; + } - if (memcmp(bd_addr, p_cb->pairing_bda, BD_ADDR_LEN) == 0) - { + if (memcmp(bd_addr, p_cb->pairing_bda, BD_ADDR_LEN) == 0) { SMP_TRACE_EVENT ("%s() for pairing BDA: %08x%04x Event: %s\n", - __FUNCTION__, - (bd_addr[0]<<24)+(bd_addr[1]<<16)+(bd_addr[2]<<8) + bd_addr[3], - (bd_addr[4]<<8)+bd_addr[5], - (connected) ? "connected" : "disconnected"); + __FUNCTION__, + (bd_addr[0] << 24) + (bd_addr[1] << 16) + (bd_addr[2] << 8) + bd_addr[3], + (bd_addr[4] << 8) + bd_addr[5], + (connected) ? "connected" : "disconnected"); - if (connected) - { - if(!p_cb->connect_initialized) - { + if (connected) { + if (!p_cb->connect_initialized) { p_cb->connect_initialized = TRUE; /* initiating connection established */ p_cb->role = L2CA_GetBleConnRole(bd_addr); @@ -120,9 +118,7 @@ static void smp_connect_callback (UINT16 channel, BD_ADDR bd_addr, BOOLEAN conne p_cb->cb_evt = SMP_IO_CAP_REQ_EVT; smp_sm_event(p_cb, SMP_L2CAP_CONN_EVT, NULL); } - } - else - { + } else { int_data.reason = reason; /* Disconnected while doing security */ smp_sm_event(p_cb, SMP_L2CAP_DISCONN_EVT, &int_data); @@ -151,23 +147,18 @@ static void smp_data_received(UINT16 channel, BD_ADDR bd_addr, BT_HDR *p_buf) STREAM_TO_UINT8(cmd, p); /* sanity check */ - if ((SMP_OPCODE_MAX < cmd) || (SMP_OPCODE_MIN > cmd)) - { + if ((SMP_OPCODE_MAX < cmd) || (SMP_OPCODE_MIN > cmd)) { SMP_TRACE_WARNING( "Ignore received command with RESERVED code 0x%02x\n", cmd); GKI_freebuf (p_buf); return; } /* reject the pairing request if there is an on-going SMP pairing */ - if (SMP_OPCODE_PAIRING_REQ == cmd || SMP_OPCODE_SEC_REQ == cmd) - { - if ((p_cb->state == SMP_STATE_IDLE) && (p_cb->br_state == SMP_BR_STATE_IDLE)) - { + if (SMP_OPCODE_PAIRING_REQ == cmd || SMP_OPCODE_SEC_REQ == cmd) { + if ((p_cb->state == SMP_STATE_IDLE) && (p_cb->br_state == SMP_BR_STATE_IDLE)) { p_cb->role = L2CA_GetBleConnRole(bd_addr); memcpy(&p_cb->pairing_bda[0], bd_addr, BD_ADDR_LEN); - } - else if (memcmp(&bd_addr[0], p_cb->pairing_bda, BD_ADDR_LEN)) - { + } else if (memcmp(&bd_addr[0], p_cb->pairing_bda, BD_ADDR_LEN)) { GKI_freebuf (p_buf); smp_reject_unexpected_pairing_command(bd_addr); return; @@ -175,21 +166,18 @@ static void smp_data_received(UINT16 channel, BD_ADDR bd_addr, BT_HDR *p_buf) /* else, out of state pairing request/security request received, passed into SM */ } - if (memcmp(&bd_addr[0], p_cb->pairing_bda, BD_ADDR_LEN) == 0) - { + if (memcmp(&bd_addr[0], p_cb->pairing_bda, BD_ADDR_LEN) == 0) { btu_stop_timer (&p_cb->rsp_timer_ent); btu_start_timer (&p_cb->rsp_timer_ent, BTU_TTYPE_SMP_PAIRING_CMD, - SMP_WAIT_FOR_RSP_TOUT); + SMP_WAIT_FOR_RSP_TOUT); - if (cmd == SMP_OPCODE_CONFIRM) - { + if (cmd == SMP_OPCODE_CONFIRM) { SMP_TRACE_DEBUG ("in %s cmd = 0x%02x, peer_auth_req = 0x%02x," - "loc_auth_req = 0x%02x\n", - __FUNCTION__, cmd, p_cb->peer_auth_req, p_cb->loc_auth_req); + "loc_auth_req = 0x%02x\n", + __FUNCTION__, cmd, p_cb->peer_auth_req, p_cb->loc_auth_req); if ((p_cb->peer_auth_req & SMP_SC_SUPPORT_BIT) && - (p_cb->loc_auth_req & SMP_SC_SUPPORT_BIT)) - { + (p_cb->loc_auth_req & SMP_SC_SUPPORT_BIT)) { cmd = SMP_OPCODE_PAIR_COMMITM; } } @@ -213,18 +201,19 @@ static void smp_tx_complete_callback (UINT16 cid, UINT16 num_pkt) { tSMP_CB *p_cb = &smp_cb; - if (p_cb->total_tx_unacked >= num_pkt) + if (p_cb->total_tx_unacked >= num_pkt) { p_cb->total_tx_unacked -= num_pkt; - else - SMP_TRACE_ERROR("Unexpected %s: num_pkt = %d", __func__,num_pkt); + } else { + SMP_TRACE_ERROR("Unexpected %s: num_pkt = %d", __func__, num_pkt); + } UINT8 reason = SMP_SUCCESS; - if (p_cb->total_tx_unacked == 0 && p_cb->wait_for_authorization_complete) - { - if (cid == L2CAP_SMP_CID) + if (p_cb->total_tx_unacked == 0 && p_cb->wait_for_authorization_complete) { + if (cid == L2CAP_SMP_CID) { smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason); - else + } else { smp_br_state_machine_event(p_cb, SMP_BR_AUTH_CMPL_EVT, &reason); + } } } @@ -245,26 +234,24 @@ static void smp_br_connect_callback(UINT16 channel, BD_ADDR bd_addr, BOOLEAN con SMP_TRACE_EVENT ("%s", __func__); - if (transport != BT_TRANSPORT_BR_EDR) - { + if (transport != BT_TRANSPORT_BR_EDR) { SMP_TRACE_WARNING("%s is called on unexpected transport %d\n", - __func__, transport); + __func__, transport); return; } - if (!(memcmp(bd_addr, p_cb->pairing_bda, BD_ADDR_LEN) == 0)) + if (!(memcmp(bd_addr, p_cb->pairing_bda, BD_ADDR_LEN) == 0)) { return; + } SMP_TRACE_EVENT ("%s for pairing BDA: %08x%04x Event: %s\n", __func__, - (bd_addr[0]<<24)+(bd_addr[1]<<16)+(bd_addr[2]<<8) + bd_addr[3], - (bd_addr[4]<<8)+bd_addr[5], + (bd_addr[0] << 24) + (bd_addr[1] << 16) + (bd_addr[2] << 8) + bd_addr[3], + (bd_addr[4] << 8) + bd_addr[5], (connected) ? "connected" : "disconnected"); - if (connected) - { - if(!p_cb->connect_initialized) - { + if (connected) { + if (!p_cb->connect_initialized) { p_cb->connect_initialized = TRUE; /* initialize local i/r key to be default keys */ p_cb->local_r_key = p_cb->local_i_key = SMP_BR_SEC_DEFAULT_KEY; @@ -272,9 +259,7 @@ static void smp_br_connect_callback(UINT16 channel, BD_ADDR bd_addr, BOOLEAN con p_cb->cb_evt = SMP_BR_KEYS_REQ_EVT; smp_br_state_machine_event(p_cb, SMP_BR_L2CAP_CONN_EVT, NULL); } - } - else - { + } else { int_data.reason = reason; /* Disconnected while doing security */ smp_br_state_machine_event(p_cb, SMP_BR_L2CAP_DISCONN_EVT, &int_data); @@ -301,24 +286,19 @@ static void smp_br_data_received(UINT16 channel, BD_ADDR bd_addr, BT_HDR *p_buf) STREAM_TO_UINT8(cmd, p); /* sanity check */ - if ((SMP_OPCODE_MAX < cmd) || (SMP_OPCODE_MIN > cmd)) - { + if ((SMP_OPCODE_MAX < cmd) || (SMP_OPCODE_MIN > cmd)) { SMP_TRACE_WARNING( "Ignore received command with RESERVED code 0x%02x", cmd); GKI_freebuf(p_buf); return; } /* reject the pairing request if there is an on-going SMP pairing */ - if (SMP_OPCODE_PAIRING_REQ == cmd) - { - if ((p_cb->state == SMP_STATE_IDLE) && (p_cb->br_state == SMP_BR_STATE_IDLE)) - { + if (SMP_OPCODE_PAIRING_REQ == cmd) { + if ((p_cb->state == SMP_STATE_IDLE) && (p_cb->br_state == SMP_BR_STATE_IDLE)) { p_cb->role = HCI_ROLE_SLAVE; p_cb->smp_over_br = TRUE; memcpy(&p_cb->pairing_bda[0], bd_addr, BD_ADDR_LEN); - } - else if (memcmp(&bd_addr[0], p_cb->pairing_bda, BD_ADDR_LEN)) - { + } else if (memcmp(&bd_addr[0], p_cb->pairing_bda, BD_ADDR_LEN)) { GKI_freebuf (p_buf); smp_reject_unexpected_pairing_command(bd_addr); return; @@ -326,11 +306,10 @@ static void smp_br_data_received(UINT16 channel, BD_ADDR bd_addr, BT_HDR *p_buf) /* else, out of state pairing request received, passed into State Machine */ } - if (memcmp(&bd_addr[0], p_cb->pairing_bda, BD_ADDR_LEN) == 0) - { + if (memcmp(&bd_addr[0], p_cb->pairing_bda, BD_ADDR_LEN) == 0) { btu_stop_timer (&p_cb->rsp_timer_ent); btu_start_timer (&p_cb->rsp_timer_ent, BTU_TTYPE_SMP_PAIRING_CMD, - SMP_WAIT_FOR_RSP_TOUT); + SMP_WAIT_FOR_RSP_TOUT); p_cb->rcvd_cmd_code = cmd; p_cb->rcvd_cmd_len = (UINT8) p_buf->len; diff --git a/components/bt/bluedroid/stack/smp/smp_main.c b/components/bt/bluedroid/stack/smp/smp_main.c old mode 100755 new mode 100644 index e9b3775207..85b232aea8 --- a/components/bt/bluedroid/stack/smp/smp_main.c +++ b/components/bt/bluedroid/stack/smp/smp_main.c @@ -23,8 +23,7 @@ #include #include "smp_int.h" -const char *const smp_state_name [] = -{ +const char *const smp_state_name [] = { "SMP_STATE_IDLE", "SMP_STATE_WAIT_APP_RSP", "SMP_STATE_SEC_REQ_PENDING", @@ -45,8 +44,7 @@ const char *const smp_state_name [] = "SMP_STATE_MAX" }; -const char *const smp_event_name [] = -{ +const char *const smp_event_name [] = { "PAIRING_REQ_EVT", "PAIRING_RSP_EVT", "CONFIRM_EVT", @@ -100,8 +98,7 @@ const char *smp_get_state_name(tSMP_STATE state); typedef const UINT8(*tSMP_SM_TBL)[SMP_SM_NUM_COLS]; -enum -{ +enum { SMP_PROC_SEC_REQ, SMP_SEND_PAIR_REQ, SMP_SEND_PAIR_RSP, @@ -166,8 +163,7 @@ enum SMP_SM_NO_ACTION }; -static const tSMP_ACT smp_sm_action[] = -{ +static const tSMP_ACT smp_sm_action[] = { smp_proc_sec_req, smp_send_pair_req, smp_send_pair_rsp, @@ -232,431 +228,394 @@ static const tSMP_ACT smp_sm_action[] = }; /************ SMP Master FSM State/Event Indirection Table **************/ -static const UINT8 smp_master_entry_map[][SMP_STATE_MAX] = -{ -/* state name: Idle WaitApp SecReq Pair Wait Confirm Rand PublKey SCPhs1 Wait Wait SCPhs2 Wait DHKChk Enc Bond CrLocSc - Rsp Pend ReqRsp Cfm Exch Strt Cmtm Nonce Strt DHKChk Pend Pend OobData */ -/* PAIR_REQ */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* PAIR_RSP */{ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* CONFIRM */{ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* RAND */{ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, -/* PAIR_FAIL */{ 0, 0x81, 0, 0x81, 0x81,0x81, 0x81,0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0, 0, 0 }, -/* ENC_INFO */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, -/* MASTER_ID */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0 }, -/* ID_INFO */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0 }, -/* ID_ADDR */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0 }, -/* SIGN_INFO */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0 }, -/* SEC_REQ */{ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* PAIR_PUBLIC_KEY */{ 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* PAIR_DHKEY_CHCK */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, -/* PAIR_KEYPR_NOTIF */{ 0, 8, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 0, 0, 0, 0 }, -/* PAIR_COMMITM */{ 0, 0, 0, 0, 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0 }, -/* KEY_READY */{ 0, 3, 0, 3, 1, 0, 2, 0, 4, 0, 0, 0, 0, 0, 1, 6, 0 }, -/* ENC_CMPL */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0 }, -/* L2C_CONN */{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* L2C_DISC */{ 3, 0x83, 0, 0x83, 0x83,0x83, 0x83,0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0 }, -/* IO_RSP */{ 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* SEC_GRANT */{ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* TK_REQ */{ 0, 0, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* AUTH_CMPL */{ 4, 0x82, 0, 0x82, 0x82,0x82, 0x82,0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0 }, -/* ENC_REQ */{ 0, 4, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0 }, -/* BOND_REQ */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0 }, -/* DISCARD_SEC_REQ */{ 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0 }, -/* PUBL_KEY_EXCH_REQ */{ 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* LOC_PUBL_KEY_CRTD */{ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, -/* BOTH_PUBL_KEYS_RCVD */{ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* SC_DHKEY_CMPLT */{ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* HAVE_LOC_NONCE */{ 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2 }, -/* SC_PHASE1_CMPLT */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, -/* SC_CALC_NC */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0 }, -/* SC_DSPL_NC */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0 }, -/* SC_NC_OK */{ 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* SC_2_DHCK_CHKS_PRES */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* SC_KEY_READY */{ 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 }, -/* KEYPR_NOTIF */{ 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* SC_OOB_DATA */{ 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* CR_LOC_SC_OOB_DATA */{ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, +static const UINT8 smp_master_entry_map[][SMP_STATE_MAX] = { + /* state name: Idle WaitApp SecReq Pair Wait Confirm Rand PublKey SCPhs1 Wait Wait SCPhs2 Wait DHKChk Enc Bond CrLocSc + Rsp Pend ReqRsp Cfm Exch Strt Cmtm Nonce Strt DHKChk Pend Pend OobData */ + /* PAIR_REQ */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* PAIR_RSP */{ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* CONFIRM */{ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* RAND */{ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, + /* PAIR_FAIL */{ 0, 0x81, 0, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0, 0, 0 }, + /* ENC_INFO */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, + /* MASTER_ID */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0 }, + /* ID_INFO */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0 }, + /* ID_ADDR */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0 }, + /* SIGN_INFO */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0 }, + /* SEC_REQ */{ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* PAIR_PUBLIC_KEY */{ 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* PAIR_DHKEY_CHCK */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + /* PAIR_KEYPR_NOTIF */{ 0, 8, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 0, 0, 0, 0 }, + /* PAIR_COMMITM */{ 0, 0, 0, 0, 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0 }, + /* KEY_READY */{ 0, 3, 0, 3, 1, 0, 2, 0, 4, 0, 0, 0, 0, 0, 1, 6, 0 }, + /* ENC_CMPL */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0 }, + /* L2C_CONN */{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* L2C_DISC */{ 3, 0x83, 0, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0 }, + /* IO_RSP */{ 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* SEC_GRANT */{ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* TK_REQ */{ 0, 0, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* AUTH_CMPL */{ 4, 0x82, 0, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0 }, + /* ENC_REQ */{ 0, 4, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0 }, + /* BOND_REQ */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0 }, + /* DISCARD_SEC_REQ */{ 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0 }, + /* PUBL_KEY_EXCH_REQ */{ 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* LOC_PUBL_KEY_CRTD */{ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, + /* BOTH_PUBL_KEYS_RCVD */{ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* SC_DHKEY_CMPLT */{ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* HAVE_LOC_NONCE */{ 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2 }, + /* SC_PHASE1_CMPLT */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + /* SC_CALC_NC */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0 }, + /* SC_DSPL_NC */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0 }, + /* SC_NC_OK */{ 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* SC_2_DHCK_CHKS_PRES */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* SC_KEY_READY */{ 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 }, + /* KEYPR_NOTIF */{ 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* SC_OOB_DATA */{ 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* CR_LOC_SC_OOB_DATA */{ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, }; -static const UINT8 smp_all_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* PAIR_FAIL */ {SMP_PROC_PAIR_FAIL, SMP_PAIRING_CMPL, SMP_STATE_IDLE}, -/* AUTH_CMPL */ {SMP_SEND_PAIR_FAIL, SMP_PAIRING_CMPL, SMP_STATE_IDLE}, -/* L2C_DISC */ {SMP_PAIR_TERMINATE, SMP_SM_NO_ACTION, SMP_STATE_IDLE} +static const UINT8 smp_all_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* PAIR_FAIL */ {SMP_PROC_PAIR_FAIL, SMP_PAIRING_CMPL, SMP_STATE_IDLE}, + /* AUTH_CMPL */ {SMP_SEND_PAIR_FAIL, SMP_PAIRING_CMPL, SMP_STATE_IDLE}, + /* L2C_DISC */ {SMP_PAIR_TERMINATE, SMP_SM_NO_ACTION, SMP_STATE_IDLE} }; -static const UINT8 smp_master_idle_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* L2C_CONN */ {SMP_SEND_APP_CBACK, SMP_SM_NO_ACTION, SMP_STATE_WAIT_APP_RSP}, -/* SEC_REQ */ {SMP_PROC_SEC_REQ, SMP_SEND_APP_CBACK, SMP_STATE_WAIT_APP_RSP}, -/* L2C_DISC */ {SMP_IDLE_TERMINATE, SMP_SM_NO_ACTION, SMP_STATE_IDLE}, -/* AUTH_CMPL */ {SMP_PAIRING_CMPL, SMP_SM_NO_ACTION, SMP_STATE_IDLE} -/* CR_LOC_SC_OOB_DATA */ ,{SMP_CREATE_PRIVATE_KEY, SMP_SM_NO_ACTION, SMP_STATE_CREATE_LOCAL_SEC_CONN_OOB_DATA} +static const UINT8 smp_master_idle_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* L2C_CONN */ {SMP_SEND_APP_CBACK, SMP_SM_NO_ACTION, SMP_STATE_WAIT_APP_RSP}, + /* SEC_REQ */ {SMP_PROC_SEC_REQ, SMP_SEND_APP_CBACK, SMP_STATE_WAIT_APP_RSP}, + /* L2C_DISC */ {SMP_IDLE_TERMINATE, SMP_SM_NO_ACTION, SMP_STATE_IDLE}, + /* AUTH_CMPL */ {SMP_PAIRING_CMPL, SMP_SM_NO_ACTION, SMP_STATE_IDLE} + /* CR_LOC_SC_OOB_DATA */ , {SMP_CREATE_PRIVATE_KEY, SMP_SM_NO_ACTION, SMP_STATE_CREATE_LOCAL_SEC_CONN_OOB_DATA} }; -static const UINT8 smp_master_wait_for_app_response_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* SEC_GRANT */ {SMP_PROC_SEC_GRANT, SMP_SEND_APP_CBACK, SMP_STATE_WAIT_APP_RSP}, -/* IO_RSP */ {SMP_SEND_PAIR_REQ, SMP_FAST_CONN_PARAM, SMP_STATE_PAIR_REQ_RSP}, +static const UINT8 smp_master_wait_for_app_response_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* SEC_GRANT */ {SMP_PROC_SEC_GRANT, SMP_SEND_APP_CBACK, SMP_STATE_WAIT_APP_RSP}, + /* IO_RSP */ {SMP_SEND_PAIR_REQ, SMP_FAST_CONN_PARAM, SMP_STATE_PAIR_REQ_RSP}, - /* TK ready */ -/* KEY_READY */ {SMP_GENERATE_CONFIRM, SMP_SM_NO_ACTION, SMP_STATE_WAIT_CONFIRM}, + /* TK ready */ + /* KEY_READY */ {SMP_GENERATE_CONFIRM, SMP_SM_NO_ACTION, SMP_STATE_WAIT_CONFIRM}, - /* start enc mode setup */ -/* ENC_REQ */ { SMP_START_ENC, SMP_FAST_CONN_PARAM, SMP_STATE_ENCRYPTION_PENDING}, -/* DISCARD_SEC_REQ */ { SMP_PROC_DISCARD, SMP_SM_NO_ACTION, SMP_STATE_IDLE} -/* user confirms NC 'OK', i.e. phase 1 is completed */ -/* SC_NC_OK */,{ SMP_MOVE_TO_SEC_CONN_PHASE2, SMP_SM_NO_ACTION, SMP_STATE_SEC_CONN_PHS2_START}, -/* user-provided passkey is rcvd */ -/* SC_KEY_READY */ { SMP_START_PASSKEY_VERIFICATION, SMP_SM_NO_ACTION, SMP_STATE_SEC_CONN_PHS1_START}, -/* PAIR_KEYPR_NOTIF */ { SMP_PROCESS_KEYPRESS_NOTIFICATION, SMP_SEND_APP_CBACK, SMP_STATE_WAIT_APP_RSP}, -/* KEYPR_NOTIF */ { SMP_SEND_KEYPRESS_NOTIFICATION, SMP_SM_NO_ACTION, SMP_STATE_WAIT_APP_RSP}, -/* SC_OOB_DATA */ { SMP_USE_OOB_PRIVATE_KEY, SMP_SM_NO_ACTION, SMP_STATE_PUBLIC_KEY_EXCH} + /* start enc mode setup */ + /* ENC_REQ */ { SMP_START_ENC, SMP_FAST_CONN_PARAM, SMP_STATE_ENCRYPTION_PENDING}, + /* DISCARD_SEC_REQ */ { SMP_PROC_DISCARD, SMP_SM_NO_ACTION, SMP_STATE_IDLE} + /* user confirms NC 'OK', i.e. phase 1 is completed */ + /* SC_NC_OK */, { SMP_MOVE_TO_SEC_CONN_PHASE2, SMP_SM_NO_ACTION, SMP_STATE_SEC_CONN_PHS2_START}, + /* user-provided passkey is rcvd */ + /* SC_KEY_READY */ { SMP_START_PASSKEY_VERIFICATION, SMP_SM_NO_ACTION, SMP_STATE_SEC_CONN_PHS1_START}, + /* PAIR_KEYPR_NOTIF */ { SMP_PROCESS_KEYPRESS_NOTIFICATION, SMP_SEND_APP_CBACK, SMP_STATE_WAIT_APP_RSP}, + /* KEYPR_NOTIF */ { SMP_SEND_KEYPRESS_NOTIFICATION, SMP_SM_NO_ACTION, SMP_STATE_WAIT_APP_RSP}, + /* SC_OOB_DATA */ { SMP_USE_OOB_PRIVATE_KEY, SMP_SM_NO_ACTION, SMP_STATE_PUBLIC_KEY_EXCH} }; -static const UINT8 smp_master_pair_request_response_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* PAIR_RSP */ { SMP_PROC_PAIR_CMD, SMP_SM_NO_ACTION, SMP_STATE_PAIR_REQ_RSP}, -/* TK_REQ */ { SMP_SEND_APP_CBACK, SMP_SM_NO_ACTION, SMP_STATE_WAIT_APP_RSP}, +static const UINT8 smp_master_pair_request_response_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* PAIR_RSP */ { SMP_PROC_PAIR_CMD, SMP_SM_NO_ACTION, SMP_STATE_PAIR_REQ_RSP}, + /* TK_REQ */ { SMP_SEND_APP_CBACK, SMP_SM_NO_ACTION, SMP_STATE_WAIT_APP_RSP}, - /* TK ready */ -/* KEY_READY */{ SMP_GENERATE_CONFIRM, SMP_SM_NO_ACTION, SMP_STATE_WAIT_CONFIRM} -/* PUBL_KEY_EXCH_REQ */,{ SMP_CREATE_PRIVATE_KEY, SMP_SM_NO_ACTION, SMP_STATE_PUBLIC_KEY_EXCH} + /* TK ready */ + /* KEY_READY */{ SMP_GENERATE_CONFIRM, SMP_SM_NO_ACTION, SMP_STATE_WAIT_CONFIRM} + /* PUBL_KEY_EXCH_REQ */, { SMP_CREATE_PRIVATE_KEY, SMP_SM_NO_ACTION, SMP_STATE_PUBLIC_KEY_EXCH} }; -static const UINT8 smp_master_wait_for_confirm_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* KEY_READY*/ {SMP_SEND_CONFIRM, SMP_SM_NO_ACTION, SMP_STATE_CONFIRM}/* CONFIRM ready */ +static const UINT8 smp_master_wait_for_confirm_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* KEY_READY*/ {SMP_SEND_CONFIRM, SMP_SM_NO_ACTION, SMP_STATE_CONFIRM}/* CONFIRM ready */ }; -static const UINT8 smp_master_confirm_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* CONFIRM */ { SMP_PROC_CONFIRM, SMP_SEND_RAND, SMP_STATE_RAND} +static const UINT8 smp_master_confirm_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* CONFIRM */ { SMP_PROC_CONFIRM, SMP_SEND_RAND, SMP_STATE_RAND} }; -static const UINT8 smp_master_rand_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* RAND */ { SMP_PROC_RAND, SMP_GENERATE_COMPARE, SMP_STATE_RAND}, -/* KEY_READY*/ { SMP_PROC_COMPARE, SMP_SM_NO_ACTION, SMP_STATE_RAND}, /* Compare ready */ -/* ENC_REQ */ { SMP_GENERATE_STK, SMP_SM_NO_ACTION, SMP_STATE_ENCRYPTION_PENDING} +static const UINT8 smp_master_rand_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* RAND */ { SMP_PROC_RAND, SMP_GENERATE_COMPARE, SMP_STATE_RAND}, + /* KEY_READY*/ { SMP_PROC_COMPARE, SMP_SM_NO_ACTION, SMP_STATE_RAND}, /* Compare ready */ + /* ENC_REQ */ { SMP_GENERATE_STK, SMP_SM_NO_ACTION, SMP_STATE_ENCRYPTION_PENDING} }; -static const UINT8 smp_master_public_key_exchange_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* LOC_PUBL_KEY_CRTD */{ SMP_SEND_PAIR_PUBLIC_KEY, SMP_SM_NO_ACTION, SMP_STATE_PUBLIC_KEY_EXCH}, -/* PAIR_PUBLIC_KEY */{ SMP_PROCESS_PAIR_PUBLIC_KEY, SMP_SM_NO_ACTION, SMP_STATE_PUBLIC_KEY_EXCH}, -/* BOTH_PUBL_KEYS_RCVD */{ SMP_HAVE_BOTH_PUBLIC_KEYS, SMP_SM_NO_ACTION, SMP_STATE_SEC_CONN_PHS1_START}, +static const UINT8 smp_master_public_key_exchange_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* LOC_PUBL_KEY_CRTD */{ SMP_SEND_PAIR_PUBLIC_KEY, SMP_SM_NO_ACTION, SMP_STATE_PUBLIC_KEY_EXCH}, + /* PAIR_PUBLIC_KEY */{ SMP_PROCESS_PAIR_PUBLIC_KEY, SMP_SM_NO_ACTION, SMP_STATE_PUBLIC_KEY_EXCH}, + /* BOTH_PUBL_KEYS_RCVD */{ SMP_HAVE_BOTH_PUBLIC_KEYS, SMP_SM_NO_ACTION, SMP_STATE_SEC_CONN_PHS1_START}, }; -static const UINT8 smp_master_sec_conn_phs1_start_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* SC_DHKEY_CMPLT */{ SMP_START_SEC_CONN_PHASE1, SMP_SM_NO_ACTION, SMP_STATE_SEC_CONN_PHS1_START}, -/* HAVE_LOC_NONCE */{ SMP_PROCESS_LOCAL_NONCE, SMP_SM_NO_ACTION, SMP_STATE_WAIT_COMMITMENT}, -/* TK_REQ */{ SMP_SEND_APP_CBACK, SMP_SM_NO_ACTION, SMP_STATE_WAIT_APP_RSP}, -/* SMP_MODEL_SEC_CONN_PASSKEY_DISP model, passkey is sent up to display,*/ -/* It's time to start commitment calculation */ -/* KEY_READY */{ SMP_START_PASSKEY_VERIFICATION, SMP_SM_NO_ACTION, SMP_STATE_SEC_CONN_PHS1_START}, -/* PAIR_KEYPR_NOTIF */{ SMP_PROCESS_KEYPRESS_NOTIFICATION, SMP_SEND_APP_CBACK, SMP_STATE_SEC_CONN_PHS1_START}, -/* PAIR_COMMITM */{ SMP_PROCESS_PAIRING_COMMITMENT, SMP_SM_NO_ACTION, SMP_STATE_SEC_CONN_PHS1_START}, +static const UINT8 smp_master_sec_conn_phs1_start_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* SC_DHKEY_CMPLT */{ SMP_START_SEC_CONN_PHASE1, SMP_SM_NO_ACTION, SMP_STATE_SEC_CONN_PHS1_START}, + /* HAVE_LOC_NONCE */{ SMP_PROCESS_LOCAL_NONCE, SMP_SM_NO_ACTION, SMP_STATE_WAIT_COMMITMENT}, + /* TK_REQ */{ SMP_SEND_APP_CBACK, SMP_SM_NO_ACTION, SMP_STATE_WAIT_APP_RSP}, + /* SMP_MODEL_SEC_CONN_PASSKEY_DISP model, passkey is sent up to display,*/ + /* It's time to start commitment calculation */ + /* KEY_READY */{ SMP_START_PASSKEY_VERIFICATION, SMP_SM_NO_ACTION, SMP_STATE_SEC_CONN_PHS1_START}, + /* PAIR_KEYPR_NOTIF */{ SMP_PROCESS_KEYPRESS_NOTIFICATION, SMP_SEND_APP_CBACK, SMP_STATE_SEC_CONN_PHS1_START}, + /* PAIR_COMMITM */{ SMP_PROCESS_PAIRING_COMMITMENT, SMP_SM_NO_ACTION, SMP_STATE_SEC_CONN_PHS1_START}, }; -static const UINT8 smp_master_wait_commitment_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* PAIR_COMMITM */{ SMP_PROCESS_PAIRING_COMMITMENT, SMP_SEND_RAND, SMP_STATE_WAIT_NONCE}, -/* PAIR_KEYPR_NOTIF */{ SMP_PROCESS_KEYPRESS_NOTIFICATION, SMP_SEND_APP_CBACK, SMP_STATE_WAIT_COMMITMENT}, +static const UINT8 smp_master_wait_commitment_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* PAIR_COMMITM */{ SMP_PROCESS_PAIRING_COMMITMENT, SMP_SEND_RAND, SMP_STATE_WAIT_NONCE}, + /* PAIR_KEYPR_NOTIF */{ SMP_PROCESS_KEYPRESS_NOTIFICATION, SMP_SEND_APP_CBACK, SMP_STATE_WAIT_COMMITMENT}, }; -static const UINT8 smp_master_wait_nonce_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* peer nonce is received */ -/* RAND */{SMP_PROC_RAND, SMP_PROCESS_PEER_NONCE, SMP_STATE_SEC_CONN_PHS2_START}, -/* NC model, time to calculate number for NC */ -/* SC_CALC_NC */{SMP_CALCULATE_NUMERIC_COMPARISON_DISPLAY_NUMBER, SMP_SM_NO_ACTION, SMP_STATE_WAIT_NONCE}, -/* NC model, time to display calculated number for NC to the user */ -/* SC_DSPL_NC */{SMP_SEND_APP_CBACK, SMP_SM_NO_ACTION, SMP_STATE_WAIT_APP_RSP}, +static const UINT8 smp_master_wait_nonce_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* peer nonce is received */ + /* RAND */{SMP_PROC_RAND, SMP_PROCESS_PEER_NONCE, SMP_STATE_SEC_CONN_PHS2_START}, + /* NC model, time to calculate number for NC */ + /* SC_CALC_NC */{SMP_CALCULATE_NUMERIC_COMPARISON_DISPLAY_NUMBER, SMP_SM_NO_ACTION, SMP_STATE_WAIT_NONCE}, + /* NC model, time to display calculated number for NC to the user */ + /* SC_DSPL_NC */{SMP_SEND_APP_CBACK, SMP_SM_NO_ACTION, SMP_STATE_WAIT_APP_RSP}, }; -static const UINT8 smp_master_sec_conn_phs2_start_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* SC_PHASE1_CMPLT */{SMP_CALCULATE_LOCAL_DHKEY_CHECK, SMP_SEND_DHKEY_CHECK, SMP_STATE_WAIT_DHK_CHECK}, +static const UINT8 smp_master_sec_conn_phs2_start_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* SC_PHASE1_CMPLT */{SMP_CALCULATE_LOCAL_DHKEY_CHECK, SMP_SEND_DHKEY_CHECK, SMP_STATE_WAIT_DHK_CHECK}, }; -static const UINT8 smp_master_wait_dhk_check_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* PAIR_DHKEY_CHCK */{SMP_PROCESS_DHKEY_CHECK, SMP_CALCULATE_PEER_DHKEY_CHECK, SMP_STATE_DHK_CHECK}, +static const UINT8 smp_master_wait_dhk_check_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* PAIR_DHKEY_CHCK */{SMP_PROCESS_DHKEY_CHECK, SMP_CALCULATE_PEER_DHKEY_CHECK, SMP_STATE_DHK_CHECK}, }; -static const UINT8 smp_master_dhk_check_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* locally calculated peer dhkey check is ready -> compare it withs DHKey Check actually received from peer */ -/* SC_KEY_READY */{SMP_MATCH_DHKEY_CHECKS, SMP_SM_NO_ACTION, SMP_STATE_DHK_CHECK}, -/* locally calculated peer dhkey check is ready -> calculate STK, go to sending */ -/* HCI LE Start Encryption command */ -/* ENC_REQ */{SMP_GENERATE_STK, SMP_SM_NO_ACTION, SMP_STATE_ENCRYPTION_PENDING}, +static const UINT8 smp_master_dhk_check_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* locally calculated peer dhkey check is ready -> compare it withs DHKey Check actually received from peer */ + /* SC_KEY_READY */{SMP_MATCH_DHKEY_CHECKS, SMP_SM_NO_ACTION, SMP_STATE_DHK_CHECK}, + /* locally calculated peer dhkey check is ready -> calculate STK, go to sending */ + /* HCI LE Start Encryption command */ + /* ENC_REQ */{SMP_GENERATE_STK, SMP_SM_NO_ACTION, SMP_STATE_ENCRYPTION_PENDING}, }; -static const UINT8 smp_master_enc_pending_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* STK ready */ -/* KEY_READY */ { SMP_START_ENC, SMP_SM_NO_ACTION, SMP_STATE_ENCRYPTION_PENDING}, -/* ENCRYPTED */ { SMP_CHECK_AUTH_REQ, SMP_SM_NO_ACTION, SMP_STATE_ENCRYPTION_PENDING}, -/* BOND_REQ */ { SMP_KEY_DISTRIBUTE, SMP_SM_NO_ACTION, SMP_STATE_BOND_PENDING} +static const UINT8 smp_master_enc_pending_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* STK ready */ + /* KEY_READY */ { SMP_START_ENC, SMP_SM_NO_ACTION, SMP_STATE_ENCRYPTION_PENDING}, + /* ENCRYPTED */ { SMP_CHECK_AUTH_REQ, SMP_SM_NO_ACTION, SMP_STATE_ENCRYPTION_PENDING}, + /* BOND_REQ */ { SMP_KEY_DISTRIBUTE, SMP_SM_NO_ACTION, SMP_STATE_BOND_PENDING} }; -static const UINT8 smp_master_bond_pending_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* ENC_INFO */ { SMP_PROC_ENC_INFO, SMP_SM_NO_ACTION, SMP_STATE_BOND_PENDING}, -/* ID_INFO */ { SMP_PROC_ID_INFO, SMP_SM_NO_ACTION, SMP_STATE_BOND_PENDING}, -/* SIGN_INFO*/ { SMP_PROC_SRK_INFO, SMP_SM_NO_ACTION, SMP_STATE_BOND_PENDING}, -/* MASTER_ID*/ { SMP_PROC_MASTER_ID, SMP_SM_NO_ACTION, SMP_STATE_BOND_PENDING}, -/* ID_ADDR */ { SMP_PROC_ID_ADDR, SMP_SM_NO_ACTION, SMP_STATE_BOND_PENDING}, -/* KEY_READY */{SMP_SEND_ENC_INFO, SMP_SM_NO_ACTION, SMP_STATE_BOND_PENDING} /* LTK ready */ +static const UINT8 smp_master_bond_pending_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* ENC_INFO */ { SMP_PROC_ENC_INFO, SMP_SM_NO_ACTION, SMP_STATE_BOND_PENDING}, + /* ID_INFO */ { SMP_PROC_ID_INFO, SMP_SM_NO_ACTION, SMP_STATE_BOND_PENDING}, + /* SIGN_INFO*/ { SMP_PROC_SRK_INFO, SMP_SM_NO_ACTION, SMP_STATE_BOND_PENDING}, + /* MASTER_ID*/ { SMP_PROC_MASTER_ID, SMP_SM_NO_ACTION, SMP_STATE_BOND_PENDING}, + /* ID_ADDR */ { SMP_PROC_ID_ADDR, SMP_SM_NO_ACTION, SMP_STATE_BOND_PENDING}, + /* KEY_READY */{SMP_SEND_ENC_INFO, SMP_SM_NO_ACTION, SMP_STATE_BOND_PENDING} /* LTK ready */ }; -static const UINT8 smp_master_create_local_sec_conn_oob_data[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* LOC_PUBL_KEY_CRTD */ {SMP_SET_LOCAL_OOB_KEYS, SMP_SM_NO_ACTION, SMP_STATE_CREATE_LOCAL_SEC_CONN_OOB_DATA}, -/* HAVE_LOC_NONCE */ {SMP_SET_LOCAL_OOB_RAND_COMMITMENT, SMP_SM_NO_ACTION, SMP_STATE_IDLE} +static const UINT8 smp_master_create_local_sec_conn_oob_data[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* LOC_PUBL_KEY_CRTD */ {SMP_SET_LOCAL_OOB_KEYS, SMP_SM_NO_ACTION, SMP_STATE_CREATE_LOCAL_SEC_CONN_OOB_DATA}, + /* HAVE_LOC_NONCE */ {SMP_SET_LOCAL_OOB_RAND_COMMITMENT, SMP_SM_NO_ACTION, SMP_STATE_IDLE} }; /************ SMP Slave FSM State/Event Indirection Table **************/ -static const UINT8 smp_slave_entry_map[][SMP_STATE_MAX] = -{ -/* state name: Idle WaitApp SecReq Pair Wait Confirm Rand PublKey SCPhs1 Wait Wait SCPhs2 Wait DHKChk Enc Bond CrLocSc - Rsp Pend ReqRsp Cfm Exch Strt Cmtm Nonce Strt DHKChk Pend Pend OobData */ -/* PAIR_REQ */{ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* PAIR_RSP */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* CONFIRM */{ 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* RAND */{ 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, -/* PAIR_FAIL */{ 0, 0x81, 0x81, 0x81, 0x81,0x81, 0x81,0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0, 0 }, -/* ENC_INFO */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0 }, -/* MASTER_ID */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0 }, -/* ID_INFO */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0 }, -/* ID_ADDR */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0 }, -/* SIGN_INFO */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0 }, -/* SEC_REQ */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* PAIR_PUBLIC_KEY */{ 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* PAIR_DHKEY_CHCK */{ 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 0, 0, 0 }, -/* PAIR_KEYPR_NOTIF */{ 0, 9, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 0, 0, 0, 0 }, -/* PAIR_COMMITM */{ 0, 8, 0, 0, 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0 }, -/* KEY_READY */{ 0, 3, 0, 3, 2, 2, 1, 0, 4, 0, 0, 0, 0, 0, 2, 1, 0 }, -/* ENC_CMPL */{ 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0 }, -/* L2C_CONN */{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* L2C_DISC */{ 0, 0x83, 0x83, 0x83, 0x83,0x83, 0x83,0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0 }, -/* IO_RSP */{ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* SEC_GRANT */{ 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* TK_REQ */{ 0, 0, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* AUTH_CMPL */{ 0, 0x82, 0x82, 0x82, 0x82,0x82, 0x82,0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0 }, -/* ENC_REQ */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }, -/* BOND_REQ */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0 }, -/* DISCARD_SEC_REQ */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* PUBL_KEY_EXCH_REQ */{ 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* LOC_PUBL_KEY_CRTD */{ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, -/* BOTH_PUBL_KEYS_RCVD */{ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* SC_DHKEY_CMPLT */{ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* HAVE_LOC_NONCE */{ 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2 }, -/* SC_PHASE1_CMPLT */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, -/* SC_CALC_NC */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0 }, -/* SC_DSPL_NC */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0 }, -/* SC_NC_OK */{ 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* SC_2_DHCK_CHKS_PRES */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0 }, -/* SC_KEY_READY */{ 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 }, -/* KEYPR_NOTIF */{ 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* SC_OOB_DATA */{ 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* CR_LOC_SC_OOB_DATA */{ 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, +static const UINT8 smp_slave_entry_map[][SMP_STATE_MAX] = { + /* state name: Idle WaitApp SecReq Pair Wait Confirm Rand PublKey SCPhs1 Wait Wait SCPhs2 Wait DHKChk Enc Bond CrLocSc + Rsp Pend ReqRsp Cfm Exch Strt Cmtm Nonce Strt DHKChk Pend Pend OobData */ + /* PAIR_REQ */{ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* PAIR_RSP */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* CONFIRM */{ 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* RAND */{ 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, + /* PAIR_FAIL */{ 0, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0, 0 }, + /* ENC_INFO */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0 }, + /* MASTER_ID */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0 }, + /* ID_INFO */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0 }, + /* ID_ADDR */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0 }, + /* SIGN_INFO */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0 }, + /* SEC_REQ */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* PAIR_PUBLIC_KEY */{ 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* PAIR_DHKEY_CHCK */{ 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 0, 0, 0 }, + /* PAIR_KEYPR_NOTIF */{ 0, 9, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 0, 0, 0, 0 }, + /* PAIR_COMMITM */{ 0, 8, 0, 0, 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0 }, + /* KEY_READY */{ 0, 3, 0, 3, 2, 2, 1, 0, 4, 0, 0, 0, 0, 0, 2, 1, 0 }, + /* ENC_CMPL */{ 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0 }, + /* L2C_CONN */{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* L2C_DISC */{ 0, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0 }, + /* IO_RSP */{ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* SEC_GRANT */{ 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* TK_REQ */{ 0, 0, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* AUTH_CMPL */{ 0, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0 }, + /* ENC_REQ */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }, + /* BOND_REQ */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0 }, + /* DISCARD_SEC_REQ */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* PUBL_KEY_EXCH_REQ */{ 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* LOC_PUBL_KEY_CRTD */{ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, + /* BOTH_PUBL_KEYS_RCVD */{ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* SC_DHKEY_CMPLT */{ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* HAVE_LOC_NONCE */{ 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2 }, + /* SC_PHASE1_CMPLT */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + /* SC_CALC_NC */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0 }, + /* SC_DSPL_NC */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0 }, + /* SC_NC_OK */{ 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* SC_2_DHCK_CHKS_PRES */{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0 }, + /* SC_KEY_READY */{ 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 }, + /* KEYPR_NOTIF */{ 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* SC_OOB_DATA */{ 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* CR_LOC_SC_OOB_DATA */{ 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, }; -static const UINT8 smp_slave_idle_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* L2C_CONN */ {SMP_SEND_APP_CBACK, SMP_SM_NO_ACTION, SMP_STATE_WAIT_APP_RSP}, -/* PAIR_REQ */ {SMP_PROC_PAIR_CMD, SMP_SEND_APP_CBACK, SMP_STATE_WAIT_APP_RSP} -/* CR_LOC_SC_OOB_DATA */ ,{SMP_CREATE_PRIVATE_KEY, SMP_SM_NO_ACTION, SMP_STATE_CREATE_LOCAL_SEC_CONN_OOB_DATA} -}; - -static const UINT8 smp_slave_wait_for_app_response_table [][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* IO_RSP */ {SMP_PROC_IO_RSP, SMP_FAST_CONN_PARAM, SMP_STATE_PAIR_REQ_RSP}, -/* SEC_GRANT */ {SMP_PROC_SEC_GRANT, SMP_SEND_APP_CBACK, SMP_STATE_WAIT_APP_RSP}, - - /* TK ready */ -/* KEY_READY */ {SMP_PROC_SL_KEY, SMP_SM_NO_ACTION, SMP_STATE_WAIT_APP_RSP}, -/* CONFIRM */ {SMP_PROC_CONFIRM, SMP_SM_NO_ACTION, SMP_STATE_CONFIRM} -/* DHKey Check from master is received before phase 1 is completed - race */ -/* PAIR_DHKEY_CHCK */,{SMP_PROCESS_DHKEY_CHECK, SMP_SM_NO_ACTION, SMP_STATE_WAIT_APP_RSP}, -/* user confirms NC 'OK', i.e. phase 1 is completed */ -/* SC_NC_OK */ {SMP_MOVE_TO_SEC_CONN_PHASE2, SMP_SM_NO_ACTION, SMP_STATE_SEC_CONN_PHS2_START}, -/* user-provided passkey is rcvd */ -/* SC_KEY_READY */ {SMP_START_PASSKEY_VERIFICATION, SMP_SM_NO_ACTION, SMP_STATE_SEC_CONN_PHS1_START}, -/* PAIR_COMMITM */ {SMP_PROCESS_PAIRING_COMMITMENT, SMP_SM_NO_ACTION, SMP_STATE_WAIT_APP_RSP}, -/* PAIR_KEYPR_NOTIF */ {SMP_PROCESS_KEYPRESS_NOTIFICATION, SMP_SEND_APP_CBACK, SMP_STATE_WAIT_APP_RSP}, -/* KEYPR_NOTIF */ {SMP_SEND_KEYPRESS_NOTIFICATION, SMP_SM_NO_ACTION, SMP_STATE_WAIT_APP_RSP}, -/* SC_OOB_DATA */ {SMP_SEND_PAIR_RSP, SMP_SM_NO_ACTION, SMP_STATE_PAIR_REQ_RSP}, +static const UINT8 smp_slave_idle_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* L2C_CONN */ {SMP_SEND_APP_CBACK, SMP_SM_NO_ACTION, SMP_STATE_WAIT_APP_RSP}, + /* PAIR_REQ */ {SMP_PROC_PAIR_CMD, SMP_SEND_APP_CBACK, SMP_STATE_WAIT_APP_RSP} + /* CR_LOC_SC_OOB_DATA */ , {SMP_CREATE_PRIVATE_KEY, SMP_SM_NO_ACTION, SMP_STATE_CREATE_LOCAL_SEC_CONN_OOB_DATA} }; -static const UINT8 smp_slave_sec_request_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* PAIR_REQ */{SMP_PROC_PAIR_CMD, SMP_SM_NO_ACTION, SMP_STATE_PAIR_REQ_RSP}, -/* ENCRYPTED*/{SMP_ENC_CMPL, SMP_SM_NO_ACTION, SMP_STATE_PAIR_REQ_RSP}, +static const UINT8 smp_slave_wait_for_app_response_table [][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* IO_RSP */ {SMP_PROC_IO_RSP, SMP_FAST_CONN_PARAM, SMP_STATE_PAIR_REQ_RSP}, + /* SEC_GRANT */ {SMP_PROC_SEC_GRANT, SMP_SEND_APP_CBACK, SMP_STATE_WAIT_APP_RSP}, + + /* TK ready */ + /* KEY_READY */ {SMP_PROC_SL_KEY, SMP_SM_NO_ACTION, SMP_STATE_WAIT_APP_RSP}, + /* CONFIRM */ {SMP_PROC_CONFIRM, SMP_SM_NO_ACTION, SMP_STATE_CONFIRM} + /* DHKey Check from master is received before phase 1 is completed - race */ + /* PAIR_DHKEY_CHCK */, {SMP_PROCESS_DHKEY_CHECK, SMP_SM_NO_ACTION, SMP_STATE_WAIT_APP_RSP}, + /* user confirms NC 'OK', i.e. phase 1 is completed */ + /* SC_NC_OK */ {SMP_MOVE_TO_SEC_CONN_PHASE2, SMP_SM_NO_ACTION, SMP_STATE_SEC_CONN_PHS2_START}, + /* user-provided passkey is rcvd */ + /* SC_KEY_READY */ {SMP_START_PASSKEY_VERIFICATION, SMP_SM_NO_ACTION, SMP_STATE_SEC_CONN_PHS1_START}, + /* PAIR_COMMITM */ {SMP_PROCESS_PAIRING_COMMITMENT, SMP_SM_NO_ACTION, SMP_STATE_WAIT_APP_RSP}, + /* PAIR_KEYPR_NOTIF */ {SMP_PROCESS_KEYPRESS_NOTIFICATION, SMP_SEND_APP_CBACK, SMP_STATE_WAIT_APP_RSP}, + /* KEYPR_NOTIF */ {SMP_SEND_KEYPRESS_NOTIFICATION, SMP_SM_NO_ACTION, SMP_STATE_WAIT_APP_RSP}, + /* SC_OOB_DATA */ {SMP_SEND_PAIR_RSP, SMP_SM_NO_ACTION, SMP_STATE_PAIR_REQ_RSP}, }; -static const UINT8 smp_slave_pair_request_response_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* CONFIRM */ {SMP_PROC_CONFIRM, SMP_SM_NO_ACTION, SMP_STATE_CONFIRM}, -/* TK_REQ */ {SMP_SEND_APP_CBACK, SMP_SM_NO_ACTION, SMP_STATE_WAIT_APP_RSP}, - /* TK/Confirm ready */ -/* KEY_READY */{SMP_PROC_SL_KEY, SMP_SM_NO_ACTION, SMP_STATE_PAIR_REQ_RSP} -/* PUBL_KEY_EXCH_REQ */,{ SMP_CREATE_PRIVATE_KEY, SMP_SM_NO_ACTION, SMP_STATE_PUBLIC_KEY_EXCH}, -/* PAIR_PUBLIC_KEY */ { SMP_PROCESS_PAIR_PUBLIC_KEY, SMP_SM_NO_ACTION, SMP_STATE_PAIR_REQ_RSP}, +static const UINT8 smp_slave_sec_request_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* PAIR_REQ */{SMP_PROC_PAIR_CMD, SMP_SM_NO_ACTION, SMP_STATE_PAIR_REQ_RSP}, + /* ENCRYPTED*/{SMP_ENC_CMPL, SMP_SM_NO_ACTION, SMP_STATE_PAIR_REQ_RSP}, }; -static const UINT8 smp_slave_wait_confirm_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* CONFIRM */ {SMP_PROC_CONFIRM, SMP_SEND_CONFIRM, SMP_STATE_CONFIRM}, -/* KEY_READY*/ {SMP_PROC_SL_KEY, SMP_SM_NO_ACTION, SMP_STATE_WAIT_CONFIRM} +static const UINT8 smp_slave_pair_request_response_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* CONFIRM */ {SMP_PROC_CONFIRM, SMP_SM_NO_ACTION, SMP_STATE_CONFIRM}, + /* TK_REQ */ {SMP_SEND_APP_CBACK, SMP_SM_NO_ACTION, SMP_STATE_WAIT_APP_RSP}, + /* TK/Confirm ready */ + /* KEY_READY */{SMP_PROC_SL_KEY, SMP_SM_NO_ACTION, SMP_STATE_PAIR_REQ_RSP} + /* PUBL_KEY_EXCH_REQ */, { SMP_CREATE_PRIVATE_KEY, SMP_SM_NO_ACTION, SMP_STATE_PUBLIC_KEY_EXCH}, + /* PAIR_PUBLIC_KEY */ { SMP_PROCESS_PAIR_PUBLIC_KEY, SMP_SM_NO_ACTION, SMP_STATE_PAIR_REQ_RSP}, }; -static const UINT8 smp_slave_confirm_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* RAND */ {SMP_PROC_RAND, SMP_GENERATE_COMPARE, SMP_STATE_RAND}, - - /* TK/Confirm ready */ -/* KEY_READY*/ {SMP_PROC_SL_KEY, SMP_SM_NO_ACTION, SMP_STATE_CONFIRM} +static const UINT8 smp_slave_wait_confirm_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* CONFIRM */ {SMP_PROC_CONFIRM, SMP_SEND_CONFIRM, SMP_STATE_CONFIRM}, + /* KEY_READY*/ {SMP_PROC_SL_KEY, SMP_SM_NO_ACTION, SMP_STATE_WAIT_CONFIRM} }; -static const UINT8 smp_slave_rand_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* KEY_READY */ {SMP_PROC_COMPARE, SMP_SM_NO_ACTION, SMP_STATE_RAND}, /* compare match */ -/* RAND */ {SMP_SEND_RAND, SMP_SM_NO_ACTION, SMP_STATE_ENCRYPTION_PENDING} +static const UINT8 smp_slave_confirm_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* RAND */ {SMP_PROC_RAND, SMP_GENERATE_COMPARE, SMP_STATE_RAND}, + + /* TK/Confirm ready */ + /* KEY_READY*/ {SMP_PROC_SL_KEY, SMP_SM_NO_ACTION, SMP_STATE_CONFIRM} }; -static const UINT8 smp_slave_public_key_exch_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* LOC_PUBL_KEY_CRTD */{ SMP_WAIT_FOR_BOTH_PUBLIC_KEYS, SMP_SM_NO_ACTION, SMP_STATE_PUBLIC_KEY_EXCH}, -/* PAIR_PUBLIC_KEY */{ SMP_PROCESS_PAIR_PUBLIC_KEY, SMP_SM_NO_ACTION, SMP_STATE_PUBLIC_KEY_EXCH}, -/* BOTH_PUBL_KEYS_RCVD */{ SMP_HAVE_BOTH_PUBLIC_KEYS, SMP_SM_NO_ACTION, SMP_STATE_SEC_CONN_PHS1_START}, +static const UINT8 smp_slave_rand_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* KEY_READY */ {SMP_PROC_COMPARE, SMP_SM_NO_ACTION, SMP_STATE_RAND}, /* compare match */ + /* RAND */ {SMP_SEND_RAND, SMP_SM_NO_ACTION, SMP_STATE_ENCRYPTION_PENDING} }; -static const UINT8 smp_slave_sec_conn_phs1_start_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* SC_DHKEY_CMPLT */{ SMP_START_SEC_CONN_PHASE1, SMP_SM_NO_ACTION, SMP_STATE_SEC_CONN_PHS1_START}, -/* HAVE_LOC_NONCE */{ SMP_PROCESS_LOCAL_NONCE,SMP_SM_NO_ACTION, SMP_STATE_WAIT_COMMITMENT}, -/* TK_REQ */{ SMP_SEND_APP_CBACK, SMP_SM_NO_ACTION, SMP_STATE_WAIT_APP_RSP}, -/* SMP_MODEL_SEC_CONN_PASSKEY_DISP model, passkey is sent up to display, it's time to start */ -/* commitment calculation */ -/* KEY_READY */{ SMP_START_PASSKEY_VERIFICATION, SMP_SM_NO_ACTION, SMP_STATE_SEC_CONN_PHS1_START}, -/* PAIR_KEYPR_NOTIF */{ SMP_PROCESS_KEYPRESS_NOTIFICATION,SMP_SEND_APP_CBACK, SMP_STATE_SEC_CONN_PHS1_START}, -/*COMMIT*/{SMP_PROCESS_PAIRING_COMMITMENT, SMP_SM_NO_ACTION, SMP_STATE_SEC_CONN_PHS1_START}, +static const UINT8 smp_slave_public_key_exch_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* LOC_PUBL_KEY_CRTD */{ SMP_WAIT_FOR_BOTH_PUBLIC_KEYS, SMP_SM_NO_ACTION, SMP_STATE_PUBLIC_KEY_EXCH}, + /* PAIR_PUBLIC_KEY */{ SMP_PROCESS_PAIR_PUBLIC_KEY, SMP_SM_NO_ACTION, SMP_STATE_PUBLIC_KEY_EXCH}, + /* BOTH_PUBL_KEYS_RCVD */{ SMP_HAVE_BOTH_PUBLIC_KEYS, SMP_SM_NO_ACTION, SMP_STATE_SEC_CONN_PHS1_START}, }; -static const UINT8 smp_slave_wait_commitment_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* PAIR_COMMITM */{SMP_PROCESS_PAIRING_COMMITMENT, SMP_SEND_COMMITMENT, SMP_STATE_WAIT_NONCE}, -/* PAIR_KEYPR_NOTIF */{SMP_PROCESS_KEYPRESS_NOTIFICATION, SMP_SEND_APP_CBACK, SMP_STATE_WAIT_COMMITMENT}, +static const UINT8 smp_slave_sec_conn_phs1_start_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* SC_DHKEY_CMPLT */{ SMP_START_SEC_CONN_PHASE1, SMP_SM_NO_ACTION, SMP_STATE_SEC_CONN_PHS1_START}, + /* HAVE_LOC_NONCE */{ SMP_PROCESS_LOCAL_NONCE, SMP_SM_NO_ACTION, SMP_STATE_WAIT_COMMITMENT}, + /* TK_REQ */{ SMP_SEND_APP_CBACK, SMP_SM_NO_ACTION, SMP_STATE_WAIT_APP_RSP}, + /* SMP_MODEL_SEC_CONN_PASSKEY_DISP model, passkey is sent up to display, it's time to start */ + /* commitment calculation */ + /* KEY_READY */{ SMP_START_PASSKEY_VERIFICATION, SMP_SM_NO_ACTION, SMP_STATE_SEC_CONN_PHS1_START}, + /* PAIR_KEYPR_NOTIF */{ SMP_PROCESS_KEYPRESS_NOTIFICATION, SMP_SEND_APP_CBACK, SMP_STATE_SEC_CONN_PHS1_START}, + /*COMMIT*/{SMP_PROCESS_PAIRING_COMMITMENT, SMP_SM_NO_ACTION, SMP_STATE_SEC_CONN_PHS1_START}, }; -static const UINT8 smp_slave_wait_nonce_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* peer nonce is received */ -/* RAND */{SMP_PROC_RAND, SMP_PROCESS_PEER_NONCE, SMP_STATE_SEC_CONN_PHS2_START}, -/* NC model, time to calculate number for NC */ -/* SC_CALC_NC */{SMP_CALCULATE_NUMERIC_COMPARISON_DISPLAY_NUMBER, SMP_SM_NO_ACTION, SMP_STATE_WAIT_NONCE}, -/* NC model, time to display calculated number for NC to the user */ -/* SC_DSPL_NC */{SMP_SEND_APP_CBACK, SMP_SM_NO_ACTION, SMP_STATE_WAIT_APP_RSP}, +static const UINT8 smp_slave_wait_commitment_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* PAIR_COMMITM */{SMP_PROCESS_PAIRING_COMMITMENT, SMP_SEND_COMMITMENT, SMP_STATE_WAIT_NONCE}, + /* PAIR_KEYPR_NOTIF */{SMP_PROCESS_KEYPRESS_NOTIFICATION, SMP_SEND_APP_CBACK, SMP_STATE_WAIT_COMMITMENT}, }; -static const UINT8 smp_slave_sec_conn_phs2_start_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* SC_PHASE1_CMPLT */{SMP_CALCULATE_LOCAL_DHKEY_CHECK, SMP_PH2_DHKEY_CHECKS_ARE_PRESENT, SMP_STATE_WAIT_DHK_CHECK}, -/* DHKey Check from master is received before slave DHKey calculation is completed - race */ -/* PAIR_DHKEY_CHCK */{SMP_PROCESS_DHKEY_CHECK, SMP_SM_NO_ACTION, SMP_STATE_SEC_CONN_PHS2_START}, +static const UINT8 smp_slave_wait_nonce_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* peer nonce is received */ + /* RAND */{SMP_PROC_RAND, SMP_PROCESS_PEER_NONCE, SMP_STATE_SEC_CONN_PHS2_START}, + /* NC model, time to calculate number for NC */ + /* SC_CALC_NC */{SMP_CALCULATE_NUMERIC_COMPARISON_DISPLAY_NUMBER, SMP_SM_NO_ACTION, SMP_STATE_WAIT_NONCE}, + /* NC model, time to display calculated number for NC to the user */ + /* SC_DSPL_NC */{SMP_SEND_APP_CBACK, SMP_SM_NO_ACTION, SMP_STATE_WAIT_APP_RSP}, }; -static const UINT8 smp_slave_wait_dhk_check_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* PAIR_DHKEY_CHCK */{SMP_PROCESS_DHKEY_CHECK, SMP_CALCULATE_PEER_DHKEY_CHECK, SMP_STATE_DHK_CHECK}, -/* DHKey Check from master was received before slave came to this state */ -/* SC_2_DHCK_CHKS_PRES */{SMP_CALCULATE_PEER_DHKEY_CHECK, SMP_SM_NO_ACTION, SMP_STATE_DHK_CHECK}, +static const UINT8 smp_slave_sec_conn_phs2_start_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* SC_PHASE1_CMPLT */{SMP_CALCULATE_LOCAL_DHKEY_CHECK, SMP_PH2_DHKEY_CHECKS_ARE_PRESENT, SMP_STATE_WAIT_DHK_CHECK}, + /* DHKey Check from master is received before slave DHKey calculation is completed - race */ + /* PAIR_DHKEY_CHCK */{SMP_PROCESS_DHKEY_CHECK, SMP_SM_NO_ACTION, SMP_STATE_SEC_CONN_PHS2_START}, }; -static const UINT8 smp_slave_dhk_check_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ - -/* locally calculated peer dhkey check is ready -> compare it withs DHKey Check */ -/* actually received from peer */ -/* SC_KEY_READY */{SMP_MATCH_DHKEY_CHECKS, SMP_SM_NO_ACTION, SMP_STATE_DHK_CHECK}, - -/* dhkey checks match -> send local dhkey check to master, go to wait for HCI LE */ -/* Long Term Key Request Event */ -/* PAIR_DHKEY_CHCK */{SMP_SEND_DHKEY_CHECK, SMP_SM_NO_ACTION, SMP_STATE_ENCRYPTION_PENDING}, +static const UINT8 smp_slave_wait_dhk_check_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* PAIR_DHKEY_CHCK */{SMP_PROCESS_DHKEY_CHECK, SMP_CALCULATE_PEER_DHKEY_CHECK, SMP_STATE_DHK_CHECK}, + /* DHKey Check from master was received before slave came to this state */ + /* SC_2_DHCK_CHKS_PRES */{SMP_CALCULATE_PEER_DHKEY_CHECK, SMP_SM_NO_ACTION, SMP_STATE_DHK_CHECK}, }; -static const UINT8 smp_slave_enc_pending_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* ENC_REQ */ {SMP_GENERATE_STK, SMP_SM_NO_ACTION, SMP_STATE_ENCRYPTION_PENDING}, +static const UINT8 smp_slave_dhk_check_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ - /* STK ready */ -/* KEY_READY */ {SMP_SEND_LTK_REPLY, SMP_SM_NO_ACTION, SMP_STATE_ENCRYPTION_PENDING}, -/* ENCRYPTED */ {SMP_CHECK_AUTH_REQ, SMP_SM_NO_ACTION, SMP_STATE_ENCRYPTION_PENDING}, -/* BOND_REQ */ {SMP_KEY_DISTRIBUTE, SMP_SM_NO_ACTION, SMP_STATE_BOND_PENDING} + /* locally calculated peer dhkey check is ready -> compare it withs DHKey Check */ + /* actually received from peer */ + /* SC_KEY_READY */{SMP_MATCH_DHKEY_CHECKS, SMP_SM_NO_ACTION, SMP_STATE_DHK_CHECK}, + + /* dhkey checks match -> send local dhkey check to master, go to wait for HCI LE */ + /* Long Term Key Request Event */ + /* PAIR_DHKEY_CHCK */{SMP_SEND_DHKEY_CHECK, SMP_SM_NO_ACTION, SMP_STATE_ENCRYPTION_PENDING}, }; -static const UINT8 smp_slave_bond_pending_table[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ - /* LTK ready */ -/* KEY_READY */{ SMP_SEND_ENC_INFO, SMP_SM_NO_ACTION, SMP_STATE_BOND_PENDING}, +static const UINT8 smp_slave_enc_pending_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* ENC_REQ */ {SMP_GENERATE_STK, SMP_SM_NO_ACTION, SMP_STATE_ENCRYPTION_PENDING}, - /* rev SRK */ -/* SIGN_INFO */{ SMP_PROC_SRK_INFO, SMP_SM_NO_ACTION, SMP_STATE_BOND_PENDING}, -/* ENC_INFO */ { SMP_PROC_ENC_INFO, SMP_SM_NO_ACTION, SMP_STATE_BOND_PENDING}, -/* ID_INFO */ { SMP_PROC_ID_INFO, SMP_SM_NO_ACTION, SMP_STATE_BOND_PENDING}, -/* MASTER_ID*/ { SMP_PROC_MASTER_ID, SMP_SM_NO_ACTION, SMP_STATE_BOND_PENDING}, -/* ID_ADDR */ { SMP_PROC_ID_ADDR, SMP_SM_NO_ACTION, SMP_STATE_BOND_PENDING} + /* STK ready */ + /* KEY_READY */ {SMP_SEND_LTK_REPLY, SMP_SM_NO_ACTION, SMP_STATE_ENCRYPTION_PENDING}, + /* ENCRYPTED */ {SMP_CHECK_AUTH_REQ, SMP_SM_NO_ACTION, SMP_STATE_ENCRYPTION_PENDING}, + /* BOND_REQ */ {SMP_KEY_DISTRIBUTE, SMP_SM_NO_ACTION, SMP_STATE_BOND_PENDING} +}; +static const UINT8 smp_slave_bond_pending_table[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + + /* LTK ready */ + /* KEY_READY */{ SMP_SEND_ENC_INFO, SMP_SM_NO_ACTION, SMP_STATE_BOND_PENDING}, + + /* rev SRK */ + /* SIGN_INFO */{ SMP_PROC_SRK_INFO, SMP_SM_NO_ACTION, SMP_STATE_BOND_PENDING}, + /* ENC_INFO */ { SMP_PROC_ENC_INFO, SMP_SM_NO_ACTION, SMP_STATE_BOND_PENDING}, + /* ID_INFO */ { SMP_PROC_ID_INFO, SMP_SM_NO_ACTION, SMP_STATE_BOND_PENDING}, + /* MASTER_ID*/ { SMP_PROC_MASTER_ID, SMP_SM_NO_ACTION, SMP_STATE_BOND_PENDING}, + /* ID_ADDR */ { SMP_PROC_ID_ADDR, SMP_SM_NO_ACTION, SMP_STATE_BOND_PENDING} }; -static const UINT8 smp_slave_create_local_sec_conn_oob_data[][SMP_SM_NUM_COLS] = -{ -/* Event Action Next State */ -/* LOC_PUBL_KEY_CRTD */ {SMP_SET_LOCAL_OOB_KEYS, SMP_SM_NO_ACTION, SMP_STATE_CREATE_LOCAL_SEC_CONN_OOB_DATA}, -/* HAVE_LOC_NONCE */ {SMP_SET_LOCAL_OOB_RAND_COMMITMENT, SMP_SM_NO_ACTION, SMP_STATE_IDLE} +static const UINT8 smp_slave_create_local_sec_conn_oob_data[][SMP_SM_NUM_COLS] = { + /* Event Action Next State */ + /* LOC_PUBL_KEY_CRTD */ {SMP_SET_LOCAL_OOB_KEYS, SMP_SM_NO_ACTION, SMP_STATE_CREATE_LOCAL_SEC_CONN_OOB_DATA}, + /* HAVE_LOC_NONCE */ {SMP_SET_LOCAL_OOB_RAND_COMMITMENT, SMP_SM_NO_ACTION, SMP_STATE_IDLE} }; -static const tSMP_SM_TBL smp_state_table[][2] = -{ +static const tSMP_SM_TBL smp_state_table[][2] = { /* SMP_STATE_IDLE */ {smp_master_idle_table, smp_slave_idle_table}, @@ -679,7 +638,7 @@ static const tSMP_SM_TBL smp_state_table[][2] = {smp_master_rand_table, smp_slave_rand_table}, /* SMP_STATE_PUBLIC_KEY_EXCH */ - {smp_master_public_key_exchange_table,smp_slave_public_key_exch_table}, + {smp_master_public_key_exchange_table, smp_slave_public_key_exch_table}, /* SMP_STATE_SEC_CONN_PHS1_START */ {smp_master_sec_conn_phs1_start_table, smp_slave_sec_conn_phs1_start_table}, @@ -690,7 +649,7 @@ static const tSMP_SM_TBL smp_state_table[][2] = /* SMP_STATE_WAIT_NONCE */ {smp_master_wait_nonce_table, smp_slave_wait_nonce_table}, - /* SMP_STATE_SEC_CONN_PHS2_START */ + /* SMP_STATE_SEC_CONN_PHS2_START */ {smp_master_sec_conn_phs2_start_table, smp_slave_sec_conn_phs2_start_table}, /* SMP_STATE_WAIT_DHK_CHECK */ @@ -702,7 +661,7 @@ static const tSMP_SM_TBL smp_state_table[][2] = /* SMP_STATE_ENCRYPTION_PENDING */ {smp_master_enc_pending_table, smp_slave_enc_pending_table}, - /* SMP_STATE_BOND_PENDING */ + /* SMP_STATE_BOND_PENDING */ {smp_master_bond_pending_table, smp_slave_bond_pending_table}, /* SMP_STATE_CREATE_LOCAL_SEC_CONN_OOB_DATA */ @@ -710,8 +669,7 @@ static const tSMP_SM_TBL smp_state_table[][2] = }; typedef const UINT8 (*tSMP_ENTRY_TBL)[SMP_STATE_MAX]; -static const tSMP_ENTRY_TBL smp_entry_table[] = -{ +static const tSMP_ENTRY_TBL smp_entry_table[] = { smp_master_entry_map, smp_slave_entry_map }; @@ -727,15 +685,12 @@ tSMP_CB smp_cb; *******************************************************************************/ void smp_set_state(tSMP_STATE state) { - if (state < SMP_STATE_MAX) - { + if (state < SMP_STATE_MAX) { SMP_TRACE_DEBUG( "State change: %s(%d) ==> %s(%d)", - smp_get_state_name(smp_cb.state), smp_cb.state, - smp_get_state_name(state), state ); + smp_get_state_name(smp_cb.state), smp_cb.state, + smp_get_state_name(state), state ); smp_cb.state = state; - } - else - { + } else { SMP_TRACE_DEBUG("smp_set_state invalid state =%d", state ); } } @@ -772,55 +727,46 @@ void smp_sm_event(tSMP_CB *p_cb, tSMP_EVENT event, void *p_data) tSMP_ENTRY_TBL entry_table = smp_entry_table[p_cb->role]; SMP_TRACE_EVENT("main smp_sm_event\n"); - if (curr_state >= SMP_STATE_MAX) - { + if (curr_state >= SMP_STATE_MAX) { SMP_TRACE_DEBUG( "Invalid state: %d\n", curr_state) ; return; } - SMP_TRACE_DEBUG( "SMP Role: %s State: [%s (%d)], Event: [%s (%d)]",\ - (p_cb->role == 0x01) ?"Slave" : "Master\n", smp_get_state_name( p_cb->state), - p_cb->state, smp_get_event_name(event), event) ; + SMP_TRACE_DEBUG( "SMP Role: %s State: [%s (%d)], Event: [%s (%d)]", \ + (p_cb->role == 0x01) ? "Slave" : "Master\n", smp_get_state_name( p_cb->state), + p_cb->state, smp_get_event_name(event), event) ; /* look up the state table for the current state */ /* lookup entry /w event & curr_state */ /* If entry is ignore, return. * Otherwise, get state table (according to curr_state or all_state) */ - if ((event <= SMP_MAX_EVT) && ( (entry = entry_table[event - 1][curr_state]) != SMP_SM_IGNORE )) - { - if (entry & SMP_ALL_TBL_MASK) - { + if ((event <= SMP_MAX_EVT) && ( (entry = entry_table[event - 1][curr_state]) != SMP_SM_IGNORE )) { + if (entry & SMP_ALL_TBL_MASK) { entry &= ~SMP_ALL_TBL_MASK; state_table = smp_all_table; - } - else + } else { state_table = smp_state_table[curr_state][p_cb->role]; - } - else - { + } + } else { SMP_TRACE_DEBUG( "Ignore event [%s (%d)] in state [%s (%d)]\n", - smp_get_event_name(event), event, smp_get_state_name(curr_state), - curr_state); + smp_get_event_name(event), event, smp_get_state_name(curr_state), + curr_state); return; } /* Get possible next state from state table. */ - smp_set_state(state_table[entry-1][SMP_SME_NEXT_STATE]); + smp_set_state(state_table[entry - 1][SMP_SME_NEXT_STATE]); /* If action is not ignore, clear param, exec action and get next state. * The action function may set the Param for cback. * Depending on param, call cback or free buffer. */ /* execute action */ /* execute action functions */ - for (i = 0; i < SMP_NUM_ACTIONS; i++) - { - if ((action = state_table[entry-1][i]) != SMP_SM_NO_ACTION) - { + for (i = 0; i < SMP_NUM_ACTIONS; i++) { + if ((action = state_table[entry - 1][i]) != SMP_SM_NO_ACTION) { (*smp_sm_action[action])(p_cb, (tSMP_INT_DATA *)p_data); - } - else - { + } else { break; } } @@ -831,12 +777,11 @@ void smp_sm_event(tSMP_CB *p_cb, tSMP_EVENT event, void *p_data) ** Function smp_get_state_name ** Returns The smp state name. *******************************************************************************/ -const char * smp_get_state_name(tSMP_STATE state) +const char *smp_get_state_name(tSMP_STATE state) { const char *p_str = smp_state_name[SMP_STATE_MAX]; - if (state < SMP_STATE_MAX) - { + if (state < SMP_STATE_MAX) { p_str = smp_state_name[state]; } return p_str; @@ -846,13 +791,12 @@ const char * smp_get_state_name(tSMP_STATE state) ** Function smp_get_event_name ** Returns The smp event name. *******************************************************************************/ -const char * smp_get_event_name(tSMP_EVENT event) +const char *smp_get_event_name(tSMP_EVENT event) { const char *p_str = smp_event_name[SMP_MAX_EVT]; - if (event <= SMP_MAX_EVT) - { - p_str = smp_event_name[event- 1]; + if (event <= SMP_MAX_EVT) { + p_str = smp_event_name[event - 1]; } return p_str; } diff --git a/components/bt/bluedroid/stack/smp/smp_utils.c b/components/bt/bluedroid/stack/smp/smp_utils.c old mode 100755 new mode 100644 index 4d988bad46..0e49bb68de --- a/components/bt/bluedroid/stack/smp/smp_utils.c +++ b/components/bt/bluedroid/stack/smp/smp_utils.c @@ -54,8 +54,7 @@ #define SMP_PAIR_KEYPR_NOTIF_SIZE (1 /* opcode */ + 1 /*Notif Type*/) /* SMP command sizes per spec */ -static const UINT8 smp_cmd_size_per_spec[] = -{ +static const UINT8 smp_cmd_size_per_spec[] = { 0, SMP_PAIRING_REQ_SIZE, /* 0x01: pairing request */ SMP_PAIRING_REQ_SIZE, /* 0x02: pairing response */ @@ -82,8 +81,7 @@ typedef BOOLEAN (*tSMP_CMD_LEN_VALID)(tSMP_CB *p_cb); static BOOLEAN smp_command_has_valid_fixed_length(tSMP_CB *p_cb); -static const tSMP_CMD_LEN_VALID smp_cmd_len_is_valid[] = -{ +static const tSMP_CMD_LEN_VALID smp_cmd_len_is_valid[] = { smp_parameter_unconditionally_invalid, smp_command_has_valid_fixed_length, /* 0x01: pairing request */ smp_command_has_valid_fixed_length, /* 0x02: pairing response */ @@ -108,8 +106,7 @@ typedef BOOLEAN (*tSMP_CMD_PARAM_RANGES_VALID)(tSMP_CB *p_cb); static BOOLEAN smp_pairing_request_response_parameters_are_valid(tSMP_CB *p_cb); static BOOLEAN smp_pairing_keypress_notification_is_valid(tSMP_CB *p_cb); -static const tSMP_CMD_PARAM_RANGES_VALID smp_cmd_param_ranges_are_valid[] = -{ +static const tSMP_CMD_PARAM_RANGES_VALID smp_cmd_param_ranges_are_valid[] = { smp_parameter_unconditionally_invalid, smp_pairing_request_response_parameters_are_valid, /* 0x01: pairing request */ smp_pairing_request_response_parameters_are_valid, /* 0x02: pairing response */ @@ -129,7 +126,7 @@ static const tSMP_CMD_PARAM_RANGES_VALID smp_cmd_param_ranges_are_valid[] = }; /* type for action functions */ -typedef BT_HDR * (*tSMP_CMD_ACT)(UINT8 cmd_code, tSMP_CB *p_cb); +typedef BT_HDR *(*tSMP_CMD_ACT)(UINT8 cmd_code, tSMP_CB *p_cb); static BT_HDR *smp_build_pairing_cmd(UINT8 cmd_code, tSMP_CB *p_cb); static BT_HDR *smp_build_confirm_cmd(UINT8 cmd_code, tSMP_CB *p_cb); @@ -146,8 +143,7 @@ static BT_HDR *smp_build_pairing_commitment_cmd(UINT8 cmd_code, tSMP_CB *p_cb); static BT_HDR *smp_build_pair_dhkey_check_cmd(UINT8 cmd_code, tSMP_CB *p_cb); static BT_HDR *smp_build_pairing_keypress_notification_cmd(UINT8 cmd_code, tSMP_CB *p_cb); -static const tSMP_CMD_ACT smp_cmd_build_act[] = -{ +static const tSMP_CMD_ACT smp_cmd_build_act[] = { NULL, smp_build_pairing_cmd, /* 0x01: pairing request */ smp_build_pairing_cmd, /* 0x02: pairing response */ @@ -166,106 +162,148 @@ static const tSMP_CMD_ACT smp_cmd_build_act[] = smp_build_pairing_commitment_cmd /* 0x0F: pairing commitment */ }; -static const UINT8 smp_association_table[2][SMP_IO_CAP_MAX][SMP_IO_CAP_MAX] = -{ +static const UINT8 smp_association_table[2][SMP_IO_CAP_MAX][SMP_IO_CAP_MAX] = { /* display only */ /* Display Yes/No */ /* keyboard only */ - /* No Input/Output */ /* keyboard display */ + /* No Input/Output */ /* keyboard display */ - /* initiator */ - /* model = tbl[peer_io_caps][loc_io_caps] */ - /* Display Only */ - {{SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_PASSKEY, - SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_PASSKEY}, + /* initiator */ + /* model = tbl[peer_io_caps][loc_io_caps] */ + /* Display Only */ + { { + SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_PASSKEY, + SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_PASSKEY + }, - /* Display Yes/No */ - {SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_PASSKEY, - SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_PASSKEY}, + /* Display Yes/No */ + { + SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_PASSKEY, + SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_PASSKEY + }, - /* Keyboard only */ - {SMP_MODEL_KEY_NOTIF, SMP_MODEL_KEY_NOTIF, SMP_MODEL_PASSKEY, - SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_KEY_NOTIF}, + /* Keyboard only */ + { + SMP_MODEL_KEY_NOTIF, SMP_MODEL_KEY_NOTIF, SMP_MODEL_PASSKEY, + SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_KEY_NOTIF + }, - /* No Input No Output */ - {SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY, - SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY}, + /* No Input No Output */ + { + SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY, + SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY + }, - /* keyboard display */ - {SMP_MODEL_KEY_NOTIF, SMP_MODEL_KEY_NOTIF, SMP_MODEL_PASSKEY, - SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_KEY_NOTIF}}, + /* keyboard display */ + { + SMP_MODEL_KEY_NOTIF, SMP_MODEL_KEY_NOTIF, SMP_MODEL_PASSKEY, + SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_KEY_NOTIF + } + }, - /* responder */ - /* model = tbl[loc_io_caps][peer_io_caps] */ - /* Display Only */ - {{SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_KEY_NOTIF, - SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_KEY_NOTIF}, + /* responder */ + /* model = tbl[loc_io_caps][peer_io_caps] */ + /* Display Only */ + { { + SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_KEY_NOTIF, + SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_KEY_NOTIF + }, - /* Display Yes/No */ - {SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_KEY_NOTIF, - SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_KEY_NOTIF}, + /* Display Yes/No */ + { + SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_KEY_NOTIF, + SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_KEY_NOTIF + }, - /* keyboard only */ - {SMP_MODEL_PASSKEY, SMP_MODEL_PASSKEY, SMP_MODEL_PASSKEY, - SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_PASSKEY}, + /* keyboard only */ + { + SMP_MODEL_PASSKEY, SMP_MODEL_PASSKEY, SMP_MODEL_PASSKEY, + SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_PASSKEY + }, - /* No Input No Output */ - {SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY, - SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY}, + /* No Input No Output */ + { + SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY, + SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_ENCRYPTION_ONLY + }, - /* keyboard display */ - {SMP_MODEL_PASSKEY, SMP_MODEL_PASSKEY, SMP_MODEL_KEY_NOTIF, - SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_PASSKEY}} + /* keyboard display */ + { + SMP_MODEL_PASSKEY, SMP_MODEL_PASSKEY, SMP_MODEL_KEY_NOTIF, + SMP_MODEL_ENCRYPTION_ONLY, SMP_MODEL_PASSKEY + } + } }; -static const UINT8 smp_association_table_sc[2][SMP_IO_CAP_MAX][SMP_IO_CAP_MAX] = -{ - /* display only */ /* Display Yes/No */ /* keyboard only */ - /* No InputOutput */ /* keyboard display */ +static const UINT8 smp_association_table_sc[2][SMP_IO_CAP_MAX][SMP_IO_CAP_MAX] = { + /* display only */ /* Display Yes/No */ /* keyboard only */ + /* No InputOutput */ /* keyboard display */ - /* initiator */ - /* model = tbl[peer_io_caps][loc_io_caps] */ + /* initiator */ + /* model = tbl[peer_io_caps][loc_io_caps] */ - /* Display Only */ - {{SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_PASSKEY_ENT, - SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_PASSKEY_ENT}, + /* Display Only */ + { { + SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_PASSKEY_ENT, + SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_PASSKEY_ENT + }, - /* Display Yes/No */ - {SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_NUM_COMP, SMP_MODEL_SEC_CONN_PASSKEY_ENT, - SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_NUM_COMP}, + /* Display Yes/No */ + { + SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_NUM_COMP, SMP_MODEL_SEC_CONN_PASSKEY_ENT, + SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_NUM_COMP + }, - /* keyboard only */ - {SMP_MODEL_SEC_CONN_PASSKEY_DISP, SMP_MODEL_SEC_CONN_PASSKEY_DISP, SMP_MODEL_SEC_CONN_PASSKEY_ENT, - SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_PASSKEY_DISP}, + /* keyboard only */ + { + SMP_MODEL_SEC_CONN_PASSKEY_DISP, SMP_MODEL_SEC_CONN_PASSKEY_DISP, SMP_MODEL_SEC_CONN_PASSKEY_ENT, + SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_PASSKEY_DISP + }, - /* No Input No Output */ - {SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_JUSTWORKS, - SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_JUSTWORKS}, + /* No Input No Output */ + { + SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_JUSTWORKS, + SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_JUSTWORKS + }, - /* keyboard display */ - {SMP_MODEL_SEC_CONN_PASSKEY_DISP, SMP_MODEL_SEC_CONN_NUM_COMP, SMP_MODEL_SEC_CONN_PASSKEY_ENT, - SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_NUM_COMP}}, + /* keyboard display */ + { + SMP_MODEL_SEC_CONN_PASSKEY_DISP, SMP_MODEL_SEC_CONN_NUM_COMP, SMP_MODEL_SEC_CONN_PASSKEY_ENT, + SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_NUM_COMP + } + }, - /* responder */ - /* model = tbl[loc_io_caps][peer_io_caps] */ + /* responder */ + /* model = tbl[loc_io_caps][peer_io_caps] */ - /* Display Only */ - {{SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_PASSKEY_DISP, - SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_PASSKEY_DISP}, + /* Display Only */ + { { + SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_PASSKEY_DISP, + SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_PASSKEY_DISP + }, - /* Display Yes/No */ - {SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_NUM_COMP, SMP_MODEL_SEC_CONN_PASSKEY_DISP, - SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_NUM_COMP}, + /* Display Yes/No */ + { + SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_NUM_COMP, SMP_MODEL_SEC_CONN_PASSKEY_DISP, + SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_NUM_COMP + }, - /* keyboard only */ - {SMP_MODEL_SEC_CONN_PASSKEY_ENT, SMP_MODEL_SEC_CONN_PASSKEY_ENT, SMP_MODEL_SEC_CONN_PASSKEY_ENT, - SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_PASSKEY_ENT}, + /* keyboard only */ + { + SMP_MODEL_SEC_CONN_PASSKEY_ENT, SMP_MODEL_SEC_CONN_PASSKEY_ENT, SMP_MODEL_SEC_CONN_PASSKEY_ENT, + SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_PASSKEY_ENT + }, - /* No Input No Output */ - {SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_JUSTWORKS, - SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_JUSTWORKS}, + /* No Input No Output */ + { + SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_JUSTWORKS, + SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_JUSTWORKS + }, - /* keyboard display */ - {SMP_MODEL_SEC_CONN_PASSKEY_ENT, SMP_MODEL_SEC_CONN_NUM_COMP, SMP_MODEL_SEC_CONN_PASSKEY_DISP, - SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_NUM_COMP}} + /* keyboard display */ + { + SMP_MODEL_SEC_CONN_PASSKEY_ENT, SMP_MODEL_SEC_CONN_NUM_COMP, SMP_MODEL_SEC_CONN_PASSKEY_DISP, + SMP_MODEL_SEC_CONN_JUSTWORKS, SMP_MODEL_SEC_CONN_NUM_COMP + } + } }; static tSMP_ASSO_MODEL smp_select_legacy_association_model(tSMP_CB *p_cb); @@ -283,23 +321,21 @@ BOOLEAN smp_send_msg_to_L2CAP(BD_ADDR rem_bda, BT_HDR *p_toL2CAP) UINT16 l2cap_ret; UINT16 fixed_cid = L2CAP_SMP_CID; - if (smp_cb.smp_over_br) - { + if (smp_cb.smp_over_br) { fixed_cid = L2CAP_SMP_BR_CID; } SMP_TRACE_EVENT("%s", __FUNCTION__); smp_cb.total_tx_unacked += 1; - if ((l2cap_ret = L2CA_SendFixedChnlData (fixed_cid, rem_bda, p_toL2CAP)) == L2CAP_DW_FAILED) - { + if ((l2cap_ret = L2CA_SendFixedChnlData (fixed_cid, rem_bda, p_toL2CAP)) == L2CAP_DW_FAILED) { smp_cb.total_tx_unacked -= 1; SMP_TRACE_ERROR("SMP failed to pass msg:0x%0x to L2CAP", - *((UINT8 *)(p_toL2CAP + 1) + p_toL2CAP->offset)); + *((UINT8 *)(p_toL2CAP + 1) + p_toL2CAP->offset)); return FALSE; - } - else + } else { return TRUE; + } } /******************************************************************************* @@ -316,13 +352,11 @@ BOOLEAN smp_send_cmd(UINT8 cmd_code, tSMP_CB *p_cb) UINT8 failure = SMP_PAIR_INTERNAL_ERR; SMP_TRACE_EVENT("smp_send_cmd on l2cap cmd_code=0x%x\n", cmd_code); if ( cmd_code <= (SMP_OPCODE_MAX + 1 /* for SMP_OPCODE_PAIR_COMMITM */) && - smp_cmd_build_act[cmd_code] != NULL) - { + smp_cmd_build_act[cmd_code] != NULL) { p_buf = (*smp_cmd_build_act[cmd_code])(cmd_code, p_cb); if (p_buf != NULL && - smp_send_msg_to_L2CAP(p_cb->pairing_bda, p_buf)) - { + smp_send_msg_to_L2CAP(p_cb->pairing_bda, p_buf)) { sent = TRUE; btu_stop_timer (&p_cb->rsp_timer_ent); @@ -331,14 +365,10 @@ BOOLEAN smp_send_cmd(UINT8 cmd_code, tSMP_CB *p_cb) } } - if (!sent) - { - if (p_cb->smp_over_br) - { + if (!sent) { + if (p_cb->smp_over_br) { smp_br_state_machine_event(p_cb, SMP_BR_AUTH_CMPL_EVT, &failure); - } - else - { + } else { smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &failure); } } @@ -362,12 +392,9 @@ void smp_rsp_timeout(TIMER_LIST_ENT *p_tle) SMP_TRACE_EVENT("%s state:%d br_state:%d", __FUNCTION__, p_cb->state, p_cb->br_state); - if (p_cb->smp_over_br) - { + if (p_cb->smp_over_br) { smp_br_state_machine_event(p_cb, SMP_BR_AUTH_CMPL_EVT, &failure); - } - else - { + } else { smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &failure); } } @@ -379,14 +406,13 @@ void smp_rsp_timeout(TIMER_LIST_ENT *p_tle) ** Description Build pairing request command. ** *******************************************************************************/ -BT_HDR * smp_build_pairing_cmd(UINT8 cmd_code, tSMP_CB *p_cb) +BT_HDR *smp_build_pairing_cmd(UINT8 cmd_code, tSMP_CB *p_cb) { BT_HDR *p_buf = NULL ; UINT8 *p; SMP_TRACE_EVENT("smp_build_pairing_cmd"); - if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + SMP_PAIRING_REQ_SIZE + L2CAP_MIN_OFFSET)) != NULL) - { + if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + SMP_PAIRING_REQ_SIZE + L2CAP_MIN_OFFSET)) != NULL) { p = (UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; UINT8_TO_STREAM (p, cmd_code); @@ -412,15 +438,14 @@ BT_HDR * smp_build_pairing_cmd(UINT8 cmd_code, tSMP_CB *p_cb) ** Description Build confirm request command. ** *******************************************************************************/ -static BT_HDR * smp_build_confirm_cmd(UINT8 cmd_code, tSMP_CB *p_cb) +static BT_HDR *smp_build_confirm_cmd(UINT8 cmd_code, tSMP_CB *p_cb) { BT_HDR *p_buf = NULL ; UINT8 *p; UNUSED(cmd_code); SMP_TRACE_EVENT("smp_build_confirm_cmd\n"); - if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + SMP_CONFIRM_CMD_SIZE + L2CAP_MIN_OFFSET)) != NULL) - { + if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + SMP_CONFIRM_CMD_SIZE + L2CAP_MIN_OFFSET)) != NULL) { p = (UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; UINT8_TO_STREAM (p, SMP_OPCODE_CONFIRM); @@ -439,7 +464,7 @@ static BT_HDR * smp_build_confirm_cmd(UINT8 cmd_code, tSMP_CB *p_cb) ** Description Build Random command. ** *******************************************************************************/ -static BT_HDR * smp_build_rand_cmd(UINT8 cmd_code, tSMP_CB *p_cb) +static BT_HDR *smp_build_rand_cmd(UINT8 cmd_code, tSMP_CB *p_cb) { BT_HDR *p_buf = NULL ; UINT8 *p; @@ -447,8 +472,7 @@ static BT_HDR * smp_build_rand_cmd(UINT8 cmd_code, tSMP_CB *p_cb) SMP_TRACE_EVENT("%s\n", __func__); if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + SMP_RAND_CMD_SIZE + L2CAP_MIN_OFFSET)) - != NULL) - { + != NULL) { p = (UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; UINT8_TO_STREAM (p, SMP_OPCODE_RAND); @@ -467,15 +491,14 @@ static BT_HDR * smp_build_rand_cmd(UINT8 cmd_code, tSMP_CB *p_cb) ** Description Build security information command. ** *******************************************************************************/ -static BT_HDR * smp_build_encrypt_info_cmd(UINT8 cmd_code, tSMP_CB *p_cb) +static BT_HDR *smp_build_encrypt_info_cmd(UINT8 cmd_code, tSMP_CB *p_cb) { BT_HDR *p_buf = NULL ; UINT8 *p; UNUSED(cmd_code); SMP_TRACE_EVENT("smp_build_encrypt_info_cmd\n"); - if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + SMP_ENC_INFO_SIZE + L2CAP_MIN_OFFSET)) != NULL) - { + if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + SMP_ENC_INFO_SIZE + L2CAP_MIN_OFFSET)) != NULL) { p = (UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; UINT8_TO_STREAM (p, SMP_OPCODE_ENCRYPT_INFO); @@ -495,7 +518,7 @@ static BT_HDR * smp_build_encrypt_info_cmd(UINT8 cmd_code, tSMP_CB *p_cb) ** Description Build security information command. ** *******************************************************************************/ -static BT_HDR * smp_build_master_id_cmd(UINT8 cmd_code, tSMP_CB *p_cb) +static BT_HDR *smp_build_master_id_cmd(UINT8 cmd_code, tSMP_CB *p_cb) { BT_HDR *p_buf = NULL ; UINT8 *p; @@ -503,8 +526,7 @@ static BT_HDR * smp_build_master_id_cmd(UINT8 cmd_code, tSMP_CB *p_cb) SMP_TRACE_EVENT("%s\n", __func__); - if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + SMP_MASTER_ID_SIZE + L2CAP_MIN_OFFSET)) != NULL) - { + if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + SMP_MASTER_ID_SIZE + L2CAP_MIN_OFFSET)) != NULL) { p = (UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; UINT8_TO_STREAM (p, SMP_OPCODE_MASTER_ID); @@ -525,7 +547,7 @@ static BT_HDR * smp_build_master_id_cmd(UINT8 cmd_code, tSMP_CB *p_cb) ** Description Build identity information command. ** *******************************************************************************/ -static BT_HDR * smp_build_identity_info_cmd(UINT8 cmd_code, tSMP_CB *p_cb) +static BT_HDR *smp_build_identity_info_cmd(UINT8 cmd_code, tSMP_CB *p_cb) { BT_HDR *p_buf = NULL ; UINT8 *p; @@ -534,8 +556,7 @@ static BT_HDR * smp_build_identity_info_cmd(UINT8 cmd_code, tSMP_CB *p_cb) UNUSED(p_cb); SMP_TRACE_EVENT("smp_build_identity_info_cmd\n"); - if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + SMP_ID_INFO_SIZE + L2CAP_MIN_OFFSET)) != NULL) - { + if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + SMP_ID_INFO_SIZE + L2CAP_MIN_OFFSET)) != NULL) { p = (UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; BTM_GetDeviceIDRoot(irk); @@ -557,7 +578,7 @@ static BT_HDR * smp_build_identity_info_cmd(UINT8 cmd_code, tSMP_CB *p_cb) ** Description Build identity address information command. ** *******************************************************************************/ -static BT_HDR * smp_build_id_addr_cmd(UINT8 cmd_code, tSMP_CB *p_cb) +static BT_HDR *smp_build_id_addr_cmd(UINT8 cmd_code, tSMP_CB *p_cb) { BT_HDR *p_buf = NULL; UINT8 *p; @@ -565,8 +586,7 @@ static BT_HDR * smp_build_id_addr_cmd(UINT8 cmd_code, tSMP_CB *p_cb) UNUSED(cmd_code); UNUSED(p_cb); SMP_TRACE_EVENT("smp_build_id_addr_cmd\n"); - if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + SMP_ID_ADDR_SIZE + L2CAP_MIN_OFFSET)) != NULL) - { + if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + SMP_ID_ADDR_SIZE + L2CAP_MIN_OFFSET)) != NULL) { p = (UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; UINT8_TO_STREAM (p, SMP_OPCODE_ID_ADDR); @@ -587,15 +607,14 @@ static BT_HDR * smp_build_id_addr_cmd(UINT8 cmd_code, tSMP_CB *p_cb) ** Description Build signing information command. ** *******************************************************************************/ -static BT_HDR * smp_build_signing_info_cmd(UINT8 cmd_code, tSMP_CB *p_cb) +static BT_HDR *smp_build_signing_info_cmd(UINT8 cmd_code, tSMP_CB *p_cb) { BT_HDR *p_buf = NULL ; UINT8 *p; UNUSED(cmd_code); SMP_TRACE_EVENT("smp_build_signing_info_cmd\n"); - if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + SMP_SIGN_INFO_SIZE + L2CAP_MIN_OFFSET)) != NULL) - { + if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + SMP_SIGN_INFO_SIZE + L2CAP_MIN_OFFSET)) != NULL) { p = (UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; UINT8_TO_STREAM (p, SMP_OPCODE_SIGN_INFO); @@ -615,15 +634,14 @@ static BT_HDR * smp_build_signing_info_cmd(UINT8 cmd_code, tSMP_CB *p_cb) ** Description Build Pairing Fail command. ** *******************************************************************************/ -static BT_HDR * smp_build_pairing_fail(UINT8 cmd_code, tSMP_CB *p_cb) +static BT_HDR *smp_build_pairing_fail(UINT8 cmd_code, tSMP_CB *p_cb) { BT_HDR *p_buf = NULL ; UINT8 *p; UNUSED(cmd_code); SMP_TRACE_EVENT("%s\n", __func__); - if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + SMP_PAIR_FAIL_SIZE + L2CAP_MIN_OFFSET)) != NULL) - { + if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + SMP_PAIR_FAIL_SIZE + L2CAP_MIN_OFFSET)) != NULL) { p = (UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; UINT8_TO_STREAM (p, SMP_OPCODE_PAIRING_FAILED); @@ -650,8 +668,7 @@ static BT_HDR *smp_build_security_request(UINT8 cmd_code, tSMP_CB *p_cb) UNUSED(cmd_code); SMP_TRACE_EVENT("%s\n", __func__); - if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + 2 + L2CAP_MIN_OFFSET)) != NULL) - { + if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + 2 + L2CAP_MIN_OFFSET)) != NULL) { p = (UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; UINT8_TO_STREAM (p, SMP_OPCODE_SEC_REQ); @@ -660,7 +677,7 @@ static BT_HDR *smp_build_security_request(UINT8 cmd_code, tSMP_CB *p_cb) p_buf->offset = L2CAP_MIN_OFFSET; p_buf->len = SMP_SECURITY_REQUEST_SIZE; - SMP_TRACE_EVENT("opcode=%d auth_req=0x%x",SMP_OPCODE_SEC_REQ, p_cb->loc_auth_req ); + SMP_TRACE_EVENT("opcode=%d auth_req=0x%x", SMP_OPCODE_SEC_REQ, p_cb->loc_auth_req ); } return p_buf; @@ -678,7 +695,7 @@ static BT_HDR *smp_build_pair_public_key_cmd(UINT8 cmd_code, tSMP_CB *p_cb) { BT_HDR *p_buf = NULL ; UINT8 *p; - UINT8 publ_key[2*BT_OCTET32_LEN]; + UINT8 publ_key[2 * BT_OCTET32_LEN]; UINT8 *p_publ_key = publ_key; UNUSED(cmd_code); @@ -688,12 +705,11 @@ static BT_HDR *smp_build_pair_public_key_cmd(UINT8 cmd_code, tSMP_CB *p_cb) memcpy(p_publ_key + BT_OCTET32_LEN, p_cb->loc_publ_key.y, BT_OCTET32_LEN); if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + - SMP_PAIR_PUBL_KEY_SIZE + L2CAP_MIN_OFFSET)) != NULL) - { + SMP_PAIR_PUBL_KEY_SIZE + L2CAP_MIN_OFFSET)) != NULL) { p = (UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; UINT8_TO_STREAM (p, SMP_OPCODE_PAIR_PUBLIC_KEY); - ARRAY_TO_STREAM (p, p_publ_key, 2*BT_OCTET32_LEN); + ARRAY_TO_STREAM (p, p_publ_key, 2 * BT_OCTET32_LEN); p_buf->offset = L2CAP_MIN_OFFSET; p_buf->len = SMP_PAIR_PUBL_KEY_SIZE; @@ -717,8 +733,7 @@ static BT_HDR *smp_build_pairing_commitment_cmd(UINT8 cmd_code, tSMP_CB *p_cb) SMP_TRACE_EVENT("%s\n", __func__); if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + SMP_PAIR_COMMITM_SIZE + L2CAP_MIN_OFFSET)) - != NULL) - { + != NULL) { p = (UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; UINT8_TO_STREAM (p, SMP_OPCODE_CONFIRM); @@ -746,8 +761,7 @@ static BT_HDR *smp_build_pair_dhkey_check_cmd(UINT8 cmd_code, tSMP_CB *p_cb) SMP_TRACE_EVENT("%s\n", __FUNCTION__); if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + - SMP_PAIR_DHKEY_CHECK_SIZE + L2CAP_MIN_OFFSET)) != NULL) - { + SMP_PAIR_DHKEY_CHECK_SIZE + L2CAP_MIN_OFFSET)) != NULL) { p = (UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; UINT8_TO_STREAM (p, SMP_OPCODE_PAIR_DHKEY_CHECK); @@ -767,7 +781,7 @@ static BT_HDR *smp_build_pair_dhkey_check_cmd(UINT8 cmd_code, tSMP_CB *p_cb) ** Description Build keypress notification command. ** *******************************************************************************/ -static BT_HDR * smp_build_pairing_keypress_notification_cmd(UINT8 cmd_code, tSMP_CB *p_cb) +static BT_HDR *smp_build_pairing_keypress_notification_cmd(UINT8 cmd_code, tSMP_CB *p_cb) { BT_HDR *p_buf = NULL ; UINT8 *p; @@ -775,8 +789,7 @@ static BT_HDR * smp_build_pairing_keypress_notification_cmd(UINT8 cmd_code, tSMP SMP_TRACE_EVENT("%s\n", __FUNCTION__); if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR)\ - + SMP_PAIR_KEYPR_NOTIF_SIZE + L2CAP_MIN_OFFSET)) != NULL) - { + + SMP_PAIR_KEYPR_NOTIF_SIZE + L2CAP_MIN_OFFSET)) != NULL) { p = (UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; UINT8_TO_STREAM (p, SMP_OPCODE_PAIR_KEYPR_NOTIF); @@ -824,13 +837,13 @@ void smp_convert_string_to_tk(BT_OCTET16 tk, UINT32 passkey) ** Returns void ** *******************************************************************************/ -void smp_mask_enc_key(UINT8 loc_enc_size, UINT8 * p_data) +void smp_mask_enc_key(UINT8 loc_enc_size, UINT8 *p_data) { SMP_TRACE_EVENT("smp_mask_enc_key\n"); - if (loc_enc_size < BT_OCTET16_LEN) - { - for (; loc_enc_size < BT_OCTET16_LEN; loc_enc_size ++) + if (loc_enc_size < BT_OCTET16_LEN) { + for (; loc_enc_size < BT_OCTET16_LEN; loc_enc_size ++) { * (p_data + loc_enc_size) = 0; + } } return; } @@ -850,8 +863,7 @@ void smp_xor_128(BT_OCTET16 a, BT_OCTET16 b) UINT8 i, *aa = a, *bb = b; SMP_TRACE_EVENT("smp_xor_128\n"); - for (i = 0; i < BT_OCTET16_LEN; i++) - { + for (i = 0; i < BT_OCTET16_LEN; i++) { aa[i] = aa[i] ^ bb[i]; } } @@ -890,10 +902,11 @@ void smp_remove_fixed_channel(tSMP_CB *p_cb) { SMP_TRACE_DEBUG("%s\n", __func__); - if (p_cb->smp_over_br) + if (p_cb->smp_over_br) { L2CA_RemoveFixedChnl (L2CAP_SMP_BR_CID, p_cb->pairing_bda); - else + } else { L2CA_RemoveFixedChnl (L2CAP_SMP_CID, p_cb->pairing_bda); + } } /******************************************************************************* @@ -944,25 +957,28 @@ void smp_proc_pairing_cmpl(tSMP_CB *p_cb) evt_data.cmplt.reason = p_cb->status; evt_data.cmplt.smp_over_br = p_cb->smp_over_br; - if (p_cb->status == SMP_SUCCESS) + if (p_cb->status == SMP_SUCCESS) { evt_data.cmplt.sec_level = p_cb->sec_level; + } evt_data.cmplt.is_pair_cancel = FALSE; - if (p_cb->is_pair_cancel) + if (p_cb->is_pair_cancel) { evt_data.cmplt.is_pair_cancel = TRUE; + } SMP_TRACE_DEBUG ("send SMP_COMPLT_EVT reason=0x%0x sec_level=0x%0x\n", - evt_data.cmplt.reason, - evt_data.cmplt.sec_level ); + evt_data.cmplt.reason, + evt_data.cmplt.sec_level ); memcpy (pairing_bda, p_cb->pairing_bda, BD_ADDR_LEN); smp_reset_control_value(p_cb); - if (p_callback) + if (p_callback) { (*p_callback) (SMP_COMPLT_EVT, pairing_bda, &evt_data); + } } /******************************************************************************* @@ -984,17 +1000,18 @@ BOOLEAN smp_command_has_invalid_parameters(tSMP_CB *p_cb) SMP_TRACE_DEBUG("%s for cmd code 0x%02x\n", __func__, cmd_code); if ((cmd_code > (SMP_OPCODE_MAX + 1 /* for SMP_OPCODE_PAIR_COMMITM */)) || - (cmd_code < SMP_OPCODE_MIN)) - { + (cmd_code < SMP_OPCODE_MIN)) { SMP_TRACE_WARNING("Somehow received command with the RESERVED code 0x%02x\n", cmd_code); return TRUE; } - if (!(*smp_cmd_len_is_valid[cmd_code])(p_cb)) + if (!(*smp_cmd_len_is_valid[cmd_code])(p_cb)) { return TRUE; + } - if (!(*smp_cmd_param_ranges_are_valid[cmd_code])(p_cb)) + if (!(*smp_cmd_param_ranges_are_valid[cmd_code])(p_cb)) { return TRUE; + } return FALSE; } @@ -1016,11 +1033,10 @@ BOOLEAN smp_command_has_valid_fixed_length(tSMP_CB *p_cb) SMP_TRACE_DEBUG("%s for cmd code 0x%02x\n", __func__, cmd_code); - if (p_cb->rcvd_cmd_len != smp_cmd_size_per_spec[cmd_code]) - { + if (p_cb->rcvd_cmd_len != smp_cmd_size_per_spec[cmd_code]) { SMP_TRACE_WARNING("Rcvd from the peer cmd 0x%02x with invalid length\ 0x%02x (per spec the length is 0x%02x).\n", - cmd_code, p_cb->rcvd_cmd_len, smp_cmd_size_per_spec[cmd_code]); + cmd_code, p_cb->rcvd_cmd_len, smp_cmd_size_per_spec[cmd_code]); return FALSE; } @@ -1050,35 +1066,31 @@ BOOLEAN smp_pairing_request_response_parameters_are_valid(tSMP_CB *p_cb) SMP_TRACE_DEBUG("%s for cmd code 0x%02x\n", __func__, p_cb->rcvd_cmd_code); - if (io_caps >= BTM_IO_CAP_MAX) - { + if (io_caps >= BTM_IO_CAP_MAX) { SMP_TRACE_WARNING("Rcvd from the peer cmd 0x%02x with IO Capabilty \ value (0x%02x) out of range).\n", - p_cb->rcvd_cmd_code, io_caps); + p_cb->rcvd_cmd_code, io_caps); return FALSE; } - if (!((oob_flag == SMP_OOB_NONE) || (oob_flag == SMP_OOB_PRESENT))) - { + if (!((oob_flag == SMP_OOB_NONE) || (oob_flag == SMP_OOB_PRESENT))) { SMP_TRACE_WARNING("Rcvd from the peer cmd 0x%02x with OOB data flag value \ (0x%02x) out of range).\n", - p_cb->rcvd_cmd_code, oob_flag); + p_cb->rcvd_cmd_code, oob_flag); return FALSE; } - if (!((bond_flag == SMP_AUTH_NO_BOND) || (bond_flag == SMP_AUTH_BOND))) - { + if (!((bond_flag == SMP_AUTH_NO_BOND) || (bond_flag == SMP_AUTH_BOND))) { SMP_TRACE_WARNING("Rcvd from the peer cmd 0x%02x with Bonding_Flags value (0x%02x)\ out of range).\n", - p_cb->rcvd_cmd_code, bond_flag); + p_cb->rcvd_cmd_code, bond_flag); return FALSE; } - if ((enc_size < SMP_ENCR_KEY_SIZE_MIN) || (enc_size > SMP_ENCR_KEY_SIZE_MAX)) - { + if ((enc_size < SMP_ENCR_KEY_SIZE_MIN) || (enc_size > SMP_ENCR_KEY_SIZE_MAX)) { SMP_TRACE_WARNING("Rcvd from the peer cmd 0x%02x with Maximum Encryption \ Key value (0x%02x) out of range).\n", - p_cb->rcvd_cmd_code, enc_size); + p_cb->rcvd_cmd_code, enc_size); return FALSE; } @@ -1100,11 +1112,10 @@ BOOLEAN smp_pairing_keypress_notification_is_valid(tSMP_CB *p_cb) SMP_TRACE_DEBUG("%s for cmd code 0x%02x\n", __func__, p_cb->rcvd_cmd_code); - if (keypress_notification >= BTM_SP_KEY_OUT_OF_RANGE) - { + if (keypress_notification >= BTM_SP_KEY_OUT_OF_RANGE) { SMP_TRACE_WARNING("Rcvd from the peer cmd 0x%02x with Pairing Keypress \ Notification value (0x%02x) out of range).\n", - p_cb->rcvd_cmd_code, keypress_notification); + p_cb->rcvd_cmd_code, keypress_notification); return FALSE; } @@ -1152,9 +1163,8 @@ void smp_reject_unexpected_pairing_command(BD_ADDR bd_addr) SMP_TRACE_DEBUG ("%s\n", __FUNCTION__); - if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) +\ - SMP_PAIR_FAIL_SIZE + L2CAP_MIN_OFFSET)) != NULL) - { + if ((p_buf = (BT_HDR *)GKI_getbuf(sizeof(BT_HDR) + \ + SMP_PAIR_FAIL_SIZE + L2CAP_MIN_OFFSET)) != NULL) { p = (UINT8 *)(p_buf + 1) + L2CAP_MIN_OFFSET; UINT8_TO_STREAM (p, SMP_OPCODE_PAIRING_FAILED); @@ -1190,28 +1200,24 @@ tSMP_ASSO_MODEL smp_select_association_model(tSMP_CB *p_cb) SMP_TRACE_EVENT("%s\n", __FUNCTION__); SMP_TRACE_DEBUG("%s p_cb->peer_io_caps = %d p_cb->local_io_capability = %d\n", - __FUNCTION__, p_cb->peer_io_caps, p_cb->local_io_capability); + __FUNCTION__, p_cb->peer_io_caps, p_cb->local_io_capability); SMP_TRACE_DEBUG("%s p_cb->peer_oob_flag = %d p_cb->loc_oob_flag = %d\n", - __FUNCTION__, p_cb->peer_oob_flag, p_cb->loc_oob_flag); + __FUNCTION__, p_cb->peer_oob_flag, p_cb->loc_oob_flag); SMP_TRACE_DEBUG("%s p_cb->peer_auth_req = 0x%02x p_cb->loc_auth_req = 0x%02x\n", - __FUNCTION__, p_cb->peer_auth_req, p_cb->loc_auth_req); + __FUNCTION__, p_cb->peer_auth_req, p_cb->loc_auth_req); SMP_TRACE_DEBUG("%s p_cb->secure_connections_only_mode_required = %s\n", - __FUNCTION__, p_cb->secure_connections_only_mode_required ? - "TRUE" : "FALSE"); + __FUNCTION__, p_cb->secure_connections_only_mode_required ? + "TRUE" : "FALSE"); - if ((p_cb->peer_auth_req & SMP_SC_SUPPORT_BIT) && (p_cb->loc_auth_req & SMP_SC_SUPPORT_BIT)) - { + if ((p_cb->peer_auth_req & SMP_SC_SUPPORT_BIT) && (p_cb->loc_auth_req & SMP_SC_SUPPORT_BIT)) { p_cb->le_secure_connections_mode_is_used = TRUE; } SMP_TRACE_DEBUG("use_sc_process = %d\n", p_cb->le_secure_connections_mode_is_used); - if (p_cb->le_secure_connections_mode_is_used) - { + if (p_cb->le_secure_connections_mode_is_used) { model = smp_select_association_model_secure_connections(p_cb); - } - else - { + } else { model = smp_select_legacy_association_model(p_cb); } return model; @@ -1230,25 +1236,23 @@ tSMP_ASSO_MODEL smp_select_legacy_association_model(tSMP_CB *p_cb) SMP_TRACE_DEBUG("%s\n", __func__); /* if OOB data is present on both devices, then use OOB association model */ - if (p_cb->peer_oob_flag == SMP_OOB_PRESENT && p_cb->loc_oob_flag == SMP_OOB_PRESENT) + if (p_cb->peer_oob_flag == SMP_OOB_PRESENT && p_cb->loc_oob_flag == SMP_OOB_PRESENT) { return SMP_MODEL_OOB; + } /* else if neither device requires MITM, then use Just Works association model */ - if (SMP_NO_MITM_REQUIRED (p_cb->peer_auth_req) && SMP_NO_MITM_REQUIRED(p_cb->loc_auth_req)) + if (SMP_NO_MITM_REQUIRED (p_cb->peer_auth_req) && SMP_NO_MITM_REQUIRED(p_cb->loc_auth_req)) { return SMP_MODEL_ENCRYPTION_ONLY; + } /* otherwise use IO capability to select association model */ - if (p_cb->peer_io_caps < SMP_IO_CAP_MAX && p_cb->local_io_capability < SMP_IO_CAP_MAX) - { - if (p_cb->role == HCI_ROLE_MASTER) - { + if (p_cb->peer_io_caps < SMP_IO_CAP_MAX && p_cb->local_io_capability < SMP_IO_CAP_MAX) { + if (p_cb->role == HCI_ROLE_MASTER) { model = smp_association_table[p_cb->role][p_cb->peer_io_caps] - [p_cb->local_io_capability]; - } - else - { + [p_cb->local_io_capability]; + } else { model = smp_association_table[p_cb->role][p_cb->local_io_capability] - [p_cb->peer_io_caps]; + [p_cb->peer_io_caps]; } } @@ -1268,25 +1272,23 @@ tSMP_ASSO_MODEL smp_select_association_model_secure_connections(tSMP_CB *p_cb) SMP_TRACE_DEBUG("%s\n", __func__); /* if OOB data is present on at least one device, then use OOB association model */ - if (p_cb->peer_oob_flag == SMP_OOB_PRESENT || p_cb->loc_oob_flag == SMP_OOB_PRESENT) + if (p_cb->peer_oob_flag == SMP_OOB_PRESENT || p_cb->loc_oob_flag == SMP_OOB_PRESENT) { return SMP_MODEL_SEC_CONN_OOB; + } /* else if neither device requires MITM, then use Just Works association model */ - if (SMP_NO_MITM_REQUIRED (p_cb->peer_auth_req) && SMP_NO_MITM_REQUIRED(p_cb->loc_auth_req)) + if (SMP_NO_MITM_REQUIRED (p_cb->peer_auth_req) && SMP_NO_MITM_REQUIRED(p_cb->loc_auth_req)) { return SMP_MODEL_SEC_CONN_JUSTWORKS; + } /* otherwise use IO capability to select association model */ - if (p_cb->peer_io_caps < SMP_IO_CAP_MAX && p_cb->local_io_capability < SMP_IO_CAP_MAX) - { - if (p_cb->role == HCI_ROLE_MASTER) - { + if (p_cb->peer_io_caps < SMP_IO_CAP_MAX && p_cb->local_io_capability < SMP_IO_CAP_MAX) { + if (p_cb->role == HCI_ROLE_MASTER) { model = smp_association_table_sc[p_cb->role][p_cb->peer_io_caps] - [p_cb->local_io_capability]; - } - else - { + [p_cb->local_io_capability]; + } else { model = smp_association_table_sc[p_cb->role][p_cb->local_io_capability] - [p_cb->peer_io_caps]; + [p_cb->peer_io_caps]; } } @@ -1301,15 +1303,14 @@ tSMP_ASSO_MODEL smp_select_association_model_secure_connections(tSMP_CB *p_cb) *******************************************************************************/ void smp_reverse_array(UINT8 *arr, UINT8 len) { - UINT8 i =0, tmp; + UINT8 i = 0, tmp; SMP_TRACE_DEBUG("smp_reverse_array\n"); - for (i = 0; i < len/2; i ++) - { + for (i = 0; i < len / 2; i ++) { tmp = arr[i]; - arr[i] = arr[len -1 - i]; - arr[len -1 - i] = tmp; + arr[i] = arr[len - 1 - i]; + arr[len - 1 - i] = tmp; } } @@ -1326,8 +1327,8 @@ void smp_reverse_array(UINT8 *arr, UINT8 len) *******************************************************************************/ UINT8 smp_calculate_random_input(UINT8 *random, UINT8 round) { - UINT8 i = round/8; - UINT8 j = round%8; + UINT8 i = round / 8; + UINT8 j = round % 8; UINT8 ri; SMP_TRACE_DEBUG("random: 0x%02x, round: %d, i: %d, j: %d\n", random[i], round, i, j); @@ -1413,8 +1414,7 @@ void smp_collect_peer_ble_address(UINT8 *le_addr, tSMP_CB *p_cb) SMP_TRACE_DEBUG("%s\n", __func__); - if (!BTM_ReadRemoteConnectionAddr(p_cb->pairing_bda, bda, &addr_type)) - { + if (!BTM_ReadRemoteConnectionAddr(p_cb->pairing_bda, bda, &addr_type)) { SMP_TRACE_ERROR("can not collect peer le addr information for unknown device\n"); return; } @@ -1444,8 +1444,7 @@ BOOLEAN smp_check_commitment(tSMP_CB *p_cb) print128(expected, (const UINT8 *)"calculated peer commitment"); print128(p_cb->remote_commitment, (const UINT8 *)"received peer commitment"); - if (memcmp(p_cb->remote_commitment, expected, BT_OCTET16_LEN)) - { + if (memcmp(p_cb->remote_commitment, expected, BT_OCTET16_LEN)) { SMP_TRACE_WARNING("Commitment check fails\n"); return FALSE; } @@ -1506,23 +1505,19 @@ BOOLEAN smp_calculate_f5_mackey_and_long_term_key(tSMP_CB *p_cb) SMP_TRACE_DEBUG("%s\n", __func__); - if (p_cb->role == HCI_ROLE_MASTER) - { + if (p_cb->role == HCI_ROLE_MASTER) { smp_collect_local_ble_address(a, p_cb); smp_collect_peer_ble_address(b, p_cb); p_na = p_cb->rand; p_nb = p_cb->rrand; - } - else - { + } else { smp_collect_local_ble_address(b, p_cb); smp_collect_peer_ble_address(a, p_cb); p_na = p_cb->rrand; p_nb = p_cb->rand; } - if(!smp_calculate_f5(p_cb->dhkey, p_na, p_nb, a, b, p_cb->mac_key, p_cb->ltk)) - { + if (!smp_calculate_f5(p_cb->dhkey, p_na, p_nb, a, b, p_cb->mac_key, p_cb->ltk)) { SMP_TRACE_ERROR("%s failed\n", __func__); return FALSE; } @@ -1547,25 +1542,21 @@ BOOLEAN smp_request_oob_data(tSMP_CB *p_cb) SMP_TRACE_DEBUG("%s\n", __func__); - if (p_cb->peer_oob_flag == SMP_OOB_PRESENT && p_cb->loc_oob_flag == SMP_OOB_PRESENT) - { + if (p_cb->peer_oob_flag == SMP_OOB_PRESENT && p_cb->loc_oob_flag == SMP_OOB_PRESENT) { /* both local and peer rcvd data OOB */ req_oob_type = SMP_OOB_BOTH; - } - else if (p_cb->peer_oob_flag == SMP_OOB_PRESENT) - { + } else if (p_cb->peer_oob_flag == SMP_OOB_PRESENT) { /* peer rcvd OOB local data, local didn't receive OOB peer data */ req_oob_type = SMP_OOB_LOCAL; - } - else if (p_cb->loc_oob_flag == SMP_OOB_PRESENT) - { + } else if (p_cb->loc_oob_flag == SMP_OOB_PRESENT) { req_oob_type = SMP_OOB_PEER; } SMP_TRACE_DEBUG("req_oob_type = %d\n", req_oob_type); - if (req_oob_type == SMP_OOB_INVALID_TYPE) + if (req_oob_type == SMP_OOB_INVALID_TYPE) { return FALSE; + } p_cb->req_oob_type = req_oob_type; p_cb->cb_evt = SMP_SC_OOB_REQ_EVT; diff --git a/components/bt/bt.c b/components/bt/bt.c index 23f8aea92e..4e5ef4db48 100644 --- a/components/bt/bt.c +++ b/components/bt/bt.c @@ -73,7 +73,7 @@ static void IRAM_ATTR interrupt_restore(void) portEXIT_CRITICAL(&global_int_mux); } -static void * IRAM_ATTR semphr_create_wrapper(uint32_t max, uint32_t init) +static void *IRAM_ATTR semphr_create_wrapper(uint32_t max, uint32_t init) { return (void *)xSemaphoreCreateCounting(max, init); } @@ -88,7 +88,7 @@ static int32_t IRAM_ATTR semphr_take_wrapper(void *semphr, uint32_t block_time_m return (int32_t)xSemaphoreTake(semphr, block_time_ms / portTICK_RATE_MS); } -static void * IRAM_ATTR mutex_create_wrapper(void) +static void *IRAM_ATTR mutex_create_wrapper(void) { return (void *)xSemaphoreCreateMutex(); } @@ -127,8 +127,8 @@ static void bt_controller_task(void *pvParam) void bt_controller_init() { xTaskCreatePinnedToCore(bt_controller_task, "btController", - ESP_TASK_BT_CONTROLLER_STACK, NULL, - ESP_TASK_BT_CONTROLLER_PRIO, NULL, 0); + ESP_TASK_BT_CONTROLLER_STACK, NULL, + ESP_TASK_BT_CONTROLLER_PRIO, NULL, 0); } #endif diff --git a/examples/05_ble_adv/main/app_bt.c b/examples/05_ble_adv/main/app_bt.c old mode 100755 new mode 100644 index 6408c260eb..5bdbfd5c73 --- a/examples/05_ble_adv/main/app_bt.c +++ b/examples/05_ble_adv/main/app_bt.c @@ -50,7 +50,7 @@ enum { static uint8_t hci_cmd_buf[128]; -/* +/* * @brief: BT controller callback function, used to notify the upper layer that * controller is ready to receive command */ @@ -59,15 +59,16 @@ static void controller_rcv_pkt_ready(void) printf("controller rcv pkt ready\n"); } -/* +/* * @brief: BT controller callback function, to transfer data packet to upper * controller is ready to receive command */ static int host_rcv_pkt(uint8_t *data, uint16_t len) { printf("host rcv pkt: "); - for (uint16_t i=0; irecv_data.data, blufi_param->recv_data.data_len); - break; - } - default: - break; - } + /* actually, should post to blufi_task handle the procedure, + * now, as a demo, we do simplely */ + switch (event) { + case ESP_BLUFI_EVENT_INIT_FINISH: + LOG_ERROR("blufi init finish\n"); + break; + case ESP_BLUFI_EVENT_RECV_DATA: { + LOG_DEBUG("blufi recv data\n"); + esp_blufi_cb_param_t *blufi_param = (esp_blufi_cb_param_t *)param; + blufi_data_recv(blufi_param->recv_data.data, blufi_param->recv_data.data_len); + break; + } + default: + break; + } } static esp_err_t blufi_startup_in_blufi_task(void *arg) { - /*set connectable,discoverable, pairable and paired only modes of local device*/ - tBTA_DM_DISC disc_mode = BTA_DM_BLE_GENERAL_DISCOVERABLE; - tBTA_DM_CONN conn_mode = BTA_DM_BLE_CONNECTABLE; - BTA_DmSetVisibility(disc_mode, conn_mode, (uint8_t)BTA_DM_NON_PAIRABLE, (uint8_t)BTA_DM_CONN_ALL); + /*set connectable,discoverable, pairable and paired only modes of local device*/ + tBTA_DM_DISC disc_mode = BTA_DM_BLE_GENERAL_DISCOVERABLE; + tBTA_DM_CONN conn_mode = BTA_DM_BLE_CONNECTABLE; + BTA_DmSetVisibility(disc_mode, conn_mode, (uint8_t)BTA_DM_NON_PAIRABLE, (uint8_t)BTA_DM_CONN_ALL); - esp_blufi_register_callback(blufi_callback); - esp_blufi_profile_init(); + esp_blufi_register_callback(blufi_callback); + esp_blufi_profile_init(); - return ESP_OK; + return ESP_OK; } static void blufi_startup(void) { - blufi_transfer_context(blufi_startup_in_blufi_task, NULL); + blufi_transfer_context(blufi_startup_in_blufi_task, NULL); } esp_err_t blufi_enable(void *arg) { - esp_err_t err; + esp_err_t err; BTM_SetTraceLevel(BT_TRACE_LEVEL_ERROR); err = esp_enable_bluetooth(); - if (err) { - LOG_ERROR("%s failed\n", __func__); - return err; - } - blufi_startup(); + if (err) { + LOG_ERROR("%s failed\n", __func__); + return err; + } + blufi_startup(); vTaskDelay(1000 / portTICK_PERIOD_MS); - return err; + return err; } esp_err_t blufi_disable(void *arg) { - esp_err_t err; + esp_err_t err; err = esp_disable_bluetooth(); - if (arg) { - ((void (*)(void))arg)(); - } + if (arg) { + ((void (*)(void))arg)(); + } - return err; + return err; } diff --git a/examples/12_blufi/components/blufi/blufi_task.c b/examples/12_blufi/components/blufi/blufi_task.c index 8c46780b49..cda66c0511 100644 --- a/examples/12_blufi/components/blufi/blufi_task.c +++ b/examples/12_blufi/components/blufi/blufi_task.c @@ -45,36 +45,36 @@ static void blufi_task(void *arg) { BtTaskEvt_t e; - for (;;) { - if (pdTRUE == xQueueReceive(xBlufiTaskQueue, &e, (portTickType)portMAX_DELAY)) { - switch (e.sig) { - case BLUFI_SIG_SWITCH_CONTEXT: - if (e.cb) { - ((BtTaskCb_t)e.cb)(e.arg); - } - break; - default: - break; - } - } + for (;;) { + if (pdTRUE == xQueueReceive(xBlufiTaskQueue, &e, (portTickType)portMAX_DELAY)) { + switch (e.sig) { + case BLUFI_SIG_SWITCH_CONTEXT: + if (e.cb) { + ((BtTaskCb_t)e.cb)(e.arg); + } + break; + default: + break; + } + } } } static esp_err_t blufi_task_post(uint32_t sig, void *par, void *cb, void *arg) { - BtTaskEvt_t evt; + BtTaskEvt_t evt; - evt.sig = sig; - evt.par = par; - evt.cb = cb; - evt.arg = arg; + evt.sig = sig; + evt.par = par; + evt.cb = cb; + evt.arg = arg; - if (xQueueSend(xBlufiTaskQueue, &evt, 10/portTICK_RATE_MS) != pdTRUE) { - LOG_ERROR("Blufi Post failed\n"); - return ESP_FAIL; - } + if (xQueueSend(xBlufiTaskQueue, &evt, 10 / portTICK_RATE_MS) != pdTRUE) { + LOG_ERROR("Blufi Post failed\n"); + return ESP_FAIL; + } - return ESP_OK; + return ESP_OK; } esp_err_t blufi_transfer_context(blufi_task_cb_t cb, void *arg) @@ -97,12 +97,14 @@ static void blufi_task_init(void) xTaskCreate(blufi_task, "BlUFI", 4096, NULL, configMAX_PRIORITIES - 3, xBlufiTaskHandle); } -void blufi_init(void) { - blufi_task_init(); - blufi_transfer_context(blufi_enable, NULL); +void blufi_init(void) +{ + blufi_task_init(); + blufi_transfer_context(blufi_enable, NULL); } -void blufi_deinit(void) { - blufi_transfer_context(blufi_disable, blufi_task_deinit); +void blufi_deinit(void) +{ + blufi_transfer_context(blufi_disable, blufi_task_deinit); } diff --git a/examples/12_blufi/components/blufi/include/blufi.h b/examples/12_blufi/components/blufi/include/blufi.h index 660d0baa4a..c79695edcd 100644 --- a/examples/12_blufi/components/blufi/include/blufi.h +++ b/examples/12_blufi/components/blufi/include/blufi.h @@ -21,9 +21,9 @@ #include "esp_err.h" enum BLUFI_SIG { - BLUFI_SIG_SWITCH_CONTEXT = 0, - BLUFI_SIG_ENABLE, - BLUFI_SIG_DISABLE, + BLUFI_SIG_SWITCH_CONTEXT = 0, + BLUFI_SIG_ENABLE, + BLUFI_SIG_DISABLE, }; typedef esp_err_t (*blufi_task_cb_t)(void *arg); diff --git a/examples/12_blufi/main/demo_main.c b/examples/12_blufi/main/demo_main.c index 3445a9aa73..31a315d218 100644 --- a/examples/12_blufi/main/demo_main.c +++ b/examples/12_blufi/main/demo_main.c @@ -31,7 +31,7 @@ #include "esp_bt_main.h" #include "blufi.h" -#define WIFI_LIST_NUM 10 +#define WIFI_LIST_NUM 10 /* FreeRTOS event group to signal when we are connected & ready to make a request */ static EventGroupHandle_t wifi_event_group; @@ -51,25 +51,25 @@ static bool confirm = false; void wifi_set_blue_config(char *ssid, char *passwd) { - memset(tmp_ssid, 0, 33); - memset(tmp_passwd, 0, 33); - strcpy(tmp_ssid, ssid); - strcpy(tmp_passwd, passwd); - confirm = true; - LOG_DEBUG("confirm true\n"); + memset(tmp_ssid, 0, 33); + memset(tmp_passwd, 0, 33); + strcpy(tmp_ssid, ssid); + strcpy(tmp_passwd, passwd); + confirm = true; + LOG_DEBUG("confirm true\n"); } static esp_err_t event_handler(void *ctx, system_event_t *event) { - switch(event->event_id) { + switch (event->event_id) { case SYSTEM_EVENT_STA_START: esp_wifi_connect(); break; case SYSTEM_EVENT_STA_GOT_IP: xEventGroupSetBits(wifi_event_group, CONNECTED_BIT); - esp_blufi_send_config_state(ESP_BLUFI_CONFIG_OK); - esp_disable_bluetooth(); //close bluetooth function - //esp_deinit_bluetooth(); //free bluetooth resource + esp_blufi_send_config_state(ESP_BLUFI_CONFIG_OK); + esp_disable_bluetooth(); //close bluetooth function + //esp_deinit_bluetooth(); //free bluetooth resource break; case SYSTEM_EVENT_STA_DISCONNECTED: /* This is a workaround as ESP32 WiFi libs don't currently @@ -102,23 +102,23 @@ void wifiTestTask(void *pvParameters) while (1) { vTaskDelay(1000 / portTICK_PERIOD_MS); - if (confirm) { - confirm = false; + if (confirm) { + confirm = false; - strcpy(sta_config.sta.ssid, tmp_ssid); - strcpy(sta_config.sta.password, tmp_passwd); - sta_config.sta.bssid_set = 0; + strcpy(sta_config.sta.ssid, tmp_ssid); + strcpy(sta_config.sta.password, tmp_passwd); + sta_config.sta.bssid_set = 0; - ret = esp_wifi_disconnect(); - LOG_INFO("esp_wifi config\n"); - esp_wifi_set_config(WIFI_IF_STA, &sta_config); - LOG_INFO("esp_wifi connect\n"); - ret = esp_wifi_connect(); - if (ret != ESP_OK) { - LOG_ERROR("esp_wifi connect failed\n"); - esp_blufi_send_config_state(ESP_BLUFI_CONFIG_FAILED); - } - } + ret = esp_wifi_disconnect(); + LOG_INFO("esp_wifi config\n"); + esp_wifi_set_config(WIFI_IF_STA, &sta_config); + LOG_INFO("esp_wifi connect\n"); + ret = esp_wifi_connect(); + if (ret != ESP_OK) { + LOG_ERROR("esp_wifi connect failed\n"); + esp_blufi_send_config_state(ESP_BLUFI_CONFIG_FAILED); + } + } } } @@ -135,11 +135,11 @@ void app_main() bt_controller_init(); xTaskCreatePinnedToCore(&wifiTestTask, "wifiTestTask", 2048, NULL, 20, NULL, 0); - LOG_ERROR("%s init bluetooth\n", __func__); + LOG_ERROR("%s init bluetooth\n", __func__); ret = esp_init_bluetooth(); - if (ret) { - LOG_ERROR("%s init bluetooth failed\n", __func__); - return; - } - blufi_init(); + if (ret) { + LOG_ERROR("%s init bluetooth failed\n", __func__); + return; + } + blufi_init(); } diff --git a/examples/14_gatt_server/main/gatts_demo.c b/examples/14_gatt_server/main/gatts_demo.c index b5091d12ad..615b66af6b 100644 --- a/examples/14_gatt_server/main/gatts_demo.c +++ b/examples/14_gatt_server/main/gatts_demo.c @@ -30,196 +30,197 @@ #include "esp_bt_main.h" #include "esp_bt_main.h" -#define GATTS_SERVICE_UUID_TEST 0x00FF -#define GATTS_CHAR_UUID_TEST 0xFF01 -#define GATTS_DESCR_UUID_TEST 0x3333 -#define APP_ID_TEST 0x18 -#define GATTS_NUM_HANDLE_TEST 4 -#define TEST_DEVICE_NAME "ESP_GATTS_DEMO" +#define GATTS_SERVICE_UUID_TEST 0x00FF +#define GATTS_CHAR_UUID_TEST 0xFF01 +#define GATTS_DESCR_UUID_TEST 0x3333 +#define APP_ID_TEST 0x18 +#define GATTS_NUM_HANDLE_TEST 4 +#define TEST_DEVICE_NAME "ESP_GATTS_DEMO" -#define TEST_MANUFACTURER_DATA_LEN 17 +#define TEST_MANUFACTURER_DATA_LEN 17 static uint16_t test_service_uuid = GATTS_SERVICE_UUID_TEST; static uint8_t test_service_uuid128[32] = { - /* LSB <--------------------------------------------------------------------------------> MSB */ - //first uuid, 16bit, [12],[13] is the value - 0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x00, 0xAB, 0xCD, 0x00, 0x00, - //second uuid, 32bit, [12], [13], [14], [15] is the value - 0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x00, 0xAB, 0xCD, 0xAB, 0xCD,}; + /* LSB <--------------------------------------------------------------------------------> MSB */ + //first uuid, 16bit, [12],[13] is the value + 0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x00, 0xAB, 0xCD, 0x00, 0x00, + //second uuid, 32bit, [12], [13], [14], [15] is the value + 0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x00, 0xAB, 0xCD, 0xAB, 0xCD, +}; static uint8_t test_manufacturer[TEST_MANUFACTURER_DATA_LEN] = {0x12, 0x23, 0x45, 0x56}; static esp_ble_adv_data_t test_adv_data = { - .set_scan_rsp = false, - .include_name = true, - .include_txpower = true, - .min_interval = 0x20, - .max_interval = 0x40, - .appearance = 0x00, - .manufacturer_len = 0, //TEST_MANUFACTURER_DATA_LEN, - .p_manufacturer_data = NULL, //&test_manufacturer[0], - .service_data_len = 0, - .p_service_data = NULL, - .service_uuid_len = 32, - .p_service_uuid = test_service_uuid128, - .flag = 0x2, + .set_scan_rsp = false, + .include_name = true, + .include_txpower = true, + .min_interval = 0x20, + .max_interval = 0x40, + .appearance = 0x00, + .manufacturer_len = 0, //TEST_MANUFACTURER_DATA_LEN, + .p_manufacturer_data = NULL, //&test_manufacturer[0], + .service_data_len = 0, + .p_service_data = NULL, + .service_uuid_len = 32, + .p_service_uuid = test_service_uuid128, + .flag = 0x2, }; static esp_ble_adv_params_t test_adv_params = { - .adv_int_min = 0x20, - .adv_int_max = 0x40, - .adv_type = ADV_TYPE_IND, - .own_addr_type = BLE_ADDR_TYPE_PUBLIC, - //.peer_addr = - //.peer_addr_type = - .channel_map = ADV_CHNL_ALL, - .adv_filter_policy = ADV_FILTER_ALLOW_SCAN_ANY_CON_ANY, + .adv_int_min = 0x20, + .adv_int_max = 0x40, + .adv_type = ADV_TYPE_IND, + .own_addr_type = BLE_ADDR_TYPE_PUBLIC, + //.peer_addr = + //.peer_addr_type = + .channel_map = ADV_CHNL_ALL, + .adv_filter_policy = ADV_FILTER_ALLOW_SCAN_ANY_CON_ANY, }; struct gatts_test_inst { - uint16_t gatt_if; - uint16_t app_id; - uint16_t conn_id; - uint16_t service_handle; - esp_gatt_srvc_id_t service_id; - uint16_t char_handle; - esp_bt_uuid_t char_uuid; - esp_gatt_perm_t perm; - esp_gatt_char_prop_t property; - uint16_t descr_handle; - esp_bt_uuid_t descr_uuid; + uint16_t gatt_if; + uint16_t app_id; + uint16_t conn_id; + uint16_t service_handle; + esp_gatt_srvc_id_t service_id; + uint16_t char_handle; + esp_bt_uuid_t char_uuid; + esp_gatt_perm_t perm; + esp_gatt_char_prop_t property; + uint16_t descr_handle; + esp_bt_uuid_t descr_uuid; }; static struct gatts_test_inst gl_test; static void gap_event_handler(uint32_t event, void *param) { - LOG_ERROR("GAP_EVT, event %d\n", event); + LOG_ERROR("GAP_EVT, event %d\n", event); - switch (event) { - case ESP_GAP_BLE_ADV_DATA_SET_COMPLETE_EVT: - esp_ble_gap_start_advertising(&test_adv_params); - break; - default: - break; - } + switch (event) { + case ESP_GAP_BLE_ADV_DATA_SET_COMPLETE_EVT: + esp_ble_gap_start_advertising(&test_adv_params); + break; + default: + break; + } } static void gatts_event_handler(uint32_t event, void *param) { - esp_ble_gatts_cb_param_t *p = (esp_ble_gatts_cb_param_t *)param; + esp_ble_gatts_cb_param_t *p = (esp_ble_gatts_cb_param_t *)param; - switch (event) { - case ESP_GATTS_REG_EVT: - LOG_INFO("REGISTER_APP_EVT, status %d, gatt_if %d, app_id %d\n", p->reg.status, p->reg.gatt_if, p->reg.app_id); - gl_test.gatt_if = p->reg.gatt_if; - gl_test.service_id.is_primary = true; - gl_test.service_id.id.inst_id = 0x00; - gl_test.service_id.id.uuid.len = ESP_UUID_LEN_16; - gl_test.service_id.id.uuid.uuid.uuid16 = GATTS_SERVICE_UUID_TEST; + switch (event) { + case ESP_GATTS_REG_EVT: + LOG_INFO("REGISTER_APP_EVT, status %d, gatt_if %d, app_id %d\n", p->reg.status, p->reg.gatt_if, p->reg.app_id); + gl_test.gatt_if = p->reg.gatt_if; + gl_test.service_id.is_primary = true; + gl_test.service_id.id.inst_id = 0x00; + gl_test.service_id.id.uuid.len = ESP_UUID_LEN_16; + gl_test.service_id.id.uuid.uuid.uuid16 = GATTS_SERVICE_UUID_TEST; - esp_ble_gap_set_device_name(TEST_DEVICE_NAME); - esp_ble_gap_config_adv_data(&test_adv_data); + esp_ble_gap_set_device_name(TEST_DEVICE_NAME); + esp_ble_gap_config_adv_data(&test_adv_data); - esp_ble_gatts_create_service(gl_test.gatt_if, &gl_test.service_id, GATTS_NUM_HANDLE_TEST); - break; - case ESP_GATTS_READ_EVT: { - LOG_INFO("GATT_READ_EVT, conn_id %d, trans_id %d, handle %d\n", p->read.conn_id, p->read.trans_id, p->read.handle); - esp_gatt_rsp_t rsp; - memset(&rsp, 0, sizeof(esp_gatt_rsp_t)); - rsp.attr_value.handle = p->read.handle; - rsp.attr_value.len = 4; - rsp.attr_value.value[0] = 0xde; + esp_ble_gatts_create_service(gl_test.gatt_if, &gl_test.service_id, GATTS_NUM_HANDLE_TEST); + break; + case ESP_GATTS_READ_EVT: { + LOG_INFO("GATT_READ_EVT, conn_id %d, trans_id %d, handle %d\n", p->read.conn_id, p->read.trans_id, p->read.handle); + esp_gatt_rsp_t rsp; + memset(&rsp, 0, sizeof(esp_gatt_rsp_t)); + rsp.attr_value.handle = p->read.handle; + rsp.attr_value.len = 4; + rsp.attr_value.value[0] = 0xde; rsp.attr_value.value[1] = 0xed; rsp.attr_value.value[2] = 0xbe; rsp.attr_value.value[3] = 0xef; - esp_ble_gatts_send_response(p->read.conn_id, p->read.trans_id, - ESP_GATT_OK, &rsp); - break; - } - case ESP_GATTS_WRITE_EVT:{ - LOG_INFO("GATT_WRITE_EVT, conn_id %d, trans_id %d, handle %d\n", p->write.conn_id, p->write.trans_id, p->write.handle); - LOG_INFO("GATT_WRITE_EVT, value len %d, value %08x\n", p->write.len, *(uint32_t *)p->write.value); - esp_ble_gatts_send_response(p->write.conn_id, p->write.trans_id, ESP_GATT_OK, NULL); - break; - } - case ESP_GATTS_EXEC_WRITE_EVT: - case ESP_GATTS_MTU_EVT: - case ESP_GATTS_CONF_EVT: - case ESP_GATTS_UNREG_EVT: - break; - case ESP_GATTS_CREATE_EVT: - LOG_INFO("CREATE_SERVICE_EVT, status %d, gatt_if %d, service_handle %d\n", p->create.status, p->create.gatt_if, p->create.service_handle); - gl_test.service_handle = p->create.service_handle; - gl_test.char_uuid.len = ESP_UUID_LEN_16; - gl_test.char_uuid.uuid.uuid16 = GATTS_CHAR_UUID_TEST; + esp_ble_gatts_send_response(p->read.conn_id, p->read.trans_id, + ESP_GATT_OK, &rsp); + break; + } + case ESP_GATTS_WRITE_EVT: { + LOG_INFO("GATT_WRITE_EVT, conn_id %d, trans_id %d, handle %d\n", p->write.conn_id, p->write.trans_id, p->write.handle); + LOG_INFO("GATT_WRITE_EVT, value len %d, value %08x\n", p->write.len, *(uint32_t *)p->write.value); + esp_ble_gatts_send_response(p->write.conn_id, p->write.trans_id, ESP_GATT_OK, NULL); + break; + } + case ESP_GATTS_EXEC_WRITE_EVT: + case ESP_GATTS_MTU_EVT: + case ESP_GATTS_CONF_EVT: + case ESP_GATTS_UNREG_EVT: + break; + case ESP_GATTS_CREATE_EVT: + LOG_INFO("CREATE_SERVICE_EVT, status %d, gatt_if %d, service_handle %d\n", p->create.status, p->create.gatt_if, p->create.service_handle); + gl_test.service_handle = p->create.service_handle; + gl_test.char_uuid.len = ESP_UUID_LEN_16; + gl_test.char_uuid.uuid.uuid16 = GATTS_CHAR_UUID_TEST; - esp_ble_gatts_start_service(gl_test.service_handle); + esp_ble_gatts_start_service(gl_test.service_handle); - esp_ble_gatts_add_char(gl_test.service_handle, &gl_test.char_uuid, - ESP_GATT_PERM_READ|ESP_GATT_PERM_WRITE, - ESP_GATT_CHAR_PROP_BIT_READ|ESP_GATT_CHAR_PROP_BIT_WRITE|ESP_GATT_CHAR_PROP_BIT_NOTIFY); - break; - case ESP_GATTS_ADD_INCL_SRVC_EVT: - break; - case ESP_GATTS_ADD_CHAR_EVT: - LOG_INFO("ADD_CHAR_EVT, status %d, gatt_if %d, attr_handle %d, service_handle %d\n", - p->add_char.status, p->add_char.gatt_if, p->add_char.attr_handle, p->add_char.service_handle); + esp_ble_gatts_add_char(gl_test.service_handle, &gl_test.char_uuid, + ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE, + ESP_GATT_CHAR_PROP_BIT_READ | ESP_GATT_CHAR_PROP_BIT_WRITE | ESP_GATT_CHAR_PROP_BIT_NOTIFY); + break; + case ESP_GATTS_ADD_INCL_SRVC_EVT: + break; + case ESP_GATTS_ADD_CHAR_EVT: + LOG_INFO("ADD_CHAR_EVT, status %d, gatt_if %d, attr_handle %d, service_handle %d\n", + p->add_char.status, p->add_char.gatt_if, p->add_char.attr_handle, p->add_char.service_handle); - gl_test.char_handle = p->add_char.attr_handle; - gl_test.descr_uuid.len = ESP_UUID_LEN_16; - gl_test.descr_uuid.uuid.uuid16 = GATT_UUID_CHAR_CLIENT_CONFIG; - esp_ble_gatts_add_char_descr(gl_test.service_handle, &gl_test.descr_uuid, - ESP_GATT_PERM_READ|ESP_GATT_PERM_WRITE); - break; - case ESP_GATTS_ADD_CHAR_DESCR_EVT: - LOG_INFO("ADD_DESCR_EVT, status %d, gatt_if %d, attr_handle %d, service_handle %d\n", - p->add_char.status, p->add_char.gatt_if, p->add_char.attr_handle, p->add_char.service_handle); - break; - case ESP_GATTS_DELELTE_EVT: - break; - case ESP_GATTS_START_EVT: - LOG_INFO("SERVICE_START_EVT, status %d, gatt_if %d, service_handle %d\n", - p->start.status, p->start.gatt_if, p->start.service_handle); - break; - case ESP_GATTS_STOP_EVT: - break; - case ESP_GATTS_CONNECT_EVT: - LOG_INFO("SERVICE_START_EVT, conn_id %d, gatt_if %d, remote %02x:%02x:%02x:%02x:%02x:%02x:, is_conn %d\n", - p->connect.conn_id, p->connect.gatt_if, - p->connect.remote_bda[0], p->connect.remote_bda[1], p->connect.remote_bda[2], - p->connect.remote_bda[3], p->connect.remote_bda[4], p->connect.remote_bda[5], - p->connect.is_connected); - gl_test.conn_id = p->connect.conn_id; - break; - case ESP_GATTS_DISCONNECT_EVT: - case ESP_GATTS_OPEN_EVT: - case ESP_GATTS_CANCEL_OPEN_EVT: - case ESP_GATTS_CLOSE_EVT: - case ESP_GATTS_LISTEN_EVT: - case ESP_GATTS_CONGEST_EVT: - default: - break; - } + gl_test.char_handle = p->add_char.attr_handle; + gl_test.descr_uuid.len = ESP_UUID_LEN_16; + gl_test.descr_uuid.uuid.uuid16 = GATT_UUID_CHAR_CLIENT_CONFIG; + esp_ble_gatts_add_char_descr(gl_test.service_handle, &gl_test.descr_uuid, + ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE); + break; + case ESP_GATTS_ADD_CHAR_DESCR_EVT: + LOG_INFO("ADD_DESCR_EVT, status %d, gatt_if %d, attr_handle %d, service_handle %d\n", + p->add_char.status, p->add_char.gatt_if, p->add_char.attr_handle, p->add_char.service_handle); + break; + case ESP_GATTS_DELELTE_EVT: + break; + case ESP_GATTS_START_EVT: + LOG_INFO("SERVICE_START_EVT, status %d, gatt_if %d, service_handle %d\n", + p->start.status, p->start.gatt_if, p->start.service_handle); + break; + case ESP_GATTS_STOP_EVT: + break; + case ESP_GATTS_CONNECT_EVT: + LOG_INFO("SERVICE_START_EVT, conn_id %d, gatt_if %d, remote %02x:%02x:%02x:%02x:%02x:%02x:, is_conn %d\n", + p->connect.conn_id, p->connect.gatt_if, + p->connect.remote_bda[0], p->connect.remote_bda[1], p->connect.remote_bda[2], + p->connect.remote_bda[3], p->connect.remote_bda[4], p->connect.remote_bda[5], + p->connect.is_connected); + gl_test.conn_id = p->connect.conn_id; + break; + case ESP_GATTS_DISCONNECT_EVT: + case ESP_GATTS_OPEN_EVT: + case ESP_GATTS_CANCEL_OPEN_EVT: + case ESP_GATTS_CLOSE_EVT: + case ESP_GATTS_LISTEN_EVT: + case ESP_GATTS_CONGEST_EVT: + default: + break; + } } void app_main() { - esp_err_t ret; + esp_err_t ret; bt_controller_init(); - LOG_INFO("%s init bluetooth\n", __func__); + LOG_INFO("%s init bluetooth\n", __func__); ret = esp_init_bluetooth(); - if (ret) { - LOG_ERROR("%s init bluetooth failed\n", __func__); - return; - } + if (ret) { + LOG_ERROR("%s init bluetooth failed\n", __func__); + return; + } ret = esp_enable_bluetooth(); - if (ret) { - LOG_ERROR("%s enable bluetooth failed\n", __func__); - return; - } + if (ret) { + LOG_ERROR("%s enable bluetooth failed\n", __func__); + return; + } - esp_ble_gatts_register_callback(gatts_event_handler); - esp_ble_gap_register_callback(gap_event_handler); - esp_ble_gatts_app_register(GATTS_SERVICE_UUID_TEST); + esp_ble_gatts_register_callback(gatts_event_handler); + esp_ble_gap_register_callback(gap_event_handler); + esp_ble_gatts_app_register(GATTS_SERVICE_UUID_TEST); - return; + return; } diff --git a/examples/15_gatt_client/main/gattc_demo.c b/examples/15_gatt_client/main/gattc_demo.c index 8cf40c5c6f..0732dc8a4e 100644 --- a/examples/15_gatt_client/main/gattc_demo.c +++ b/examples/15_gatt_client/main/gattc_demo.c @@ -16,7 +16,7 @@ /**************************************************************************** * -* This file is for gatt client. It can scan ble device, connect one device, +* This file is for gatt client. It can scan ble device, connect one device, * ****************************************************************************/ @@ -48,13 +48,12 @@ uint16_t simpleClient_id = 0xEE; const char device_name[] = "Heart Rate"; -static esp_ble_scan_params_t ble_scan_params = -{ - .scan_type = BLE_SCAN_TYPE_ACTIVE, - .own_addr_type = ESP_PUBLIC_ADDR, - .scan_filter_policy = BLE_SCAN_FILTER_ALLOW_ALL, - .scan_interval = 0x50, - .scan_window = 0x30 +static esp_ble_scan_params_t ble_scan_params = { + .scan_type = BLE_SCAN_TYPE_ACTIVE, + .own_addr_type = ESP_PUBLIC_ADDR, + .scan_filter_policy = BLE_SCAN_FILTER_ALLOW_ALL, + .scan_interval = 0x50, + .scan_window = 0x30 }; @@ -64,134 +63,123 @@ static void esp_gattc_cb(uint32_t event, void *param); static void esp_gap_cb(uint32_t event, void *param) { - uint8_t *adv_name = NULL; - uint8_t adv_name_len = 0; - switch(event) - { - case ESP_GAP_BLE_SCAN_PARAM_SET_COMPLETE_EVT: - { - //the unit of the duration is second - uint32_t duration = 10; - esp_ble_gap_start_scanning(duration); - break; - } - case ESP_GAP_BLE_SCAN_RESULT_EVT: - { - esp_ble_gap_cb_param_t *scan_result = (esp_ble_gap_cb_param_t *)param; - switch(scan_result->scan_rst.search_evt) - { - case ESP_GAP_SEARCH_INQ_RES_EVT: - for (int i = 0; i < 6; i++) - { - LOG_INFO("%x:", scan_result->scan_rst.bda[i]); - } - LOG_INFO("\n"); - adv_name = esp_ble_resolve_adv_data(scan_result->scan_rst.ble_adv, - ESP_BLE_AD_TYPE_NAME_CMPL, &adv_name_len); - LOG_INFO("adv_name_len=%x\n",adv_name_len); - for(int j = 0; j < adv_name_len; j++) - { - LOG_INFO("%c",adv_name[j]); - } - LOG_INFO("\n"); - for(int j = 0; j < adv_name_len; j++) - { - LOG_INFO("%c",device_name[j]); - } - LOG_INFO("\n"); - - if (adv_name != NULL) - { - if (strcmp((char *)adv_name, device_name) == 0) - { - LOG_INFO("the name eque to Heart Rate.\n"); - if (status == ESP_GATT_OK && connet == false) - { - connet = true; - LOG_INFO("Connet to the remote device.\n"); - esp_ble_gap_stop_scanning(); - esp_ble_gattc_open(client_if, scan_result->scan_rst.bda, true); - } - } - } - break; - case ESP_GAP_SEARCH_INQ_CMPL_EVT: - break; - default: - break; - } - break; - } - default: - break; - } + uint8_t *adv_name = NULL; + uint8_t adv_name_len = 0; + switch (event) { + case ESP_GAP_BLE_SCAN_PARAM_SET_COMPLETE_EVT: { + //the unit of the duration is second + uint32_t duration = 10; + esp_ble_gap_start_scanning(duration); + break; + } + case ESP_GAP_BLE_SCAN_RESULT_EVT: { + esp_ble_gap_cb_param_t *scan_result = (esp_ble_gap_cb_param_t *)param; + switch (scan_result->scan_rst.search_evt) { + case ESP_GAP_SEARCH_INQ_RES_EVT: + for (int i = 0; i < 6; i++) { + LOG_INFO("%x:", scan_result->scan_rst.bda[i]); + } + LOG_INFO("\n"); + adv_name = esp_ble_resolve_adv_data(scan_result->scan_rst.ble_adv, + ESP_BLE_AD_TYPE_NAME_CMPL, &adv_name_len); + LOG_INFO("adv_name_len=%x\n", adv_name_len); + for (int j = 0; j < adv_name_len; j++) { + LOG_INFO("%c", adv_name[j]); + } + LOG_INFO("\n"); + for (int j = 0; j < adv_name_len; j++) { + LOG_INFO("%c", device_name[j]); + } + LOG_INFO("\n"); + + if (adv_name != NULL) { + if (strcmp((char *)adv_name, device_name) == 0) { + LOG_INFO("the name eque to Heart Rate.\n"); + if (status == ESP_GATT_OK && connet == false) { + connet = true; + LOG_INFO("Connet to the remote device.\n"); + esp_ble_gap_stop_scanning(); + esp_ble_gattc_open(client_if, scan_result->scan_rst.bda, true); + } + } + } + break; + case ESP_GAP_SEARCH_INQ_CMPL_EVT: + break; + default: + break; + } + break; + } + default: + break; + } } static void esp_gattc_cb(uint32_t event, void *param) { - uint16_t conn_id = 0; - esp_ble_gattc_cb_param_t *p_data = (esp_ble_gattc_cb_param_t *)param; + uint16_t conn_id = 0; + esp_ble_gattc_cb_param_t *p_data = (esp_ble_gattc_cb_param_t *)param; - LOG_INFO("esp_gattc_cb, event = %x\n", event); - switch (event) - { - case ESP_GATTC_REG_EVT: - status = p_data->reg.status; - client_if = p_data->reg.gatt_if; - LOG_INFO("status = %x, client_if = %x\n", status, client_if); - break; - case ESP_GATTC_OPEN_EVT: - conn_id = p_data->open.conn_id; - LOG_INFO("ESP_GATTC_OPEN_EVT conn_id %d, if %d, status %d\n", conn_id, p_data->open.gatt_if, p_data->open.status); - esp_ble_gattc_search_service(conn_id, NULL); - break; - case ESP_GATTC_SEARCH_RES_EVT: { - esp_gatt_srvc_id_t *srvc_id = &p_data->search_res.service_id; - conn_id = p_data->open.conn_id; - LOG_INFO("SEARCH RES: conn_id = %x\n", conn_id); - if (srvc_id->id.uuid.len == ESP_UUID_LEN_16) { - LOG_INFO("UUID16: %x\n", srvc_id->id.uuid.uuid.uuid16); - } else if (srvc_id->id.uuid.len == ESP_UUID_LEN_32) { - LOG_INFO("UUID32: %x\n", srvc_id->id.uuid.uuid.uuid32); - } else if (srvc_id->id.uuid.len == ESP_UUID_LEN_128) { - LOG_INFO("UUID128: %x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x\n", srvc_id->id.uuid.uuid.uuid128[0], - srvc_id->id.uuid.uuid.uuid128[1],srvc_id->id.uuid.uuid.uuid128[2], srvc_id->id.uuid.uuid.uuid128[3], - srvc_id->id.uuid.uuid.uuid128[4],srvc_id->id.uuid.uuid.uuid128[5],srvc_id->id.uuid.uuid.uuid128[6], - srvc_id->id.uuid.uuid.uuid128[7],srvc_id->id.uuid.uuid.uuid128[8],srvc_id->id.uuid.uuid.uuid128[9], - srvc_id->id.uuid.uuid.uuid128[10],srvc_id->id.uuid.uuid.uuid128[11],srvc_id->id.uuid.uuid.uuid128[12], - srvc_id->id.uuid.uuid.uuid128[13],srvc_id->id.uuid.uuid.uuid128[14],srvc_id->id.uuid.uuid.uuid128[15]); - } else { - LOG_ERROR("UNKNOWN LEN %d\n", srvc_id->id.uuid.len); - } - break; - } - case ESP_GATTC_SEARCH_CMPL_EVT: - conn_id = p_data->search_cmpl.conn_id; - LOG_INFO("SEARCH_CMPL: conn_id = %x, status %d\n",conn_id, p_data->search_cmpl.status); - break; - default: - break; - } + LOG_INFO("esp_gattc_cb, event = %x\n", event); + switch (event) { + case ESP_GATTC_REG_EVT: + status = p_data->reg.status; + client_if = p_data->reg.gatt_if; + LOG_INFO("status = %x, client_if = %x\n", status, client_if); + break; + case ESP_GATTC_OPEN_EVT: + conn_id = p_data->open.conn_id; + LOG_INFO("ESP_GATTC_OPEN_EVT conn_id %d, if %d, status %d\n", conn_id, p_data->open.gatt_if, p_data->open.status); + esp_ble_gattc_search_service(conn_id, NULL); + break; + case ESP_GATTC_SEARCH_RES_EVT: { + esp_gatt_srvc_id_t *srvc_id = &p_data->search_res.service_id; + conn_id = p_data->open.conn_id; + LOG_INFO("SEARCH RES: conn_id = %x\n", conn_id); + if (srvc_id->id.uuid.len == ESP_UUID_LEN_16) { + LOG_INFO("UUID16: %x\n", srvc_id->id.uuid.uuid.uuid16); + } else if (srvc_id->id.uuid.len == ESP_UUID_LEN_32) { + LOG_INFO("UUID32: %x\n", srvc_id->id.uuid.uuid.uuid32); + } else if (srvc_id->id.uuid.len == ESP_UUID_LEN_128) { + LOG_INFO("UUID128: %x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x\n", srvc_id->id.uuid.uuid.uuid128[0], + srvc_id->id.uuid.uuid.uuid128[1], srvc_id->id.uuid.uuid.uuid128[2], srvc_id->id.uuid.uuid.uuid128[3], + srvc_id->id.uuid.uuid.uuid128[4], srvc_id->id.uuid.uuid.uuid128[5], srvc_id->id.uuid.uuid.uuid128[6], + srvc_id->id.uuid.uuid.uuid128[7], srvc_id->id.uuid.uuid.uuid128[8], srvc_id->id.uuid.uuid.uuid128[9], + srvc_id->id.uuid.uuid.uuid128[10], srvc_id->id.uuid.uuid.uuid128[11], srvc_id->id.uuid.uuid.uuid128[12], + srvc_id->id.uuid.uuid.uuid128[13], srvc_id->id.uuid.uuid.uuid128[14], srvc_id->id.uuid.uuid.uuid128[15]); + } else { + LOG_ERROR("UNKNOWN LEN %d\n", srvc_id->id.uuid.len); + } + break; + } + case ESP_GATTC_SEARCH_CMPL_EVT: + conn_id = p_data->search_cmpl.conn_id; + LOG_INFO("SEARCH_CMPL: conn_id = %x, status %d\n", conn_id, p_data->search_cmpl.status); + break; + default: + break; + } } void ble_client_appRegister(void) { - LOG_INFO("register callback\n"); + LOG_INFO("register callback\n"); - //register the scan callback function to the gap moudule - if((status = esp_ble_gap_register_callback(esp_gap_cb)) != ESP_OK){ - LOG_ERROR("gap register error, error code = %x\n",status); - return; - } + //register the scan callback function to the gap moudule + if ((status = esp_ble_gap_register_callback(esp_gap_cb)) != ESP_OK) { + LOG_ERROR("gap register error, error code = %x\n", status); + return; + } - //register the callback function to the gattc module - if ((status = esp_ble_gattc_register_callback(esp_gattc_cb)) != ESP_OK){ - LOG_ERROR("gattc register error, error code = %x\n",status); - return; - } - esp_ble_gattc_app_register(simpleClient_id); - esp_ble_gap_set_scan_params(&ble_scan_params); + //register the callback function to the gattc module + if ((status = esp_ble_gattc_register_callback(esp_gattc_cb)) != ESP_OK) { + LOG_ERROR("gattc register error, error code = %x\n", status); + return; + } + esp_ble_gattc_app_register(simpleClient_id); + esp_ble_gap_set_scan_params(&ble_scan_params); } void gattc_client_test(void) @@ -204,6 +192,6 @@ void gattc_client_test(void) void app_main() { bt_controller_init(); - gattc_client_test(); + gattc_client_test(); }