Loading system/bta/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -771,6 +771,7 @@ cc_test { "le_audio/content_control_id_keeper.cc", "le_audio/client_audio.cc", "le_audio/le_audio_types.cc", "le_audio/metrics_collector_linux.cc", "le_audio/mock_iso_manager.cc", "test/common/mock_controller.cc", "le_audio/mock_codec_manager.cc", Loading system/bta/le_audio/broadcaster/broadcaster.cc +3 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ #include "bta/le_audio/broadcaster/state_machine.h" #include "bta/le_audio/content_control_id_keeper.h" #include "bta/le_audio/le_audio_types.h" #include "bta/le_audio/metrics_collector.h" #include "device/include/controller.h" #include "embdrv/lc3/include/lc3.h" #include "gd/common/strings.h" Loading Loading @@ -297,6 +298,7 @@ class LeAudioBroadcasterImpl : public LeAudioBroadcaster, public BigCallbacks { broadcasts_[broadcast_id]->ProcessMessage( BroadcastStateMachine::Message::START, nullptr); le_audio::MetricsCollector::Get()->OnBroadcastStateChanged(true); } else { LOG_ERROR("No such broadcast_id=%d", broadcast_id); } Loading @@ -314,6 +316,7 @@ class LeAudioBroadcasterImpl : public LeAudioBroadcaster, public BigCallbacks { broadcasts_[broadcast_id]->SetMuted(true); broadcasts_[broadcast_id]->ProcessMessage( BroadcastStateMachine::Message::STOP, nullptr); le_audio::MetricsCollector::Get()->OnBroadcastStateChanged(false); } void DestroyAudioBroadcast(uint32_t broadcast_id) override { Loading system/bta/le_audio/metrics_collector.cc +19 −10 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ #include "metrics_collector.h" #include <chrono> #include <memory> #include <vector> Loading @@ -24,17 +23,15 @@ namespace le_audio { using ClockTimePoint = std::chrono::time_point<std::chrono::high_resolution_clock>; using bluetooth::le_audio::ConnectionState; using le_audio::types::LeAudioContextType; const static ClockTimePoint kInvalidTimePoint{}; const static metrics::ClockTimePoint kInvalidTimePoint{}; MetricsCollector* MetricsCollector::instance = nullptr; inline int64_t get_timedelta_nanos(const ClockTimePoint& t1, const ClockTimePoint& t2) { inline int64_t get_timedelta_nanos(const metrics::ClockTimePoint& t1, const metrics::ClockTimePoint& t2) { if (t1 == kInvalidTimePoint || t2 == kInvalidTimePoint) { return -1; } Loading Loading @@ -79,9 +76,9 @@ inline int32_t to_atom_context_type(const LeAudioContextType stack_type) { class DeviceMetrics { public: RawAddress address_; ClockTimePoint connecting_timepoint_ = kInvalidTimePoint; ClockTimePoint connected_timepoint_ = kInvalidTimePoint; ClockTimePoint disconnected_timepoint_ = kInvalidTimePoint; metrics::ClockTimePoint connecting_timepoint_ = kInvalidTimePoint; metrics::ClockTimePoint connected_timepoint_ = kInvalidTimePoint; metrics::ClockTimePoint disconnected_timepoint_ = kInvalidTimePoint; int32_t connection_status_ = 0; int32_t disconnection_status_ = 0; Loading Loading @@ -114,7 +111,7 @@ class GroupMetricsImpl : public GroupMetrics { int32_t group_size_; std::vector<std::unique_ptr<DeviceMetrics>> device_metrics_; std::unordered_map<RawAddress, DeviceMetrics*> opened_devices_; ClockTimePoint beginning_timepoint_; metrics::ClockTimePoint beginning_timepoint_; std::vector<int64_t> streaming_offset_nanos_; std::vector<int64_t> streaming_duration_nanos_; std::vector<int32_t> streaming_context_type_; Loading Loading @@ -283,6 +280,18 @@ void MetricsCollector::OnStreamEnded(int32_t group_id) { } } void MetricsCollector::OnBroadcastStateChanged(bool started) { if (started) { broadcast_beginning_timepoint_ = std::chrono::high_resolution_clock::now(); } else { auto broadcast_ending_timepoint_ = std::chrono::high_resolution_clock::now(); bluetooth::common::LogLeAudioBroadcastSessionReported(get_timedelta_nanos( broadcast_beginning_timepoint_, broadcast_ending_timepoint_)); broadcast_beginning_timepoint_ = kInvalidTimePoint; } } void MetricsCollector::Flush() { LOG(INFO) << __func__; for (auto& p : opened_groups_) { Loading system/bta/le_audio/metrics_collector.h +15 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #include <hardware/bt_le_audio.h> #include <chrono> #include <cstdint> #include <memory> #include <unordered_map> Loading @@ -27,6 +28,11 @@ namespace le_audio { namespace metrics { using ClockTimePoint = std::chrono::time_point<std::chrono::high_resolution_clock>; } enum ConnectionStatus : int32_t { UNKNOWN = 0, SUCCESS = 1, Loading Loading @@ -116,6 +122,13 @@ class MetricsCollector { */ void OnStreamEnded(int32_t group_id); /** * When there is a change in Bluetooth LE Audio broadcast state * * @param started if broadcast streaming is started. */ void OnBroadcastStateChanged(bool started); /** * Flush all log to statsd * Loading @@ -131,6 +144,8 @@ class MetricsCollector { std::unordered_map<int32_t, std::unique_ptr<GroupMetrics>> opened_groups_; std::unordered_map<int32_t, int32_t> group_size_table_; metrics::ClockTimePoint broadcast_beginning_timepoint_; }; } // namespace le_audio system/bta/le_audio/metrics_collector_linux.cc +2 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,8 @@ void MetricsCollector::OnStreamStarted( void MetricsCollector::OnStreamEnded(int32_t group_id) {} void MetricsCollector::OnBroadcastStateChanged(bool started) {} void MetricsCollector::Flush() {} } // namespace le_audio Loading
system/bta/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -771,6 +771,7 @@ cc_test { "le_audio/content_control_id_keeper.cc", "le_audio/client_audio.cc", "le_audio/le_audio_types.cc", "le_audio/metrics_collector_linux.cc", "le_audio/mock_iso_manager.cc", "test/common/mock_controller.cc", "le_audio/mock_codec_manager.cc", Loading
system/bta/le_audio/broadcaster/broadcaster.cc +3 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ #include "bta/le_audio/broadcaster/state_machine.h" #include "bta/le_audio/content_control_id_keeper.h" #include "bta/le_audio/le_audio_types.h" #include "bta/le_audio/metrics_collector.h" #include "device/include/controller.h" #include "embdrv/lc3/include/lc3.h" #include "gd/common/strings.h" Loading Loading @@ -297,6 +298,7 @@ class LeAudioBroadcasterImpl : public LeAudioBroadcaster, public BigCallbacks { broadcasts_[broadcast_id]->ProcessMessage( BroadcastStateMachine::Message::START, nullptr); le_audio::MetricsCollector::Get()->OnBroadcastStateChanged(true); } else { LOG_ERROR("No such broadcast_id=%d", broadcast_id); } Loading @@ -314,6 +316,7 @@ class LeAudioBroadcasterImpl : public LeAudioBroadcaster, public BigCallbacks { broadcasts_[broadcast_id]->SetMuted(true); broadcasts_[broadcast_id]->ProcessMessage( BroadcastStateMachine::Message::STOP, nullptr); le_audio::MetricsCollector::Get()->OnBroadcastStateChanged(false); } void DestroyAudioBroadcast(uint32_t broadcast_id) override { Loading
system/bta/le_audio/metrics_collector.cc +19 −10 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ #include "metrics_collector.h" #include <chrono> #include <memory> #include <vector> Loading @@ -24,17 +23,15 @@ namespace le_audio { using ClockTimePoint = std::chrono::time_point<std::chrono::high_resolution_clock>; using bluetooth::le_audio::ConnectionState; using le_audio::types::LeAudioContextType; const static ClockTimePoint kInvalidTimePoint{}; const static metrics::ClockTimePoint kInvalidTimePoint{}; MetricsCollector* MetricsCollector::instance = nullptr; inline int64_t get_timedelta_nanos(const ClockTimePoint& t1, const ClockTimePoint& t2) { inline int64_t get_timedelta_nanos(const metrics::ClockTimePoint& t1, const metrics::ClockTimePoint& t2) { if (t1 == kInvalidTimePoint || t2 == kInvalidTimePoint) { return -1; } Loading Loading @@ -79,9 +76,9 @@ inline int32_t to_atom_context_type(const LeAudioContextType stack_type) { class DeviceMetrics { public: RawAddress address_; ClockTimePoint connecting_timepoint_ = kInvalidTimePoint; ClockTimePoint connected_timepoint_ = kInvalidTimePoint; ClockTimePoint disconnected_timepoint_ = kInvalidTimePoint; metrics::ClockTimePoint connecting_timepoint_ = kInvalidTimePoint; metrics::ClockTimePoint connected_timepoint_ = kInvalidTimePoint; metrics::ClockTimePoint disconnected_timepoint_ = kInvalidTimePoint; int32_t connection_status_ = 0; int32_t disconnection_status_ = 0; Loading Loading @@ -114,7 +111,7 @@ class GroupMetricsImpl : public GroupMetrics { int32_t group_size_; std::vector<std::unique_ptr<DeviceMetrics>> device_metrics_; std::unordered_map<RawAddress, DeviceMetrics*> opened_devices_; ClockTimePoint beginning_timepoint_; metrics::ClockTimePoint beginning_timepoint_; std::vector<int64_t> streaming_offset_nanos_; std::vector<int64_t> streaming_duration_nanos_; std::vector<int32_t> streaming_context_type_; Loading Loading @@ -283,6 +280,18 @@ void MetricsCollector::OnStreamEnded(int32_t group_id) { } } void MetricsCollector::OnBroadcastStateChanged(bool started) { if (started) { broadcast_beginning_timepoint_ = std::chrono::high_resolution_clock::now(); } else { auto broadcast_ending_timepoint_ = std::chrono::high_resolution_clock::now(); bluetooth::common::LogLeAudioBroadcastSessionReported(get_timedelta_nanos( broadcast_beginning_timepoint_, broadcast_ending_timepoint_)); broadcast_beginning_timepoint_ = kInvalidTimePoint; } } void MetricsCollector::Flush() { LOG(INFO) << __func__; for (auto& p : opened_groups_) { Loading
system/bta/le_audio/metrics_collector.h +15 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #include <hardware/bt_le_audio.h> #include <chrono> #include <cstdint> #include <memory> #include <unordered_map> Loading @@ -27,6 +28,11 @@ namespace le_audio { namespace metrics { using ClockTimePoint = std::chrono::time_point<std::chrono::high_resolution_clock>; } enum ConnectionStatus : int32_t { UNKNOWN = 0, SUCCESS = 1, Loading Loading @@ -116,6 +122,13 @@ class MetricsCollector { */ void OnStreamEnded(int32_t group_id); /** * When there is a change in Bluetooth LE Audio broadcast state * * @param started if broadcast streaming is started. */ void OnBroadcastStateChanged(bool started); /** * Flush all log to statsd * Loading @@ -131,6 +144,8 @@ class MetricsCollector { std::unordered_map<int32_t, std::unique_ptr<GroupMetrics>> opened_groups_; std::unordered_map<int32_t, int32_t> group_size_table_; metrics::ClockTimePoint broadcast_beginning_timepoint_; }; } // namespace le_audio
system/bta/le_audio/metrics_collector_linux.cc +2 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,8 @@ void MetricsCollector::OnStreamStarted( void MetricsCollector::OnStreamEnded(int32_t group_id) {} void MetricsCollector::OnBroadcastStateChanged(bool started) {} void MetricsCollector::Flush() {} } // namespace le_audio