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.
213 lines
8.9 KiB
213 lines
8.9 KiB
/*
|
|
* Copyright 2021 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.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <frameworks/proto_logging/stats/enums/bluetooth/enums.pb.h>
|
|
#include <frameworks/proto_logging/stats/enums/bluetooth/hci/enums.pb.h>
|
|
|
|
#include <unordered_map>
|
|
#include "types/raw_address.h"
|
|
|
|
namespace bluetooth {
|
|
namespace shim {
|
|
|
|
/**
|
|
* Log link layer connection event
|
|
*
|
|
* @param address Stack wide consistent Bluetooth address of this event,
|
|
* nullptr if unknown
|
|
* @param connection_handle connection handle of this event,
|
|
* {@link kUnknownConnectionHandle} if unknown
|
|
* @param direction direction of this connection
|
|
* @param link_type type of the link
|
|
* @param hci_cmd HCI command opecode associated with this event, if any
|
|
* @param hci_event HCI event code associated with this event, if any
|
|
* @param hci_ble_event HCI BLE event code associated with this event, if any
|
|
* @param cmd_status Command status associated with this event, if any
|
|
* @param reason_code Reason code associated with this event, if any
|
|
*/
|
|
void LogMetricLinkLayerConnectionEvent(
|
|
const RawAddress* address, uint32_t connection_handle,
|
|
android::bluetooth::DirectionEnum direction, uint16_t link_type,
|
|
uint32_t hci_cmd, uint16_t hci_event, uint16_t hci_ble_event,
|
|
uint16_t cmd_status, uint16_t reason_code);
|
|
|
|
/**
|
|
* Log A2DP audio buffer underrun event
|
|
*
|
|
* @param address A2DP device associated with this event
|
|
* @param encoding_interval_millis encoding interval in milliseconds
|
|
* @param num_missing_pcm_bytes number of PCM bytes that cannot be read from
|
|
* the source
|
|
*/
|
|
void LogMetricA2dpAudioUnderrunEvent(const RawAddress& address,
|
|
uint64_t encoding_interval_millis,
|
|
int num_missing_pcm_bytes);
|
|
|
|
/**
|
|
* Log A2DP audio buffer overrun event
|
|
*
|
|
* @param address A2DP device associated with this event
|
|
* @param encoding_interval_millis encoding interval in milliseconds
|
|
* @param num_dropped_buffers number of encoded buffers dropped from Tx queue
|
|
* @param num_dropped_encoded_frames number of encoded frames dropped from Tx
|
|
* queue
|
|
* @param num_dropped_encoded_bytes number of encoded bytes dropped from Tx
|
|
* queue
|
|
*/
|
|
void LogMetricA2dpAudioOverrunEvent(const RawAddress& address,
|
|
uint64_t encoding_interval_millis,
|
|
int num_dropped_buffers,
|
|
int num_dropped_encoded_frames,
|
|
int num_dropped_encoded_bytes);
|
|
|
|
/**
|
|
* Log A2DP audio playback state changed event
|
|
*
|
|
* @param address A2DP device associated with this event
|
|
* @param playback_state A2DP audio playback state, on/off
|
|
* @param audio_coding_mode A2DP audio codec encoding mode, hw/sw
|
|
*/
|
|
void LogMetricA2dpPlaybackEvent(const RawAddress& raw_address,
|
|
int playback_state, int audio_coding_mode);
|
|
|
|
/**
|
|
* Log read RSSI result
|
|
*
|
|
* @param address device associated with this event
|
|
* @param handle connection handle of this event,
|
|
* {@link kUnknownConnectionHandle} if unknown
|
|
* @param cmd_status command status from read RSSI command
|
|
* @param rssi rssi value in dBm
|
|
*/
|
|
void LogMetricReadRssiResult(const RawAddress& address, uint16_t handle,
|
|
uint32_t cmd_status, int8_t rssi);
|
|
|
|
/**
|
|
* Log failed contact counter report
|
|
*
|
|
* @param address device associated with this event
|
|
* @param handle connection handle of this event,
|
|
* {@link kUnknownConnectionHandle} if unknown
|
|
* @param cmd_status command status from read failed contact counter command
|
|
* @param failed_contact_counter Number of consecutive failed contacts for a
|
|
* connection corresponding to the Handle
|
|
*/
|
|
void LogMetricReadFailedContactCounterResult(const RawAddress& address,
|
|
uint16_t handle,
|
|
uint32_t cmd_status,
|
|
int32_t failed_contact_counter);
|
|
|
|
/**
|
|
* Log transmit power level for a particular device after read
|
|
*
|
|
* @param address device associated with this event
|
|
* @param handle connection handle of this event,
|
|
* {@link kUnknownConnectionHandle} if unknown
|
|
* @param cmd_status command status from read failed contact counter command
|
|
* @param transmit_power_level transmit power level for connection to this
|
|
* device
|
|
*/
|
|
void LogMetricReadTxPowerLevelResult(const RawAddress& address, uint16_t handle,
|
|
uint32_t cmd_status,
|
|
int32_t transmit_power_level);
|
|
|
|
/**
|
|
* Logs when there is an event related to Bluetooth Security Manager Protocol
|
|
*
|
|
* @param address address of associated device
|
|
* @param smp_cmd SMP command code associated with this event
|
|
* @param direction direction of this SMP command
|
|
* @param smp_fail_reason SMP pairing failure reason code from SMP spec
|
|
*/
|
|
void LogMetricSmpPairingEvent(const RawAddress& address, uint8_t smp_cmd,
|
|
android::bluetooth::DirectionEnum direction,
|
|
uint8_t smp_fail_reason);
|
|
|
|
/**
|
|
* Logs there is an event related Bluetooth classic pairing
|
|
*
|
|
* @param address address of associated device
|
|
* @param handle connection handle of this event,
|
|
* {@link kUnknownConnectionHandle} if unknown
|
|
* @param hci_cmd HCI command associated with this event
|
|
* @param hci_event HCI event associated with this event
|
|
* @param cmd_status Command status associated with this event
|
|
* @param reason_code Reason code associated with this event
|
|
* @param event_value A status value related to this specific event
|
|
*/
|
|
void LogMetricClassicPairingEvent(const RawAddress& address, uint16_t handle,
|
|
uint32_t hci_cmd, uint16_t hci_event,
|
|
uint16_t cmd_status, uint16_t reason_code,
|
|
int64_t event_value);
|
|
|
|
/**
|
|
* Logs when certain Bluetooth SDP attributes are discovered
|
|
*
|
|
* @param address address of associated device
|
|
* @param protocol_uuid 16 bit protocol UUID from Bluetooth Assigned Numbers
|
|
* @param attribute_id 16 bit attribute ID from Bluetooth Assigned Numbers
|
|
* @param attribute_size size of this attribute
|
|
* @param attribute_value pointer to the attribute data, must be larger than
|
|
* attribute_size
|
|
*/
|
|
void LogMetricSdpAttribute(const RawAddress& address, uint16_t protocol_uuid,
|
|
uint16_t attribute_id, size_t attribute_size,
|
|
const char* attribute_value);
|
|
|
|
/**
|
|
* Logs when there is a change in Bluetooth socket connection state
|
|
*
|
|
* @param address address of associated device, empty if this is a server port
|
|
* @param port port of this socket connection
|
|
* @param type type of socket
|
|
* @param connection_state socket connection state
|
|
* @param tx_bytes number of bytes transmitted
|
|
* @param rx_bytes number of bytes received
|
|
* @param server_port server port of this socket, if any. When both
|
|
* |server_port| and |port| fields are populated, |port| must be spawned
|
|
* by |server_port|
|
|
* @param socket_role role of this socket, server or connection
|
|
* @param uid socket owner's uid
|
|
*/
|
|
void LogMetricSocketConnectionState(
|
|
const RawAddress& address, int port, int type,
|
|
android::bluetooth::SocketConnectionstateEnum connection_state,
|
|
int64_t tx_bytes, int64_t rx_bytes, int uid, int server_port,
|
|
android::bluetooth::SocketRoleEnum socket_role);
|
|
|
|
/**
|
|
* Logs when a Bluetooth device's manufacturer information is learnt
|
|
*
|
|
* @param address address of associated device
|
|
* @param source_type where is this device info obtained from
|
|
* @param source_name name of the data source, internal or external
|
|
* @param manufacturer name of the manufacturer of this device
|
|
* @param model model of this device
|
|
* @param hardware_version hardware version of this device
|
|
* @param software_version software version of this device
|
|
*/
|
|
void LogMetricManufacturerInfo(
|
|
const RawAddress& address,
|
|
android::bluetooth::DeviceInfoSrcEnum source_type,
|
|
const std::string& source_name, const std::string& manufacturer,
|
|
const std::string& model, const std::string& hardware_version,
|
|
const std::string& software_version);
|
|
|
|
} // namespace shim
|
|
} // namespace bluetooth
|