Loading system/bta/le_audio/client.cc +24 −32 Original line number Diff line number Diff line Loading @@ -1500,12 +1500,15 @@ class LeAudioClientImpl : public LeAudioClient { } } bool subscribe_for_indications(uint16_t conn_id, const RawAddress& address, uint16_t handle, uint16_t ccc_handle, bool ntf) { bool subscribe_for_notification( uint16_t conn_id, const RawAddress& address, struct le_audio::types::hdl_pair handle_pair) { std::vector<uint8_t> value(2); uint8_t* ptr = value.data(); uint16_t handle = handle_pair.val_hdl; uint16_t ccc_handle = handle_pair.ccc_hdl; LOG_INFO("conn id %d", conn_id); if (BTA_GATTC_RegisterForNotifications(gatt_if_, address, handle) != GATT_SUCCESS) { LOG(ERROR) << __func__ << ", cannot register for notification: " Loading @@ -1513,8 +1516,7 @@ class LeAudioClientImpl : public LeAudioClient { return false; } UINT16_TO_STREAM(ptr, ntf ? GATT_CHAR_CLIENT_CONFIG_NOTIFICATION : GATT_CHAR_CLIENT_CONFIG_INDICTION); UINT16_TO_STREAM(ptr, GATT_CHAR_CLIENT_CONFIG_NOTIFICATION); BtaGattQueue::WriteDescriptor( conn_id, ccc_handle, std::move(value), GATT_WRITE, Loading Loading @@ -1666,9 +1668,8 @@ class LeAudioClientImpl : public LeAudioClient { return; } if (!subscribe_for_indications(conn_id, leAudioDevice->address_, hdl_pair.val_hdl, hdl_pair.ccc_hdl, true)) { if (!subscribe_for_notification(conn_id, leAudioDevice->address_, hdl_pair)) { DisconnectDevice(leAudioDevice); return; } Loading Loading @@ -1697,9 +1698,8 @@ class LeAudioClientImpl : public LeAudioClient { return; } if (!subscribe_for_indications(conn_id, leAudioDevice->address_, hdl_pair.val_hdl, hdl_pair.ccc_hdl, true)) { if (!subscribe_for_notification(conn_id, leAudioDevice->address_, hdl_pair)) { DisconnectDevice(leAudioDevice); return; } Loading @@ -1726,10 +1726,9 @@ class LeAudioClientImpl : public LeAudioClient { "ccc"; if (leAudioDevice->snk_audio_locations_hdls_.ccc_hdl != 0 && !subscribe_for_indications( !subscribe_for_notification( conn_id, leAudioDevice->address_, leAudioDevice->snk_audio_locations_hdls_.val_hdl, leAudioDevice->snk_audio_locations_hdls_.ccc_hdl, true)) { leAudioDevice->snk_audio_locations_hdls_)) { DisconnectDevice(leAudioDevice); return; } Loading @@ -1754,10 +1753,9 @@ class LeAudioClientImpl : public LeAudioClient { "ccc"; if (leAudioDevice->src_audio_locations_hdls_.ccc_hdl != 0 && !subscribe_for_indications( !subscribe_for_notification( conn_id, leAudioDevice->address_, leAudioDevice->src_audio_locations_hdls_.val_hdl, leAudioDevice->src_audio_locations_hdls_.ccc_hdl, true)) { leAudioDevice->src_audio_locations_hdls_)) { DisconnectDevice(leAudioDevice); return; } Loading @@ -1782,10 +1780,8 @@ class LeAudioClientImpl : public LeAudioClient { return; } if (!subscribe_for_indications(conn_id, leAudioDevice->address_, leAudioDevice->audio_avail_hdls_.val_hdl, leAudioDevice->audio_avail_hdls_.ccc_hdl, true)) { if (!subscribe_for_notification(conn_id, leAudioDevice->address_, leAudioDevice->audio_avail_hdls_)) { DisconnectDevice(leAudioDevice); return; } Loading @@ -1807,10 +1803,8 @@ class LeAudioClientImpl : public LeAudioClient { LOG(INFO) << __func__ << ", audio avails char doesn't have ccc"; if (leAudioDevice->audio_supp_cont_hdls_.ccc_hdl != 0 && !subscribe_for_indications( conn_id, leAudioDevice->address_, leAudioDevice->audio_supp_cont_hdls_.val_hdl, leAudioDevice->audio_supp_cont_hdls_.ccc_hdl, true)) { !subscribe_for_notification(conn_id, leAudioDevice->address_, leAudioDevice->audio_supp_cont_hdls_)) { DisconnectDevice(leAudioDevice); return; } Loading Loading @@ -1840,9 +1834,9 @@ class LeAudioClientImpl : public LeAudioClient { DisconnectDevice(leAudioDevice); return; } if (!subscribe_for_indications(conn_id, leAudioDevice->address_, charac.value_handle, ccc_handle, true)) { struct le_audio::types::hdl_pair hdls(charac.value_handle, ccc_handle); if (!subscribe_for_notification(conn_id, leAudioDevice->address_, hdls)) { DisconnectDevice(leAudioDevice); return; } Loading Loading @@ -1872,10 +1866,8 @@ class LeAudioClientImpl : public LeAudioClient { return; } if (!subscribe_for_indications(conn_id, leAudioDevice->address_, leAudioDevice->ctp_hdls_.val_hdl, leAudioDevice->ctp_hdls_.ccc_hdl, true)) { if (!subscribe_for_notification(conn_id, leAudioDevice->address_, leAudioDevice->ctp_hdls_)) { DisconnectDevice(leAudioDevice); return; } Loading Loading
system/bta/le_audio/client.cc +24 −32 Original line number Diff line number Diff line Loading @@ -1500,12 +1500,15 @@ class LeAudioClientImpl : public LeAudioClient { } } bool subscribe_for_indications(uint16_t conn_id, const RawAddress& address, uint16_t handle, uint16_t ccc_handle, bool ntf) { bool subscribe_for_notification( uint16_t conn_id, const RawAddress& address, struct le_audio::types::hdl_pair handle_pair) { std::vector<uint8_t> value(2); uint8_t* ptr = value.data(); uint16_t handle = handle_pair.val_hdl; uint16_t ccc_handle = handle_pair.ccc_hdl; LOG_INFO("conn id %d", conn_id); if (BTA_GATTC_RegisterForNotifications(gatt_if_, address, handle) != GATT_SUCCESS) { LOG(ERROR) << __func__ << ", cannot register for notification: " Loading @@ -1513,8 +1516,7 @@ class LeAudioClientImpl : public LeAudioClient { return false; } UINT16_TO_STREAM(ptr, ntf ? GATT_CHAR_CLIENT_CONFIG_NOTIFICATION : GATT_CHAR_CLIENT_CONFIG_INDICTION); UINT16_TO_STREAM(ptr, GATT_CHAR_CLIENT_CONFIG_NOTIFICATION); BtaGattQueue::WriteDescriptor( conn_id, ccc_handle, std::move(value), GATT_WRITE, Loading Loading @@ -1666,9 +1668,8 @@ class LeAudioClientImpl : public LeAudioClient { return; } if (!subscribe_for_indications(conn_id, leAudioDevice->address_, hdl_pair.val_hdl, hdl_pair.ccc_hdl, true)) { if (!subscribe_for_notification(conn_id, leAudioDevice->address_, hdl_pair)) { DisconnectDevice(leAudioDevice); return; } Loading Loading @@ -1697,9 +1698,8 @@ class LeAudioClientImpl : public LeAudioClient { return; } if (!subscribe_for_indications(conn_id, leAudioDevice->address_, hdl_pair.val_hdl, hdl_pair.ccc_hdl, true)) { if (!subscribe_for_notification(conn_id, leAudioDevice->address_, hdl_pair)) { DisconnectDevice(leAudioDevice); return; } Loading @@ -1726,10 +1726,9 @@ class LeAudioClientImpl : public LeAudioClient { "ccc"; if (leAudioDevice->snk_audio_locations_hdls_.ccc_hdl != 0 && !subscribe_for_indications( !subscribe_for_notification( conn_id, leAudioDevice->address_, leAudioDevice->snk_audio_locations_hdls_.val_hdl, leAudioDevice->snk_audio_locations_hdls_.ccc_hdl, true)) { leAudioDevice->snk_audio_locations_hdls_)) { DisconnectDevice(leAudioDevice); return; } Loading @@ -1754,10 +1753,9 @@ class LeAudioClientImpl : public LeAudioClient { "ccc"; if (leAudioDevice->src_audio_locations_hdls_.ccc_hdl != 0 && !subscribe_for_indications( !subscribe_for_notification( conn_id, leAudioDevice->address_, leAudioDevice->src_audio_locations_hdls_.val_hdl, leAudioDevice->src_audio_locations_hdls_.ccc_hdl, true)) { leAudioDevice->src_audio_locations_hdls_)) { DisconnectDevice(leAudioDevice); return; } Loading @@ -1782,10 +1780,8 @@ class LeAudioClientImpl : public LeAudioClient { return; } if (!subscribe_for_indications(conn_id, leAudioDevice->address_, leAudioDevice->audio_avail_hdls_.val_hdl, leAudioDevice->audio_avail_hdls_.ccc_hdl, true)) { if (!subscribe_for_notification(conn_id, leAudioDevice->address_, leAudioDevice->audio_avail_hdls_)) { DisconnectDevice(leAudioDevice); return; } Loading @@ -1807,10 +1803,8 @@ class LeAudioClientImpl : public LeAudioClient { LOG(INFO) << __func__ << ", audio avails char doesn't have ccc"; if (leAudioDevice->audio_supp_cont_hdls_.ccc_hdl != 0 && !subscribe_for_indications( conn_id, leAudioDevice->address_, leAudioDevice->audio_supp_cont_hdls_.val_hdl, leAudioDevice->audio_supp_cont_hdls_.ccc_hdl, true)) { !subscribe_for_notification(conn_id, leAudioDevice->address_, leAudioDevice->audio_supp_cont_hdls_)) { DisconnectDevice(leAudioDevice); return; } Loading Loading @@ -1840,9 +1834,9 @@ class LeAudioClientImpl : public LeAudioClient { DisconnectDevice(leAudioDevice); return; } if (!subscribe_for_indications(conn_id, leAudioDevice->address_, charac.value_handle, ccc_handle, true)) { struct le_audio::types::hdl_pair hdls(charac.value_handle, ccc_handle); if (!subscribe_for_notification(conn_id, leAudioDevice->address_, hdls)) { DisconnectDevice(leAudioDevice); return; } Loading Loading @@ -1872,10 +1866,8 @@ class LeAudioClientImpl : public LeAudioClient { return; } if (!subscribe_for_indications(conn_id, leAudioDevice->address_, leAudioDevice->ctp_hdls_.val_hdl, leAudioDevice->ctp_hdls_.ccc_hdl, true)) { if (!subscribe_for_notification(conn_id, leAudioDevice->address_, leAudioDevice->ctp_hdls_)) { DisconnectDevice(leAudioDevice); return; } Loading