summaryrefslogtreecommitdiffstats
path: root/hci
diff options
context:
space:
mode:
authorSrinu Jella <sjella@codeaurora.org>2015-07-22 17:30:32 +0530
committerLinux Build Service Account <lnxbuild@localhost>2015-10-06 03:21:36 -0600
commita1bff6f9b63b5d95a9e5e0f3d5f13c1d0aff02fd (patch)
tree59df00589e2f00207b30975db5af144e71bcc1be /hci
parent68e394d1d6dd96885b3102a24e21d9ce397fb133 (diff)
downloadandroid_system_bt-a1bff6f9b63b5d95a9e5e0f3d5f13c1d0aff02fd.tar.gz
android_system_bt-a1bff6f9b63b5d95a9e5e0f3d5f13c1d0aff02fd.tar.bz2
android_system_bt-a1bff6f9b63b5d95a9e5e0f3d5f13c1d0aff02fd.zip
Bluetooth: Read local supported codecs part of boot sequence
- Read local supported codecs as part of controller boot up sequence. - API provided from controller interface to get the local supported codecs. CRs-Fixed: 878963 Change-Id: I37a4ab9e6a20ed057ca794dbdd4f99c2a8c65a6e
Diffstat (limited to 'hci')
-rwxr-xr-x[-rw-r--r--]hci/include/hci_packet_factory.h1
-rwxr-xr-x[-rw-r--r--]hci/include/hci_packet_parser.h5
-rwxr-xr-x[-rw-r--r--]hci/src/hci_packet_factory.c7
-rwxr-xr-x[-rw-r--r--]hci/src/hci_packet_parser.c19
4 files changed, 30 insertions, 2 deletions
diff --git a/hci/include/hci_packet_factory.h b/hci/include/hci_packet_factory.h
index 79110e178..ac6f12a04 100644..100755
--- a/hci/include/hci_packet_factory.h
+++ b/hci/include/hci_packet_factory.h
@@ -40,6 +40,7 @@ typedef struct {
BT_HDR *(*make_ble_read_resolving_list_size)(void);
BT_HDR *(*make_ble_read_suggested_default_data_length)(void);
BT_HDR *(*make_ble_set_event_mask)(const bt_event_mask_t *event_mask);
+ BT_HDR *(*make_read_local_supported_codecs)(void);
} hci_packet_factory_t;
const hci_packet_factory_t *hci_packet_factory_get_interface();
diff --git a/hci/include/hci_packet_parser.h b/hci/include/hci_packet_parser.h
index 57e5d1c25..51d00eaec 100644..100755
--- a/hci/include/hci_packet_parser.h
+++ b/hci/include/hci_packet_parser.h
@@ -91,6 +91,11 @@ typedef struct {
BT_HDR *response,
uint16_t *ble_default_packet_length_ptr
);
+
+ void (*parse_read_local_supported_codecs_response)(
+ BT_HDR *response,
+ uint8_t *no_of_local_supported_codecs, uint8_t *local_supported_codecs);
+
} hci_packet_parser_t;
const hci_packet_parser_t *hci_packet_parser_get_interface();
diff --git a/hci/src/hci_packet_factory.c b/hci/src/hci_packet_factory.c
index bc8fca51d..96f578a70 100644..100755
--- a/hci/src/hci_packet_factory.c
+++ b/hci/src/hci_packet_factory.c
@@ -137,6 +137,10 @@ static BT_HDR *make_ble_read_suggested_default_data_length(void) {
return make_command_no_params(HCI_BLE_READ_DEFAULT_DATA_LENGTH);
}
+static BT_HDR *make_read_local_supported_codecs(void) {
+ return make_command_no_params(HCI_READ_LOCAL_SUPPORTED_CODECS);
+}
+
static BT_HDR *make_ble_set_event_mask(const bt_event_mask_t *event_mask) {
uint8_t *stream;
uint8_t parameter_size = sizeof(bt_event_mask_t);
@@ -193,7 +197,8 @@ static const hci_packet_factory_t interface = {
make_ble_read_local_supported_features,
make_ble_read_resolving_list_size,
make_ble_read_suggested_default_data_length,
- make_ble_set_event_mask
+ make_ble_set_event_mask,
+ make_read_local_supported_codecs
};
const hci_packet_factory_t *hci_packet_factory_get_interface() {
diff --git a/hci/src/hci_packet_parser.c b/hci/src/hci_packet_parser.c
index b9f4080cd..58633d12e 100644..100755
--- a/hci/src/hci_packet_parser.c
+++ b/hci/src/hci_packet_parser.c
@@ -71,6 +71,22 @@ static void parse_read_local_version_info_response(
buffer_allocator->free(response);
}
+static void parse_read_local_supported_codecs_response(
+ BT_HDR *response,
+ uint8_t *no_of_local_supported_codecs, uint8_t *local_supported_codecs) {
+ uint8_t i = 0;
+
+ uint8_t *stream = read_command_complete_header(response, HCI_READ_LOCAL_SUPPORTED_CODECS, 1 /* bytes after */);
+ assert(stream != NULL);
+ STREAM_TO_UINT8(*no_of_local_supported_codecs, stream);
+ for ( i = 0; i < *no_of_local_supported_codecs; i++)
+ {
+ STREAM_TO_UINT8(*local_supported_codecs, stream);
+ local_supported_codecs++;
+ }
+ buffer_allocator->free(response);
+}
+
static void parse_read_bd_addr_response(
BT_HDR *response,
bt_bdaddr_t *address_ptr) {
@@ -236,7 +252,8 @@ static const hci_packet_parser_t interface = {
parse_ble_read_supported_states_response,
parse_ble_read_local_supported_features_response,
parse_ble_read_resolving_list_size_response,
- parse_ble_read_suggested_default_data_length_response
+ parse_ble_read_suggested_default_data_length_response,
+ parse_read_local_supported_codecs_response
};
const hci_packet_parser_t *hci_packet_parser_get_interface() {