Loading system/bta/le_audio/client.cc +47 −0 Original line number Diff line number Diff line Loading @@ -236,6 +236,7 @@ class LeAudioClientImpl : public LeAudioClient { in_voip_call_(false), sink_monitor_mode_(false), sink_monitor_notified_status_(std::nullopt), source_monitor_mode_(false), current_source_codec_config({0, 0, 0, 0}), current_sink_codec_config({0, 0, 0, 0}), le_audio_source_hal_client_(nullptr), Loading Loading @@ -916,6 +917,16 @@ class LeAudioClientImpl : public LeAudioClient { bluetooth::common::time_get_os_boottime_us(); } /* If assistant have some connected delegators that needs to be informed * when there would be request to stream unicast. */ if (IS_FLAG_ENABLED(leaudio_broadcast_audio_handover_policies) && !sink_monitor_mode_ && source_monitor_mode_ && !group->IsStreaming()) { callbacks_->OnUnicastMonitorModeStatus( le_audio::types::kLeAudioDirectionSource, UnicastMonitorModeStatus::STREAMING_REQUESTED); } bool result = groupStateMachine_->StartStream( group, configuration_context_type, remote_contexts, ccids); Loading Loading @@ -1051,6 +1062,32 @@ class LeAudioClientImpl : public LeAudioClient { LOG_DEBUG("enable: %d", enable); sink_monitor_mode_ = enable; } else if (direction == le_audio::types::kLeAudioDirectionSource) { LOG_DEBUG("enable: %d", enable); source_monitor_mode_ = enable; if (!enable) { return; } LeAudioDeviceGroup* group = aseGroups_.FindById(active_group_id_); if (!group) { callbacks_->OnUnicastMonitorModeStatus( le_audio::types::kLeAudioDirectionSource, UnicastMonitorModeStatus::STREAMING_SUSPENDED); return; } if (group->IsStreaming()) { callbacks_->OnUnicastMonitorModeStatus( le_audio::types::kLeAudioDirectionSource, UnicastMonitorModeStatus::STREAMING); } else { callbacks_->OnUnicastMonitorModeStatus( le_audio::types::kLeAudioDirectionSource, UnicastMonitorModeStatus::STREAMING_SUSPENDED); } } else { LOG_ERROR("invalid direction: 0x%02x monitor mode set", direction); } Loading Loading @@ -3767,6 +3804,8 @@ class LeAudioClientImpl : public LeAudioClient { dprintf(fd, " Local sink notified state: %d\n", sink_monitor_notified_status_.value()); } dprintf(fd, " Source monitor mode: %s\n", source_monitor_mode_ ? "true" : "false"); dprintf(fd, " Start time: "); for (auto t : stream_start_history_queue_) { dprintf(fd, ", %d ms", static_cast<int>(t)); Loading Loading @@ -5524,6 +5563,12 @@ class LeAudioClientImpl : public LeAudioClient { notifyAudioLocalSink( UnicastMonitorModeStatus::STREAMING_SUSPENDED); } if (source_monitor_mode_) { callbacks_->OnUnicastMonitorModeStatus( le_audio::types::kLeAudioDirectionSource, UnicastMonitorModeStatus::STREAMING_SUSPENDED); } } } Loading Loading @@ -5602,6 +5647,8 @@ class LeAudioClientImpl : public LeAudioClient { bool sink_monitor_mode_; /* Status which has been notified to Service */ std::optional<UnicastMonitorModeStatus> sink_monitor_notified_status_; /* Listen for streaming status on Source stream */ bool source_monitor_mode_; /* Reconnection mode */ tBTM_BLE_CONN_TYPE reconnection_mode_; Loading Loading
system/bta/le_audio/client.cc +47 −0 Original line number Diff line number Diff line Loading @@ -236,6 +236,7 @@ class LeAudioClientImpl : public LeAudioClient { in_voip_call_(false), sink_monitor_mode_(false), sink_monitor_notified_status_(std::nullopt), source_monitor_mode_(false), current_source_codec_config({0, 0, 0, 0}), current_sink_codec_config({0, 0, 0, 0}), le_audio_source_hal_client_(nullptr), Loading Loading @@ -916,6 +917,16 @@ class LeAudioClientImpl : public LeAudioClient { bluetooth::common::time_get_os_boottime_us(); } /* If assistant have some connected delegators that needs to be informed * when there would be request to stream unicast. */ if (IS_FLAG_ENABLED(leaudio_broadcast_audio_handover_policies) && !sink_monitor_mode_ && source_monitor_mode_ && !group->IsStreaming()) { callbacks_->OnUnicastMonitorModeStatus( le_audio::types::kLeAudioDirectionSource, UnicastMonitorModeStatus::STREAMING_REQUESTED); } bool result = groupStateMachine_->StartStream( group, configuration_context_type, remote_contexts, ccids); Loading Loading @@ -1051,6 +1062,32 @@ class LeAudioClientImpl : public LeAudioClient { LOG_DEBUG("enable: %d", enable); sink_monitor_mode_ = enable; } else if (direction == le_audio::types::kLeAudioDirectionSource) { LOG_DEBUG("enable: %d", enable); source_monitor_mode_ = enable; if (!enable) { return; } LeAudioDeviceGroup* group = aseGroups_.FindById(active_group_id_); if (!group) { callbacks_->OnUnicastMonitorModeStatus( le_audio::types::kLeAudioDirectionSource, UnicastMonitorModeStatus::STREAMING_SUSPENDED); return; } if (group->IsStreaming()) { callbacks_->OnUnicastMonitorModeStatus( le_audio::types::kLeAudioDirectionSource, UnicastMonitorModeStatus::STREAMING); } else { callbacks_->OnUnicastMonitorModeStatus( le_audio::types::kLeAudioDirectionSource, UnicastMonitorModeStatus::STREAMING_SUSPENDED); } } else { LOG_ERROR("invalid direction: 0x%02x monitor mode set", direction); } Loading Loading @@ -3767,6 +3804,8 @@ class LeAudioClientImpl : public LeAudioClient { dprintf(fd, " Local sink notified state: %d\n", sink_monitor_notified_status_.value()); } dprintf(fd, " Source monitor mode: %s\n", source_monitor_mode_ ? "true" : "false"); dprintf(fd, " Start time: "); for (auto t : stream_start_history_queue_) { dprintf(fd, ", %d ms", static_cast<int>(t)); Loading Loading @@ -5524,6 +5563,12 @@ class LeAudioClientImpl : public LeAudioClient { notifyAudioLocalSink( UnicastMonitorModeStatus::STREAMING_SUSPENDED); } if (source_monitor_mode_) { callbacks_->OnUnicastMonitorModeStatus( le_audio::types::kLeAudioDirectionSource, UnicastMonitorModeStatus::STREAMING_SUSPENDED); } } } Loading Loading @@ -5602,6 +5647,8 @@ class LeAudioClientImpl : public LeAudioClient { bool sink_monitor_mode_; /* Status which has been notified to Service */ std::optional<UnicastMonitorModeStatus> sink_monitor_notified_status_; /* Listen for streaming status on Source stream */ bool source_monitor_mode_; /* Reconnection mode */ tBTM_BLE_CONN_TYPE reconnection_mode_; Loading