Atom: Add A2DP playback related atoms to StatsLog
* BluetoothA2dpPlaybackStateChanged:
- Logged when A2DP playback state changed for individual devices
* BluetoothA2dpCodecConfigChanged
- Logged when A2DP codec configuration changed for individual devices
* BluetoothA2dpCodecCapabilityChanged
- Logged when A2DP codec capability changed for individual devices
* BluetoothActiveDeviceChanged
- Logged when A2DP/HFP/HEARNING_AID active device changed
* BluetoothA2dpAudioOverrunReported
- Logs when A2DP failed send encoded data to the remote device fast
enough such that the transmit buffer queue is full and we have to
drop data
* BluetoothA2dpAudioUnderrunReported
- Logs when A2DP failed to read from PCM source
* BluetoothDeviceRssiReported
- Logged when remote device's RSSI level is reported by the controller
* BluetoothDeviceFailedContactCounterReported
- Logged when ACL transmit queue was flushed by the controller
- This is normally disabled unless we set automatic flush timeout was
set to a non-zero value
- However, when this event is reported, the connection quality must
be very bad
* BluetoothDeviceTxPowerLevelReported
- Logged when transmit power level is reported for a particular
connection
Bug: 112969790
Test: make, testdrive with statsd
Change-Id: I7deb85567630fae75be733df21b45f9c6bcf9e17
Merged-In: I7deb85567630fae75be733df21b45f9c6bcf9e17
(cherry picked from commit c27040aea7)
This commit is contained in:
@@ -23,6 +23,7 @@ option java_outer_classname = "AtomsProto";
|
||||
import "frameworks/base/cmds/statsd/src/atom_field_options.proto";
|
||||
import "frameworks/base/core/proto/android/app/enums.proto";
|
||||
import "frameworks/base/core/proto/android/app/job/enums.proto";
|
||||
import "frameworks/base/core/proto/android/bluetooth/a2dp/enums.proto";
|
||||
import "frameworks/base/core/proto/android/bluetooth/enums.proto";
|
||||
import "frameworks/base/core/proto/android/bluetooth/hci/enums.proto";
|
||||
import "frameworks/base/core/proto/android/bluetooth/hfp/enums.proto";
|
||||
@@ -142,6 +143,15 @@ message Atom {
|
||||
NfcHceTransactionOccurred nfc_hce_transaction_occurred = 139;
|
||||
SeStateChanged se_state_changed = 140;
|
||||
SeOmapiReported se_omapi_reported = 141;
|
||||
BluetoothActiveDeviceChanged bluetooth_active_device_changed = 151;
|
||||
BluetoothA2dpPlaybackStateChanged bluetooth_a2dp_playback_state_changed = 152;
|
||||
BluetoothA2dpCodecConfigChanged bluetooth_a2dp_codec_config_changed = 153;
|
||||
BluetoothA2dpCodecCapabilityChanged bluetooth_a2dp_codec_capability_changed = 154;
|
||||
BluetoothA2dpAudioUnderrunReported bluetooth_a2dp_audio_underrun_reported = 155;
|
||||
BluetoothA2dpAudioOverrunReported bluetooth_a2dp_audio_overrun_reported = 156;
|
||||
BluetoothDeviceRssiReported bluetooth_device_rssi_reported = 157;
|
||||
BluetoothDeviceFailedContactCounterReported bluetooth_device_failed_contact_counter_reported = 158;
|
||||
BluetoothDeviceTxPowerLevelReported bluetooth_device_tx_power_level_reported = 159;
|
||||
}
|
||||
|
||||
// Pulled events will start at field 10000.
|
||||
@@ -1084,6 +1094,27 @@ message BluetoothScoConnectionStateChanged {
|
||||
optional android.bluetooth.hfp.ScoCodec codec = 3;
|
||||
}
|
||||
|
||||
/**
|
||||
* Logged when active device of a profile changes
|
||||
*
|
||||
* Logged from:
|
||||
* packages/apps/Bluetooth/src/com/android/bluetooth/a2dp/A2dpService.java
|
||||
* packages/apps/Bluetooth/src/com/android/bluetooth/hfp/HeadsetService.java
|
||||
* packages/apps/Bluetooth/src/com/android/bluetooth/hearingaid/HearingAidService.java
|
||||
*/
|
||||
message BluetoothActiveDeviceChanged {
|
||||
// The profile whose active device has changed. Eg. A2DP, HEADSET, HEARING_AID
|
||||
// From android.bluetooth.BluetoothProfile
|
||||
optional int32 bt_profile = 1;
|
||||
// An identifier that can be used to match events for this new active device.
|
||||
// Currently, this is a salted hash of the MAC address of this Bluetooth device.
|
||||
// Salt: Randomly generated 256 bit value
|
||||
// Hash algorithm: HMAC-SHA256
|
||||
// Size: 32 byte
|
||||
// Default: null or empty if there is no active device for this profile
|
||||
optional bytes obfuscated_id = 2 [(android.os.statsd.log_mode) = MODE_BYTES];
|
||||
}
|
||||
|
||||
// Logs when there is an event affecting Bluetooth device's link layer connection.
|
||||
// - This event is triggered when there is a related HCI command or event
|
||||
// - Users of this metrics can deduce Bluetooth device's connection state from these events
|
||||
@@ -1167,6 +1198,245 @@ message BluetoothLinkLayerConnectionEvent {
|
||||
optional android.bluetooth.hci.StatusEnum reason_code = 9;
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs when there is a change in Bluetooth A2DP playback state
|
||||
*
|
||||
* Logged from:
|
||||
* packages/apps/Bluetooth/src/com/android/bluetooth/a2dp/A2dpService.java
|
||||
*/
|
||||
message BluetoothA2dpPlaybackStateChanged {
|
||||
// An identifier that can be used to match events for this device.
|
||||
// Currently, this is a salted hash of the MAC address of this Bluetooth device.
|
||||
// Salt: Randomly generated 256 bit value
|
||||
// Hash algorithm: HMAC-SHA256
|
||||
// Size: 32 byte
|
||||
// Default: null or empty if the device identifier is not known
|
||||
optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
|
||||
// Current playback state
|
||||
// Default: PLAYBACK_STATE_UNKNOWN
|
||||
optional android.bluetooth.a2dp.PlaybackStateEnum playback_state = 2;
|
||||
// Current audio coding mode
|
||||
// Default: AUDIO_CODING_MODE_UNKNOWN
|
||||
optional android.bluetooth.a2dp.AudioCodingModeEnum audio_coding_mode = 3;
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs when there is a change in A2DP codec config for a particular remote device
|
||||
*
|
||||
* Logged from:
|
||||
* frameworks/base/core/java/android/bluetooth/BluetoothCodecConfig.java
|
||||
* packages/apps/Bluetooth/src/com/android/bluetooth/a2dp/A2dpService.java
|
||||
*/
|
||||
message BluetoothA2dpCodecConfigChanged {
|
||||
// An identifier that can be used to match events for this device.
|
||||
// Currently, this is a salted hash of the MAC address of this Bluetooth device.
|
||||
// Salt: Randomly generated 256 bit value
|
||||
// Hash algorithm: HMAC-SHA256
|
||||
// Size: 32 byte
|
||||
// Default: null or empty if the device identifier is not known
|
||||
optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
|
||||
// Type of codec as defined by various SOURCE_CODEC_TYPE_* constants in BluetoothCodecConfig
|
||||
// Default SOURCE_CODEC_TYPE_INVALID
|
||||
optional int32 codec_type = 2;
|
||||
// Codec priroity, the higher the more preferred, -1 for disabled
|
||||
// Default: CODEC_PRIORITY_DEFAULT
|
||||
optional int32 codec_priority = 3;
|
||||
// Sample rate in Hz as defined by various SAMPLE_RATE_* constants in BluetoothCodecConfig
|
||||
// Default: SAMPLE_RATE_NONE
|
||||
optional int32 sample_rate = 4;
|
||||
// Bits per sample as defined by various BITS_PER_SAMPLE_* constants in BluetoothCodecConfig
|
||||
// Default: BITS_PER_SAMPLE_NONE
|
||||
optional int32 bits_per_sample = 5;
|
||||
// Channel mode as defined by various CHANNEL_MODE_* constants in BluetoothCodecConfig
|
||||
// Default: CHANNEL_MODE_NONE
|
||||
optional int32 channel_mode = 6;
|
||||
// Codec specific values
|
||||
// Default 0
|
||||
optional int64 codec_specific_1 = 7;
|
||||
optional int64 codec_specific_2 = 8;
|
||||
optional int64 codec_specific_3 = 9;
|
||||
optional int64 codec_specific_4 = 10;
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs when there is a change in selectable A2DP codec capability for a paricular remote device
|
||||
* Each codec's capability is logged separately due to statsd restriction
|
||||
*
|
||||
* Logged from:
|
||||
* frameworks/base/core/java/android/bluetooth/BluetoothCodecConfig.java
|
||||
* packages/apps/Bluetooth/src/com/android/bluetooth/a2dp/A2dpService.java
|
||||
*/
|
||||
message BluetoothA2dpCodecCapabilityChanged {
|
||||
// An identifier that can be used to match events for this device.
|
||||
// Currently, this is a salted hash of the MAC address of this Bluetooth device.
|
||||
// Salt: Randomly generated 256 bit value
|
||||
// Hash algorithm: HMAC-SHA256
|
||||
// Size: 32 byte
|
||||
// Default: null or empty if the device identifier is not known
|
||||
optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
|
||||
// Type of codec as defined by various SOURCE_CODEC_TYPE_* constants in BluetoothCodecConfig
|
||||
// Default SOURCE_CODEC_TYPE_INVALID
|
||||
optional int32 codec_type = 2;
|
||||
// Codec priroity, the higher the more preferred, -1 for disabled
|
||||
// Default: CODEC_PRIORITY_DEFAULT
|
||||
optional int32 codec_priority = 3;
|
||||
// A bit field of supported sample rates as defined by various SAMPLE_RATE_* constants
|
||||
// in BluetoothCodecConfig
|
||||
// Default: empty and SAMPLE_RATE_NONE for individual item
|
||||
optional int32 sample_rate = 4;
|
||||
// A bit field of supported bits per sample as defined by various BITS_PER_SAMPLE_* constants
|
||||
// in BluetoothCodecConfig
|
||||
// Default: empty and BITS_PER_SAMPLE_NONE for individual item
|
||||
optional int32 bits_per_sample = 5;
|
||||
// A bit field of supported channel mode as defined by various CHANNEL_MODE_* constants in
|
||||
// BluetoothCodecConfig
|
||||
// Default: empty and CHANNEL_MODE_NONE for individual item
|
||||
optional int32 channel_mode = 6;
|
||||
// Codec specific values
|
||||
// Default 0
|
||||
optional int64 codec_specific_1 = 7;
|
||||
optional int64 codec_specific_2 = 8;
|
||||
optional int64 codec_specific_3 = 9;
|
||||
optional int64 codec_specific_4 = 10;
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs when A2DP failed to read from PCM source.
|
||||
* This typically happens when audio HAL cannot supply A2DP with data fast enough for encoding.
|
||||
*
|
||||
* Logged from:
|
||||
* system/bt
|
||||
*/
|
||||
message BluetoothA2dpAudioUnderrunReported {
|
||||
// An identifier that can be used to match events for this device.
|
||||
// Currently, this is a salted hash of the MAC address of this Bluetooth device.
|
||||
// Salt: Randomly generated 256 bit value
|
||||
// Hash algorithm: HMAC-SHA256
|
||||
// Size: 32 byte
|
||||
// Default: null or empty if the device identifier is not known
|
||||
optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
|
||||
// Encoding interval in nanoseconds
|
||||
// Default: 0
|
||||
optional int64 encoding_interval_nanos = 2;
|
||||
// Number of bytes of PCM data that could not be read from the source
|
||||
// Default: 0
|
||||
optional int32 num_missing_pcm_bytes = 3;
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs when A2DP failed send encoded data to the remote device fast enough such that the transmit
|
||||
* buffer queue is full and we have to drop data
|
||||
*
|
||||
* Logged from:
|
||||
* system/bt
|
||||
*/
|
||||
message BluetoothA2dpAudioOverrunReported {
|
||||
// An identifier that can be used to match events for this device.
|
||||
// Currently, this is a salted hash of the MAC address of this Bluetooth device.
|
||||
// Salt: Randomly generated 256 bit value
|
||||
// Hash algorithm: HMAC-SHA256
|
||||
// Size: 32 byte
|
||||
// Default: null or empty if the device identifier is not known
|
||||
optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
|
||||
// Encoding interval in nanoseconds
|
||||
// Default: 0
|
||||
optional int64 encoding_interval_nanos = 2;
|
||||
// Number of buffers dropped in this event
|
||||
// Each buffer is encoded in one encoding interval and consists of multiple encoded frames
|
||||
// Default: 0
|
||||
optional int32 num_dropped_buffers = 3;
|
||||
// Number of encoded buffers dropped in this event
|
||||
// Default 0
|
||||
optional int32 num_dropped_encoded_frames = 4;
|
||||
// Number of encoded bytes dropped in this event
|
||||
// Default: 0
|
||||
optional int32 num_dropped_encoded_bytes = 5;
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs when we receive reports regarding a device's RSSI value
|
||||
*
|
||||
* Logged from:
|
||||
* system/bt
|
||||
*/
|
||||
message BluetoothDeviceRssiReported {
|
||||
// An identifier that can be used to match events for this device.
|
||||
// Currently, this is a salted hash of the MAC address of this Bluetooth device.
|
||||
// Salt: Randomly generated 256 bit value
|
||||
// Hash algorithm: HMAC-SHA256
|
||||
// Size: 32 byte
|
||||
// Default: null or empty if the device identifier is not known
|
||||
optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
|
||||
// Connection handle of this connection if available
|
||||
// Range: 0x0000 - 0x0EFF (12 bits)
|
||||
// Default: 0xFFFF if the handle is unknown
|
||||
optional int32 connection_handle = 2;
|
||||
// HCI command status code if this is triggerred by hci_cmd
|
||||
// Default: STATUS_UNKNOWN
|
||||
optional android.bluetooth.hci.StatusEnum hci_status = 3;
|
||||
// BR/EDR
|
||||
// Range: -128 ≤ N ≤ 127 (signed integer)
|
||||
// Units: dB
|
||||
// LE:
|
||||
// Range: -127 to 20, 127 (signed integer)
|
||||
// Units: dBm
|
||||
// Invalid when an out of range value is reported
|
||||
optional int32 rssi = 4;
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs when we receive reports regarding how many consecutive failed contacts for a connection
|
||||
*
|
||||
* Logged from:
|
||||
* system/bt
|
||||
*/
|
||||
message BluetoothDeviceFailedContactCounterReported {
|
||||
// An identifier that can be used to match events for this device.
|
||||
// Currently, this is a salted hash of the MAC address of this Bluetooth device.
|
||||
// Salt: Randomly generated 256 bit value
|
||||
// Hash algorithm: HMAC-SHA256
|
||||
// Size: 32 byte
|
||||
// Default: null or empty if the device identifier is not known
|
||||
optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
|
||||
// Connection handle of this connection if available
|
||||
// Range: 0x0000 - 0x0EFF (12 bits)
|
||||
// Default: 0xFFFF if the handle is unknown
|
||||
optional int32 connection_handle = 2;
|
||||
// HCI command status code if this is triggerred by hci_cmd
|
||||
// Default: STATUS_UNKNOWN
|
||||
optional android.bluetooth.hci.StatusEnum cmd_status = 3;
|
||||
// Number of consecutive failed contacts for a connection corresponding to the Handle
|
||||
// Range: uint16_t, 0-0xFFFF
|
||||
// Default: 0xFFFFF
|
||||
optional int32 failed_contact_counter = 4;
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs when we receive reports regarding the tranmit power level used for a specific connection
|
||||
*
|
||||
* Logged from:
|
||||
* system/bt
|
||||
*/
|
||||
message BluetoothDeviceTxPowerLevelReported {
|
||||
// An identifier that can be used to match events for this device.
|
||||
// Currently, this is a salted hash of the MAC address of this Bluetooth device.
|
||||
// Salt: Randomly generated 256 bit value
|
||||
// Hash algorithm: HMAC-SHA256
|
||||
// Size: 32 byte
|
||||
// Default: null or empty if the device identifier is not known
|
||||
optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
|
||||
// Connection handle of this connection if available
|
||||
// Range: 0x0000 - 0x0EFF (12 bits)
|
||||
// Default: 0xFFFF if the handle is unknown
|
||||
optional int32 connection_handle = 2;
|
||||
// HCI command status code if this is triggerred by hci_cmd
|
||||
// Default: STATUS_UNKNOWN
|
||||
optional android.bluetooth.hci.StatusEnum hci_status = 3;
|
||||
// Range: -30 ≤ N ≤ 20
|
||||
// Units: dBm
|
||||
// Invalid when an out of range value is reported
|
||||
optional int32 transmit_power_level = 4;
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs when something is plugged into or removed from the USB-C connector.
|
||||
|
||||
@@ -21,6 +21,7 @@ cc_library_static {
|
||||
type: "lite",
|
||||
},
|
||||
srcs: [
|
||||
"android/bluetooth/a2dp/enums.proto",
|
||||
"android/bluetooth/enums.proto",
|
||||
"android/bluetooth/hci/enums.proto",
|
||||
],
|
||||
|
||||
35
core/proto/android/bluetooth/a2dp/enums.proto
Normal file
35
core/proto/android/bluetooth/a2dp/enums.proto
Normal file
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright 2018 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
syntax = "proto2";
|
||||
package android.bluetooth.a2dp;
|
||||
|
||||
option java_outer_classname = "BluetoothA2dpProtoEnums";
|
||||
option java_multiple_files = true;
|
||||
|
||||
// A2dp playback state enum, defined from:
|
||||
// frameworks/base/core/java/android/bluetooth/BluetoothA2dp.java
|
||||
enum PlaybackStateEnum {
|
||||
PLAYBACK_STATE_UNKNOWN = 0;
|
||||
PLAYBACK_STATE_PLAYING = 10;
|
||||
PLAYBACK_STATE_NOT_PLAYING = 11;
|
||||
}
|
||||
|
||||
enum AudioCodingModeEnum {
|
||||
AUDIO_CODING_MODE_UNKNOWN = 0;
|
||||
AUDIO_CODING_MODE_HARDWARE = 1;
|
||||
AUDIO_CODING_MODE_SOFTWARE = 2;
|
||||
}
|
||||
Reference in New Issue
Block a user