Loading system/btif/include/btif_av.h +0 −2 Original line number Diff line number Diff line Loading @@ -308,8 +308,6 @@ bool btif_av_is_source_enabled(void); bool btif_av_both_enable(void); bool btif_av_src_sink_coexist_enabled(void); bool btif_av_is_sink_enabled(void); bool btif_av_is_connected_addr(const RawAddress& peer_address, const A2dpType local_a2dp_type); bool btif_av_peer_is_connected_sink(const RawAddress& peer_address); bool btif_av_peer_is_connected_source(const RawAddress& peer_address); bool btif_av_peer_is_sink(const RawAddress& peer_address); Loading system/btif/include/btif_rc.h +2 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,8 @@ uint8_t btif_rc_get_connected_peer_handle(const RawAddress& peer_addr); void btif_rc_check_handle_pending_play(const RawAddress& peer_addr, bool bSendToApp); bool btif_rc_is_connected_peer(const RawAddress& peer_addr); void btif_rc_check_pending_cmd(const RawAddress& peer_addr); void btif_rc_get_addr_by_handle(uint8_t handle, RawAddress& rc_addr); void btif_debug_rc_dump(int fd); #endif // BTIF_RC_H system/btif/src/btif_av.cc +61 −54 Original line number Diff line number Diff line Loading @@ -71,8 +71,8 @@ using namespace bluetooth; /***************************************************************************** * Constants & Macros *****************************************************************************/ static const std::string kBtifAvSourceServiceName = "Advanced Audio Source"; static const std::string kBtifAvSinkServiceName = "Advanced Audio Sink"; static const char kBtifAvSourceServiceName[] = "Advanced Audio Source"; static const char kBtifAvSinkServiceName[] = "Advanced Audio Sink"; static constexpr int kDefaultMaxConnectedAudioDevices = 1; static constexpr tBTA_AV_HNDL kBtaHandleUnknown = 0; Loading Loading @@ -161,7 +161,7 @@ class BtifAvStateMachine : public bluetooth::common::StateMachine { class StateIdle : public State { public: StateIdle(BtifAvStateMachine& sm) explicit StateIdle(BtifAvStateMachine& sm) : State(sm, kStateIdle), peer_(sm.Peer()) {} void OnEnter() override; void OnExit() override; Loading @@ -173,7 +173,7 @@ class BtifAvStateMachine : public bluetooth::common::StateMachine { class StateOpening : public State { public: StateOpening(BtifAvStateMachine& sm) explicit StateOpening(BtifAvStateMachine& sm) : State(sm, kStateOpening), peer_(sm.Peer()) {} void OnEnter() override; void OnExit() override; Loading @@ -185,7 +185,7 @@ class BtifAvStateMachine : public bluetooth::common::StateMachine { class StateOpened : public State { public: StateOpened(BtifAvStateMachine& sm) explicit StateOpened(BtifAvStateMachine& sm) : State(sm, kStateOpened), peer_(sm.Peer()) {} void OnEnter() override; void OnExit() override; Loading @@ -197,7 +197,7 @@ class BtifAvStateMachine : public bluetooth::common::StateMachine { class StateStarted : public State { public: StateStarted(BtifAvStateMachine& sm) explicit StateStarted(BtifAvStateMachine& sm) : State(sm, kStateStarted), peer_(sm.Peer()) {} void OnEnter() override; void OnExit() override; Loading @@ -209,7 +209,7 @@ class BtifAvStateMachine : public bluetooth::common::StateMachine { class StateClosing : public State { public: StateClosing(BtifAvStateMachine& sm) explicit StateClosing(BtifAvStateMachine& sm) : State(sm, kStateClosing), peer_(sm.Peer()) {} void OnEnter() override; void OnExit() override; Loading @@ -219,7 +219,7 @@ class BtifAvStateMachine : public bluetooth::common::StateMachine { BtifAvPeer& peer_; }; BtifAvStateMachine(BtifAvPeer& btif_av_peer) : peer_(btif_av_peer) { explicit BtifAvStateMachine(BtifAvPeer& btif_av_peer) : peer_(btif_av_peer) { state_idle_ = new StateIdle(*this); state_opening_ = new StateOpening(*this); state_opened_ = new StateOpened(*this); Loading Loading @@ -407,7 +407,7 @@ class BtifAvSource { btav_source_callbacks_t* Callbacks() { return callbacks_; } bool Enabled() const { return enabled_; } bool A2dpOffloadEnabled() const { return a2dp_offload_enabled_; } // TODO: b/321806163: Remove this method as part of flag cleanup // TODO(b/321806163): Remove this method as part of flag cleanup void SetInvalidPeerCheck(bool invalid_peer_check) { invalid_peer_check_ = invalid_peer_check; } Loading Loading @@ -651,7 +651,7 @@ class BtifAvSink { btav_sink_callbacks_t* Callbacks() { return callbacks_; } bool Enabled() const { return enabled_; } // TODO: b/321806163: Remove this method as part of flag cleanup // TODO(b/321806163): Remove this method as part of flag cleanup void SetInvalidPeerCheck(bool invalid_peer_check) { invalid_peer_check_ = invalid_peer_check; } Loading Loading @@ -839,19 +839,15 @@ static void btif_av_sink_initiate_av_open_timer_timeout(void* data); static void bta_av_sink_media_callback(const RawAddress& peer_address, tBTA_AV_EVT event, tBTA_AV_MEDIA* p_data); extern bool btif_av_both_enable(void); extern bool btif_av_is_connected_addr(const RawAddress& peer_address, const A2dpType local_a2dp_type); extern bool btif_av_peer_is_sink(const RawAddress& peer_address); extern void btif_rc_check_pending_cmd(const RawAddress& peer_address); extern void btif_rc_get_addr_by_handle(uint8_t handle, RawAddress& rc_addr); static BtifAvPeer* btif_av_source_find_peer(const RawAddress& peer_address) { return btif_av_source.FindPeer(peer_address); } static BtifAvPeer* btif_av_sink_find_peer(const RawAddress& peer_address) { return btif_av_sink.FindPeer(peer_address); } static BtifAvPeer* btif_av_find_peer(const RawAddress& peer_address, const A2dpType local_a2dp_type) { if (com::android::bluetooth::flags::a2dp_concurrent_source_sink()) { Loading Loading @@ -894,6 +890,7 @@ static BtifAvPeer* btif_av_find_peer(const RawAddress& peer_address, if (btif_av_sink.Enabled()) return btif_av_sink_find_peer(peer_address); return nullptr; } static BtifAvPeer* btif_av_find_active_peer(const A2dpType local_a2dp_type) { if (com::android::bluetooth::flags::a2dp_concurrent_source_sink()) { if (btif_av_source.Enabled() && local_a2dp_type == A2dpType::kSource) Loading Loading @@ -943,7 +940,7 @@ const RawAddress& btif_av_find_by_handle(tBTA_AV_HNDL bta_handle) { *****************************************************************************/ const char* dump_av_sm_event_name(btif_av_sm_event_t event) { switch ((int)event) { switch (static_cast<int>(event)) { CASE_RETURN_STR(BTA_AV_ENABLE_EVT) CASE_RETURN_STR(BTA_AV_REGISTER_EVT) CASE_RETURN_STR(BTA_AV_OPEN_EVT) Loading Loading @@ -1034,15 +1031,17 @@ void BtifAvEvent::DeepCopy(uint32_t event, const void* p_data, log::assert_that(data_length >= sizeof(tBTA_AV), "assert failed: data_length >= sizeof(tBTA_AV)"); const tBTA_AV* av_src = (const tBTA_AV*)p_data; tBTA_AV* av_dest = (tBTA_AV*)data_; tBTA_AV* av_dest = reinterpret_cast<tBTA_AV*>(data_); if (av_src->meta_msg.p_data && av_src->meta_msg.len) { av_dest->meta_msg.p_data = (uint8_t*)osi_calloc(av_src->meta_msg.len); av_dest->meta_msg.p_data = reinterpret_cast<uint8_t*>(osi_calloc(av_src->meta_msg.len)); memcpy(av_dest->meta_msg.p_data, av_src->meta_msg.p_data, av_src->meta_msg.len); } if (av_src->meta_msg.p_msg) { av_dest->meta_msg.p_msg = (tAVRC_MSG*)osi_calloc(sizeof(tAVRC_MSG)); av_dest->meta_msg.p_msg = reinterpret_cast<tAVRC_MSG*>(osi_calloc(sizeof(tAVRC_MSG))); memcpy(av_dest->meta_msg.p_msg, av_src->meta_msg.p_msg, sizeof(tAVRC_MSG)); Loading @@ -1051,15 +1050,15 @@ void BtifAvEvent::DeepCopy(uint32_t event, const void* p_data, if ((p_msg_src->hdr.opcode == AVRC_OP_VENDOR) && (p_msg_src->vendor.p_vendor_data && p_msg_src->vendor.vendor_len)) { p_msg_dest->vendor.p_vendor_data = (uint8_t*)osi_calloc(p_msg_src->vendor.vendor_len); p_msg_dest->vendor.p_vendor_data = reinterpret_cast<uint8_t*>( osi_calloc(p_msg_src->vendor.vendor_len)); memcpy(p_msg_dest->vendor.p_vendor_data, p_msg_src->vendor.p_vendor_data, p_msg_src->vendor.vendor_len); } if ((p_msg_src->hdr.opcode == AVRC_OP_BROWSE) && p_msg_src->browse.p_browse_data && p_msg_src->browse.browse_len) { p_msg_dest->browse.p_browse_data = (uint8_t*)osi_calloc(p_msg_src->browse.browse_len); p_msg_dest->browse.p_browse_data = reinterpret_cast<uint8_t*>( osi_calloc(p_msg_src->browse.browse_len)); memcpy(p_msg_dest->browse.p_browse_data, p_msg_src->browse.p_browse_data, p_msg_src->browse.browse_len); } Loading @@ -1074,8 +1073,9 @@ void BtifAvEvent::DeepCopy(uint32_t event, const void* p_data, void BtifAvEvent::DeepFree() { switch (event_) { case BTA_AV_META_MSG_EVT: { tBTA_AV* av = (tBTA_AV*)data_; osi_free_and_reset((void**)&av->meta_msg.p_data); tBTA_AV* av = reinterpret_cast<tBTA_AV*>(data_); osi_free(av->meta_msg.p_data); av->meta_msg.p_data = nullptr; if (av->meta_msg.p_msg) { if (av->meta_msg.p_msg->hdr.opcode == AVRC_OP_VENDOR) { Loading @@ -1084,7 +1084,8 @@ void BtifAvEvent::DeepFree() { if (av->meta_msg.p_msg->hdr.opcode == AVRC_OP_BROWSE) { osi_free(av->meta_msg.p_msg->browse.p_browse_data); } osi_free_and_reset((void**)&av->meta_msg.p_msg); osi_free(av->meta_msg.p_msg); av->meta_msg.p_msg = nullptr; } } break; Loading @@ -1092,7 +1093,8 @@ void BtifAvEvent::DeepFree() { break; } osi_free_and_reset((void**)&data_); osi_free(data_); data_ = nullptr; data_length_ = 0; } Loading Loading @@ -1396,7 +1398,7 @@ void BtifAvSource::DispatchSuspendStreamEvent(btif_av_sm_event_t event) { if (event != BTIF_AV_SUSPEND_STREAM_REQ_EVT && event != BTIF_AV_STOP_STREAM_REQ_EVT) { log::error("Invalid event: {} id: {}", dump_av_sm_event_name(event), (int)event); static_cast<int>(event)); return; } bool av_stream_idle = true; Loading Loading @@ -1442,7 +1444,7 @@ void BtifAvSource::CleanupAllPeers() { void BtifAvSource::RegisterAllBtaHandles() { for (int peer_id = kPeerIdMin; peer_id < kPeerIdMax; peer_id++) { BTA_AvRegister(BTA_AV_CHNL_AUDIO, kBtifAvSourceServiceName.c_str(), peer_id, BTA_AvRegister(BTA_AV_CHNL_AUDIO, kBtifAvSourceServiceName, peer_id, nullptr, UUID_SERVCLASS_AUDIO_SOURCE); } } Loading Loading @@ -1718,7 +1720,7 @@ void BtifAvSink::CleanupAllPeers() { void BtifAvSink::RegisterAllBtaHandles() { for (int peer_id = kPeerIdMin; peer_id < kPeerIdMax; peer_id++) { BTA_AvRegister(BTA_AV_CHNL_AUDIO, kBtifAvSinkServiceName.c_str(), peer_id, BTA_AvRegister(BTA_AV_CHNL_AUDIO, kBtifAvSinkServiceName, peer_id, bta_av_sink_media_callback, UUID_SERVCLASS_AUDIO_SINK); } } Loading Loading @@ -1894,7 +1896,8 @@ bool BtifAvStateMachine::StateIdle::ProcessEvent(uint32_t event, void* p_data) { log::error("Source profile doesn't allow connection to peer:{}", peer_.PeerAddress()); if (btif_av_src_sink_coexist_enabled()) BTA_AvCloseRc(((tBTA_AV*)p_data)->rc_open.rc_handle); BTA_AvCloseRc( (reinterpret_cast<tBTA_AV*>(p_data))->rc_open.rc_handle); else btif_av_source_disconnect(peer_.PeerAddress()); } Loading @@ -1904,7 +1907,8 @@ bool BtifAvStateMachine::StateIdle::ProcessEvent(uint32_t event, void* p_data) { log::error("Sink profile doesn't allow connection to peer:{}", peer_.PeerAddress()); if (btif_av_src_sink_coexist_enabled()) BTA_AvCloseRc(((tBTA_AV*)p_data)->rc_open.rc_handle); BTA_AvCloseRc( (reinterpret_cast<tBTA_AV*>(p_data))->rc_open.rc_handle); else btif_av_sink_disconnect(peer_.PeerAddress()); } Loading Loading @@ -1937,12 +1941,12 @@ bool BtifAvStateMachine::StateIdle::ProcessEvent(uint32_t event, void* p_data) { } } if (event == BTA_AV_RC_OPEN_EVT) { btif_rc_handler(event, (tBTA_AV*)p_data); btif_rc_handler(event, reinterpret_cast<tBTA_AV*>(p_data)); } } break; case BTA_AV_RC_BROWSE_OPEN_EVT: btif_rc_handler(event, (tBTA_AV*)p_data); btif_rc_handler(event, reinterpret_cast<tBTA_AV*>(p_data)); break; // In case Signalling channel is not down and remote started Streaming Loading @@ -1957,7 +1961,7 @@ bool BtifAvStateMachine::StateIdle::ProcessEvent(uint32_t event, void* p_data) { } break; case BTA_AV_OPEN_EVT: { tBTA_AV* p_bta_data = (tBTA_AV*)p_data; tBTA_AV* p_bta_data = reinterpret_cast<tBTA_AV*>(p_data); tBTA_AV_STATUS status = p_bta_data->open.status; bool can_connect = true; Loading Loading @@ -2070,7 +2074,7 @@ bool BtifAvStateMachine::StateIdle::ProcessEvent(uint32_t event, void* p_data) { case BTA_AV_RC_FEAT_EVT: case BTA_AV_RC_PSM_EVT: case BTA_AV_REMOTE_RSP_EVT: btif_rc_handler(event, (tBTA_AV*)p_data); btif_rc_handler(event, reinterpret_cast<tBTA_AV*>(p_data)); break; case BTIF_AV_AVRCP_CLOSE_EVT: Loading @@ -2080,7 +2084,7 @@ bool BtifAvStateMachine::StateIdle::ProcessEvent(uint32_t event, void* p_data) { alarm_cancel(peer_.AvOpenOnRcTimer()); if (event == BTA_AV_RC_CLOSE_EVT) { btif_rc_handler(event, (tBTA_AV*)p_data); btif_rc_handler(event, reinterpret_cast<tBTA_AV*>(p_data)); } } break; Loading Loading @@ -2164,7 +2168,7 @@ bool BtifAvStateMachine::StateOpening::ProcessEvent(uint32_t event, break; case BTA_AV_OPEN_EVT: { tBTA_AV* p_bta_data = (tBTA_AV*)p_data; tBTA_AV* p_bta_data = reinterpret_cast<tBTA_AV*>(p_data); int av_state; tBTA_AV_STATUS status = p_bta_data->open.status; Loading Loading @@ -2372,7 +2376,7 @@ bool BtifAvStateMachine::StateOpening::ProcessEvent(uint32_t event, } break; CHECK_RC_EVENT(event, (tBTA_AV*)p_data); CHECK_RC_EVENT(event, reinterpret_cast<tBTA_AV*>(p_data)); default: log_counter_metrics_btif(android::bluetooth::CodePathCounterKeyEnum:: Loading Loading @@ -2414,7 +2418,7 @@ void BtifAvStateMachine::StateOpened::OnExit() { bool BtifAvStateMachine::StateOpened::ProcessEvent(uint32_t event, void* p_data) { tBTA_AV* p_av = (tBTA_AV*)p_data; tBTA_AV* p_av = reinterpret_cast<tBTA_AV*>(p_data); log::info("state=Opened peer={} event={} flags={} active_peer={}", peer_.PeerAddress(), BtifAvEvent::EventName(event), Loading Loading @@ -2499,8 +2503,8 @@ bool BtifAvStateMachine::StateOpened::ProcessEvent(uint32_t event, BTIF_AV_SUSPEND_STREAM_REQ_EVT); } peer_.StateMachine().TransitionTo(BtifAvStateMachine::kStateStarted); } break; break; } case BTIF_AV_DISCONNECT_REQ_EVT: BTA_AvClose(peer_.BtaHandle()); Loading Loading @@ -2604,7 +2608,7 @@ bool BtifAvStateMachine::StateOpened::ProcessEvent(uint32_t event, } break; CHECK_RC_EVENT(event, (tBTA_AV*)p_data); CHECK_RC_EVENT(event, reinterpret_cast<tBTA_AV*>(p_data)); case BTIF_AV_SET_LATENCY_REQ_EVT: { const btif_av_set_latency_req_t* p_set_latency_req = Loading Loading @@ -2645,7 +2649,7 @@ void BtifAvStateMachine::StateStarted::OnExit() { bool BtifAvStateMachine::StateStarted::ProcessEvent(uint32_t event, void* p_data) { tBTA_AV* p_av = (tBTA_AV*)p_data; tBTA_AV* p_av = reinterpret_cast<tBTA_AV*>(p_data); log::info("state=Started peer={} event={} flags={} active_peer={}", peer_.PeerAddress(), BtifAvEvent::EventName(event), Loading Loading @@ -2848,7 +2852,7 @@ bool BtifAvStateMachine::StateStarted::ProcessEvent(uint32_t event, BTA_AvSetLatency(peer_.BtaHandle(), p_set_latency_req->is_low_latency); } break; CHECK_RC_EVENT(event, (tBTA_AV*)p_data); CHECK_RC_EVENT(event, reinterpret_cast<tBTA_AV*>(p_data)); default: log::warn("Peer {} : Unhandled event={}", peer_.PeerAddress(), Loading Loading @@ -2908,12 +2912,12 @@ bool BtifAvStateMachine::StateClosing::ProcessEvent(uint32_t event, // Handle the RC_CLOSE event for the cleanup case BTA_AV_RC_CLOSE_EVT: btif_rc_handler(event, (tBTA_AV*)p_data); btif_rc_handler(event, reinterpret_cast<tBTA_AV*>(p_data)); break; // Handle the RC_BROWSE_CLOSE event for testing case BTA_AV_RC_BROWSE_CLOSE_EVT: btif_rc_handler(event, (tBTA_AV*)p_data); btif_rc_handler(event, reinterpret_cast<tBTA_AV*>(p_data)); break; case BTIF_AV_OFFLOAD_START_REQ_EVT: Loading Loading @@ -2943,7 +2947,7 @@ bool BtifAvStateMachine::StateClosing::ProcessEvent(uint32_t event, * interoperate with headsets that do establish AV after AVRCP connection. */ static void btif_av_source_initiate_av_open_timer_timeout(void* data) { BtifAvPeer* peer = (BtifAvPeer*)data; BtifAvPeer* peer = reinterpret_cast<BtifAvPeer*>(data); bool device_connected = false; if (com::android::bluetooth::flags::avrcp_connect_a2dp_delayed() && Loading Loading @@ -2980,7 +2984,7 @@ static void btif_av_source_initiate_av_open_timer_timeout(void* data) { * establishes AVRCP connection without AV connection. */ static void btif_av_sink_initiate_av_open_timer_timeout(void* data) { BtifAvPeer* peer = (BtifAvPeer*)data; BtifAvPeer* peer = reinterpret_cast<BtifAvPeer*>(data); log::verbose("Peer {}", peer->PeerAddress()); Loading Loading @@ -3296,7 +3300,7 @@ static void btif_av_handle_bta_av_event(uint8_t peer_sep, RawAddress peer_address = RawAddress::kEmpty; tBTA_AV_HNDL bta_handle = kBtaHandleUnknown; tBTA_AV_EVT event = btif_av_event.Event(); tBTA_AV* p_data = (tBTA_AV*)btif_av_event.Data(); tBTA_AV* p_data = reinterpret_cast<tBTA_AV*>(btif_av_event.Data()); std::string msg; log::verbose("peer_sep={} event={}", peer_stream_endpoint_text(peer_sep), Loading Loading @@ -3406,9 +3410,10 @@ static void btif_av_handle_bta_av_event(uint8_t peer_sep, peer_address = btif_av_sink.ActivePeer(); } break; } else } else { FALLTHROUGH_INTENDED; } } case BTA_AV_OFFLOAD_START_RSP_EVT: { // TODO: Might be wrong - this code will be removed once those // events are received from the AVRCP module. Loading Loading @@ -3530,7 +3535,8 @@ static void bta_av_sink_media_callback(const RawAddress& peer_address, int state = peer->StateMachine().StateId(); if ((state == BtifAvStateMachine::kStateStarted) || (state == BtifAvStateMachine::kStateOpened)) { uint8_t queue_len = btif_a2dp_sink_enqueue_buf((BT_HDR*)p_data); uint8_t queue_len = btif_a2dp_sink_enqueue_buf(reinterpret_cast<BT_HDR*>(p_data)); log::verbose("Packets in Sink queue {}", queue_len); } } Loading @@ -3542,7 +3548,8 @@ static void bta_av_sink_media_callback(const RawAddress& peer_address, log::verbose("address={}", p_data->avk_config.bd_addr); // Update the codec info of the A2DP Sink decoder btif_a2dp_sink_update_decoder((uint8_t*)(p_data->avk_config.codec_info)); btif_a2dp_sink_update_decoder( reinterpret_cast<uint8_t*>(p_data->avk_config.codec_info)); config_req.sample_rate = A2DP_GetTrackSampleRate(p_data->avk_config.codec_info); Loading system/gd/rust/topshim/btav_sink/btav_sink_shim.cc +1 −1 Original line number Diff line number Diff line Loading @@ -18,8 +18,8 @@ #include <memory> #include "include/hardware/bluetooth.h" #include "btif/include/btif_av.h" #include "include/hardware/bluetooth.h" #include "rust/cxx.h" #include "src/profiles/a2dp.rs.h" #include "types/raw_address.h" Loading Loading
system/btif/include/btif_av.h +0 −2 Original line number Diff line number Diff line Loading @@ -308,8 +308,6 @@ bool btif_av_is_source_enabled(void); bool btif_av_both_enable(void); bool btif_av_src_sink_coexist_enabled(void); bool btif_av_is_sink_enabled(void); bool btif_av_is_connected_addr(const RawAddress& peer_address, const A2dpType local_a2dp_type); bool btif_av_peer_is_connected_sink(const RawAddress& peer_address); bool btif_av_peer_is_connected_source(const RawAddress& peer_address); bool btif_av_peer_is_sink(const RawAddress& peer_address); Loading
system/btif/include/btif_rc.h +2 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,8 @@ uint8_t btif_rc_get_connected_peer_handle(const RawAddress& peer_addr); void btif_rc_check_handle_pending_play(const RawAddress& peer_addr, bool bSendToApp); bool btif_rc_is_connected_peer(const RawAddress& peer_addr); void btif_rc_check_pending_cmd(const RawAddress& peer_addr); void btif_rc_get_addr_by_handle(uint8_t handle, RawAddress& rc_addr); void btif_debug_rc_dump(int fd); #endif // BTIF_RC_H
system/btif/src/btif_av.cc +61 −54 Original line number Diff line number Diff line Loading @@ -71,8 +71,8 @@ using namespace bluetooth; /***************************************************************************** * Constants & Macros *****************************************************************************/ static const std::string kBtifAvSourceServiceName = "Advanced Audio Source"; static const std::string kBtifAvSinkServiceName = "Advanced Audio Sink"; static const char kBtifAvSourceServiceName[] = "Advanced Audio Source"; static const char kBtifAvSinkServiceName[] = "Advanced Audio Sink"; static constexpr int kDefaultMaxConnectedAudioDevices = 1; static constexpr tBTA_AV_HNDL kBtaHandleUnknown = 0; Loading Loading @@ -161,7 +161,7 @@ class BtifAvStateMachine : public bluetooth::common::StateMachine { class StateIdle : public State { public: StateIdle(BtifAvStateMachine& sm) explicit StateIdle(BtifAvStateMachine& sm) : State(sm, kStateIdle), peer_(sm.Peer()) {} void OnEnter() override; void OnExit() override; Loading @@ -173,7 +173,7 @@ class BtifAvStateMachine : public bluetooth::common::StateMachine { class StateOpening : public State { public: StateOpening(BtifAvStateMachine& sm) explicit StateOpening(BtifAvStateMachine& sm) : State(sm, kStateOpening), peer_(sm.Peer()) {} void OnEnter() override; void OnExit() override; Loading @@ -185,7 +185,7 @@ class BtifAvStateMachine : public bluetooth::common::StateMachine { class StateOpened : public State { public: StateOpened(BtifAvStateMachine& sm) explicit StateOpened(BtifAvStateMachine& sm) : State(sm, kStateOpened), peer_(sm.Peer()) {} void OnEnter() override; void OnExit() override; Loading @@ -197,7 +197,7 @@ class BtifAvStateMachine : public bluetooth::common::StateMachine { class StateStarted : public State { public: StateStarted(BtifAvStateMachine& sm) explicit StateStarted(BtifAvStateMachine& sm) : State(sm, kStateStarted), peer_(sm.Peer()) {} void OnEnter() override; void OnExit() override; Loading @@ -209,7 +209,7 @@ class BtifAvStateMachine : public bluetooth::common::StateMachine { class StateClosing : public State { public: StateClosing(BtifAvStateMachine& sm) explicit StateClosing(BtifAvStateMachine& sm) : State(sm, kStateClosing), peer_(sm.Peer()) {} void OnEnter() override; void OnExit() override; Loading @@ -219,7 +219,7 @@ class BtifAvStateMachine : public bluetooth::common::StateMachine { BtifAvPeer& peer_; }; BtifAvStateMachine(BtifAvPeer& btif_av_peer) : peer_(btif_av_peer) { explicit BtifAvStateMachine(BtifAvPeer& btif_av_peer) : peer_(btif_av_peer) { state_idle_ = new StateIdle(*this); state_opening_ = new StateOpening(*this); state_opened_ = new StateOpened(*this); Loading Loading @@ -407,7 +407,7 @@ class BtifAvSource { btav_source_callbacks_t* Callbacks() { return callbacks_; } bool Enabled() const { return enabled_; } bool A2dpOffloadEnabled() const { return a2dp_offload_enabled_; } // TODO: b/321806163: Remove this method as part of flag cleanup // TODO(b/321806163): Remove this method as part of flag cleanup void SetInvalidPeerCheck(bool invalid_peer_check) { invalid_peer_check_ = invalid_peer_check; } Loading Loading @@ -651,7 +651,7 @@ class BtifAvSink { btav_sink_callbacks_t* Callbacks() { return callbacks_; } bool Enabled() const { return enabled_; } // TODO: b/321806163: Remove this method as part of flag cleanup // TODO(b/321806163): Remove this method as part of flag cleanup void SetInvalidPeerCheck(bool invalid_peer_check) { invalid_peer_check_ = invalid_peer_check; } Loading Loading @@ -839,19 +839,15 @@ static void btif_av_sink_initiate_av_open_timer_timeout(void* data); static void bta_av_sink_media_callback(const RawAddress& peer_address, tBTA_AV_EVT event, tBTA_AV_MEDIA* p_data); extern bool btif_av_both_enable(void); extern bool btif_av_is_connected_addr(const RawAddress& peer_address, const A2dpType local_a2dp_type); extern bool btif_av_peer_is_sink(const RawAddress& peer_address); extern void btif_rc_check_pending_cmd(const RawAddress& peer_address); extern void btif_rc_get_addr_by_handle(uint8_t handle, RawAddress& rc_addr); static BtifAvPeer* btif_av_source_find_peer(const RawAddress& peer_address) { return btif_av_source.FindPeer(peer_address); } static BtifAvPeer* btif_av_sink_find_peer(const RawAddress& peer_address) { return btif_av_sink.FindPeer(peer_address); } static BtifAvPeer* btif_av_find_peer(const RawAddress& peer_address, const A2dpType local_a2dp_type) { if (com::android::bluetooth::flags::a2dp_concurrent_source_sink()) { Loading Loading @@ -894,6 +890,7 @@ static BtifAvPeer* btif_av_find_peer(const RawAddress& peer_address, if (btif_av_sink.Enabled()) return btif_av_sink_find_peer(peer_address); return nullptr; } static BtifAvPeer* btif_av_find_active_peer(const A2dpType local_a2dp_type) { if (com::android::bluetooth::flags::a2dp_concurrent_source_sink()) { if (btif_av_source.Enabled() && local_a2dp_type == A2dpType::kSource) Loading Loading @@ -943,7 +940,7 @@ const RawAddress& btif_av_find_by_handle(tBTA_AV_HNDL bta_handle) { *****************************************************************************/ const char* dump_av_sm_event_name(btif_av_sm_event_t event) { switch ((int)event) { switch (static_cast<int>(event)) { CASE_RETURN_STR(BTA_AV_ENABLE_EVT) CASE_RETURN_STR(BTA_AV_REGISTER_EVT) CASE_RETURN_STR(BTA_AV_OPEN_EVT) Loading Loading @@ -1034,15 +1031,17 @@ void BtifAvEvent::DeepCopy(uint32_t event, const void* p_data, log::assert_that(data_length >= sizeof(tBTA_AV), "assert failed: data_length >= sizeof(tBTA_AV)"); const tBTA_AV* av_src = (const tBTA_AV*)p_data; tBTA_AV* av_dest = (tBTA_AV*)data_; tBTA_AV* av_dest = reinterpret_cast<tBTA_AV*>(data_); if (av_src->meta_msg.p_data && av_src->meta_msg.len) { av_dest->meta_msg.p_data = (uint8_t*)osi_calloc(av_src->meta_msg.len); av_dest->meta_msg.p_data = reinterpret_cast<uint8_t*>(osi_calloc(av_src->meta_msg.len)); memcpy(av_dest->meta_msg.p_data, av_src->meta_msg.p_data, av_src->meta_msg.len); } if (av_src->meta_msg.p_msg) { av_dest->meta_msg.p_msg = (tAVRC_MSG*)osi_calloc(sizeof(tAVRC_MSG)); av_dest->meta_msg.p_msg = reinterpret_cast<tAVRC_MSG*>(osi_calloc(sizeof(tAVRC_MSG))); memcpy(av_dest->meta_msg.p_msg, av_src->meta_msg.p_msg, sizeof(tAVRC_MSG)); Loading @@ -1051,15 +1050,15 @@ void BtifAvEvent::DeepCopy(uint32_t event, const void* p_data, if ((p_msg_src->hdr.opcode == AVRC_OP_VENDOR) && (p_msg_src->vendor.p_vendor_data && p_msg_src->vendor.vendor_len)) { p_msg_dest->vendor.p_vendor_data = (uint8_t*)osi_calloc(p_msg_src->vendor.vendor_len); p_msg_dest->vendor.p_vendor_data = reinterpret_cast<uint8_t*>( osi_calloc(p_msg_src->vendor.vendor_len)); memcpy(p_msg_dest->vendor.p_vendor_data, p_msg_src->vendor.p_vendor_data, p_msg_src->vendor.vendor_len); } if ((p_msg_src->hdr.opcode == AVRC_OP_BROWSE) && p_msg_src->browse.p_browse_data && p_msg_src->browse.browse_len) { p_msg_dest->browse.p_browse_data = (uint8_t*)osi_calloc(p_msg_src->browse.browse_len); p_msg_dest->browse.p_browse_data = reinterpret_cast<uint8_t*>( osi_calloc(p_msg_src->browse.browse_len)); memcpy(p_msg_dest->browse.p_browse_data, p_msg_src->browse.p_browse_data, p_msg_src->browse.browse_len); } Loading @@ -1074,8 +1073,9 @@ void BtifAvEvent::DeepCopy(uint32_t event, const void* p_data, void BtifAvEvent::DeepFree() { switch (event_) { case BTA_AV_META_MSG_EVT: { tBTA_AV* av = (tBTA_AV*)data_; osi_free_and_reset((void**)&av->meta_msg.p_data); tBTA_AV* av = reinterpret_cast<tBTA_AV*>(data_); osi_free(av->meta_msg.p_data); av->meta_msg.p_data = nullptr; if (av->meta_msg.p_msg) { if (av->meta_msg.p_msg->hdr.opcode == AVRC_OP_VENDOR) { Loading @@ -1084,7 +1084,8 @@ void BtifAvEvent::DeepFree() { if (av->meta_msg.p_msg->hdr.opcode == AVRC_OP_BROWSE) { osi_free(av->meta_msg.p_msg->browse.p_browse_data); } osi_free_and_reset((void**)&av->meta_msg.p_msg); osi_free(av->meta_msg.p_msg); av->meta_msg.p_msg = nullptr; } } break; Loading @@ -1092,7 +1093,8 @@ void BtifAvEvent::DeepFree() { break; } osi_free_and_reset((void**)&data_); osi_free(data_); data_ = nullptr; data_length_ = 0; } Loading Loading @@ -1396,7 +1398,7 @@ void BtifAvSource::DispatchSuspendStreamEvent(btif_av_sm_event_t event) { if (event != BTIF_AV_SUSPEND_STREAM_REQ_EVT && event != BTIF_AV_STOP_STREAM_REQ_EVT) { log::error("Invalid event: {} id: {}", dump_av_sm_event_name(event), (int)event); static_cast<int>(event)); return; } bool av_stream_idle = true; Loading Loading @@ -1442,7 +1444,7 @@ void BtifAvSource::CleanupAllPeers() { void BtifAvSource::RegisterAllBtaHandles() { for (int peer_id = kPeerIdMin; peer_id < kPeerIdMax; peer_id++) { BTA_AvRegister(BTA_AV_CHNL_AUDIO, kBtifAvSourceServiceName.c_str(), peer_id, BTA_AvRegister(BTA_AV_CHNL_AUDIO, kBtifAvSourceServiceName, peer_id, nullptr, UUID_SERVCLASS_AUDIO_SOURCE); } } Loading Loading @@ -1718,7 +1720,7 @@ void BtifAvSink::CleanupAllPeers() { void BtifAvSink::RegisterAllBtaHandles() { for (int peer_id = kPeerIdMin; peer_id < kPeerIdMax; peer_id++) { BTA_AvRegister(BTA_AV_CHNL_AUDIO, kBtifAvSinkServiceName.c_str(), peer_id, BTA_AvRegister(BTA_AV_CHNL_AUDIO, kBtifAvSinkServiceName, peer_id, bta_av_sink_media_callback, UUID_SERVCLASS_AUDIO_SINK); } } Loading Loading @@ -1894,7 +1896,8 @@ bool BtifAvStateMachine::StateIdle::ProcessEvent(uint32_t event, void* p_data) { log::error("Source profile doesn't allow connection to peer:{}", peer_.PeerAddress()); if (btif_av_src_sink_coexist_enabled()) BTA_AvCloseRc(((tBTA_AV*)p_data)->rc_open.rc_handle); BTA_AvCloseRc( (reinterpret_cast<tBTA_AV*>(p_data))->rc_open.rc_handle); else btif_av_source_disconnect(peer_.PeerAddress()); } Loading @@ -1904,7 +1907,8 @@ bool BtifAvStateMachine::StateIdle::ProcessEvent(uint32_t event, void* p_data) { log::error("Sink profile doesn't allow connection to peer:{}", peer_.PeerAddress()); if (btif_av_src_sink_coexist_enabled()) BTA_AvCloseRc(((tBTA_AV*)p_data)->rc_open.rc_handle); BTA_AvCloseRc( (reinterpret_cast<tBTA_AV*>(p_data))->rc_open.rc_handle); else btif_av_sink_disconnect(peer_.PeerAddress()); } Loading Loading @@ -1937,12 +1941,12 @@ bool BtifAvStateMachine::StateIdle::ProcessEvent(uint32_t event, void* p_data) { } } if (event == BTA_AV_RC_OPEN_EVT) { btif_rc_handler(event, (tBTA_AV*)p_data); btif_rc_handler(event, reinterpret_cast<tBTA_AV*>(p_data)); } } break; case BTA_AV_RC_BROWSE_OPEN_EVT: btif_rc_handler(event, (tBTA_AV*)p_data); btif_rc_handler(event, reinterpret_cast<tBTA_AV*>(p_data)); break; // In case Signalling channel is not down and remote started Streaming Loading @@ -1957,7 +1961,7 @@ bool BtifAvStateMachine::StateIdle::ProcessEvent(uint32_t event, void* p_data) { } break; case BTA_AV_OPEN_EVT: { tBTA_AV* p_bta_data = (tBTA_AV*)p_data; tBTA_AV* p_bta_data = reinterpret_cast<tBTA_AV*>(p_data); tBTA_AV_STATUS status = p_bta_data->open.status; bool can_connect = true; Loading Loading @@ -2070,7 +2074,7 @@ bool BtifAvStateMachine::StateIdle::ProcessEvent(uint32_t event, void* p_data) { case BTA_AV_RC_FEAT_EVT: case BTA_AV_RC_PSM_EVT: case BTA_AV_REMOTE_RSP_EVT: btif_rc_handler(event, (tBTA_AV*)p_data); btif_rc_handler(event, reinterpret_cast<tBTA_AV*>(p_data)); break; case BTIF_AV_AVRCP_CLOSE_EVT: Loading @@ -2080,7 +2084,7 @@ bool BtifAvStateMachine::StateIdle::ProcessEvent(uint32_t event, void* p_data) { alarm_cancel(peer_.AvOpenOnRcTimer()); if (event == BTA_AV_RC_CLOSE_EVT) { btif_rc_handler(event, (tBTA_AV*)p_data); btif_rc_handler(event, reinterpret_cast<tBTA_AV*>(p_data)); } } break; Loading Loading @@ -2164,7 +2168,7 @@ bool BtifAvStateMachine::StateOpening::ProcessEvent(uint32_t event, break; case BTA_AV_OPEN_EVT: { tBTA_AV* p_bta_data = (tBTA_AV*)p_data; tBTA_AV* p_bta_data = reinterpret_cast<tBTA_AV*>(p_data); int av_state; tBTA_AV_STATUS status = p_bta_data->open.status; Loading Loading @@ -2372,7 +2376,7 @@ bool BtifAvStateMachine::StateOpening::ProcessEvent(uint32_t event, } break; CHECK_RC_EVENT(event, (tBTA_AV*)p_data); CHECK_RC_EVENT(event, reinterpret_cast<tBTA_AV*>(p_data)); default: log_counter_metrics_btif(android::bluetooth::CodePathCounterKeyEnum:: Loading Loading @@ -2414,7 +2418,7 @@ void BtifAvStateMachine::StateOpened::OnExit() { bool BtifAvStateMachine::StateOpened::ProcessEvent(uint32_t event, void* p_data) { tBTA_AV* p_av = (tBTA_AV*)p_data; tBTA_AV* p_av = reinterpret_cast<tBTA_AV*>(p_data); log::info("state=Opened peer={} event={} flags={} active_peer={}", peer_.PeerAddress(), BtifAvEvent::EventName(event), Loading Loading @@ -2499,8 +2503,8 @@ bool BtifAvStateMachine::StateOpened::ProcessEvent(uint32_t event, BTIF_AV_SUSPEND_STREAM_REQ_EVT); } peer_.StateMachine().TransitionTo(BtifAvStateMachine::kStateStarted); } break; break; } case BTIF_AV_DISCONNECT_REQ_EVT: BTA_AvClose(peer_.BtaHandle()); Loading Loading @@ -2604,7 +2608,7 @@ bool BtifAvStateMachine::StateOpened::ProcessEvent(uint32_t event, } break; CHECK_RC_EVENT(event, (tBTA_AV*)p_data); CHECK_RC_EVENT(event, reinterpret_cast<tBTA_AV*>(p_data)); case BTIF_AV_SET_LATENCY_REQ_EVT: { const btif_av_set_latency_req_t* p_set_latency_req = Loading Loading @@ -2645,7 +2649,7 @@ void BtifAvStateMachine::StateStarted::OnExit() { bool BtifAvStateMachine::StateStarted::ProcessEvent(uint32_t event, void* p_data) { tBTA_AV* p_av = (tBTA_AV*)p_data; tBTA_AV* p_av = reinterpret_cast<tBTA_AV*>(p_data); log::info("state=Started peer={} event={} flags={} active_peer={}", peer_.PeerAddress(), BtifAvEvent::EventName(event), Loading Loading @@ -2848,7 +2852,7 @@ bool BtifAvStateMachine::StateStarted::ProcessEvent(uint32_t event, BTA_AvSetLatency(peer_.BtaHandle(), p_set_latency_req->is_low_latency); } break; CHECK_RC_EVENT(event, (tBTA_AV*)p_data); CHECK_RC_EVENT(event, reinterpret_cast<tBTA_AV*>(p_data)); default: log::warn("Peer {} : Unhandled event={}", peer_.PeerAddress(), Loading Loading @@ -2908,12 +2912,12 @@ bool BtifAvStateMachine::StateClosing::ProcessEvent(uint32_t event, // Handle the RC_CLOSE event for the cleanup case BTA_AV_RC_CLOSE_EVT: btif_rc_handler(event, (tBTA_AV*)p_data); btif_rc_handler(event, reinterpret_cast<tBTA_AV*>(p_data)); break; // Handle the RC_BROWSE_CLOSE event for testing case BTA_AV_RC_BROWSE_CLOSE_EVT: btif_rc_handler(event, (tBTA_AV*)p_data); btif_rc_handler(event, reinterpret_cast<tBTA_AV*>(p_data)); break; case BTIF_AV_OFFLOAD_START_REQ_EVT: Loading Loading @@ -2943,7 +2947,7 @@ bool BtifAvStateMachine::StateClosing::ProcessEvent(uint32_t event, * interoperate with headsets that do establish AV after AVRCP connection. */ static void btif_av_source_initiate_av_open_timer_timeout(void* data) { BtifAvPeer* peer = (BtifAvPeer*)data; BtifAvPeer* peer = reinterpret_cast<BtifAvPeer*>(data); bool device_connected = false; if (com::android::bluetooth::flags::avrcp_connect_a2dp_delayed() && Loading Loading @@ -2980,7 +2984,7 @@ static void btif_av_source_initiate_av_open_timer_timeout(void* data) { * establishes AVRCP connection without AV connection. */ static void btif_av_sink_initiate_av_open_timer_timeout(void* data) { BtifAvPeer* peer = (BtifAvPeer*)data; BtifAvPeer* peer = reinterpret_cast<BtifAvPeer*>(data); log::verbose("Peer {}", peer->PeerAddress()); Loading Loading @@ -3296,7 +3300,7 @@ static void btif_av_handle_bta_av_event(uint8_t peer_sep, RawAddress peer_address = RawAddress::kEmpty; tBTA_AV_HNDL bta_handle = kBtaHandleUnknown; tBTA_AV_EVT event = btif_av_event.Event(); tBTA_AV* p_data = (tBTA_AV*)btif_av_event.Data(); tBTA_AV* p_data = reinterpret_cast<tBTA_AV*>(btif_av_event.Data()); std::string msg; log::verbose("peer_sep={} event={}", peer_stream_endpoint_text(peer_sep), Loading Loading @@ -3406,9 +3410,10 @@ static void btif_av_handle_bta_av_event(uint8_t peer_sep, peer_address = btif_av_sink.ActivePeer(); } break; } else } else { FALLTHROUGH_INTENDED; } } case BTA_AV_OFFLOAD_START_RSP_EVT: { // TODO: Might be wrong - this code will be removed once those // events are received from the AVRCP module. Loading Loading @@ -3530,7 +3535,8 @@ static void bta_av_sink_media_callback(const RawAddress& peer_address, int state = peer->StateMachine().StateId(); if ((state == BtifAvStateMachine::kStateStarted) || (state == BtifAvStateMachine::kStateOpened)) { uint8_t queue_len = btif_a2dp_sink_enqueue_buf((BT_HDR*)p_data); uint8_t queue_len = btif_a2dp_sink_enqueue_buf(reinterpret_cast<BT_HDR*>(p_data)); log::verbose("Packets in Sink queue {}", queue_len); } } Loading @@ -3542,7 +3548,8 @@ static void bta_av_sink_media_callback(const RawAddress& peer_address, log::verbose("address={}", p_data->avk_config.bd_addr); // Update the codec info of the A2DP Sink decoder btif_a2dp_sink_update_decoder((uint8_t*)(p_data->avk_config.codec_info)); btif_a2dp_sink_update_decoder( reinterpret_cast<uint8_t*>(p_data->avk_config.codec_info)); config_req.sample_rate = A2DP_GetTrackSampleRate(p_data->avk_config.codec_info); Loading
system/gd/rust/topshim/btav_sink/btav_sink_shim.cc +1 −1 Original line number Diff line number Diff line Loading @@ -18,8 +18,8 @@ #include <memory> #include "include/hardware/bluetooth.h" #include "btif/include/btif_av.h" #include "include/hardware/bluetooth.h" #include "rust/cxx.h" #include "src/profiles/a2dp.rs.h" #include "types/raw_address.h" Loading