Loading system/btif/include/btif_metrics_logging.h +3 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,9 @@ void log_a2dp_audio_overrun_event(const RawAddress& address, int num_dropped_encoded_frames, int num_dropped_encoded_bytes); void log_a2dp_playback_event(const RawAddress& address, int playback_state, int audio_coding_mode); void log_read_rssi_result(const RawAddress& address, uint16_t handle, uint32_t cmd_status, int8_t rssi); Loading system/btif/src/btif_av.cc +24 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #include <base/bind.h> #include <base/strings/stringprintf.h> #include <frameworks/proto_logging/stats/enums/bluetooth/a2dp/enums.pb.h> #include <cstdint> #include <future> #include <memory> Loading @@ -38,7 +39,10 @@ #include "btif/include/btif_profile_queue.h" #include "btif/include/btif_rc.h" #include "btif/include/btif_util.h" #include "btif_metrics_logging.h" #include "common/metrics.h" #include "common/state_machine.h" #include "hardware/bt_av.h" #include "include/hardware/bt_rc.h" #include "main/shim/dumpsys.h" #include "osi/include/properties.h" Loading Loading @@ -2410,6 +2414,26 @@ static void btif_report_audio_state(const RawAddress& peer_address, base::Bind(btif_av_sink.Callbacks()->audio_state_cb, peer_address, state)); } using android::bluetooth::a2dp::AudioCodingModeEnum; using android::bluetooth::a2dp::PlaybackStateEnum; PlaybackStateEnum playback_state = PlaybackStateEnum::PLAYBACK_STATE_UNKNOWN; switch (state) { case BTAV_AUDIO_STATE_STARTED: playback_state = PlaybackStateEnum::PLAYBACK_STATE_PLAYING; break; case BTAV_AUDIO_STATE_STOPPED: playback_state = PlaybackStateEnum::PLAYBACK_STATE_NOT_PLAYING; break; default: break; } AudioCodingModeEnum audio_coding_mode = btif_av_is_a2dp_offload_running() ? AudioCodingModeEnum::AUDIO_CODING_MODE_HARDWARE : AudioCodingModeEnum::AUDIO_CODING_MODE_SOFTWARE; log_a2dp_playback_event(peer_address, playback_state, audio_coding_mode); } void btif_av_report_source_codec_state( Loading system/btif/src/btif_metrics_logging.cc +11 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,17 @@ void log_a2dp_audio_overrun_event(const RawAddress& address, } } void log_a2dp_playback_event(const RawAddress& address, int playback_state, int audio_coding_mode) { if (bluetooth::shim::is_any_gd_enabled()) { bluetooth::shim::LogMetricA2dpPlaybackEvent(address, playback_state, audio_coding_mode); } else { bluetooth::common::LogA2dpPlaybackEvent(address, playback_state, audio_coding_mode); } } void log_read_rssi_result(const RawAddress& address, uint16_t handle, uint32_t cmd_status, int8_t rssi) { if (bluetooth::shim::is_any_gd_enabled()) { Loading system/common/metrics.cc +23 −0 Original line number Diff line number Diff line Loading @@ -678,6 +678,29 @@ void LogA2dpAudioOverrunEvent(const RawAddress& address, } } void LogA2dpPlaybackEvent(const RawAddress& address, int playback_state, int audio_coding_mode) { std::string obfuscated_id; int metric_id = 0; if (!address.IsEmpty()) { obfuscated_id = AddressObfuscator::GetInstance()->Obfuscate(address); metric_id = MetricIdAllocator::GetInstance().AllocateId(address); } // nullptr and size 0 represent missing value for obfuscated_id android::util::BytesField bytes_field( address.IsEmpty() ? nullptr : obfuscated_id.c_str(), address.IsEmpty() ? 0 : obfuscated_id.size()); int ret = android::util::stats_write( android::util::BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED, bytes_field, playback_state, audio_coding_mode, metric_id); if (ret < 0) { LOG(WARNING) << __func__ << ": failed to log for " << address << ", playback_state " << playback_state << ", audio_coding_mode " << audio_coding_mode << ", error " << ret; } } void LogReadRssiResult(const RawAddress& address, uint16_t handle, uint32_t cmd_status, int8_t rssi) { std::string obfuscated_id; Loading system/common/metrics.h +10 −0 Original line number Diff line number Diff line Loading @@ -359,6 +359,16 @@ void LogA2dpAudioOverrunEvent(const RawAddress& address, int num_dropped_encoded_frames, int num_dropped_encoded_bytes); /** * Log A2DP playback state changed event * * @param address A2DP device associated with this event * @param playback_state audio playback state * @param audio_coding_mode audio codec encoding mode */ void LogA2dpPlaybackEvent(const RawAddress& address, int playback_state, int audio_coding_mode); /** * Log read RSSI result * Loading Loading
system/btif/include/btif_metrics_logging.h +3 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,9 @@ void log_a2dp_audio_overrun_event(const RawAddress& address, int num_dropped_encoded_frames, int num_dropped_encoded_bytes); void log_a2dp_playback_event(const RawAddress& address, int playback_state, int audio_coding_mode); void log_read_rssi_result(const RawAddress& address, uint16_t handle, uint32_t cmd_status, int8_t rssi); Loading
system/btif/src/btif_av.cc +24 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #include <base/bind.h> #include <base/strings/stringprintf.h> #include <frameworks/proto_logging/stats/enums/bluetooth/a2dp/enums.pb.h> #include <cstdint> #include <future> #include <memory> Loading @@ -38,7 +39,10 @@ #include "btif/include/btif_profile_queue.h" #include "btif/include/btif_rc.h" #include "btif/include/btif_util.h" #include "btif_metrics_logging.h" #include "common/metrics.h" #include "common/state_machine.h" #include "hardware/bt_av.h" #include "include/hardware/bt_rc.h" #include "main/shim/dumpsys.h" #include "osi/include/properties.h" Loading Loading @@ -2410,6 +2414,26 @@ static void btif_report_audio_state(const RawAddress& peer_address, base::Bind(btif_av_sink.Callbacks()->audio_state_cb, peer_address, state)); } using android::bluetooth::a2dp::AudioCodingModeEnum; using android::bluetooth::a2dp::PlaybackStateEnum; PlaybackStateEnum playback_state = PlaybackStateEnum::PLAYBACK_STATE_UNKNOWN; switch (state) { case BTAV_AUDIO_STATE_STARTED: playback_state = PlaybackStateEnum::PLAYBACK_STATE_PLAYING; break; case BTAV_AUDIO_STATE_STOPPED: playback_state = PlaybackStateEnum::PLAYBACK_STATE_NOT_PLAYING; break; default: break; } AudioCodingModeEnum audio_coding_mode = btif_av_is_a2dp_offload_running() ? AudioCodingModeEnum::AUDIO_CODING_MODE_HARDWARE : AudioCodingModeEnum::AUDIO_CODING_MODE_SOFTWARE; log_a2dp_playback_event(peer_address, playback_state, audio_coding_mode); } void btif_av_report_source_codec_state( Loading
system/btif/src/btif_metrics_logging.cc +11 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,17 @@ void log_a2dp_audio_overrun_event(const RawAddress& address, } } void log_a2dp_playback_event(const RawAddress& address, int playback_state, int audio_coding_mode) { if (bluetooth::shim::is_any_gd_enabled()) { bluetooth::shim::LogMetricA2dpPlaybackEvent(address, playback_state, audio_coding_mode); } else { bluetooth::common::LogA2dpPlaybackEvent(address, playback_state, audio_coding_mode); } } void log_read_rssi_result(const RawAddress& address, uint16_t handle, uint32_t cmd_status, int8_t rssi) { if (bluetooth::shim::is_any_gd_enabled()) { Loading
system/common/metrics.cc +23 −0 Original line number Diff line number Diff line Loading @@ -678,6 +678,29 @@ void LogA2dpAudioOverrunEvent(const RawAddress& address, } } void LogA2dpPlaybackEvent(const RawAddress& address, int playback_state, int audio_coding_mode) { std::string obfuscated_id; int metric_id = 0; if (!address.IsEmpty()) { obfuscated_id = AddressObfuscator::GetInstance()->Obfuscate(address); metric_id = MetricIdAllocator::GetInstance().AllocateId(address); } // nullptr and size 0 represent missing value for obfuscated_id android::util::BytesField bytes_field( address.IsEmpty() ? nullptr : obfuscated_id.c_str(), address.IsEmpty() ? 0 : obfuscated_id.size()); int ret = android::util::stats_write( android::util::BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED, bytes_field, playback_state, audio_coding_mode, metric_id); if (ret < 0) { LOG(WARNING) << __func__ << ": failed to log for " << address << ", playback_state " << playback_state << ", audio_coding_mode " << audio_coding_mode << ", error " << ret; } } void LogReadRssiResult(const RawAddress& address, uint16_t handle, uint32_t cmd_status, int8_t rssi) { std::string obfuscated_id; Loading
system/common/metrics.h +10 −0 Original line number Diff line number Diff line Loading @@ -359,6 +359,16 @@ void LogA2dpAudioOverrunEvent(const RawAddress& address, int num_dropped_encoded_frames, int num_dropped_encoded_bytes); /** * Log A2DP playback state changed event * * @param address A2DP device associated with this event * @param playback_state audio playback state * @param audio_coding_mode audio codec encoding mode */ void LogA2dpPlaybackEvent(const RawAddress& address, int playback_state, int audio_coding_mode); /** * Log read RSSI result * Loading