From 9c30c7c6ba784e1100f7626ef4ce0bcbd8ff6cfb Mon Sep 17 00:00:00 2001 From: Jack He Date: Wed, 30 Jan 2019 17:24:55 -0800 Subject: [PATCH] Atom: Add BluetoothSocketConnectionStateChanged * Logs when a Bluetooth socket's connection state is changed * A Bluetooth socket can be: - RFCOMM socket - SCO socket - BR/EDR L2CAP socket - BLE L2CAP socket Bug: 112969790 Test: make, test drive with statsd Change-Id: I97b1e650e197a0dad1e2959e2f5b4dd98370d892 Merged-In: I97b1e650e197a0dad1e2959e2f5b4dd98370d892 (cherry picked from commit 815cdbaae0577654a6c019abbbd6d596e8cdb703) --- cmds/statsd/src/atoms.proto | 31 ++++++++++++++++++++++++ core/proto/android/bluetooth/enums.proto | 22 +++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto index 5fd148e5d5afb..3da5e0c3192e0 100644 --- a/cmds/statsd/src/atoms.proto +++ b/cmds/statsd/src/atoms.proto @@ -161,6 +161,7 @@ message Atom { BluetoothBondStateChanged bluetooth_bond_state_changed = 165; BluetoothClassicPairingEventReported bluetooth_classic_pairing_event_reported = 166; BluetoothSmpPairingEventReported bluetooth_smp_pairing_event_reported = 167; + BluetoothSocketConnectionStateChanged bluetooth_socket_connection_state_changed = 171; } // Pulled events will start at field 10000. @@ -1718,6 +1719,36 @@ message BluetoothSmpPairingEventReported { optional android.bluetooth.smp.PairingFailReasonEnum smp_fail_reason = 4; } +/** + * Logs when a Bluetooth socket’s connection state changed + * + * Logged from: + * system/bt + */ +message BluetoothSocketConnectionStateChanged { + // 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]; + // Port of this socket + // Default 0 when unknown or don't care + optional int32 port = 2; + // Socket type as mentioned in + // frameworks/base/core/java/android/bluetooth/BluetoothSocket.java + // Default: SOCKET_TYPE_UNKNOWN + optional android.bluetooth.SocketTypeEnum type = 3; + // Socket connection state + // Default: SOCKET_CONNECTION_STATE_UNKNOWN + optional android.bluetooth.SocketConnectionstateEnum state = 4; + // Number of bytes sent to remote device during this connection + optional int64 tx_bytes = 5; + // Number of bytes received from remote device during this connection + optional int64 rx_bytes = 6; +} + /** * Logs when something is plugged into or removed from the USB-C connector. * diff --git a/core/proto/android/bluetooth/enums.proto b/core/proto/android/bluetooth/enums.proto index a88a06cf091c9..5b5c9c28b4a0a 100644 --- a/core/proto/android/bluetooth/enums.proto +++ b/core/proto/android/bluetooth/enums.proto @@ -110,3 +110,25 @@ enum UnbondReasonEnum { UNBOND_REASON_REMOTE_AUTH_CANCELED = 8; UNBOND_REASON_REMOVED = 9; } + +enum SocketTypeEnum { + SOCKET_TYPE_UNKNOWN = 0; + SOCKET_TYPE_RFCOMM = 1; + SOCKET_TYPE_SCO = 2; + SOCKET_TYPE_L2CAP_BREDR = 3; + SOCKET_TYPE_L2CAP_LE = 4; +} + +enum SocketConnectionstateEnum { + SOCKET_CONNECTION_STATE_UNKNOWN = 0; + // Socket acts as a server waiting for connection + SOCKET_CONNECTION_STATE_LISTENING = 1; + // Socket acts as a client trying to connect + SOCKET_CONNECTION_STATE_CONNECTING = 2; + // Socket is connected + SOCKET_CONNECTION_STATE_CONNECTED = 3; + // Socket tries to disconnect from remote + SOCKET_CONNECTION_STATE_DISCONNECTING = 4; + // This socket is closed + SOCKET_CONNECTION_STATE_DISCONNECTED = 5; +}