| /* |
| * Copyright (C) 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"; |
| |
| option optimize_for = LITE_RUNTIME; |
| |
| // C++ namespace: bluetooth::metrics::BluetoothMetricsProto |
| package bluetooth.metrics.BluetoothMetricsProto; |
| |
| option java_package = "com.android.bluetooth"; |
| option java_outer_classname = "BluetoothMetricsProto"; |
| |
| message BluetoothLog { |
| // Session information that gets logged for every BT connection. |
| repeated BluetoothSession session = 1; |
| |
| // Session information that gets logged for every Pair event. |
| repeated PairEvent pair_event = 2; |
| |
| // Information for Wake locks. |
| repeated WakeEvent wake_event = 3; |
| |
| // Scan event information. |
| repeated ScanEvent scan_event = 4; |
| |
| // Number of bonded devices. |
| optional int32 num_bonded_devices = 5; |
| |
| // Number of BluetoothSession including discarded ones beyond capacity |
| optional int64 num_bluetooth_session = 6; |
| |
| // Number of PairEvent including discarded ones beyond capacity |
| optional int64 num_pair_event = 7; |
| |
| // Number of WakeEvent including discarded ones beyond capacity |
| optional int64 num_wake_event = 8; |
| |
| // Number of ScanEvent including discarded ones beyond capacity |
| optional int64 num_scan_event = 9; |
| |
| // Statistics about Bluetooth profile connections |
| repeated ProfileConnectionStats profile_connection_stats = 10; |
| |
| // Statistics about Headset profile connections |
| repeated HeadsetProfileConnectionStats headset_profile_connection_stats = 11; |
| } |
| |
| // The information about the device. |
| message DeviceInfo { |
| // Device type. |
| enum DeviceType { |
| // Type is unknown. |
| DEVICE_TYPE_UNKNOWN = 0; |
| |
| DEVICE_TYPE_BREDR = 1; |
| |
| DEVICE_TYPE_LE = 2; |
| |
| DEVICE_TYPE_DUMO = 3; |
| } |
| |
| // Device class |
| // https://cs.corp.google.com/#android/system/bt/stack/include/btm_api.h&q=major_computer. |
| optional int32 device_class = 1; |
| |
| // Device type. |
| optional DeviceType device_type = 2; |
| } |
| |
| // Information that gets logged for every Bluetooth connection. |
| message BluetoothSession { |
| // Type of technology used in the connection. |
| enum ConnectionTechnologyType { |
| CONNECTION_TECHNOLOGY_TYPE_UNKNOWN = 0; |
| |
| CONNECTION_TECHNOLOGY_TYPE_LE = 1; |
| |
| CONNECTION_TECHNOLOGY_TYPE_BREDR = 2; |
| } |
| |
| enum DisconnectReasonType { |
| UNKNOWN = 0; |
| |
| // A metrics dump takes a snapshot of current Bluetooth session and thus |
| // is not a real disconnect, but a discontinuation in metrics logging. |
| // This enum indicates this situation. |
| METRICS_DUMP = 1; |
| |
| NEXT_START_WITHOUT_END_PREVIOUS = 2; |
| } |
| |
| // Duration of the session. |
| optional int64 session_duration_sec = 2; |
| |
| // Technology type. |
| optional ConnectionTechnologyType connection_technology_type = 3; |
| |
| // Reason for disconnecting. |
| optional string disconnect_reason = 4 [deprecated = true]; |
| |
| // The information about the device which it is connected to. |
| optional DeviceInfo device_connected_to = 5; |
| |
| // The information about the RFComm session. |
| optional RFCommSession rfcomm_session = 6; |
| |
| // The information about the A2DP audio session. |
| optional A2DPSession a2dp_session = 7; |
| |
| // Numeric reason for disconnecting as defined in metrics.h |
| optional DisconnectReasonType disconnect_reason_type = 8; |
| } |
| |
| message RFCommSession { |
| // bytes transmitted. |
| optional int32 rx_bytes = 1; |
| |
| // bytes transmitted. |
| optional int32 tx_bytes = 2; |
| } |
| |
| enum A2dpSourceCodec { |
| A2DP_SOURCE_CODEC_UNKNOWN = 0; |
| A2DP_SOURCE_CODEC_SBC = 1; |
| A2DP_SOURCE_CODEC_AAC = 2; |
| A2DP_SOURCE_CODEC_APTX = 3; |
| A2DP_SOURCE_CODEC_APTX_HD = 4; |
| A2DP_SOURCE_CODEC_LDAC = 5; |
| } |
| |
| // Session information that gets logged for A2DP session. |
| message A2DPSession { |
| // Media timer in milliseconds. |
| optional int32 media_timer_min_millis = 1; |
| |
| // Media timer in milliseconds. |
| optional int32 media_timer_max_millis = 2; |
| |
| // Media timer in milliseconds. |
| optional int32 media_timer_avg_millis = 3; |
| |
| // Buffer overruns count. |
| optional int32 buffer_overruns_max_count = 4; |
| |
| // Buffer overruns total. |
| optional int32 buffer_overruns_total = 5; |
| |
| // Buffer underruns average. |
| optional float buffer_underruns_average = 6; |
| |
| // Buffer underruns count. |
| optional int32 buffer_underruns_count = 7; |
| |
| // Total audio time in this A2DP session |
| optional int64 audio_duration_millis = 8; |
| |
| // Audio codec used in this A2DP session in A2DP source role |
| optional A2dpSourceCodec source_codec = 9; |
| |
| // Whether A2DP offload is enabled in this A2DP session |
| optional bool is_a2dp_offload = 10; |
| } |
| |
| message PairEvent { |
| // The reason for disconnecting |
| // See: system/bt/stack/include/hcidefs.h, HCI_ERR_CONN_FAILED_ESTABLISHMENT |
| optional int32 disconnect_reason = 1; |
| |
| // Pair event time |
| optional int64 event_time_millis = |
| 2; // [(datapol.semantic_type) = ST_TIMESTAMP]; |
| |
| // The information about the device which it is paired to. |
| optional DeviceInfo device_paired_with = 3; |
| } |
| |
| message WakeEvent { |
| // Information about the wake event type. |
| enum WakeEventType { |
| UNKNOWN = 0; |
| // WakeLock was acquired. |
| ACQUIRED = 1; |
| // WakeLock was released. |
| RELEASED = 2; |
| } |
| |
| // Information about the wake event type. |
| optional WakeEventType wake_event_type = 1; |
| |
| // Initiator of the scan. Only the first three names will be stored. |
| // e.g. com.company.app |
| optional string requestor = 2; |
| |
| // Name of the wakelock (e.g. bluedroid_timer). |
| optional string name = 3; |
| |
| // Time of the event. |
| optional int64 event_time_millis = |
| 4; // [(datapol.semantic_type) = ST_TIMESTAMP]; |
| } |
| |
| message ScanEvent { |
| // Scan type. |
| enum ScanTechnologyType { |
| SCAN_TYPE_UNKNOWN = 0; |
| |
| SCAN_TECH_TYPE_LE = 1; |
| |
| SCAN_TECH_TYPE_BREDR = 2; |
| |
| SCAN_TECH_TYPE_BOTH = 3; |
| } |
| |
| // Scan event type. |
| enum ScanEventType { |
| // Scan started. |
| SCAN_EVENT_START = 0; |
| // Scan stopped. |
| SCAN_EVENT_STOP = 1; |
| } |
| |
| // Scan event type. |
| optional ScanEventType scan_event_type = 1; |
| |
| // Initiator of the scan. Only the first three names will be stored. |
| // e.g. com.company.app |
| optional string initiator = 2; |
| |
| // Technology used for scanning. |
| optional ScanTechnologyType scan_technology_type = 3; |
| |
| // Number of results returned. |
| optional int32 number_results = 4; |
| |
| // Time of the event. |
| optional int64 event_time_millis = |
| 5; // [(datapol.semantic_type) = ST_TIMESTAMP]; |
| } |
| |
| // Profile IDs defined in BluetoothProfile API class |
| // Values must match API class values |
| enum ProfileId { |
| PROFILE_UNKNOWN = 0; |
| HEADSET = 1; |
| A2DP = 2; |
| HEALTH = 3; |
| HID_HOST = 4; |
| PAN = 5; |
| PBAP = 6; |
| GATT = 7; |
| GATT_SERVER = 8; |
| MAP = 9; |
| SAP = 10; |
| A2DP_SINK = 11; |
| AVRCP_CONTROLLER = 12; |
| AVRCP = 13; |
| HEADSET_CLIENT = 16; |
| PBAP_CLIENT = 17; |
| MAP_CLIENT = 18; |
| HID_DEVICE = 19; |
| OPP = 20; |
| HEARING_AID = 21; |
| } |
| |
| // Statistics about Bluetooth profile connections |
| message ProfileConnectionStats { |
| // Profile id defined in BluetoothProfile.java |
| optional ProfileId profile_id = 1; |
| |
| // Number of times that this profile is connected since last metrics dump |
| optional int32 num_times_connected = 2; |
| } |
| |
| enum HeadsetProfileType { |
| HEADSET_PROFILE_UNKNOWN = 0; |
| HSP = 1; |
| HFP = 2; |
| } |
| |
| // Statistics about headset profile connections |
| message HeadsetProfileConnectionStats { |
| // Type of headset profile connected |
| optional HeadsetProfileType headset_profile_type = 1; |
| |
| // Number of times this type of headset profile is connected |
| optional int32 num_times_connected = 2; |
| } |