From af8db0642cce1ff332f99e554c236ec533a50dc9 Mon Sep 17 00:00:00 2001 From: Adam Lesinski Date: Thu, 3 Dec 2015 11:40:47 -0800 Subject: [PATCH] Add Bluetooth network traffic accounting to HAL API Introduces a UID traffic struct and includes it in the API for querying energy usage data. Also adds the calling UID as a parameter for starting sockets so that network traffic can be tracked. Bug:26039657 Change-Id: I30a48bcf0abae2fae11454e0d5bb76017b42beea --- include/hardware/bluetooth.h | 14 ++++++++++++-- include/hardware/bt_sock.h | 4 ++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/include/hardware/bluetooth.h b/include/hardware/bluetooth.h index 683e369c..8ddc2517 100644 --- a/include/hardware/bluetooth.h +++ b/include/hardware/bluetooth.h @@ -107,6 +107,12 @@ typedef struct { uint64_t energy_used; /* a product of mA, V and ms */ } __attribute__((packed))bt_activity_energy_info; +typedef struct { + int32_t app_uid; + uint64_t tx_bytes; + uint64_t rx_bytes; +} __attribute__((packed))bt_uid_traffic_t; + /** Bluetooth Adapter Discovery state */ typedef enum { BT_DISCOVERY_STOPPED, @@ -378,8 +384,12 @@ typedef void (*le_test_mode_callback)(bt_status_t status, uint16_t num_packets); * If the ctrl_state value is 0, it means the API call failed * Time values-In milliseconds as returned by the controller * Energy used-Value as returned by the controller - * Status-Provides the status of the read_energy_info API call */ -typedef void (*energy_info_callback)(bt_activity_energy_info *energy_info); + * Status-Provides the status of the read_energy_info API call + * uid_data provides an array of bt_uid_traffic_t, where the array is terminated by an element with + * app_uid set to -1. + */ +typedef void (*energy_info_callback)(bt_activity_energy_info *energy_info, + bt_uid_traffic_t *uid_data); /** TODO: Add callbacks for Link Up/Down and other generic * notifications/callbacks */ diff --git a/include/hardware/bt_sock.h b/include/hardware/bt_sock.h index 5d206d7f..69f433dc 100644 --- a/include/hardware/bt_sock.h +++ b/include/hardware/bt_sock.h @@ -58,14 +58,14 @@ typedef struct { * create_sdp_record(...) in bt_sdp. */ bt_status_t (*listen)(btsock_type_t type, const char* service_name, - const uint8_t* service_uuid, int channel, int* sock_fd, int flags); + const uint8_t* service_uuid, int channel, int* sock_fd, int flags, int callingUid); /** * Connect to a RFCOMM UUID channel of remote device, It returns the socket fd from which * the btsock_connect_signal and a new socket fd to be accepted can be read out when connected */ bt_status_t (*connect)(const bt_bdaddr_t *bd_addr, btsock_type_t type, const uint8_t* uuid, - int channel, int* sock_fd, int flags); + int channel, int* sock_fd, int flags, int callingUid); } btsock_interface_t; __END_DECLS