You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
296 lines
7.7 KiB
296 lines
7.7 KiB
/*
|
|
* 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";
|
|
|
|
// 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;
|
|
} |